At scale
Batch jobs
Submit many URLs, poll a job, download a zip.
POST /scrape/batch queues a set of scrapes and returns a job id. Use it when
you have a list of URLs and do not need each result the moment it is ready.
curl -X POST 'https://api.helicitylabs.com/scrape/batch' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: YOUR_API_KEY' \
-d '{
"urls": ["https://example.com/a", "https://example.com/b"],
"render_js": false,
"proxy_type": "datacenter"
}'
The scrape options apply to every URL in the batch — one shape per job. URLs needing different settings go in different jobs.
Following a job
curl 'https://api.helicitylabs.com/jobs/{job_id}' \
-H 'X-API-Key: YOUR_API_KEY'
Poll it until it reports finished, then fetch the output:
curl -L 'https://api.helicitylabs.com/jobs/{job_id}/result' \
-H 'X-API-Key: YOUR_API_KEY' \
-o results.zip
The result is a zip of per-URL responses, each in the same shape a single
/scrape returns — so ok, error_class and blocked mean exactly what they
mean elsewhere.
A batch is a set of individual runs for billing. Each URL is charged by the same table in Credits, and the ones that fail on our side are still free.