Base URL
Authentication
Every endpoint except/health and /ready needs an X-API-Key header:
Response envelope
Every response has the same shape:success is false and data is replaced by an error:
error_code, not on the wording of error, which can change. retryable tells you whether the same request can succeed later.
See Error handling for every code.
Conventions
- Parameters are snake_case (
only_main_content), except on/brandand/enrich, which take camelCase (screenshotColors). Batches and MCP take snake_case everywhere. - GET or POST:
/scrape,/searchand/transactionaccept the same fields as a query string onGETor a JSON body onPOST. UsePOSTfor nested options likejson_schema,headersorscrape_options. - URLs can omit the scheme.
stripe.commeanshttps://stripe.com. - Request bodies can be up to 1 MB.
- Time limits: most requests finish within 55 seconds, or fail with
TIMEOUT. Give your HTTP client at least 60. - Ids carry a prefix:
crw_for crawls and batches,mon_for monitors,chk_for monitor checks.
Background jobs
Crawls, batches and monitor checks run in the background.POST /crawl, POST /batch/scrape, POST /batch/{endpoint} and POST /monitor/{id}/run return 202 with an id, and you read the results with the matching GET, or get them by webhook. See Async jobs.
Rate limits
Each plan limits how many requests can run at once, from 1 on Free to 500 on Scale. The Free plan also allows 30 requests a minute. Going over either returns429. See Rate limits.
Credit costs
You’re only charged for successful requests. See Credits.
OpenAPI
The full spec is at/api-reference/openapi.json. Use it to generate a client in your language.