Broken Link Checker – Find 404 & Dead Links on Any Site
Pricing
from $0.30 / 1,000 link checkeds
Broken Link Checker – Find 404 & Dead Links on Any Site
Crawl starting URLs and check every internal and external link plus images. Reports broken (404), dead hosts, 5xx, redirect chains, with found-on page and anchor text. $0.50 per 1,000 links checked; failed checks are free.
Pricing
from $0.30 / 1,000 link checkeds
Rating
0.0
(0)
Developer
Chris Elder
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Broken Link Checker – find 404s, dead links & redirect chains on any website
Broken Link Checker crawls your website and checks every internal link, external link and image it finds. You get a clean report of broken links (404, 410, 5xx), dead domains, redirect chains and unreachable URLs – each with the pages that link to it and the anchor text, so you know exactly what to fix and where.
No browser, no proxies, no setup: paste your homepage and click Start. Ideal for technical SEO audits, site migrations, content QA and monitoring.
Why this link checker?
- ✅ Checks every unique link once – even if it appears on 500 pages – and lists up to 20 (configurable) source pages with anchor text
- 🔁 Full redirect chains (
301 → 302 → 200) so you can update links to their final URL after a migration - 🛡️ No false alarms from bot-protected sites – LinkedIn-style 999, 403 and 429 answers from external sites are reported as
blocked, notbroken - 🧠 Smart HEAD → GET fallback – servers that mis-handle HEAD requests are re-checked with GET before a link is called broken
- 🖼️ Optional checks for images, scripts, stylesheets and iframes
- 🗺️ Finds orphan pages via your XML sitemap (optional)
- 🧾
RUN_SUMMARYwith totals by status – perfect for dashboards and alerts - 🐢 Polite by default – 500 ms between requests to the same host, honest User-Agent, robots.txt respected, retries with back-off
What you get
| Status | Meaning |
|---|---|
broken | 4xx/5xx response, dead domain (DNS not found), refused connection, invalid URL or redirect loop |
redirect | Works, but only after one or more redirects (see redirectChain, finalUrl) |
blocked | An external site refused our checker (401/403/429/999) – usually fine for real visitors; check by hand |
error | No answer (timeout, network error) after a retry |
skipped | robots.txt disallows checking it |
ok | 2xx response (only in output mode All links) |
Output example
{"url": "https://www.crawlee.dev/python/docs/examples/playwright-crawler-with-fingeprint-generator","status": "broken","statusCode": 404,"finalUrl": "https://www.crawlee.dev/python/docs/examples/playwright-crawler-with-fingeprint-generator","redirectChain": [],"linkType": "link","isExternal": false,"foundOnCount": 1,"foundOn": [{ "page": "https://crawlee.dev/blog/crawlee-for-python-v1", "text": "Playwright crawler with fingerprint generator" }],"responseTimeMs": 87,"charged": true}
(Real results from testing on a well-known documentation site: a typo 404, plus three links to non-existent www.en.wikipedia.org-style hosts reported as dead domains.)
📊 Want these results in Google Sheets? Send them straight to a Sheet with Google Sheets Sync – run it after this Actor, or add it on this Actor's Integrations tab so every run exports automatically.
How much does it cost to check links?
$0.50 per 1,000 links checked ($0.0005 per unique link) + $0.0005 per run – half the price of the most-used broken link checker on the Store. Higher Apify plans get automatic discounts (Silver $0.0004, Gold+ $0.0003).
| Site size | Typical unique links | Price |
|---|---|---|
| Small business site (50 pages) | ~400 | ~$0.20 |
| Blog / docs (500 pages) | ~3,000 | ~$1.50 |
| Large site (5,000 pages) | ~20,000 | ~$10 |
You pay for each unique link that gets a definitive answer (OK, redirect or broken). Unreachable, bot-blocked and robots.txt-skipped links are free, and links found many times are charged once. Use Max links to check or Apify's Max cost per run to cap the price.
How to use it
- Click Try for free and enter your homepage.
- Set Max pages to crawl (default 200) and choose what to output: Problems (default), Broken links only or All links.
- Optionally exclude sections (
/tag/), skip noisy links (linkedin\.com) or turn on sitemap discovery. - Click Start and download the report as CSV, Excel, JSON – or send it to Google Sheets, Slack or email via Apify integrations.
Input example
{"startUrls": [{ "url": "https://www.example.com" }],"maxPages": 500,"outputMode": "broken","checkExternalLinks": true,"checkImages": true,"excludeLinkPatterns": ["linkedin\\.com"]}
Use cases
- SEO audits – broken internal links waste crawl budget and link equity; fix them first
- Website migrations & redesigns – catch every redirect chain and 404 after the switch
- Content QA – find dead outbound references in blog posts and documentation
- Monitoring – schedule a weekly run and get alerted when new broken links appear
- Document libraries – check that the PDFs your site links to still load, then turn the live ones into searchable Markdown with our PDF to Markdown converter
- Combine with our Sitemap URL Extractor, On-Page SEO Audit and Bulk Lighthouse Auditor for a complete technical SEO toolkit
Is it OK to run a link checker?
Checking links is what browsers and search engines do every day. This Actor crawls only the site you give it, makes one lightweight request per unique link to other sites, respects robots.txt, spaces requests to each host and identifies itself honestly. It collects no personal data. Run it on sites you own or are authorised to audit.
FAQ
Does it render JavaScript? It reads the HTML your server returns, which is what search engines index first. Links injected only by client-side JavaScript are not seen.
Why is a link "blocked" and not "broken"? Some sites (LinkedIn, some CDNs) refuse automated requests while working fine in a browser. We flag those separately so your broken list stays accurate.
Can I use it via API, Make, Zapier or n8n? Yes, like every Apify Actor.
Found a wrong result? Open an issue with the link – we respond quickly.
Limits and memory
For large crawls (maxPages above ~50 or maxLinksToCheck above ~500), run at 2048 MB (the Store default). Stress inputs at 512 MB can run out of memory. Keep maxPages and maxLinksToCheck modest on the Free plan; failures from oversized inputs are not charged as successful link checks.
Need the data done for you?
If you'd rather not set up runs yourself, the UK company behind these tools (GPT Shop Ltd) offers a fixed-price done-for-you scrape. Tell us the website and the fields you need, and you get a clean CSV or Google Sheet within 48 hours of the confirmed brief, up to 5,000 rows, for £149 or $179. If we can't get the data, you're refunded in full. See the done-for-you scraper service
More tools by Chris Elder
Sitemap URL Extractor · PDF to Markdown · Bulk File Downloader · Dataset Transformer · all tools