Appearance
Requests & responses
The ScrapeIt REST API is deliberately uniform: one base URL, one success envelope, one error envelope. Once you have parsed one endpoint you have parsed them all.
Base URL & versioning
https://api.scrapeit.io/api/v1The version is part of the path (/api/v1/...). Breaking changes only ever ship under a new version prefix.
Requests and responses are JSON (Content-Type: application/json, UTF-8).
Success envelope
Every successful endpoint returns:
json
{
"data": { "…": "endpoint-specific payload" },
"meta": { "…": "optional metadata, e.g. pagination" }
}data- the payload. For list endpoints it is an array.meta- optional. List endpoints put pagination fields here (total,page,per_page,last_page).
Error envelope
Every error - validation, auth, limits, platform - uses one shape and a stable machine-readable code:
json
{
"error": {
"code": "CONCURRENCY_LIMIT_EXCEEDED",
"message": "Concurrency limit exceeded for the current subscription.",
"details": null,
"correlation_id": "8f4f1f0e-…"
}
}Branch on error.code, not on the human-readable message - messages can be reworded, codes never change. The full catalogue lives in Error codes.
Correlation ids
Every response carries a correlation_id (in error for failures, in request_metadata for scraping responses). It connects your request to our internal logs, job traces and webhook deliveries. Include it in support requests - it is the fastest path to an answer.
Timeouts
The synchronous Web Scraping API holds the HTTP connection until the scrape finishes or the timeoutMs budget is exhausted (configurable from 1 000 ms; default and maximum 180 000 ms). Long-running work belongs in Batch Scraping or the Website Crawler, which return a job id immediately.