GET /v1/jobs
Retrieve the status and results of async crawl jobs created by POST /v1/crawl.
Two endpoints are available:
| Endpoint | Description |
|---|---|
GET /v1/jobs/:id | Get a specific job by ID |
GET /v1/jobs | List the 20 most recent jobs for your account |
Jobs are tenant-isolated: you can only retrieve jobs created with your API key.
GET /v1/jobs/:id
Request
GET /v1/jobs/crawl_8f3a12bc
x-api-key: YOUR_KEYPath parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Job ID returned by POST /v1/crawl |
Example request
curl https://api.superscraper.dev/v1/jobs/crawl_8f3a12bc \
-H "x-api-key: ss_live_xxxxxxxxxxxxxxxxxxxx"Response
HTTP 200 on success, 404 if the job does not exist or belongs to a different tenant.
Body
| Field | Type | Description |
|---|---|---|
id | string | Job ID |
url | string | The seed URL that was crawled |
status | string | Job status: "queued", "running", "done", "failed" |
result_url | string | null | URL to download full results when status is "completed" |
pages_scraped | number | Number of pages scraped so far |
error | string | null | Error message when status is "failed" |
created_at | string | ISO 8601 timestamp when the job was created |
completed_at | string | null | ISO 8601 timestamp when the job finished |
Example response, in progress
{
"id": "crawl_8f3a12bc",
"url": "https://example.com",
"status": "running",
"result_url": null,
"pages_scraped": 14,
"error": null,
"created_at": "2026-06-01T18:30:00.000Z",
"completed_at": null
}Example response, completed
{
"id": "crawl_8f3a12bc",
"url": "https://example.com",
"status": "done",
"result_url": "https://cdn.superscraper.dev/results/crawl_8f3a12bc.json",
"pages_scraped": 50,
"error": null,
"created_at": "2026-06-01T18:30:00.000Z",
"completed_at": "2026-06-01T18:31:44.000Z"
}Example response, failed
{
"id": "crawl_8f3a12bc",
"url": "https://example.com",
"status": "failed",
"result_url": null,
"pages_scraped": 3,
"error": "Seed URL returned HTTP 404",
"created_at": "2026-06-01T18:30:00.000Z",
"completed_at": "2026-06-01T18:30:08.000Z"
}GET /v1/jobs
List the 20 most recent crawl jobs for your account.
Request
GET /v1/jobs
x-api-key: YOUR_KEYExample request
curl https://api.superscraper.dev/v1/jobs \
-H "x-api-key: ss_live_xxxxxxxxxxxxxxxxxxxx"Response
HTTP 200 on success.
Body
| Field | Type | Description |
|---|---|---|
jobs | array | List of job summaries (see below), ordered by created_at descending |
Job summary item
| Field | Type | Description |
|---|---|---|
id | string | Job ID |
url | string | Seed URL |
status | string | Job status: "queued", "running", "done", "failed" |
pages_scraped | number | Pages scraped |
created_at | string | ISO 8601 creation timestamp |
completed_at | string | null | ISO 8601 completion timestamp |
Example response
{
"jobs": [
{
"id": "crawl_8f3a12bc",
"url": "https://example.com",
"status": "done",
"pages_scraped": 50,
"created_at": "2026-06-01T18:30:00.000Z",
"completed_at": "2026-06-01T18:31:44.000Z"
},
{
"id": "crawl_7d2e09ab",
"url": "https://another-site.com",
"status": "queued",
"pages_scraped": 0,
"created_at": "2026-06-01T17:15:00.000Z",
"completed_at": null
}
]
}Errors
| Status | Error | Cause |
|---|---|---|
| 401 | API key required | Missing x-api-key header |
| 401 | Invalid or revoked API key. | Key not found or deactivated |
| 404 | Job not found | Job ID does not exist or belongs to a different tenant |
| 500 | Failed to fetch jobs | Database error on the list endpoint |
Polling pattern
Poll the job status every few seconds until status is "done" or "failed":
# Poll every 3 seconds
while true; do
STATUS=$(curl -s https://api.superscraper.dev/v1/jobs/crawl_8f3a12bc \
-H "x-api-key: ss_live_xxxxxxxxxxxxxxxxxxxx" | jq -r '.status')
echo "Status: $STATUS"
[ "$STATUS" = "done" ] || [ "$STATUS" = "failed" ] && break
sleep 3
done