Get job detail
const url = 'https://api.justcrawl.io/api/v1/jobs/example';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/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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Job ID
Responses
Section titled “Responses”Job detail with execution trace
object
Whether this is a customer crawl or an auxiliary Playground preview capture.
Parent crawl ID for a preview capture. Null for ordinary crawl jobs.
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.
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.
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.
Example
{ "status": "pending", "purpose": "crawl", "creditOutcome": "not_charged"}Job not found