Broken Link Checker
Pricing
$3.00 / 1,000 page crawleds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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 LRA["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#anchorlinks 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}
| Setting | What it does |
|---|---|
startUrls | The site to check, as a domain or full URL |
maxPages | How many pages to crawl. This is what the run is charged on |
maxDepth | How many clicks from the start page to follow |
checkExternalLinks | Also verify links pointing off your site, where most rot happens |
checkImages | Verify every image source too |
excludePatterns | Skip crawling anything matching, for example /admin |
reportWorkingLinks | Return 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 monthly | Monthly cost |
|---|---|
| Checking by hand | not 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.
Related products
- 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