Get Job Status
GET
/api/v1/jobs/{job_id}/statusOverview
Poll this endpoint to monitor the progress of your scraping job. Jobs move through several states from queued to completed or failed.
Path Parameters
job_idstringrequiredThe unique identifier of the job (UUID format)
Example: 550e8400-e29b-41d4-a716-446655440000
Query Parameters
formatstringResponse format for AI agent integration (v2.60.0)
Options:
yaml- Token-efficient YAML format (40% savings)md- Human-readable Markdown format (50% savings)
Default: JSON (no format parameter)
Response
successbooleanWhether the request was successful
job_idstringThe job's unique identifier
typestringJob type (spiderSite or spiderMaps)
statusstringCurrent job status
Possible values:
queued- Waiting for workerprocessing- Currently being processedcompleted- Successfully finishedfailed- Processing failedcancelled- Cancelled by user
created_atstringISO 8601 timestamp when job was created
updated_atstringISO 8601 timestamp of last status update
worker_idstringID of the worker processing the job (if assigned)
Example Request
- cURL
- Python
- JavaScript
curl https://spideriq.ai/api/v1/jobs/550e8400-e29b-41d4-a716-446655440000/status \
-H "Authorization: Bearer <your_token>"
import requests
job_id = "550e8400-e29b-41d4-a716-446655440000"
url = f"https://spideriq.ai/api/v1/jobs/{job_id}/status"
headers = {
"Authorization": "Bearer <your_token>"
}
response = requests.get(url, headers=headers)
print(response.json())
const jobId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://spideriq.ai/api/v1/jobs/${jobId}/status`,
{
headers: {
'Authorization': 'Bearer <your_token>'
}
}
);
const data = await response.json();
console.log(data);
Example Responses
- 200 OK - Queued
- 200 OK - Processing
- 200 OK - Completed
- 404 Not Found
- YAML Format
- Markdown Format
{
"success": true,
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "spiderSite",
"status": "queued",
"created_at": "2025-10-27T10:00:00Z",
"updated_at": "2025-10-27T10:00:00Z",
"worker_id": null
}
{
"success": true,
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "spiderSite",
"status": "processing",
"created_at": "2025-10-27T10:00:00Z",
"updated_at": "2025-10-27T10:01:15Z",
"worker_id": "spider-site-main-1"
}
{
"success": true,
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"type": "spiderSite",
"status": "completed",
"created_at": "2025-10-27T10:00:00Z",
"updated_at": "2025-10-27T10:02:45Z",
"worker_id": "spider-site-main-1"
}
{
"detail": "Job not found"
}
# GET /api/v1/jobs/{id}/status?format=yaml
job_id: 550e8400-e29b-41d4-a716-446655440000
type: spiderSite
status: completed
priority: 5
created_at: '2025-10-27T10:00:00'
started_at: '2025-10-27T10:01:15'
completed_at: '2025-10-27T10:02:45'
processing_time_seconds: 90.5
pages_crawled: 12
## Job: 550e8400-e29b-41d4-a716-446655440000
**Type**: spiderSite | **Status**: completed | **Priority**: 5
**Processing Time**: 90.50s
**Pages Crawled**: 12
Polling Best Practices
tip
Recommended polling strategy:
- Poll every 2-5 seconds for jobs in
queuedorprocessingstatus - Stop polling when status is
completed,failed, orcancelled - Implement exponential backoff for rate limit compliance
Python Polling Example
import requests
import time
def wait_for_completion(job_id, auth_token, max_wait=300):
"""Poll job status until completion or timeout"""
url = f"https://spideriq.ai/api/v1/jobs/{job_id}/status"
headers = {"Authorization": f"Bearer {auth_token}"}
start_time = time.time()
while time.time() - start_time < max_wait:
response = requests.get(url, headers=headers)
data = response.json()
status = data.get("status")
print(f"Status: {status}")
if status in ["completed", "failed", "cancelled"]:
return data
time.sleep(3) # Poll every 3 seconds
raise TimeoutError("Job did not complete within timeout period")
Status Flow
Next Steps
When status is completed:
- Retrieve results using GET /api/v1/jobs/{id}/results
When status is failed:
- Check error message in results endpoint
- Review job parameters and retry if needed