Scans API
Single-page scans are the legacy scan API. They’re still fully supported and route through the same BullMQ pipeline as crawl-initiated scans.
For auditing entire sites, use the Sites & Crawls API instead.
Create a scan
POST /api/scans
Content-Type: application/json
{
"url": "https://example.com/page"
}Rate limit: 10 per hour per IP.
Response:
{
"id": "uuid",
"url": "https://example.com/page",
"status": "queued",
"progress": 0,
"createdAt": "2026-03-22T14:30:00.000Z"
}List scans
GET /api/scans?limit=20&offset=0Response: Paginated array of scan objects, newest first.
Get scan status and results
GET /api/scans/:idPoll this endpoint to track progress. Once status is completed or completed_partial, the full results are available.
Response (in progress):
{
"id": "uuid",
"status": "running",
"progress": 55,
"currentStage": "CustomChecks"
}Response (completed):
{
"id": "uuid",
"status": "completed",
"progress": 100,
"url": "https://example.com/page",
"pageTitle": "Example Page",
"summary": {
"overallScore": 82,
"summary": "The page is largely accessible...",
"topPriorities": [],
"positiveFindings": []
},
"issues": [
{
"id": "uuid",
"type": "confirmed",
"severity": "critical",
"wcagCriterion": "1.1.1",
"wcagLevel": "A",
"elementSelector": "img.hero",
"elementHtml": "<img class=\"hero\" src=\"hero.jpg\">",
"description": "Image is missing alt text.",
"fixSuggestion": "Add an alt attribute describing the image content.",
"axeRuleId": "image-alt"
}
]
}Cancel a scan
POST /api/scans/:id/cancelExport scan report
GET /api/scans/:id/export?format=pdf
GET /api/scans/:id/export?format=excelScan must be in completed or completed_partial status.
Next steps
Last updated on