Skip to main content
POST
Submit an asynchronous batch scrape job.
Scrape many URLs as one background job. urls and an Idempotency-Key are required; maxConcurrency, onlyMainContent, includeTags, excludeTags, maxAge, minAge and timeout tune it. Asynchronous. Submitting returns HTTP 202 and a job envelope — id, object, endpoint, status, createdAt, completedAt, pricing, output, error — with output still null. Poll get_firecrawl_batch_scrape_job until terminal; output is then an array of documents with markdown and metadata. Use it when you have a list of URLs and do not need them immediately. When you do need them immediately, post_tavily_extract returns a small batch synchronously in about a second; for a single page post_firecrawl_scrape. Send a fresh Idempotency-Key per distinct batch.
First time? Point any MCP client at https://mcp.aisa.one/mcp — Claude Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client opens a browser, you click Allow once, and there is no key to paste. The commands per client, and what each call costs, are on aisa.one/mcp.
Set this endpoint up in your agent →

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Headers

Idempotency-Key
string
required

Unique key (1 to 191 characters) that makes the submit idempotent. Re-submitting with the same key returns the original job.

Maximum string length: 191

Body

application/json
urls
string<uri>[]
required

1 to 1000 unique HTTPS URLs to scrape. PDF URLs are not supported.

Required array length: 1 - 1000 elements
Example:
maxConcurrency
integer

Maximum number of concurrent scrapes (1 to 20).

Required range: 1 <= x <= 20
onlyMainContent
boolean
default:true

Return only the main content of each page.

includeTags
string[]

HTML tags/selectors to keep.

Maximum array length: 50
Maximum string length: 128
excludeTags
string[]

HTML tags/selectors to drop.

Maximum array length: 50
Maximum string length: 128
maxAge
integer

Maximum acceptable cache age in milliseconds.

Required range: 0 <= x <= 31536000000
minAge
integer

Minimum cache age in milliseconds before a page is refetched.

Required range: 0 <= x <= 31536000000
timeout
integer

Per-page timeout in milliseconds.

Required range: 1000 <= x <= 300000

Response

202 - application/json

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).

id
string

Unique AIsa job identifier. Use it to poll, list, or cancel the job.

Example:

"iaj_01HZY8Q2M4K7N9V3T6W1X0B2C3"

object
string

Always "integration_async_job".

Example:

"integration_async_job"

endpoint
string

The submit endpoint this job belongs to.

Example:

"/apis/v1/firecrawl/crawl"

status
enum<string>

Customer-facing lifecycle status. queued and running are non-terminal; completed, failed, and cancelled are terminal.

Available options:
queued,
running,
completed,
failed,
cancelled
createdAt
string<date-time>

When the job was accepted.

completedAt
string<date-time> | null

When the job reached a terminal status. Null while the job is still queued or running.

pricing
object
output
any | null

Job result payload. Present only once status is completed. For crawl this is the array of scraped pages; for batch scrape it is the array of scraped documents.

outputExpired
boolean

True when the result has been retained past its retention window and is no longer retrievable.

error
object | null

Present when status is failed. Null otherwise.