Broken Link Checker avatar

Broken Link Checker

Pricing

$3.00 / 1,000 page crawleds

Go to Apify Store
Broken Link Checker

Broken Link Checker

Crawl any website and find every broken link, dead image and redirect chain, reported with the exact page and anchor text each one sits on. Covers internal and external links, and tells a genuine 404 apart from a site that simply blocks robots.

Pricing

$3.00 / 1,000 page crawleds

Rating

0.0

(0)

Developer

Peach O

Peach O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Broken Link Checker: Find Every Dead Link on Your Site

Point it at a website and it crawls the pages, follows every link and image, and tells you which ones are dead — with the exact page each broken link sits on and the anchor text a visitor clicks.

Built for SEO teams, agencies and site owners who need the list of what to fix, not a score out of 100.

How it works

flowchart LR
A["Your website"] --> B["Crawl pages<br/>(canonical URLs only)"]
B --> C["Collect every link<br/>and image"]
C --> D["Check each target once"]
D --> E{"What came back?"}
E -->|404, 410, 5xx, no DNS| F["broken"]
E -->|403, 429, timeout| G["unverified"]
E -->|2xx or 3xx| H["ok"]
F --> I[("Fix list")]
G --> I

Every distinct target is checked once, however many pages link to it, so a site-wide footer link costs one request rather than one per page.

It does not cry wolf

Most link checkers produce reports nobody trusts. Three deliberate choices here:

  • A 403 is not a broken link. Plenty of large sites refuse automated requests while serving the page perfectly to a real visitor. Those are reported as unverified, separately from genuine breakage, so your 404 list stays short and real.
  • mailto:, tel: and #anchor links are skipped, not reported as dead URLs.
  • Tracking parameters are stripped before crawling. Without that, every ?utm_source= variant of a page gets crawled as if it were a new page and the crawl balloons.

Built for

  • SEO teams clearing 404s that waste crawl budget and leak link equity
  • Agencies running a site audit before a pitch or a handover
  • Site owners after a migration, when internal links break silently
  • Content teams whose older posts link to sites that have since died

Input

{
"startUrls": ["example.com"],
"maxPages": 200,
"checkExternalLinks": true,
"checkImages": true
}
SettingWhat it does
startUrlsThe site to check, as a domain or full URL
maxPagesHow many pages to crawl. This is what the run is charged on
maxDepthHow many clicks from the start page to follow
checkExternalLinksAlso verify links pointing off your site, where most rot happens
checkImagesVerify every image source too
excludePatternsSkip crawling anything matching, for example /admin
reportWorkingLinksReturn every link rather than only the problems

Output

{
"url": "https://example.com/no-such-page",
"foundOn": "https://example.com/blog/old-post",
"anchorText": "our old pricing page",
"type": "link",
"isInternal": true,
"statusCode": 404,
"state": "broken",
"reason": "http-404",
"redirected": false,
"redirectedTo": null,
"redirectChanged": false,
"checkedAt": "2026-09-17T15:58:12.004Z"
}

state is the field to filter on: broken, unverified or ok. The run summary also names the ten pages carrying the most breakage, which is the list to work through first.

Redirects worth knowing about

A link that still returns 200 can still be a problem. redirectChanged is true when a link lands on a different domain than it pointed at, which is the usual signature of an expired domain that now serves a parked page or something worse. Those are returned even when you ask only for problems.

Run it as an API

curl -X POST "https://api.apify.com/v2/acts/arched_friend~broken-link-checker/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": ["example.com"],
"maxPages": 100,
"checkExternalLinks": true
}'

Pricing

You pay $0.003 for each page crawled. Checking the links on those pages is included, however many there are — one run above checked 787 links across 25 pages.

Auditing a 500-page site monthlyMonthly cost
Checking by handnot realistically possible
Most SEO suites$99 to $500 per month
This Actor$1.50 per run

Common questions

Why is a link marked unverified rather than broken? The server would not confirm it either way: a 403 to bots, a 429 rate limit, or a timeout. Those need a human glance; they are not automatically broken.

Does it respect robots.txt? It identifies itself honestly as a link checker and crawls only the site you point it at. Use excludePatterns to keep it out of any area you do not want crawled.

Can it check a site behind a login? No. It checks what a logged-out visitor and a search engine can reach, which is what matters for SEO.

Why did it find fewer pages than my site has? Either maxPages capped it, maxDepth stopped it, or those pages are not linked from anywhere it crawled. Orphan pages are invisible to a crawler by definition.

  • Website Change Monitor to watch the pages you just fixed for regressions
  • SEO Meta & Content Auditor to find missing titles and duplicate descriptions
  • Domain & SSL Monitor to catch the certificate and expiry problems behind dead links
  • Tech Stack Checker to profile the sites you are auditing
  • Website Lead Extractor to pull contacts from the sites you audit