Broken Link & Sitemap Health Checker
Pricing
from $0.50 / 1,000 link checkeds
Broken Link & Sitemap Health Checker
Finds broken links, redirect chains and loops, sitemap entries that fail, and pages missing from the sitemap. Crawls your site or reads its sitemap. Plain HTTP, obeys robots.txt. Pay per link checked.
Pricing
from $0.50 / 1,000 link checkeds
Rating
0.0
(0)
Developer
Jeremy DONALDSON
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Features
Share
What does Broken Link & Sitemap Health Checker do?
Broken Link & Sitemap Health Checker finds every broken link on a website (404s, server errors, dead domains, timeouts), every redirect chain and redirect loop, every sitemap entry that fails, and every page missing from the sitemap. Give it a home page. It reads the site's robots.txt and sitemap.xml, crawls the site's own pages, and checks each link once, including links to other websites.
It uses plain HTTP requests, no browser, so it is fast and cheap. You pay per address checked. Addresses the site's robots.txt blocks are listed free and never requested.
To try it, paste your home page into Website, sitemap or links and press Start.
Why use it?
- 🔗 Broken links with where they are. Each broken link lists the pages that link to it and the link text, so you know exactly what to fix.
- 🗺️ Sitemap health, not just links. Flags sitemap entries that are broken, redirect, are
noindex, point their canonical elsewhere, or are blocked byrobots.txt. Checks each sitemap file too: missing, not XML, too big, or listing other sites. - 🔍 Pages missing from the sitemap. Compares what the crawl finds with what the sitemap lists, and names the indexable pages Google may never be told about. With a full crawl it also names sitemap pages nothing links to.
- ↪️ Every redirect hop. Full redirect chains with each status code, loops caught, and same-site links that point at a redirect instead of the final page.
- 🤝 Polite by default. Obeys
robots.txtand itsCrawl-delay, spaces requests to each site, and never has more than two open at once on one site. - 💸 Pay only for checks. Each unique address is checked and charged once, however many pages link to it.
- 🤖 Agent-ready. Works as a tool in the Apify MCP server, so AI assistants such as Claude or ChatGPT can run it.
- ⏱️ Everything the Apify platform gives you: schedules (a weekly link check), API, webhooks, and exports to JSON, CSV, Excel or Google Sheets.
Who is it for?
- SEO and web agencies: technical audits, client reports, and checks after a site migration.
- Site owners, editors and developers: catch dead links before visitors and search engines do.
- Anyone moving a site: run it before and after to catch broken redirects.
How to check a website for broken links
- Paste the home page (or its
sitemap.xml) into Website, sitemap or links. - Leave What to check on Sitemap + crawl for the full health check. Pick Sitemap only to audit the sitemap, or Just these addresses to check a list.
- Set Most pages to read and Most addresses to check to the size of the site.
- Press Start. A few hundred links take one to two minutes.
- Open the Output tab: All links for the overview, Where each link is for the pages to fix, Sitemap and indexing for the sitemap view, and Site health summary for the roll-up.
Modes
| Mode | Reads the sitemap | Crawls the site | Finds |
|---|---|---|---|
| Sitemap + crawl (default) | yes | yes | Everything: broken links, redirects, failing sitemap entries, pages missing from the sitemap, sitemap pages nothing links to |
| Crawl only | no | yes | Broken links and redirects on pages reachable from the start page |
| Sitemap only | yes | no | Sitemap entries that are broken, redirect, are noindex or canonicalised elsewhere |
| Just these addresses | no | no | Status and redirects for the list you give |
How much does it cost to check links?
You pay per link checked: one unique address, checked once.
| Price | |
|---|---|
| Link checked | $0.0007 each ($0.70 per 1,000), lower on Apify's Silver and Gold plans |
| Run start | Apify's standard tiny start fee |
| Addresses blocked by robots.txt, invalid addresses, the sitemap files themselves | Free |
Examples: a 300-link site is about $0.21. A 5,000-link site is about $3.50. Apify's free plan includes monthly credit, enough for many test runs.
Most addresses to check caps the charge for a run. You can also set a maximum cost per run when you start it: the Actor stops cleanly before it would go over, and you keep every result it finished.
Input example
{"startUrls": ["https://crawlee.dev"],"mode": "full","maxPages": 60,"maxLinksToCheck": 600,"checkExternalLinks": true}
Output example
One row per address checked. A broken stylesheet found on five pages:
{"url": "https://lipis.github.io/flag-icon-css/css/flag-icon.css","httpStatus": 404,"result": "broken","isBroken": true,"issues": ["BROKEN_LINK"],"linkType": "stylesheet","internal": false,"linkedFromCount": 5,"linkedFrom": [{ "page": "https://www.scrapethissite.com/pages/simple/", "anchorText": null }],"charged": true}
A same-site link that redirects and then fails:
{"url": "https://www.crawlee.dev/python/docs/examples/playwright-crawler-with-fingeprint-generator","finalUrl": "https://crawlee.dev/python/docs/examples/playwright-crawler-with-fingeprint-generator","httpStatus": 404,"result": "broken","redirectCount": 1,"redirectChain": [{ "url": "https://www.crawlee.dev/python/docs/examples/playwright-crawler-with-fingeprint-generator", "status": 301 }],"linkedFrom": [{ "page": "https://crawlee.dev/blog/crawlee-for-python-v1", "anchorText": "Playwright crawler with fingerprint generator" }]}
An address the site's robots.txt blocks comes back free, never requested:
{ "url": "https://www.scrapethissite.com/lessons/", "result": "skipped-robots", "charged": false, "errorCode": "BLOCKED_BY_ROBOTS_TXT" }
The Site health summary (key-value store record OUTPUT) holds counts by result and issue, the 50 broken links linked from the most pages, the longest redirect chains, each sitemap file's health, the failing sitemap entries, and the pages missing from the sitemap.
Results and issue codes
result | Meaning | Broken? |
|---|---|---|
ok | 2xx, no redirect | no |
redirect / redirect-chain | One hop / two or more hops to a working page | no |
broken | 4xx (404, 410 and others) | yes |
blocked | 401, 403, 429 or 999: the site refuses bots. Usually works in a browser; check by hand | no |
server-error, timeout, dns-error, connection-error, tls-error | No usable answer | yes |
redirect-loop, too-many-redirects | The redirects never end | yes |
skipped-robots | Blocked by the site's robots.txt. Not requested, not charged | no |
| Issue code | Meaning |
|---|---|
BROKEN_LINK, SERVER_ERROR, TIMEOUT, DNS_ERROR, CONNECTION_ERROR, TLS_ERROR, REDIRECT_LOOP, TOO_MANY_REDIRECTS | The link doesn't work |
REDIRECT_CHAIN | Two or more redirects; link to the final address |
INTERNAL_LINK_TO_REDIRECT | Your own page links to an address that redirects |
BLOCKED_FOR_BOTS | The server refused an automated check |
SITEMAP_ENTRY_BROKEN, SITEMAP_ENTRY_REDIRECTS | The sitemap lists an address that fails or redirects |
SITEMAP_ENTRY_NOINDEX, SITEMAP_ENTRY_CANONICAL_ELSEWHERE | The sitemap lists a page that asks not to be indexed, or names another page as canonical |
SITEMAP_ENTRY_BLOCKED_BY_ROBOTS_TXT | The sitemap lists an address robots.txt blocks |
SITEMAP_ENTRY_NOT_LINKED | In the sitemap, but no crawled page links to it (only after a complete crawl) |
MISSING_FROM_SITEMAP | An indexable same-site page the crawl found that the sitemap doesn't list (addresses with ? query strings are left out) |
FAQ
Why are some links "blocked" when they work in my browser?
Sites such as LinkedIn, Stack Overflow and some shops refuse automated requests (403, 429 or 999). The Actor reports those as blocked, not broken, so you can check them by hand.
Why are some links "skipped-robots"?
The site's robots.txt asks bots not to load them. The Actor respects that for every site, yours and the ones you link to. Those addresses are free.
My site has a huge sitemap. Will it crowd out the crawl? No. In Sitemap + crawl mode the sitemap gets half of Most addresses to check and Most pages to read up front. The crawl gets the rest, and leftover sitemap entries fill any room at the end.
Can it check pages behind a login, or pages built by JavaScript? No. It checks public addresses over plain HTTP. Links that only appear after JavaScript runs are not seen.
Does it respect robots.txt?
Yes, including Crawl-delay (up to 10 seconds). Requests to one site start at least 250 ms apart by default, and never more than two run at once on one site.
Is it legal? It requests each public address once, as a browser would, and reads the response. Check sites you own, manage, or have permission to test.
Can I run it on a schedule? Yes. Save your input as a task and add an Apify schedule, for example every Monday. Add a webhook or the Google Sheets integration to get the broken links where you work.
Related tools Pair it with Bulk Lighthouse Site Audit (same developer) for speed, Core Web Vitals, accessibility and SEO scores on every page.
Something went wrong. Open an issue on the Actor's Issues tab with the run link.