Broken Link Checker: Find 404s, Redirects & Dead Links
Pricing
Pay per event
Broken Link Checker: Find 404s, Redirects & Dead Links
Crawl a website and check every link, or bulk-check a URL list. Status codes, full redirect chains, response times, the pages and anchor text where each broken link appears. Robots-aware. $0.40 per 1,000 links.
Pricing
Pay per event
Rating
0.0
(0)
Developer
A Q
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Broken Link Checker: find 404s, redirects and dead links
Crawl any website and check every link on it, or paste a list of URLs to bulk-check their HTTP status. You get one clean row per unique link: status, HTTP code, full redirect chain, response time, and the exact pages and anchor text where the link appears, so you know what to fix and where.
$0.40 per 1,000 links checked. Pages crawled are free. A 25-page site with 1,000 links costs about $0.40.
What it does
- Site crawl: starts from your homepage (or any page), follows internal links up to
maxPages, and checks every internal and external link it finds. - Bulk URL checker: turn
crawloff and it checks just the URLs you list: status codes, redirects, final URL, timing. - Clear status for every link:
broken(4xx/5xx),error(DNS not found, connection refused, timeout, expired or invalid SSL certificate, redirect loop),blocked(401/403/429/999, usually bot protection rather than a dead link),redirected(works, but through 301/302 hops),ok. - Where it's broken:
foundOnlists up to 10 source pages per link with anchor text, tag and nofollow flag, plus a totaloccurrencescount. - Accurate: tries a fast HEAD request first and confirms every failure with GET, because many servers mishandle HEAD. Redirect chains are followed hop by hop.
- Polite: honours robots.txt when crawling, at most 5 parallel requests per host, identifies itself with a clear user agent, retries 429/503 with backoff.
- Problems first: rows are sorted broken, error, blocked, redirected, ok.
SUMMARYrecord has counts for every status. - Optional checks of images, scripts, stylesheets, iframes and media (
checkAssets).
Input example
{ "urls": ["https://example.com"], "maxPages": 200, "maxLinks": 10000, "onlyBroken": true }
Output example
{"url": "https://example.com/old-pricing","status": "broken","isBroken": true,"statusCode": 404,"error": null,"finalUrl": "https://example.com/old-pricing","redirectCount": 0,"redirectChain": [],"responseTimeMs": 182,"contentType": "text/html","isInternal": true,"linkType": "a","occurrences": 3,"foundOn": [{ "pageUrl": "https://example.com/blog/launch", "anchorText": "see pricing", "tag": "a", "nofollow": false }],"checkedAt": "2026-10-23T06:00:00.000Z"}
Pricing compared
| Actor | Price per 1,000 links |
|---|---|
| This Actor | $0.40 |
| khadinakbar/broken-link-checker | $1.00 |
| parseforge/broken-link-checker | $1.20 + $0.04 per run |
| logiover/bulk-url-status-checker | $2.50 |
| logiover/broken-link-checker | $5.00 |
Prices from the Apify Store, October 2026. Set a maximum cost per run in Apify and the Actor stops cleanly at the limit.
Use cases
- SEO audits and link rot clean-up
- Site migrations: verify every old URL redirects correctly
- Monitoring: schedule a weekly run with
onlyBrokenand get only what broke - Bulk HTTP status and redirect checks for URL lists, sitemaps or backlinks
FAQ
Why is a link "blocked" and not "broken"? Sites like LinkedIn or some CDNs refuse automated requests (403, 429, 999). The page probably works in a browser, so it's kept separate from real 404s.
Does it run JavaScript? No. It reads the HTML your server returns, which is what search engines and most link checkers see. That makes it fast and cheap.
Does it follow nofollow links? Yes, it checks them and marks them nofollow: true.
API
curl -X POST "https://api.apify.com/v2/acts/best_apis~broken-link-checker/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" -d '{"urls":["https://example.com"],"onlyBroken":true}'