Bulk screenshots

Capture many URLs in one job with the batch endpoint (available from the Starter plan). It runs asynchronously — you get a jobId, poll for progress, then collect the results (each charges one unit).

Create a job

curl -X POST https://screenshotforweb.com/api/v1/batch/screenshots \
  -H "X-API-Key: sk_live_your_key" -H "Content-Type: application/json" \
  -d '{
    "urls": ["https://a.com", "https://b.com", "https://c.com"],
    "options": { "format": "png", "fullPage": false }
  }'
// -> 202 { "data": { "jobId": "...", "status": "queued" } }

Poll & collect

GET  https://screenshotforweb.com/api/v1/batch/jobs/{jobId}            # { status, progress }
GET  https://screenshotforweb.com/api/v1/batch/jobs/{jobId}/results    # signed URL per item
GET  https://screenshotforweb.com/api/v1/batch/jobs/{jobId}/download-all   # 302 -> zip of all images

Tips

  • Up to 100 URLs per job.
  • Poll every few seconds until status is completed, then fetch results. A job in which no URL could be captured ends failed.
  • A URL that fails is tried again automatically, up to 3 more times, once the rest of the job has run. progress.failed counts the URLs that are out of tries.
  • A URL that never answers uses its full timeout on every try. Lower options.timeout for batches that may contain dead URLs.