Skip to content

Get job detail

GET
/api/v1/jobs/{id}
curl --request GET \
--url https://api.justcrawl.io/api/v1/jobs/example \
--header 'Authorization: Bearer <token>'

One job, including the executionTrace and workflow dag the list endpoint strips.

The response also carries the job’s credit line: creditsCharged (what the job cost at submit, 0 when the org is not charged per job), creditOutcome (not_charged, pending, kept, or refunded) and creditNote, a one-sentence reason. A crawl that fails at every provider is free — its charge is returned automatically and creditOutcome reads refunded. A failed job whose page was fetched and stored, or whose target returned 404/410, stays kept.

hasBody means “a result exists that you can fetch” — it is false for a refunded job even though the platform still holds the rejected bytes for its own diagnostics.

id
required
string

Job ID

Job detail with execution trace

Media typeapplication/json
object
id
string format: uuid
status
string
Allowed values: pending running completed failed waiting_retry extracting extraction_done
url
string
workflowId
string format: uuid
version
integer
providerId
string
nullable
statusCode
integer
nullable
latencyMs
integer
nullable
errorType
string
nullable
errorMessage
string
nullable
scheduleId
string format: uuid
nullable
purpose

Whether this is a customer crawl or an auxiliary Playground preview capture.

string
Allowed values: crawl preview_capture
parentJobId

Parent crawl ID for a preview capture. Null for ordinary crawl jobs.

string format: uuid
nullable
creditsCharged

Credits deducted for this job when it was submitted. 0 when the org is not charged per job (enterprise and platform-managed plans, backfills, extraction fan-out children and webhook-ingest jobs). null when the amount is not known — the job was recorded by a release that predates per-job charge stamping; such a job always reports creditOutcome: pending.

integer
nullable
creditOutcome

What happened to the charge. not_charged — this job never cost a credit. pending — charged, and the outcome is not decided yet. kept — charged, and the charge stands. refunded — charged, and the credit was returned because no provider delivered a page. A crawl that fails at every provider is free.

string
Allowed values: not_charged pending kept refunded
creditNote

One sentence saying why the charge was kept or returned, e.g. credit returned: no provider delivered a page. null while the outcome is not_charged or pending. Display it as-is — the wording is the API’s, not the client’s.

string
nullable
createdAt
string format: date-time
completedAt
string format: date-time
nullable
Example
{
"status": "pending",
"purpose": "crawl",
"creditOutcome": "not_charged"
}

Job not found