Firecrawl
Search, scrape, map, file parsing and asynchronous crawling.
Submit an asynchronous batch scrape job.
Submit an asynchronous scrape for multiple URLs. urls and Idempotency-Key are required. HTTP 202 returns a job; poll get_firecrawl_batch_scrape_job until completed, failed or cancelled. The Location header identifies the Felo polling resource. Reusing an Idempotency-Key returns the existing job. Job pricing fields are provider metadata, not Felo billing records.
- Type: stringIdempotency
- Key max length:191requiredUnique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job.
- Type: array string[] 1…1000Format: uriurlsrequired
1 to 1000 unique HTTPS URLs to scrape. PDF URLs are not supported.
- Type: array string[] …50exclude
Tags max length:128HTML tags/selectors to drop.
- Type: array string[] …50include
Tags max length:128HTML tags/selectors to keep.
- Type: integermax
Age min:0max:31536000000Maximum acceptable cache age in milliseconds.
- Type: integermax
Concurrency min:1max:20Maximum number of concurrent scrapes (1 to 20).
- Type: integermin
Age min:0max:31536000000Minimum cache age in milliseconds before a page is refetched.
- Type: booleanonly
Main Content Return only the main content of each page.
- Type: integertimeoutmin:1000max:300000
Per-page timeout in milliseconds.
- Type: object · AsyncJob202
Batch scrape job accepted. The Location header points at the job resource; poll it until terminal.
An asynchronous integration job. Returned by the submit call (HTTP 202) and by the poll/detail call. Poll the job by its id until status is a terminal value (completed, failed, or cancelled).
- Type: string Format: date-timenullablecompleted
At When the job reached a terminal status. Null while the job is still queued or running.
- Type: string Format: date-timecreated
At When the job was accepted.
- Type: stringendpoint
Provider operation identifier stored with the job. This metadata is not a Felo polling URL; use the documented Felo job path or Location header.
- Type: object nullableerror
Present when status is failed. Null otherwise.
- codeType: string
Machine-readable error code.
- messageType: string
Human-readable error message.
- Type: stringid
Job identifier. Use it with the corresponding Felo polling endpoint.
- Type: stringobject
Always "integration_async_job".
- nullableoutput
Job result payload. Present only once status is completed. For Agent Runs this is the structured research result.
- Type: booleanoutput
Expired True when the result has been retained past its retention window and is no longer retrievable.
- Type: objectpricing
- authorizedType: integer
Micros U S D Provider authorization metadata in micro-USD. This is not a Felo credit hold or billing record.
- billingType: string
Mode Provider job billing mode. Felo charges follow Felo billing records.
- currencyType: string
- finalType: integer nullable
Micros U S D Provider settlement metadata in micro-USD, nullable before settlement. This is not the Felo charge.
- Type: string enumstatus
Customer-facing lifecycle status. queued and running are non-terminal; completed, failed, and cancelled are terminal.
values- queued
- running
- completed
- failed
- cancelled
application/json - 400
The request could not be processed. Check the request parameters.
- 401
A valid Felo API key is required.
- 402
The request cannot proceed because a billing requirement is not met.
- 403
The account is not permitted to perform this operation.
- 429
A request or spending limit has been reached.
- 502
The service could not complete the request.
- 503
The API or billing service is temporarily unavailable.
- 504
The service timed out while processing the request.
- default
The operation failed. Keep the response request ID when contacting Felo support.
curl https://openapi.felo.ai/v1/beta/firecrawl/batch-scrape \
--request POST \
--header 'Idempotency-Key: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"urls": [
"https://docs.firecrawl.dev",
"https://docs.firecrawl.dev/introduction"
],
"maxConcurrency": 1,
"onlyMainContent": true,
"includeTags": [
""
],
"excludeTags": [
""
],
"maxAge": 0,
"minAge": 0,
"timeout": 1000
}'
{
"id": "iaj_01HZY8Q2M4K7N9V3T6W1X0B2C3",
"object": "integration_async_job",
"endpoint": "/apis/v1/exa/agent/runs",
"status": "queued",
"createdAt": "2026-09-30T03:09:45.799Z",
"completedAt": "2026-09-30T03:09:45.799Z",
"pricing": {
"currency": "USD",
"authorizedMicrosUSD": 1,
"finalMicrosUSD": 1,
"billingMode": "flat_per_call"
},
"output": null,
"outputExpired": true,
"error": {
"code": "string",
"message": "string"
}
}