Logs & request ids
Every request is logged with its cost and what it used; each one has an id and a trace id.
Request metadata
Every response of /scrape, /batch and /crawl ends with meta:
"meta": {
"id": "6ef54e72-6a17-4a65-b772-fbade56be5f8",
"started_at": "2026-10-28T12:25:43.182Z",
"duration_ms": 8156,
"engine_ms": 8058
}id: the request's id, the one shown in Dashboard → Logs. Give it to support when something looks wrong.duration_ms: the time on our side, waiting in the queue included;engine_ms: the time spent scraping.
Every answer of the API also carries an x-trace-id header. It follows the request through each of our services: quote it with the id when you ask for help. Send a W3C traceparent header and we reuse its trace id, so our logs line up with yours.
Stopping a request
Close the connection (abort your HTTP call, or press Stop in the playground) and the request stops on our side too: what hadn't started never runs. It's still logged, and what was already paid to others before it stopped (a captcha solved, a model call made) is billed. For long runs, async jobs can be cancelled with DELETE /v1/jobs/{id}.
Logs
Dashboard → Logs lists every request of your account: status, cost, duration, target. Open one to see the request as you sent it (secrets left as {{secrets.NAME}}, never their values), the response (long values cut, files as links: see Stored files), the credits per feature and the resources used.
Debug mode
Add "debug": true to options (or switch on Debug mode in the playground's Request tab) and each page also comes back with debug:
"debug": {
"trace": [
{ "strategy": 0, "attempt": 1, "driver": "http", "status": 403, "error": "HTTP_ERROR", "blocked_by": "cloudflare", "ms": 412 },
{ "strategy": 1, "attempt": 1, "driver": "chromium (playwright)", "proxy": "pool FR", "status": 200, "ms": 3120 }
],
"html": { "content_type": "text/html", "url": "…/v1/files/file_…", "file_id": "file_…" },
"screenshot": { "content_type": "image/png", "url": "…/v1/files/file_…", "file_id": "file_…" }
}trace: every request made to the target, in order: the strategy (0 is the main one, then fallbacks and escalations), the try within it (retries), the driver, the proxy, what came back and how long it took. A page from the cache has an empty trace.html: the page's raw HTML, as received, before any extraction.screenshot: a capture of the final page (rendered from its HTML when no browser loaded it). It's billed as a screenshot.
A page that failed still has its trace, and its HTML when the site answered. The log's detail shows it all: the attempts as a table, the HTML to download, the screenshot. Files are stored like captures (without storage, they're inline in base64).
Export
Export downloads the logs shown (with your filters) in any format you name: JSON, CSV, NDJSON, XML, YAML, a Markdown table… A format we haven't seen yet is written once by our AI, checked, and reused for everyone after: the first export in a new format takes a little longer.
Retention
| Plan | Logs kept |
|---|---|
| Free | 7 days |
| Go (any credit pack) | 30 days |
| Pro | 90 days |
| Scale | 1 year |
Older logs are deleted every hour. Your account export includes them.