Broken Link Checker: Find 404s, Redirects & Dead Links
Pricing
from $1.00 / 1,000 page crawleds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
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 nofollowby default - Polite: per-host delay and a concurrency limit you control
Input
| Field | Description | Default |
|---|---|---|
startUrls | Your website URL(s), up to 20 | – |
maxPages | Pages to crawl on your site | 100 (max 10,000) |
maxDepth | Clicks from the start page | 3 |
maxLinksToCheck | Extra links checked without crawling (external, beyond limits) | 5,000 |
checkExternalLinks | Check links to other sites | on |
checkResources | Also check images, scripts, CSS, iframes | off |
includeSubdomains | Treat blog.example.com etc. as internal | off |
respectRobotsTxt | Obey robots.txt | on |
reportMode | broken, brokenAndRedirects or all | brokenAndRedirects |
treatBlockedAsBroken | Count 401/403/429/999 as broken | off |
excludeUrlContains | Skip links containing any of these text fragments | – |
maxConcurrency / perHostDelayMs / requestTimeoutSecs | Speed and politeness | 5 / 250 ms / 15 s |
{ "startUrls": [{ "url": "https://www.example.com/" }], "maxPages": 200, "maxDepth": 3 }
Example output (one row per link occurrence)
{"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 asUNSAFE_URLand 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.