Skip to main content
POST
Submit an asynchronous crawl job.
Crawl an entire site rooted at url. Because a full traversal can take a while, Crawl runs as an asynchronous job: you submit the job and then poll it for status and results. Lifecycle
  1. SubmitPOST /apis/v1/firecrawl/crawl with the crawl body and a required Idempotency-Key header. On success you get back 202 Accepted, a Location header pointing at the job resource (/apis/v1/firecrawl/crawl/{jobId}), and a job object whose status starts as queued.
  2. PollGET /apis/v1/firecrawl/crawl/{jobId} and repeat until status is terminal: completed, failed, or cancelled. When completed, the crawled pages are in output.
  3. ListGET /apis/v1/firecrawl/crawl (optional limit, status, cursor query params) to page through your crawl jobs.
  4. CancelPOST /apis/v1/firecrawl/crawl/{jobId}/cancel to request cancellation.
The url must be HTTPS and not a PDF, and limit (1 to 1000) bounds the number of pages. Billing is metered per Firecrawl credit — 1 credit per page crawled — so total cost scales with the pages actually processed. To scrape a known set of URLs instead of following links, use post_firecrawl-batch-scrape.

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
url
string<uri>
required

The HTTPS root URL to crawl. PDF URLs are not supported.

Example:

"https://docs.firecrawl.dev"

limit
integer
required

Maximum number of pages to crawl.

Required range: 1 <= x <= 1000
Example:

50

includePaths
string[]

Only crawl URLs whose path matches one of these patterns.

Maximum array length: 20
Maximum string length: 256
excludePaths
string[]

Skip URLs whose path matches one of these patterns.

Maximum array length: 20
Maximum string length: 256
maxDiscoveryDepth
integer

Maximum link-discovery depth from the root URL.

Required range: 0 <= x <= 10
sitemap
enum<string>

How the site's sitemap is used during discovery.

Available options:
skip,
include,
only
ignoreQueryParameters
boolean

Treat URLs that differ only by query string as the same page.

crawlEntireDomain
boolean

Crawl the whole domain rather than only the subtree under the root URL.

Follow links to external domains.

allowSubdomains
boolean

Follow links into subdomains of the root domain.

delay
number

Delay in seconds between requests (0 to 30).

Required range: 0 <= x <= 30
maxConcurrency
integer

Maximum number of concurrent page fetches (1 to 20).

Required range: 1 <= x <= 20
scrapeOptions
object

Per-page scrape options applied while crawling. On the metered profile output is always markdown.

Response

202 - application/json

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