Hill Country Bots

Broken Link Checker


Find broken links on any website. Crawl the site, paste a URL list or load a sitemap, and get the status code, the redirect chain and the exact page each dead link is on.

Check broken links on Apify $0.80 per 1,000 URLs, failures free.

How to find broken links on a website

Dead links waste your visitors' time and can drag down an SEO audit. The Broken Link Checker crawls a site, or takes a pasted URL list or an XML sitemap, checks every unique link once, and tells you the HTTP status, the full redirect chain, and the exact page each broken link sits on.

  1. Open the tool on Apify. A free Apify account is enough. The form is prefilled, so Start works right away.
  2. Keep Crawl for a site check, or switch to List or Sitemap.
  3. Set a cap. 50 pages and 1,000 URLs is a safe first pass. Raise it for a deeper check.
  4. Run it. Broken links come first in the results. Download JSON, CSV or Excel, or grab the ready-to-send broken links CSV.

What you get

  • A verdict for every unique URL: broken, unreachable, blocked, redirect, ok or skipped.
  • Status codes and redirect chains, including the first hop (for example 301) and the final URL.
  • The pages that link to it, plus the anchor text, so you know where to make the fix.
  • Optional asset checks for images, scripts and stylesheets, and a problems-only view if you do not want the healthy rows.

Who it is for

SEO agencies and web designers who need a client-ready list of dead links. Site owners and content teams who want to catch 404s and redirect chains before visitors do. Developers who want stable JSON through an API, at a predictable price.

A real sample

From a real run on November 12, 2026, at 7:58 AM Central: crawl mode on crawlee.dev, 25 pages crawled, 300 URLs checked in 46 seconds. Result: 1 broken external link, 50 redirects, 3 blocked by the target site (Stack Overflow answers bots with 403), 231 ok, and 15 skipped because the target's robots.txt disallows bots.

URLVerdictStatusFound onAnchor text
https://jobops.app/broken402crawlee.dev/blogJobOps
https://www.crawlee.dev/blog/launching-crawlee-pythonredirect301 to 2001 page
https://sdk.apify.com/docs/guides/getting-startedredirect301 to 302 to 20013 pages
https://stackoverflow.com/questions/tagged/crawleeblocked403crawlee.dev

And the broken row as the tool returns it, shortened:

{
  "url": "https://jobops.app/",
  "isBroken": true,
  "verdict": "broken",
  "statusCode": 402,
  "foundOn": ["https://crawlee.dev/blog"],
  "foundOnCount": 1,
  "anchorText": "JobOps",
  "linkType": "external",
  "status": "ok",
  "errorCode": "HTTP_402"
}

There is a public example too: check a short URL list for broken links and redirects.

How it compares

Desktop crawlers such as Screaming Frog will also find broken links, and they go deeper on a single site you run from your own machine. Our tool is for lists and sites you want checked in the cloud, on a schedule, or from an API, without installing anything. When we priced it on November 12, 2026, the other Apify broken link checkers we compared charged $1.00 to $1.20 per 1,000 URLs, and some added a start fee. Ours is $0.80 per 1,000, with no start fee, and it tells you the page each broken link is on.

What it costs

$0.80 per 1,000 unique URLs that returned an HTTP status, including 404s. No start fee. Each URL is charged once per run, however many pages link to it. Invalid inputs, dead domains, timeouts, robots.txt skips and over-cap URLs are free. A 100-page site with 1,500 unique links costs about $1.20. You can cap spend with max URLs or the run's maximum charge.

Run the Broken Link Checker

Questions

What counts as a broken link?

A 4xx or 5xx status (except the blocked codes below), a domain that does not resolve, a refused connection, a TLS error, or a redirect loop. Timeouts come back as unreachable. Both broken and unreachable are flagged so you can fix them.

Do blocked sites count as broken?

No. Some sites, such as Stack Overflow, answer automated checks with 401, 403, 429 or 999. Those come back as blocked, not broken. Open the URL in a browser if you need to confirm it.

Are JavaScript links included?

No. The checker uses plain HTTP, not a browser, so links that appear only after JavaScript runs are not seen. Pages behind a login are never crawled.

Do I pay for 404s?

Yes, because finding them is the job. You pay $0.80 per 1,000 unique URLs that returned an HTTP status, including 404s. Invalid inputs, dead domains that never answered, timeouts, robots.txt skips and over-cap URLs are free.

Can I check a list or a sitemap instead of crawling?

Yes. List mode checks only the URLs you paste. Sitemap mode reads the site's XML sitemaps and checks every URL they list, which is a good way to catch dead pages the sitemap still advertises.

Will it follow robots.txt?

Yes, by default. Disallowed URLs are not fetched, are reported as skipped, and are not charged.

Related