GET Get Results
Poll for job status and retrieve scraping results
GET
https://api.anakin.io/v1/url-scraper/{id}Retrieve the status and results of a scrape job. Use this to poll for completion after submitting a single URL or batch scrape request.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
id required | string | The job ID returned from the submit endpoint |
Response — Single URL Job
200 OK{
"id": "job_abc123xyz",
"status": "completed",
"url": "https://example.com",
"jobType": "url_scraper",
"country": "us",
"html": "<html>...</html>",
"cleanedHtml": "<div>...</div>",
"markdown": "# Page content...",
"generatedJson": { "data": {} },
"links": [{ "href": "https://example.com/about", "text": "About" }],
"images": [{ "src": "https://example.com/logo.png", "alt": "Logo" }],
"summary": "A concise AI-generated summary of the page.",
"screenshotUrl": "https://.../screenshot.png",
"fullPageScreenshotUrl": "https://.../fullpage.png",
"cached": false,
"error": null,
"createdAt": "2024-01-01T12:00:00Z",
"completedAt": "2024-01-01T12:00:05Z",
"durationMs": 5000
}Which content fields appear depends on the formats you requested (see Submit a Scrape Job) — every content field is omitted when it wasn't requested or produced. screenshotUrl / fullPageScreenshotUrl are pre-signed, time-limited URLs.
Response — Batch Job
200 OK{
"id": "batch_abc123",
"status": "completed",
"jobType": "batch_url_scraper",
"country": "us",
"urls": ["https://example.com/page1", "https://example.com/page2"],
"results": [
{
"index": 0,
"url": "https://example.com/page1",
"status": "completed",
"html": "<html>...</html>",
"cleanedHtml": "<div>...</div>",
"markdown": "# Content...",
"generatedJson": { "data": {} },
"cached": false,
"durationMs": 3000
},
{
"index": 1,
"url": "https://example.com/page2",
"status": "failed",
"error": "Connection timeout",
"durationMs": 5000
}
],
"createdAt": "2024-01-01T12:00:00Z",
"completedAt": "2024-01-01T12:00:10Z",
"durationMs": 10000
}Response Fields
| Field | Type | Description |
|---|---|---|
status | string | pending, processing, completed, or failed |
html | string | Raw HTML content. Only present when completed. |
cleanedHtml | string | Cleaned HTML with non-essential elements removed. |
markdown | string | Markdown version of the content. |
generatedJson | object | AI-extracted structured JSON. Only when generateJson: true (or an outputSchema) was set. |
links | object[] | Extracted hyperlinks, each { href, text }. Only when the links format was requested. |
images | object[] | Extracted images, each { src, alt }. Only when the images format was requested. |
summary | string | AI-generated summary. Only when the summary format was requested. |
screenshotUrl | string | Pre-signed URL to a viewport screenshot. Only when screenshot was requested. |
fullPageScreenshotUrl | string | Pre-signed URL to a full-page screenshot. Only when screenshotFullPage was requested. |
cached | boolean | true if served from cache. |
error | string | Error message. Only present when failed. |
durationMs | number | Processing time in milliseconds. |
results | array | Batch jobs only — array of per-URL results. |
Job Statuses
| Status | Description |
|---|---|
pending | Job is queued |
processing | Job is being executed |
completed | Results are ready |
failed | Job encountered an error |
Code Examples
curl -X GET https://api.anakin.io/v1/url-scraper/job_abc123xyz \
-H "X-API-Key: your_api_key"import requests
job_id = "job_abc123xyz"
result = requests.get(
f'https://api.anakin.io/v1/url-scraper/{job_id}',
headers={'X-API-Key': 'your_api_key'}
)
data = result.json()
if data['status'] == 'completed':
print(data['markdown'])const jobId = 'job_abc123xyz';
const res = await fetch(`https://api.anakin.io/v1/url-scraper/${jobId}`, {
headers: { 'X-API-Key': 'your_api_key' }
});
const data = await res.json();
if (data.status === 'completed') {
console.log(data.markdown);
}For polling patterns, see the Polling Jobs reference.