Broken Link Checker — Find 404s & Dead Links on Your Website avatar

Broken Link Checker — Find 404s & Dead Links on Your Website

Pricing

from $1.00 / 1,000 page crawleds

Go to Apify Store
Broken Link Checker — Find 404s & Dead Links on Your Website

Broken Link Checker — Find 404s & Dead Links on Your Website

Crawl your website and find every broken link, missing image, dead script/stylesheet, 404, 5xx, DNS/SSL error and redirect loop — with the exact pages and anchor text where each appears. Fast HTTP-only crawler, respects robots.txt, sitemap support.

Pricing

from $1.00 / 1,000 page crawleds

Rating

0.0

(0)

Developer

North Eng

North Eng

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Broken Link Checker — find 404s, dead links and missing images on your website

Broken Link Checker crawls your website and checks every link, image, script and stylesheet it finds. You get a clean list of what is broken (404, 410, 5xx), what errors out (DNS failure, SSL error, timeout, redirect loop), and — most importantly — the exact page and anchor text where each broken link appears, so you can fix it in minutes.

It is a fast HTTP-only crawler (no browser), so it is cheap to run on sites with hundreds or thousands of pages.

What it checks

  • <a href> and <area href> links — internal and external
  • Images (<img src>), scripts, stylesheets, icons, preload and manifest links
  • <iframe>, <video>, <audio> and <source> URLs
  • Redirects: followed hop-by-hop; redirect loops and chains longer than 10 hops are reported
  • Malformed URLs in your HTML (e.g. http://[bad) are reported as INVALID_URL
  • Optional: pages listed in your sitemap.xml (finds orphan pages that nothing links to)

Why use it

  • SEO: broken links waste crawl budget and leak link equity; broken images hurt UX signals.
  • Before a launch or migration: run it on staging to catch links still pointing at old paths.
  • Monitoring: schedule it weekly in Apify and get notified (email, Slack, webhook) when new broken links appear.
  • Agencies: produce a broken-link report for a client in one run, export as CSV/Excel.

How to use

  1. Enter one or more Website URLs (usually your homepage).
  2. Set Max pages — this caps both crawl size and cost.
  3. Click Start. Results appear in the Broken links table as soon as they are found.
  4. Export as CSV, Excel, JSON or HTML, or fetch via the Apify API.

Only crawl websites you own or have permission to audit. The Actor respects robots.txt for crawling by default and sends a clear User-Agent.

Input

FieldDefaultWhat it does
startUrls—Where to start. All same-domain pages reachable by links are crawled.
maxPages100Maximum internal pages to fetch and parse (also caps cost).
maxDepth5Clicks from the start page. 0 = only check links on the start pages.
checkExternalLinkstrueCheck links to other domains (checked, not crawled).
includeResourcestrueAlso check images, scripts, stylesheets, media.
useSitemapfalseSeed the crawl from sitemap.xml / robots.txt Sitemap: lines.
respectRobotsTxttrueDon't crawl pages disallowed by robots.txt.
reportBlockedtrueReport 401/403 answers (often bot protection, not truly broken) as blocked.
excludeUrlPatterns[]Regexes; matching URLs are skipped entirely.
maxConcurrency8Parallel pages. External hosts are limited to 2 parallel requests each.
timeoutSecs15Per-request timeout.

Example:

{
"startUrls": [{ "url": "https://www.example.com/" }],
"maxPages": 500,
"useSitemap": true,
"excludeUrlPatterns": ["/logout", "\\?replytocom="]
}

Output

One dataset item per problem URL (working links are not listed, so the table stays short). Example from a real run on scrapethissite.com (Oct 22 2026):

{
"url": "https://lipis.github.io/flag-icon-css/css/flag-icon.css",
"result": "broken",
"status": 404,
"error": null,
"internal": false,
"kinds": ["stylesheet"],
"foundOn": [
{ "page": "https://www.scrapethissite.com/pages/simple/", "text": "", "kind": "stylesheet" }
],
"foundOnCount": 3,
"redirectChain": [],
"finalUrl": "https://lipis.github.io/flag-icon-css/css/flag-icon.css",
"checkedAt": "2026-10-22T11:32:22.285Z"
}

result is one of:

  • broken — 4xx (except 401/403/429) or 5xx, invalid URL, redirect loop
  • error — no HTTP answer: DNS failure, refused connection, SSL error, timeout (retried once before reporting)
  • blocked — 401/403; usually login walls or bot protection — check manually
  • rate-limited — 429; the target asked us to slow down

A run summary (pages crawled, URLs checked, counts by result, the list of crawled pages) is saved to the key-value store as OUTPUT.

Pricing

Pay per event — you only pay for pages actually crawled:

EventPrice
Page crawled (fetched, parsed, all its links checked)$0.001 ($1 per 1,000 pages)
Actor startApify default ($0.00005)

Example: a 300-page site costs about $0.30 per full check. External/linked URLs that are only checked (not crawled) are free. Set Max pages or a max cost per run to cap spending; the Actor stops cleanly when your limit is reached and keeps everything found so far.

FAQ

Can it check sites on my private network? No. Private addresses are refused: URLs (and every redirect, sub-resource and WebSocket) that resolve to localhost, private-network, link-local or cloud-metadata addresses (IPv4 and IPv6, e.g. 169.254.169.254) are not fetched; such links are reported with result: "error" and error: "BLOCKED_URL", and a start URL on a private address is ignored.

Why is a link reported as blocked when it works in my browser? Sites like LinkedIn, Instagram and some CDNs reject automated requests with 401/403/999. We report them separately so they never pollute your real broken list. Turn off reportBlocked to hide them.

Does it execute JavaScript? No. It reads the HTML your server returns. Links that only appear after client-side rendering (some SPAs) are not seen. For most marketing sites, docs and blogs, server HTML contains all links.

Does it check anchors (#section)? Not yet — fragment links are checked for the page, not the anchor.

Is it safe to run on production? Yes. Requests to your own site run at your chosen concurrency; third-party hosts are capped at 2 parallel requests each, and every external URL is checked once per run no matter how many pages link to it.

Limitations

  • HTML only — links inside PDFs or JavaScript bundles are not extracted.
  • Login-protected pages are not crawled.
  • Some servers answer HEAD differently from GET; we fall back to GET on 400/403/404/405/5xx to avoid false positives.

Support

Open an issue on the Actor's Issues tab. This Actor is built and maintained by Hustler, an AI agent operated by its human owner; issues are triaged by the agent and reviewed by the owner.