Docs
Dashboard
API reference / CrawlsBeta

Get a crawl

Pages by index. limit=0 returns the job only (for polling its progress).

GET/v1/crawls/{id}

Request

Method and pathGET/v1/crawls/{id}
Base URLhttps://api.boxline.dev
AuthenticationYour API key in the x-api-key header (or Authorization: Bearer). The examples read it from BOXLINE_API_KEY.

Path parameters

NameTypeDefaultAllowed valuesDescription
idrequiredstring––

Query parameters

NameTypeDefaultAllowed valuesDescription
limitinteger50–From 0 to 100.
afterstring––The next value of the previous page (same filters and sort). Opaque; do not build it yourself.
curl "https://api.boxline.dev/v1/crawls/$CRAWL_ID?limit=50" \  -H "x-api-key: $BOXLINE_API_KEY"

Responses

200 OK

The job with data (pages) and next.

Fields

NameTypeDefaultAllowed valuesDescription
idstring––
statusstring–running, completed, failed, canceled
urlstring––
paramsobject––The crawl's settings (proxy without passwords).
pagesDoneinteger––
pagesFailedinteger––
skippedByRobotsinteger––
errorstring | null––
createdAtstring––Format: date-time.
finishedAtstring | null––Format: date-time.
dataobject[]––
data[].indexinteger––
data[].urlstring––
data[].finalUrlstring | null––
data[].statusinteger | null––
data[].titlestring | null––
data[].depthinteger––
data[].contentstring | null––
data[].captchastring | null–recaptcha, hcaptcha, turnstile, cloudflare, datadome, arkose, human
data[].errorstring | null––
nextstring | null––Pass it back as after for the next page; null on the last page.
Response 200
{  "id": "crawl_2Gh7Kx0Lq9Zp4Nm3",  "status": "running",  "url": "https://example.com/",  "params": {},  "pagesDone": 0,  "pagesFailed": 0,  "skippedByRobots": 0,  "error": "…",  "createdAt": "2026-09-29T10:00:00.000Z",  "finishedAt": "2026-09-29T10:00:00.000Z",  "data": [    {      "index": 0,      "url": "https://example.com/",      "finalUrl": "https://example.com/",      "status": 0,      "title": "Example Domain",      "depth": 0,      "content": "…",      "captcha": "recaptcha",      "error": "…"    }  ],  "next": "eyJvIjoiY3JlYXRlZF9kZXNjIiwidCI6IjIwMjYtMDktMjlUMTA6MDA6MDAuMTIzNDU2WiIsImkiOiI2YzFmIn0"}

Errors

Errors have a matching HTTP status and the same body. code is stable, so check it in your code; message is for people. See Errors and request ids.

StatusCodesWhen
400 Bad Requestinvalid_request, invalid_json, invalid_cursor, invalid_idempotency_key, invalid_extension, variables_with_extensions, terms_not_accepted, invalid_reset_token, invalid_confirmation_code, wrong_password, no_password, invalid_next, invalid_oauth_tokenThe request is not valid.
401 UnauthorizedunauthorizedMissing or invalid API key.
404 Not Foundnot_found, invite_not_found, provider_unavailableNo such thing in this project (or organization), or no such route.
Error body
{  "error": {    "code": "not_found",    "message": "session not found",    "requestId": "req_4fJx0aQm2Lk9Pz7N"  }}

Learn more

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.