Batch scraping multiple URLs
You can now batch scrape multiple URLs at the same time. It takes the starting URLs and optional parameters as arguments. The params argument allows you to specify additional options for the batch scrape job, such as the output formats.How it works
It is very similar to how the/crawl endpoint works. You can either start the batch and wait for completion, or start it and handle completion yourself.
batchScrape(JS) /batch_scrape(Python): starts a batch job and waits for it to complete, returning the results.startBatchScrape(JS) /start_batch_scrape(Python): starts a batch job and returns the job ID so you can poll or use webhooks.
Concurrency
By default, a batch scrape job uses your team’s full concurrent browser limit (see Rate Limits). You can lower this per job with themaxConcurrency parameter — for example, maxConcurrency: 50 limits that job to 50 simultaneous scrapes. Setting this value too low on large batches will significantly slow down processing, so only reduce it if you need to leave capacity for other concurrent jobs.
Usage
Response
CallingbatchScrape/batch_scrape returns the full results when the batch completes.
Completed
startBatchScrape/start_batch_scrape returns
a job ID you can track via getBatchScrapeStatus/get_batch_scrape_status, using
the API endpoint /batch/scrape/{id}, or webhooks. Job results are available via the API for 24 hours after completion. After this period, you can still view your batch scrape history and results in the activity logs.
Batch scrape with structured extraction
You can also use the batch scrape endpoint to extract structured data from the pages. This is useful if you want to get the same structured data from a list of URLs.Response
batchScrape/batch_scrape returns full results:
Completed
startBatchScrape/start_batch_scrape returns a job ID:
Batch scrape with webhooks
You can configure webhooks to receive real-time notifications as each URL in your batch is scraped. This allows you to process results immediately instead of waiting for the entire batch to complete.cURL
Quick Reference
Event Types:batch_scrape.started- When the batch scrape beginsbatch_scrape.page- For each URL successfully scrapedbatch_scrape.completed- When all URLs are processedbatch_scrape.failed- If the batch scrape encounters an error
Security: Verifying Webhook Signatures
Every webhook request from Firecrawl includes anX-Firecrawl-Signature header containing an HMAC-SHA256 signature. Always verify this signature to ensure the webhook is authentic and hasn’t been tampered with.
How it works:
- Get your webhook secret from the Advanced tab of your account settings
- Extract the signature from the
X-Firecrawl-Signatureheader - Compute HMAC-SHA256 of the raw request body using your secret
- Compare with the signature header using a timing-safe function
