Errors and quotas
Failures use application/problem+json and include a stable code, HTTP status, request_id, retry guidance and billing metadata.
{
"type": "https://www.crawlvolt.com/errors/quota_exceeded",
"title": "quota_exceeded",
"status": 402,
"code": "quota_exceeded",
"detail": "the monthly browser-action quota for this account is exhausted",
"request_id": "req_01JWD8",
"retryable": false,
"billing": { "billable": false, "units": 0 }
}Retry 429, 502, 503 and 504 responses with exponential backoff and jitter. Do not automatically retry validation, authentication, scope or network-policy failures.
Preview quotas
| Plan | Extracted pages / month | Browser actions / month |
|---|---|---|
| Free | 100 | 250 |
| Pro | 10,000 | 25,000 |
| Plan | Requests / minute | Concurrent browser requests |
|---|---|---|
| Free | 30 | 2 |
| Pro | 300 | 10 |
/v1/scrape consumes one scrape_page unit after success. /v1/browse reserves one browser_action unit per requested action and commits the reservation only after success. Failed requests release their reservation.
The response headers x-request-id and x-webdash-billable-units mirror the trace and committed units. x-ratelimit-limit, x-ratelimit-remaining, x-concurrency-limit and x-concurrency-active expose the current request controls. A rejected request returns 429, Retry-After and remains non-billable.
See Cache and usage for cache policy, cost telemetry and GET /v1/usage.