Broken Link Checker: Find 404s, Redirects & Dead Links avatar

Broken Link Checker: Find 404s, Redirects & Dead Links

Pricing

from $1.00 / 1,000 page crawleds

Go to Apify Store
Broken Link Checker: Find 404s, Redirects & Dead Links

Broken Link Checker: Find 404s, Redirects & Dead Links

Crawl your website and find every broken internal and external link, with the page it's on, the anchor text, status code, redirect chain and timeouts. Respects robots.txt. Cheap per-page and per-link pricing.

Pricing

from $1.00 / 1,000 page crawleds

Rating

0.0

(0)

Developer

Eddie Power

Eddie Power

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Share

Find every broken link on your website in minutes. Give it your home page and it crawls your site, checks every internal and external link, and tells you which page the broken link is on, the anchor text, the HTTP status, the redirect chain and any timeouts. Fix 404s before Google and your visitors find them.

Great for:

  • 🔍 SEO audits: broken links and redirect chains waste crawl budget and leak link equity
  • 🛠️ Web developers and agencies: check a site after a migration, redesign or CMS update
  • 📝 Content teams and bloggers: catch dead external references in old posts
  • ⏰ Scheduled monitoring: run it weekly with Apify Schedules and get alerted

What it checks

  • Crawls pages on your domain (same host, www. included; subdomains optional) up to your max pages and max depth
  • Checks every <a href> link, and optionally images, scripts, stylesheets and iframes
  • External links get a light HEAD request, falling back to GET when a server refuses HEAD
  • Follows up to 10 redirects and records every hop
  • Respects robots.txt (including Crawl-delay) and meta robots nofollow by default
  • Polite: per-host delay and a concurrency limit you control

Input

FieldDescriptionDefault
startUrlsYour website URL(s), up to 20–
maxPagesPages to crawl on your site100 (max 10,000)
maxDepthClicks from the start page3
maxLinksToCheckExtra links checked without crawling (external, beyond limits)5,000
checkExternalLinksCheck links to other siteson
checkResourcesAlso check images, scripts, CSS, iframesoff
includeSubdomainsTreat blog.example.com etc. as internaloff
respectRobotsTxtObey robots.txton
reportModebroken, brokenAndRedirects or allbrokenAndRedirects
treatBlockedAsBrokenCount 401/403/429/999 as brokenoff
excludeUrlContainsSkip links containing any of these text fragments–
maxConcurrency / perHostDelayMs / requestTimeoutSecsSpeed and politeness5 / 250 ms / 15 s
{ "startUrls": [{ "url": "https://www.example.com/" }], "maxPages": 200, "maxDepth": 3 }
{
"url": "https://www.example.com/old-pricing",
"isBroken": true,
"result": "BROKEN",
"statusCode": 404,
"linkType": "internal",
"sourcePage": "https://www.example.com/blog/2024-update",
"anchorText": "see our pricing",
"element": "a",
"nofollow": false,
"finalUrl": "https://www.example.com/old-pricing",
"redirectCount": 0,
"redirectChain": [],
"method": "GET",
"responseTimeMs": 142,
"error": null,
"occurrencesOnSite": 3,
"checkedAt": "2026-10-26T10:47:23.972Z"
}

result values: OK, BROKEN (4xx/5xx), BLOCKED_BY_SITE (401/403/429/999, often bot protection, not necessarily broken), TIMEOUT, DNS_ERROR, CONNECTION_ERROR (refused, reset, bad TLS certificate), TOO_MANY_REDIRECTS, SKIPPED_ROBOTS, UNSAFE_URL and ERROR. A run summary (pages crawled, links checked, broken count) is saved as SUMMARY in the key-value store.

Pricing

Pay per event: a small fee per page crawled and per extra link checked. See the Pricing tab. Set a maximum cost per run and the crawl stops cleanly when it's reached.

Limitations

  • Pages are fetched as HTML without running JavaScript, so links that only appear after JavaScript runs (some single-page apps) aren't found. Server-rendered sites, WordPress, Shopify, Laravel, Next.js SSR and similar work well.
  • Some sites block bots and return 403/429/999 even for working links. These are reported separately as BLOCKED_BY_SITE.
  • For safety, it only checks public http(s) URLs on ports 80, 443, 8080 and 8443. Links to private or internal addresses (localhost, 192.168.x.x, cloud metadata and the like) and links with embedded passwords are reported as UNSAFE_URL and never requested.
  • Pages over 5 MB are only scanned up to 5 MB.
  • External links are checked with one request each and are never crawled.

Responsible use

Check sites you own or have permission to audit. Keep robots.txt respect on for other people's sites. This Actor is independent and not affiliated with any website it checks.