Broken Link Checker – Find 404s on Any Website avatar

Broken Link Checker – Find 404s on Any Website

Pricing

Pay per usage

Go to Apify Store
Broken Link Checker – Find 404s on Any Website

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

Innovative Cookie

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

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.
  • 🔎 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.
  1. Click Try for free.
  2. In Start URLs, enter your homepage (example.com) or a section (https://example.com/blog/).
  3. Set Max pages to crawl and Max crawl depth (start small, for example 50 pages, depth 2).
  4. Click Start. A small site takes about a minute.
  5. 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"
}
]
FieldDescription
urlLink target (fragment removed)
statusbroken, redirect, blocked, skipped or ok
statusCode, errorHTTP status and reason (HTTP 404, Server error HTTP 500, Host unreachable (ENOTFOUND), timeout…)
sourceUrl, anchorTextWhere the link was found and its text
linkType, element, nofollowinternal / external, HTML element, rel=nofollow
finalUrl, redirectCount, firstRedirectStatusRedirect 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.

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.

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.

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.

More Actors by the same author (innovative_cookie on Apify):