Get extraction result for a job
const url = 'https://api.justcrawl.io/api/v1/extraction/results/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.justcrawl.io/api/v1/extraction/results/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>'Fetches the extraction result for one job, with explicit state codes for the extraction-done → bulk-writer-flush handoff (Phase 1 Lane D). Three terminal shapes:
- 200 — bulk-writer landed the row; full
ExtractionResultreturned. - 202 — job is in
extraction_done, awaiting the next bi-postgres flush. The response sets both the standardRetry-AfterHTTP header and a body fieldretryAfterSecondsso polling clients can drive their backoff from either source. Body shape{ indexingPending: true, ... }is the discriminator the React polling hook union-narrows on. - 500 — job is
completedbut noextraction_resultsrow landed (bulk-writer ack mismatch). The backend’sstuck_extraction_done_rowssystem_job cron alerts ops independently; this surface returns 500 so the UI shows “something went wrong” instead of spinning forever.
404 covers every other job status (pending / running / extracting / failed)
and missing jobs alike — by design, an org never learns whether a missing UUID was
another tenant’s job or never existed.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Responses
Section titled “Responses”Extraction result row has landed.
object
object
Internal storage key for the raw HTML blob.
Examplegenerated
{ "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "orgId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "jobId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "domain": "example", "schemaId": "example", "dataType": "example", "normalized": {}, "rawBlobKey": "example", "qualityCompleteness": 1, "qualityValidation": 1, "qualityComposite": 1, "latencyMs": 1, "deliveredAt": "2026-04-15T12:00:00Z", "createdAt": "2026-04-15T12:00:00Z"}Extraction completed; awaiting bulk-writer flush. Retry after retryAfterSeconds (also sent as the standard Retry-After HTTP header).
object
Example
{ "indexingPending": true, "status": "extraction_done"}Headers
Section titled “Headers”Suggested delay in seconds before the next poll.
Missing or invalid authentication token
object
Example
{ "error": "Missing or invalid authentication token"}Insufficient permissions for this operation
object
Example
{ "error": "No organization. Complete onboarding first."}Resource not found
object
Example
{ "error": "Workflow not found"}Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}