Broken Link Checker - Crawl a Website for 404s & Dead Links
Pricing
from $0.40 / 1,000 url checkeds
Broken Link Checker - Crawl a Website for 404s & Dead Links
Find every broken link of a website: 404s, 5xx, dead domains and timeouts, internal and external, with the page to fix. Bot protections are not reported as broken. $0.50 per 1,000 URLs.
Pricing
from $0.40 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Emmanuel Vingadassalon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Give it a website, get every broken link on it. The Actor crawls the pages of the site, collects all the links (internal and external) and checks each one: 404s, 410s, 5xx errors, dead domains and timeouts, with the page where the link was found and how many pages link to it.
- Whole-site crawl. Breadth first from your start page, same host only. Internal links beyond your page limit are still checked.
- Internal and external links. Links to other websites are checked (not crawled). Turn this off to check internal links only.
- Clear results. Each URL is
ok,broken(404, 410, 5xx, unknown domain, refused connection),blocked(401, 402, 403, 406, 429, 999: usually bot protection, the link may work in a browser) ortimeout. - Where to fix it.
foundOnis the first page that links to the URL,foundOnCountthe number of crawled pages that link to it. - Polite. Respects robots.txt and its Crawl-delay, at most 2 requests per second per website, no proxy needed. A website that starts blocking the crawler (10 bot-protection answers in a row) is left alone: one free
not checkedrow tells how many of its URLs were not requested. - Cheap and capped. $0.50 per 1,000 URLs checked, and a hard limit of URLs per website so a big site never costs more than you decided.
What can I use it for?
- SEO maintenance: broken links waste crawl budget and hurt user experience. Find them before Google does.
- Website migrations and redesigns: crawl the new site and catch every link that still points to an old URL.
- Agency audits: run it on your clients' sites every month (with an Apify schedule) and send them the list of pages to fix.
- Documentation and blogs: old articles link to pages that disappeared. Find them in one run.
Input
{"startUrls": ["https://www.iana.org"],"maxPages": 100,"maxLinksPerSite": 2000,"checkExternalLinks": true,"onlyProblems": false}
| Field | Meaning |
|---|---|
startUrls | Home page (or any start page) of each website |
maxPages | Pages read to find links, per website (default 100) |
maxLinksPerSite | Hard limit of billed URLs per website: crawled pages + links checked (default 2,000) |
checkExternalLinks | Also check links to other websites (default true) |
onlyProblems | Save only broken, blocked and timeout rows. Every URL checked is still billed |
Output
One row per URL. Examples from a real run on iana.org:
A broken internal link (found on 5 pages, first on /domains):
{"url": "https://www.iana.org/domains/idn-tables/db","result": "broken","broken": true,"status": 404,"internal": true,"crawled": false,"foundOn": "https://www.iana.org/domains","foundOnCount": 5,"finalUrl": "https://www.iana.org/domains/idn-tables/db","redirected": false,"responseTimeMs": 2010,"contentType": "text/html; charset=utf-8","server": "cloudflare","error": null,"checkedAt": "2026-10-14T17:52:26.096Z"}
A crawled page that works:
{"url": "https://www.iana.org/about","result": "ok","broken": false,"status": 200,"internal": true,"crawled": true,"foundOn": "https://www.iana.org/","foundOnCount": 1,"finalUrl": "https://www.iana.org/about","redirected": false,"responseTimeMs": 250,"error": null,"checkedAt": "2026-10-14T17:52:19.826Z"}
On that run (20 pages, 2,000 URLs): 1,996 ok, 1 broken, 1 blocked (403 from a bot protection) and 2 timeout.
| Field | Meaning |
|---|---|
result | ok, broken, blocked, timeout, or not checked (disallowed by robots.txt, private address, website blocking the crawler: not billed) |
broken | true only when result is broken |
crawled | true for pages the Actor read to find links |
internal | Same host as the start page (after its redirects, e.g. to www.) |
foundOn / foundOnCount | First page linking to the URL / number of crawled pages linking to it |
To get only the broken links, filter the dataset on broken = true, or turn on onlyProblems.
Each run also saves, for free, a SUMMARY (counts per result and the broken links that most pages link to) and an HTML REPORT ready to send to a client: open them from the run's Output tab.
Pricing
$0.0005 per URL checked ($0.50 per 1,000 URLs) plus Apify's small run-start fee. A crawled page counts as one URL, a checked link as one URL. Dead hosts and timeouts are real answers and count as checked. Invalid URLs, private addresses and links disallowed by robots.txt are free. Lower prices on higher Apify plans.
Good to know
- Speed: about 2 URLs per second per website (politeness limit), external links are checked in parallel. 1,000 internal URLs take about 8 to 9 minutes.
- JavaScript sites: links are read from the HTML returned by the server. Links added later by JavaScript (some single-page apps) are not seen.
- Files (PDF, images, archives) are checked with a light request, never downloaded.
blockedis not broken: LinkedIn, Instagram, news sites and many shops answer 999, 403, 402, 406 or 429 to robots. These links usually work in a browser.
Use it from AI agents (MCP)
Add broken-link-crawler to the Apify MCP server in your MCP client (Claude, Cursor, VS Code...).
Integrations
Apify API, schedules, webhooks, Make, Zapier, n8n. Export as JSON, CSV, Excel or HTML.
Related tools
Same developer, same pay-per-result pricing, outputs that chain together:
- Bulk URL Status, Redirect & Broken Link Checker: HTTP status codes and redirect chains of a list of URLs.
- Sitemap URL Extractor: every URL of a website from its sitemaps.
- SEO Audit Tool: on-page SEO of many pages, with an A-F grade and fixes.
FAQ
I already have the list of URLs. Use Bulk URL Status Checker: it checks a list without crawling. For the URLs of a sitemap, use Sitemap URL Extractor.
Need the on-page SEO too? Use SEO Audit.
Something wrong or missing? Open an issue on the Issues tab.