Broken Link Checker: 404s, Redirects and Dead Links
Pricing
Pay per event
Broken Link Checker: 404s, Redirects and Dead Links
Use this to find broken links on a website: crawl starting pages (optional same-host follow), check each unique http(s) URL, and get status, final URL, redirect flag and a broken flag. Excel report of every checked link.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Panda Federation
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
43 minutes ago
Last modified
Categories
Security
Limited permissionsShare
Use this to find broken links on a website: crawl starting pages (optional same-host follow), check each unique http(s) URL, and get status, final URL, a redirect flag and a broken flag. Results come as an Excel report (every checked link, plus a sheet of only the broken ones) and CSV. Apify's free plan includes monthly platform credit you can use to try it.
This is not a Google search scraper. It does not search the web for you. It checks the pages you provide and the links found on those pages.
- 🔗 Start from one page or a checklist of URLs and optionally follow more HTML pages on the same host
- 🧭 Unique http(s) links only —
mailto:,tel:,javascript:,data:and empty/#-only fragments are skipped - 🚩 Broken flag for HTTP 400+ (404, 410, 500…) and a redirected flag when the final URL differs (trailing slash and
#fragmentignored) - 🌍 Outbound links checked by default; turn that off to stay on-site
- 🛡️ Private and internal addresses are blocked (loopback, link-local, RFC1918) and never billed
- 💸 $0.001 per link that returns an HTTP status (including 4xx/5xx). Timeouts, DNS failures, robots-skipped crawl targets and blocked private IPs are free
Who it's for
- SEO specialists and content teams: catch 404s and redirect chains before they hurt rankings or crawl budget
- Site owners and webmasters: a regular health check of navigation, footer, blog and resource links
- Agencies and freelancers: a client-ready Excel of every checked URL, with a separate sheet of just the broken ones
- AI agents: answer "which links on this page or site are dead?" without browsing by hand
How to use it
- Click Try for free.
- Add start URLs, one per line (a homepage, a sitemap-style list, or a few key pages).
- Set Pages to crawl per host (
1= only those start pages; higher values follow more same-host HTML pages) and Maximum links to check (this caps what you pay). - Optional: turn off Check outbound (external) links to stay on-site, or change the per-request timeout.
- Click Start. Download LINKS_XLSX or LINKS_CSV from Storage → Key-value store. Open the Broken sheet for just the 404s and server errors.
Input example
{"startUrls": ["https://example.com"],"maxPages": 1,"maxLinks": 50,"checkExternal": true}
Task examples
- Quick check of one page:
{"startUrls": ["https://yoursite.com"], "maxPages": 1, "maxLinks": 100} - Small same-host crawl:
{"startUrls": ["https://yoursite.com"], "maxPages": 10, "maxLinks": 200} - On-site only (no outbound hosts):
{"startUrls": ["https://yoursite.com"], "checkExternal": false, "maxPages": 20, "maxLinks": 400} - Checklist of known URLs: pass many start URLs with
"maxPages": 1— each URL is checked, and links on those pages are collected up to your cap - Weekly agency audit: schedule the Actor weekly with
maxPages25 andmaxLinks500, then download the Broken sheet
Output example
One row per unique URL. A real row from a platform test run against https://example.com (maxPages 1). That page currently has no outbound <a href> links, so the start URL itself is checked:
{"originalUrl": "https://example.com/","finalUrl": "https://example.com/","statusCode": 200,"broken": false,"redirected": false,"external": false,"contentType": "text/html; charset=utf-8","sourcePage": "https://example.com/","host": "example.com","error": null,"agentSummary": "200 https://example.com/ OK"}
A real outbound-link row from a platform test of https://apify.com (maxPages 1, maxLinks 20; 20 links checked, 3 external):
{"originalUrl": "https://console.apify.com/sign-up","finalUrl": "https://console.apify.com/sign-up","statusCode": 200,"broken": false,"redirected": false,"external": true,"contentType": "text/html","sourcePage": "https://apify.com/","host": "console.apify.com","error": null,"agentSummary": "200 https://console.apify.com/sign-up (from https://apify.com/) OK"}
Typical broken and redirect summaries look like:
404 https://example.com/missing (from https://example.com/about) → not found200 https://example.com/docs OK200 https://old.example.com/pricing (from https://example.com/) → https://example.com/pricing (redirect)
Fields
| Field | What it is |
|---|---|
originalUrl, finalUrl | The URL as found, and where it ended after redirects (hop cap 5) |
statusCode | HTTP status of the final response, or null when no status was received |
broken | true when statusCode is 400 or higher |
redirected | true when the final URL differs from the original (trailing slash and fragment ignored) |
external | true when the host is not one of your start URL hosts |
contentType, sourcePage, host, error | Response type, page where the link was found, hostname, and any fetch error |
agentSummary | One plain-English line per URL |
Files in the key-value store
| Key | What it is |
|---|---|
LINKS_XLSX | Excel workbook: Links (every checked URL), Broken (only broken == true), Run log, Read me |
LINKS_CSV | Links table as CSV |
SUMMARY | JSON: counts, top status codes, broken and failed lists, a one-line takeaway and nextStep |
For AI agents
Use this Actor to answer "which links on this page or site are broken?" or to scan a checklist of URLs. Call it with Apify's MCP server (https://mcp.apify.com, tool call-actor, Actor pandadad0214/broken-link-checker) or the API (POST https://api.apify.com/v2/acts/pandadad0214~broken-link-checker/run-sync-get-dataset-items).
Minimal input:
{"startUrls": ["https://example.com"], "maxPages": 1, "maxLinks": 50}
Each dataset item includes:
agentSummary: e.g.404 https://example.com/missing (from https://example.com/about) → not foundor200 https://example.com/ OKstatusCode,broken,redirected,finalUrl,sourcePage
The run's SUMMARY record has a one-line takeaway (how many checked, how many broken, top status codes, how many external) plus nextSteps, so you can answer without parsing every row.
Pricing
$0.001 per unique link that returned an HTTP status (pay per event), including 4xx and 5xx, plus a tiny Actor-start fee of $0.00005. Excel, CSV and the summary are included. Timeouts, DNS failures, robots-skipped crawl targets and blocked private or internal IPs are not charged. Runs that receive no HTTP statuses charge no link-checked events. Set Maximum links to check or Apify's maximum charge per run to cap any run; the Actor stops at your limit.
Apify paid-plan discounts: Bronze members pay $0.0009, Silver $0.0008 and Gold, Platinum and Diamond $0.0007 per checked link; the discount applies automatically. Apify's free plan includes monthly credit to try it.
A 200-link audit costs about $0.20 on the free tier (plus the tiny start fee).
FAQ
What counts as broken? An HTTP status of 400 or higher (404 Not Found, 410 Gone, 403 Forbidden, 500 server error, and so on). A redirect that ends on a 2xx page is not broken; it is flagged redirected instead.
Why are some timeouts free? You are charged only when the check received an HTTP status. If the host never answers, DNS fails, the address is private/internal, or a page is skipped as a crawl source because of robots.txt, that URL is recorded in the log/SUMMARY (and listed with an error) but not billed.
Do you respect robots.txt? Yes when crawling extra same-host pages as sources of more links: /robots.txt is fetched once per host, and disallowed pages are not used as crawl sources. A link you asked us to verify (or a link we already found) can still be checked with HEAD/GET.
Will it work on login-walled sites? No. Only the public HTML the server returns is read. Pages behind a login may redirect to a sign-in screen or look empty; that is not treated as a broken link unless the final status is 400+.
Is this a Google search scraper? No. It never queries Google or any search engine. It only fetches the start URLs you provide and the http(s) links found on those pages.
How are redirects handled? Each hop is validated (no following into loopback, link-local or private RFC1918 addresses) with a cap of 5 hops. The final URL and status are recorded.
Can it check mailto: or javascript: links? Those schemes, plus tel:, data: and empty or #-only fragments, are skipped. Only http and https URLs are checked.
More Panda Federation tools
- Website Change Monitor: watch pages for content, price and keyword changes
- AI Search & SEO Audit: check a site for SEO and AI-search readiness
- Email Domain Security Checker: SPF, DKIM and DMARC grades for any list of domains
- Full catalog: Panda Federation on Apify and Panda Federation Tools on GitHub
Built by Panda Federation. Questions or a custom version? Open an issue on the Actor's Issues tab.
Changelog
- 2026-11-08: First release (0.1.0): crawl start URLs with optional same-host follow (robots.txt for crawl sources), unique http(s) link checks (HEAD then GET fallback), SSRF protection for loopback / link-local / RFC1918 / internal hosts, redirect walking with a hop cap, Excel (
LINKS_XLSXwith a Broken sheet) and CSV,agentSummaryand SUMMARYtakeaway, pay-per-event pricing (link-checked) with Bronze/Silver/Gold discounts. Timeouts, DNS failures, robots-skipped crawl targets and blocked private IPs are not charged.