Broken Link Checker - Site Crawler, 404s & Redirects
Pricing
from $1.40 / 1,000 page crawleds
Broken Link Checker - Site Crawler, 404s & Redirects
Crawl a whole website and check every link (and optionally image) on every page: broken 404/5xx, dead domains, timeouts and redirects, with the pages they appear on. Charged per page, not per link: a 200-page site costs about $0.40.
Pricing
from $1.40 / 1,000 page crawleds
Rating
0.0
(0)
Developer
Ashish Agarwal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Broken Link Checker – Site Crawler, 404s & Redirects
Crawl a whole website and check every link on every page (and, if you like, every image): broken pages (404, 410), dead domains, server errors, timeouts and redirects, each with the pages where it appears and its anchor text. Every site gets a summary you can track over time.
Charged per page crawled, not per link. A page with 120 links costs the same as a page with 5, and a link that appears on every page is checked once. A 200-page site costs about $0.40.
What you get
| Status | Meaning |
|---|---|
broken | 404/410 or other client error, or the domain no longer resolves |
server-error | 5xx answer |
unreachable | Timeout, refused connection or protocol error |
blocked | The site blocks automated checks (403/429, LinkedIn's 999) even after a retry as a normal browser. Not counted as broken; open it in a browser to confirm |
redirect | Works, but redirects (update the link to the final URL) |
Each link item has url, statusCode, error, redirectsTo, external, kind (link or image) and foundOn (up to 10 pages with the anchor text). The site summary has pages crawled, links checked and the count for each status.
How it crawls
- Starts at your URL and follows internal links up to the click depth and page limit you set; stays on the same host (
www.included). - Respects
robots.txtby default. External links are checked, never crawled. - Checks each unique link once, with HEAD and a GET fallback for servers that refuse HEAD, plus one retry as a normal browser when a site looks like a bot wall.
- Skips
mailto:,tel:andjavascript:links; doesn't crawl into PDFs, images or other files (it still checks them).
Use cases
- SEO and site maintenance: fix 404s that waste crawl budget and frustrate visitors; update redirected links.
- Before and after a migration or redesign: crawl the old and new site and compare.
- Agencies: run it on every client site monthly and send the summary.
- Documentation and blogs: catch links to pages and domains that died years ago.
Input example
{"startUrls": ["https://www.sitemaps.org"],"maxPagesPerSite": 200,"checkExternalLinks": true,"checkImages": false}
Output example
From a real run on 26 Oct 2026: sitemaps.org's FAQ links to a domain that no longer exists.
{"type": "link","site": "https://www.sitemaps.org","url": "http://asg.web.cmu.edu/rfc/rfc3986.php","statusCode": null,"status": "broken","error": "domain does not resolve (DNS)","external": true,"kind": "link","foundOn": [{"page": "https://www.sitemaps.org/faq.html", "text": "...", "kind": "link"}],"foundOnCount": 1}
Site summary from the same run (wordpress.org/news/, first 25 pages): 596 links checked, 1 broken (404), 1 unreachable, 6 blocked by bot walls (Slack, LinkedIn and others; not counted as broken) and 12 redirects.
Pricing
Pay per event: $2 per 1,000 pages crawled (less on higher Apify plans), with all links on those pages checked at no extra cost. Set Max pages per site and a maximum spend per run; the actor stops cleanly at either limit.
Tips
- Large sites: start with Max pages per site 200–500 to see the pattern, then raise it.
- Small servers: lower Pages in parallel to 1–2.
- Sites that block data-centre traffic: turn on Proxy.
FAQ
Why is a link "blocked" and not "broken"? Big sites (LinkedIn, Slack, many shops) refuse automated requests even when the page is fine. The actor retries as a normal browser first; if it is still refused, you see it separately so your broken list stays real.
Does it run JavaScript? No. It reads the HTML your server sends, which is what search engines index first. Links injected only by client-side JavaScript are not seen.
Something wrong? Open an issue on the actor's Issues tab and it will be fixed.