Broken Link Checker – Find 404s on Any Website
Pricing
Pay per usage
Broken Link Checker – Find 404s on Any Website
Crawl a website and find broken links: 404s, 5xx errors, dead external links and timeouts, with the source page and anchor text. Fast, no browser.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Innovative Cookie
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
What does Broken Link Checker do?
Broken Link Checker crawls a website and finds every broken link: 404 pages, 5xx server errors, dead external links, DNS failures and timeouts. For each broken link you get the page it was found on, the anchor text, the HTTP status code and the reason, so you can fix it in minutes.
- 🔗 Checks internal and external links (and optionally images, scripts, stylesheets and iframes).
- 🧭 Crawls the site breadth-first from one or more start URLs, with page and depth limits.
- ↪️ Follows redirect chains (301, 302, 307, 308) and reports where each link ends up.
- 🤖 Polite and transparent: respects robots.txt and
Crawl-delay, identifies itself, never bypasses captchas or bot protection. - ⚡ Plain HTTP requests (HEAD first, GET to confirm), no browser and no proxy, so runs are fast and cheap.
Why use Broken Link Checker?
- 🔎 SEO audits. Broken links waste crawl budget and leak link equity. Find them before Google does.
- 🚚 Site migrations and redesigns. Run it after a launch to catch links to pages that moved or disappeared.
- 📝 Content maintenance. Old blog posts often link to external pages that no longer exist ("link rot").
- 🛒 E-commerce. Find product and category links that return 404 after stock changes.
- ⏰ Monitoring. Schedule a weekly run and get alerted (email, Slack, webhook) when new broken links appear.
How to find broken links on a website
- Click Try for free.
- In Start URLs, enter your homepage (
example.com) or a section (https://example.com/blog/). - Set Max pages to crawl and Max crawl depth (start small, for example 50 pages, depth 2).
- Click Start. A small site takes about a minute.
- Download the broken links as CSV, Excel or JSON, or get them via the API.
Input
See the Input tab for every option. Example:
{"startUrls": ["https://crawler-test.com/links/broken_links_internal", "https://crawler-test.com/links/broken_links_external"],"maxPagesToCrawl": 2,"maxDepth": 0,"checkExternalLinks": true,"reportMode": "broken"}
reportMode can be broken (default), problems (broken, redirected, blocked and skipped links) or all (every link with its status).
Output
One row per broken link occurrence (a link that is broken on 30 pages is listed with each source page, up to a cap you choose). Example:
[{"url": "https://crawler-test.com/links/not_found/foo1","status": "broken","statusCode": 404,"error": "HTTP 404","sourceUrl": "https://crawler-test.com/links/broken_links_internal","anchorText": "Broken Link 1","linkType": "internal","element": "a","nofollow": false,"finalUrl": null,"redirectCount": 0,"firstRedirectStatus": null,"site": "https://crawler-test.com/links/broken_links_internal"}]
| Field | Description |
|---|---|
url | Link target (fragment removed) |
status | broken, redirect, blocked, skipped or ok |
statusCode, error | HTTP status and reason (HTTP 404, Server error HTTP 500, Host unreachable (ENOTFOUND), timeout…) |
sourceUrl, anchorText | Where the link was found and its text |
linkType, element, nofollow | internal / external, HTML element, rel=nofollow |
finalUrl, redirectCount, firstRedirectStatus | Redirect information |
The SUMMARY record in the key-value store gives totals per start URL: pages crawled, links found, broken, blocked, skipped and redirected links.
What "blocked" and "skipped" mean
- blocked: the server answered 401, 403 or 429, or showed a captcha / bot challenge, or its robots.txt could not be read (5xx). The link may work in a browser, so it is not counted as broken, and the Actor never tries to get around the protection.
- skipped: the link is disallowed by the target site's robots.txt, or points to a private address. It is not requested.
How much does it cost to check broken links?
The Actor is free to use for now: there is no Actor fee, you only pay the Apify platform usage of your runs, which stays small because it uses plain HTTP requests. The Apify Free plan includes $5 of monthly credit. Keep runs short with Max pages to crawl and Max links to check.
Integrations
Use the results anywhere with the Apify API, webhooks, Make, Zapier, n8n, Google Sheets or Slack, or call it from an AI agent through the Apify MCP server. Schedule a weekly run to monitor your site.
FAQ
How do I find 404 errors on my site?
Enter your homepage, set a page limit and start the run. Every link returning 404 (or another error) is listed with the page that contains it.
Does it check external links?
Yes, by default. Each external URL is requested once (HEAD, then GET if the server mishandles HEAD), after reading that site's robots.txt. Turn off Check external links to only check your own pages.
Does it respect robots.txt?
Yes. It reads robots.txt before crawling or checking any host, re-checks it at every redirect, honours Crawl-delay (capped at 10 s by default) and spaces requests to the same host (250 ms by default). If robots.txt answers with a captcha, 401, 403, 429 or 5xx, that host is treated as "no bots allowed" and is not requested.
Does it render JavaScript?
No. It reads the HTML returned by the server, which covers most websites. Links that only exist after JavaScript runs are not seen.
Is it legal?
It only requests public pages and reads links, and collects no personal data. Only check websites you own or have the right to audit, and follow their terms of use.
Something does not work?
Open an issue in the Issues tab with the start URL and the SUMMARY record.
Related actors
More Actors by the same author (innovative_cookie on Apify):
- Sitemap URL Extractor: get every URL of a site from its XML sitemaps.
- PageSpeed Insights Bulk Checker: Core Web Vitals and Lighthouse scores for many URLs.
- Website Image Extractor: list every image of a page with size, format and missing alt text.
- Dataset Merge, Dedup & Transform: merge and clean the results of several runs.