POST a page URL or a flat list. Get per-link status, three buckets (ok / broken / excluded), and an optional cloud retry that rescues the classic false positives: LinkedIn HTTP 999, Cloudflare anti-bot, paywalled news, JS-deobfuscated URLs.
Mode 1 — extract from a page. Pass {url} and crawlcrawl pulls every outbound link and checks it. Cloudflare email-protection URLs are filtered out automatically (they decode to mailto: in the browser and never resolve as real HTTP URLs — a common false-positive in every link checker).
Mode 2 — check a known list. Pass {urls: [...]} (up to 200) and we check each one in parallel. Useful for migration verification, redirect-chain audits, or outbound-link compliance checks.
curl -X POST https://api.crawlcrawl.com/v1/actors/check-links \
-H "Authorization: Bearer crk_..." \
-d '{
"url": "https://your-client.com/blog/post",
"cloud_retry": true,
"cloud_retry_mode": "proxy"
}'
# → 200
{
"actor": "check-links",
"data": {
"total": 78, "ok": 76, "broken": 1, "excluded": 1,
"cloud_retried": 1, "cloud_recovered": 0,
"cloud_cost_usd": 0.0000052,
"items": [
{ "url": "...", "status_code": 200, "status": "ok" },
{ "url": "https://in.linkedin.com/...", "status_code": null,
"status": "broken", "error": "Rejected status code" }
]
}
}
When cloud_retry: true, broken links are re-fetched through one of two cloud backends. Pick based on the failure mode you're trying to fix.
| Mode | Cost per retry | Speed (78-link page) | Best for |
|---|---|---|---|
cloud_retry_mode: "chrome" (default) |
~$0.0017 | ~60 s | Cloudflare JS challenges, SPA-only URLs |
cloud_retry_mode: "proxy" |
~$0.00005 (30× cheaper) | ~5 s (12× faster) | Datacenter-IP blocks, UA filtering |
Neither path cracks LinkedIn's HTTP 999 — that's deep browser-fingerprinting beyond IP rotation. Proxy mode fails fast (~1.8 s) and bills almost nothing for the unrecoverable cases.
url, status_code, status, error (if any), and recovered_via_cloud when the cloud retry brought the link back to life.Content audits. Run after every site migration to catch broken outbound links before they become customer-visible. Combine with /v1/crawls + store_html: false for a cheap full-site sweep.
Editorial QA. A pre-publish CI step that fails the build on any broken with cloud_recovered: false catches dead-link debt before it ships.
Outbound-link compliance. Some industries require all referenced URLs to be currently resolvable. Schedule a daily check-links pass on the registry pages and pipe the broken list to the compliance team.
One page-credit per call (covers up to 200 links). Cloud-retry calls are billed separately at the rates above. Capped at 50 retries per request to prevent runaway billing. See full pricing →
$42/mo for 100,000 link audits. Cloud retry recovers what every other checker misses.
Get an API key — free