Skip to content

How to Run Batch Website Screenshots at Scale

Learn how to capture thousands of web pages in a single API call using batch screenshots. Covers CSV upload, capture options, progress tracking, and cloud delivery.

When you need more than one screenshot at a time

Monitoring a product catalog, archiving a sitemap, running a visual regression check across hundreds of pages — these workflows all require capturing URLs in bulk. Doing it one request at a time is slow and error-prone. The batch screenshot API solves this by accepting a URL list and processing everything in parallel.

How batch screenshots work

  1. Upload a URL list — CSV or plain text, one URL per line. Optionally include per-row parameter overrides (country, viewport, delay).
  2. Set shared capture options — output format, device, ad blocking, automation steps. These apply to every URL unless overridden per row.
  3. Submit the batch — the API returns a batch ID immediately.
  4. Poll for progress — check /batch/info for completion percentage, success/failure counts, and estimated time remaining.
  5. Download results — retrieve a ZIP containing all screenshots, or deliver them directly to S3, Google Drive, or another integration.

Example: batch capture a sitemap

# 1. Extract URLs from sitemap
curl -s "https://example.com/sitemap.xml" | grep -oP '<loc>\K[^<]+' > urls.txt

# 2. Submit batch
curl -X POST "https://api.screenshotcenter.com/api/batch/create" \
  -H "X-API-KEY: YOUR_API_KEY" \
  -F "urls=@urls.txt" \
  -F "options={"full_page":true,"pdf":false}"

# Response: { "id": "batch_abc123", "url_count": 847 }

Per-row overrides with CSV

Need different settings for different URLs? Use a CSV with column headers:

url,country,screen_width
https://example.com/us-pricing,us,1920
https://example.com/de-pricing,de,1920
https://example.com/jp-pricing,jp,1920

Each row inherits the shared batch options, with the CSV columns overriding specific parameters.

Delivering results to cloud storage

Instead of downloading a ZIP, push results directly to your storage backend. Add an apps parameter to the batch request:

{
  "apps": [{
    "app": "s3",
    "bucket": "my-screenshots",
    "path": "batch/{yyyy}/{mm}/{dd}/{domain}/{id}.png"
  }]
}

The path template supports date variables so files are organized chronologically. See visual website backup for scheduling patterns.

Handling failures

The batch API retries failed URLs automatically (up to 5 times with exponential backoff). The result CSV includes a status column so you can identify and re-submit any permanently failed URLs.

Scale limits

The batch API accepts up to 100,000 URLs per batch on Enterprise plans. For recurring batch jobs (daily sitemap monitoring, weekly competitor checks), automate submission with a cron job or Zapier.