Get scrape result metadata + presigned blob URL
const url = 'https://api.justcrawl.io/api/v1/jobs/example/result';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/result \ --header 'Authorization: Bearer <token>'Returns a JSON envelope describing the scrape result. The stored artifact is NOT
inlined — fetch it from resultUrl (a presigned S3 URL, typically 15-minute TTL)
when present, or resolve blobKey through your own storage client when the org
uses custom S3. The endpoint never streams the body itself.
Returns 410 Gone when the result existed but has been cleaned up under the
org’s document-retention policy; the expiredAt timestamp tells you when.
Returns 404 with reason: "credit_refunded" when no provider delivered a page for
this job. Its credit was returned automatically (creditOutcome: "refunded" on the job
resource) and nothing was stored to hand back — so this is a settled outcome, not a
transient miss, and retrying the fetch will never produce a body. Branch on reason,
not on the message text.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Job ID
Responses
Section titled “Responses”Result metadata. Exactly one of resultUrl (platform storage) or blobKey (custom S3) is present.
object
Presigned S3 URL for the stored artifact (platform storage). Mutually exclusive with blobKey.
Raw S3 object key (custom storage). Mutually exclusive with resultUrl.
HTTP status code the provider returned for the scrape.
Size of the stored body in bytes.
Stored artifact MIME type. Historical unmarked results resolve as text/html.
Examplegenerated
{ "resultUrl": "https://example.com", "blobKey": "example", "providerId": "example", "statusCode": 1, "bodySize": 1, "contentType": "example", "latencyMs": 1}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."}Job not found, or job exists but has no result blob yet (still running, or it failed before producing a body).
Also returned when the job’s credit was refunded because no provider delivered a
page: that body carries reason: "credit_refunded" plus a static message, and is
the one 404 here that is terminal rather than “not yet”.
object
Present only on the refunded case. The machine-readable discriminator — key on this, not on error or message.
Static human-readable sentence. Present only on the refunded case.
Example
{ "reason": "credit_refunded"}Result existed but has been cleaned up under the org’s document-retention policy. Body includes expiredAt and a human-readable message.
Unexpected server error. Logs and PostHog $exception capture
object
Example
{ "error": "Something went wrong"}