Broken Link Checker
Pricing
from $0.50 / 1,000 links
Broken Link Checker
Crawl same-site HTML pages and check anchors, images, scripts and stylesheets for broken URLs, redirects and blocked external checks.
Pricing
from $0.50 / 1,000 links
Rating
0.0
(0)
Developer
Deepak Ganesh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare

Broken Link Checker crawls same-site HTML pages and checks every unique target URL it finds. It reports broken links, redirects, blocked external checks, and the pages where each URL was discovered.
The Actor uses fast HTTP requests (no browser), follows internal links only, and treats example.com and www.example.com as the same site. It skips mailto:, tel:, javascript:, data: and fragment-only URLs.
Use cases
- Audit a website before migration or launch.
- Find broken navigation, missing images and bad stylesheet/script URLs.
- Monitor redirect chains after changing CMS, domains or URL structure.
- Export a clean dataset of checked links with source pages and anchor text.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | string list | required | Sites or pages to crawl. Plain domains are converted to HTTPS. |
maxPagesPerSite | integer | 50 | Maximum same-site pages crawled per input site. |
checkExternalLinks | boolean | true | Check outbound URLs. External 429, 999 and Cloudflare 403 responses are marked blocked, not broken. |
checkImages | boolean | true | Check image src URLs. |
checkScripts | boolean | false | Check script src URLs. |
checkStylesheets | boolean | false | Check stylesheet link[href] URLs. |
onlyReportBroken | boolean | false | If true, the dataset includes only broken, redirected or blocked results. Billing remains per checked link. |
maxConcurrency | integer | 10 | Maximum parallel page/link work, with extra per-host politeness. |
requestTimeoutSecs | integer | 30 | Page-load timeout. Link checks use a 15-second timeout. |
Example input:
{"startUrls": ["https://books.toscrape.com"],"maxPagesPerSite": 5,"checkExternalLinks": true,"checkImages": true,"onlyReportBroken": false,"maxConcurrency": 5}
Output
The default dataset contains one item per reported unique target link. foundOn is capped at 20 source pages per target.
{"url": "https://books.toscrape.com/index.html","finalUrl": "https://books.toscrape.com/index.html","status": "ok","statusCode": 200,"ok": true,"isBroken": false,"errorMessage": null,"redirectChain": [],"isExternal": false,"linkType": "a","foundOn": [{"pageUrl": "https://books.toscrape.com/","anchorText": "Books to Scrape"}],"checkedAt": "2026-10-06T16:58:52.943Z"}
A per-site summary is saved to key-value store record SUMMARY:
{"totals": {"sites": 1,"pagesCrawled": 5,"linksFound": 153,"linksChecked": 153,"brokenCount": 0,"redirectCount": 0}}
Pricing
This Actor uses pay-per-event pricing.
| Event | Price | Charged when |
|---|---|---|
| Actor Start | $0.00005 | The Actor starts. |
Link (link-checked) | $0.0005 | Each unique target URL is checked. |
If onlyReportBroken is enabled, the Actor still charges for every checked link, even though it pushes only broken, redirected or blocked records to the dataset. Pages that fail to load are recorded in the summary and are not charged as links.
FAQ
Are redirects broken?
No. Redirects are reported with status: "redirect", redirectChain, and finalUrl, but isBroken is false unless the final response is HTTP 400+ or a network error occurs.
Why is a 403 not always broken?
External Cloudflare 403 responses and external 429/999 bot/rate-limit responses are marked blocked to avoid false positives. Ordinary HTTP 403 responses are reported as broken.
Does it respect robots.txt?
The Actor is polite (HTTP-only, modest concurrency, per-host limits) but does not currently parse robots.txt. Lower maxConcurrency for sensitive sites.
What does same-site mean?
Only the exact hostname and its www variant are crawled as pages. Subdomains such as blog.example.com are external.
Changelog
0.1
- Initial release: same-site crawl, unique URL checks, HEAD-to-GET fallback, redirect chains, blocked external classification, per-site summary and pay-per-link pricing.