Crawling & Link Extraction
Broken Link Checker
Scan a single page, or crawl an entire site, for dead links with exact HTTP status codes and reasons.
POST
Three endpoints, sharing one link-checking engine: scan one page synchronously, or start a site-wide crawl (via
sitemap.xml and internal links) and poll it to completion. Every discovered link is resolved, checked over the network, and classified by severity.
2 credits per call (single-page scan or crawl start) · Typical response time ~2–10s for a single page
Scan a single page
POST /v1/broken-links checks every link found on one page and returns immediately.
Body parameters
The page to scan.
https:// is assumed if the scheme is omitted.Response
Crawl an entire site
For more than one page, start an async crawl and poll it — see Async Jobs & Polling for the full pattern, phase list, and crawl limits (250 pages, 6-minute budget).Start the crawl
POST /v1/broken-links/crawl, body { "url": "..." } — same as the single-page scan, any URL on the site.
Returns 202 immediately:
Poll the status
GET /v1/broken-links/crawl/:jobId — free and uncached. Returns the standard job envelope. Once status is "done", result holds a SiteCrawlResult: the same summary/statusBreakdown/grade/healthScore shape as the single-page result, plus:
Internal pages fetched.
Internal pages known (crawled + queued).
Unique links found across every crawled page.
true if the 250-page cap was hit.true if the 1,500-link check cap was hit.Same shape as the single-page
links, plus sources (sample source pages, capped at 25) and sourceCount (total pages the link appeared on).Every page crawled:
url, statusCode, statusText, severity, linksOnPage, depth (BFS depth from the entry URL), fromSitemap.Errors
See the full error reference for the platform-level codes (
401, 402, 429) that apply to every endpoint.