Broken Link Checker: 404s, Redirects & Anchor Text avatar

Broken Link Checker: 404s, Redirects & Anchor Text

Pricing

from $0.50 / 1,000 link checkeds

Go to Apify Store
Broken Link Checker: 404s, Redirects & Anchor Text

Broken Link Checker: 404s, Redirects & Anchor Text

Crawl a website and find broken links (404, 5xx, dead domains), redirect chains and blocked links, with the source page and anchor text for every link. Polite, respects robots.txt. Pay only per link that got a definitive result.

Pricing

from $0.50 / 1,000 link checkeds

Rating

0.0

(0)

Developer

Mogul Tools

Mogul Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Broken Link Checker: Find 404s, Dead Domains & Redirect Chains with Source Page + Anchor Text

Crawl your website and get a clean report of every broken link, showing which page it's on, what the anchor text says, and the full redirect chain. Internal and external links are both checked. It's polite by default and respects robots.txt. You pay only for links that got a definitive answer. Timeouts, connection errors and robots-skipped links are listed but free.

Use it as a website broken link checker, a dead link finder / 404 checker, a redirect chain checker for SEO audits, or an automated link-rot monitor you schedule monthly. Export to CSV/Excel and hand the "fix list" straight to whoever edits the site.

Quick start (about 1 minute)

  1. Enter your homepage in Website URL.
  2. Set Max pages to crawl (100 is a good start) and choose Rows to output → Problems only.
  3. Click Start. Export the table: each row tells you the broken URL, the page it's on, and the anchor text to search for.

What can it do?

  • 🕷️ Same-domain crawl from a start URL, up to Max pages (optionally including subdomains)
  • 🔗 Checks every link it finds: internal pages, external sites (HEAD with an automatic GET fallback), and optionally images, scripts and stylesheets
  • ❌ Broken detection: 4xx/5xx, dead domains (DNS), TLS errors, redirect loops and overly long redirect chains
  • ↪️ Redirect chains hop by hop (301 → 302 → 200), so you can fix links that point to redirects
  • 📍 Where to fix it: source page and anchor text for each link, up to 20 occurrences, plus a full count
  • 🚧 Honest "blocked" status: sites that refuse bots (401/403/429/999, LinkedIn for example) are labeled blocked, not falsely broken
  • 🤝 Polite: per-host delay (500 ms default), honors robots.txt Crawl-delay, Retry-After and nofollow, and uses an honest User-Agent
  • 📊 SUMMARY record with totals and a broken-links list for quick reporting

Who uses it?

  • Site owners & SEOs: fix 404s that hurt rankings and user trust
  • Agencies: monthly link audits for client sites (schedule it in Apify)
  • Content teams & docs maintainers: catch outdated external references
  • Developers/CI: run after each deploy through the API and fail the build if the SUMMARY shows broken > 0
GoalInput
Quick 404 audit of a small site"maxPages": 100, "reportMode": "problems"
Only the links you must fix"reportMode": "broken"
Internal links only (fast)"checkExternalLinks": false
Broken images too"checkImages": true
Skip a section (e.g. /tag/ pages)"excludeUrlPatterns": ["/tag/"]
Monthly link-health report per clientSave a Task per site + monthly Schedule

How much does it cost?

Pay per unique link checked: $0.80 per 1,000 on Free, $0.70 on Starter, $0.60 on Scale, and $0.50 on Business. There are no platform-usage fees on top. A 100-page site typically has 300 to 1,500 unique links, which comes to about $0.25 to $1.20 per full audit.

Every checked link is billed once, even when Rows to output hides it (for example "Broken only"). Links that timed out, errored, or were skipped by robots.txt are never billed. Set Max links or Max total charge to cap spend.

Input

{
"startUrl": "https://crawler-test.com/",
"maxPages": 100,
"checkExternalLinks": true,
"checkImages": false,
"reportMode": "problems"
}
{
"url": "https://crawler-test.com/redirects/invalid_redirect",
"result": "broken",
"broken": true,
"statusCode": 303,
"finalStatusCode": 404,
"finalUrl": "https://crawler-test.com/images/foo.jpg",
"redirected": true,
"redirectChain": [
{"url": "https://crawler-test.com/redirects/invalid_redirect", "status": 303},
{"url": "https://crawler-test.com/images/foo.jpg", "status": 404}
],
"isInternal": true,
"linkType": "a",
"foundOn": "https://crawler-test.com/",
"anchorText": "Redirect 303 To 404",
"sourceCount": 1,
"error": "HTTP 404",
"charged": true
}

result is one of ok, redirect, broken, blocked, error (inconclusive, free) or skipped (robots.txt, free). Rows are sorted with broken links first.

Use it from code or CI (API)

curl -X POST "https://api.apify.com/v2/acts/blond_terrarium~broken-link-checker-pro/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://example.com","maxPages":50,"reportMode":"broken"}'

An empty array means no broken links, so a CI step can simply fail when the response has any rows.

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("blond_terrarium/broken-link-checker-pro").call(run_input={"startUrl": "https://example.com", "reportMode": "broken"})
summary = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("SUMMARY")["value"]
print(summary)

Use it from AI agents (MCP)

Available through the Apify MCP server (https://mcp.apify.com). Ask Claude, Cursor or ChatGPT: "Check example.com for broken links with blond_terrarium/broken-link-checker-pro and list the pages I need to fix." The output (URL, source page, anchor text, status) is easy for an agent to turn into a fix list or a ticket.

Integrations

Schedules, webhooks, Slack, email, Google Sheets, Zapier, Make and n8n all work through Apify. Popular setup: monthly Schedule → Slack/email alert with the SUMMARY.

How it compares

This ActorDesktop crawlersFree online checkers
Runs in the cloud, schedulable, API✅❌ your laptoplimited
Source page and anchor text per broken link✅✅often ❌
Full redirect chain hop by hop✅✅rarely
Bot-blocked links labeled blocked, not broken✅❌ (false positives)❌
Pay per link checked, inconclusive results free✅licence feepage caps / ads

FAQ

Why "blocked" and not "broken"? Many big sites reject automated requests (403/429/999) even though the link works fine in a browser. We don't want you "fixing" links that aren't broken.

How long does a run take? A 100-page site usually finishes in a few minutes. Large sites scale with Max pages and the polite per-host delay.

What does a full audit cost? See the pricing section above; a 100-page site is typically about $0.25 to $1.20.

Can it check pages behind a login? No. It's for public pages only.

Will it hammer my server? No. Requests to one host are spaced out (500 ms default, or your robots.txt Crawl-delay), and 429/503 responses trigger a backoff.

Can I check a list of URLs instead of crawling? Not yet: it crawls from one start URL. To get a site's full URL list, use Sitemap URL Extractor. For page visuals, see Bulk Website Screenshot.