Broken Link Checker — Crawl Sites & Find 404s
Pricing
from $1.00 / 1,000 page crawleds
Broken Link Checker — Crawl Sites & Find 404s
Crawl each website (same domain, respects robots.txt), check every internal and external link, and get the broken ones (404, 5xx, timeouts, DNS errors) with the page where they were found, anchor text, plus one summary row per site.
Pricing
from $1.00 / 1,000 page crawleds
Rating
0.0
(0)
Developer
LONG HOÀNG
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Broken Link Checker — Site Crawler with Source Pages & Anchor Text
Crawl one or many websites and get a clean list of every broken link: the broken URL, the page where it was found, its anchor text, the HTTP status or network error, plus one summary row per site.
- Crawls same-domain pages (www and non-www count as one site) up to
maxPagesPerSite. - Checks internal and external links (and optionally images):
HEADfirst, automaticGETfallback for servers that mishandle HEAD. - Reports 4xx, 5xx, timeouts, DNS failures, TLS/SSL errors, redirect loops and malformed URLs. Redirects are followed and the final URL is shown.
- Flags links that are probably bot-blocking rather than broken (401, 403, 429, 999 — common on LinkedIn, Stack Exchange, marketplaces), so you can filter them out.
- Polite by default: respects
robots.txt(includingCrawl-delay), at most 2 parallel requests per host, a delay between requests, and automatic slow-down when a server answers 429.
Who it's for
- SEO specialists & agencies auditing client sites for 404s that waste crawl budget and hurt UX.
- Content teams cleaning dead outbound links from blogs and documentation.
- Developers running a link check after a migration or redesign (schedule it or call it via API).
Input
{"startUrls": ["example.com", "https://docs.example.com/guide/"],"maxPagesPerSite": 50,"checkExternalLinks": true,"checkImages": false,"maxLinksPerSite": 2000,"maxConcurrency": 10,"delayMs": 200,"timeoutSecs": 15}
Output
Two kinds of rows in the dataset (two views in the Output tab: Broken links and Per-site summary).
type: "broken-link" — one row per broken URL per site:
site, url, statusCode, errorType (http-4xx | http-5xx | rate-limited | timeout | dns | tls | connection | redirect-loop | invalid-url), error, linkType (internal | external), elementType (link | image), foundOn, anchorText, occurrences, foundOnPages[{page, anchorText}] (up to 10), possiblyBlocked, finalUrl, checkMethod, checkedAt
type: "site-summary" — one row per start URL:
site, startUrl, pagesCrawled, linksFound, linksChecked, internalLinks, externalLinks, brokenLinks, brokenConfirmed, brokenInternal, brokenExternal, possiblyBlocked, skippedByRobots, skippedOverLimit, robotsTxt, crawlDelaySecs, durationSecs, error
Export as JSON, CSV or Excel, or read it through the API.
Pricing (pay per event)
- Page crawled: each HTML page fetched and parsed on your site.
- Link checked: each unique link URL checked. Links to pages already crawled are not charged twice.
- Output rows are free. A site that cannot be reached is not charged for pages. Set a maximum cost per run in Apify and the Actor stops cleanly when it is reached.
How it works / what it does not do
Plain HTTP requests, no browser and no proxies. It only reads public technical information (URLs, status codes, link text). It does not collect emails, phone numbers or other personal data (mailto: and tel: links are skipped), and it does not log in or solve CAPTCHAs.
Limitations
- Links created only by JavaScript are not seen (no browser rendering).
- Sites behind Cloudflare/bot protection may return 403 for every link; these are flagged
possiblyBlocked. - Internal URLs disallowed by robots.txt are not fetched and not reported (counted in
skippedByRobots). - Servers that send malformed HTTP responses which browsers still display are not reported as broken.
- Results reflect what the checker's network sees: a host that is down only from one region may show as a timeout.
- External links are checked with a single request each; robots.txt of external sites is not consulted for that one check.