Bulk Broken Link Checker — 404 & Dead Link Audit
Pricing
from $5.00 / 1,000 site checkeds
Bulk Broken Link Checker — 404 & Dead Link Audit
Crawl a list of websites and find broken links and images: 404s, 5xx errors, DNS failures and timeouts, with the page each sits on, its anchor text and internal/external. HEAD failures re-checked by GET; bot walls (401/403/429) listed separately. Dead link checker for SEO audits and site migrations.
Pricing
from $5.00 / 1,000 site checkeds
Rating
0.0
(0)
Developer
Weio, Inc.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Broken Link Checker (bulk, crawls each site)
Audit one website or a list of websites for dead links before a migration, during an SEO audit, or as part of an agency's recurring client checks. For each supplied site, this Actor crawls same-host pages (up to 200; default 50) and tests every link and image it finds, internal and external.
Best fit
- Site migrations: find links that need redirect or replacement work before and after a move.
- SEO and content audits: identify 404s, server errors, timeouts, and broken redirects with the page and anchor text that reference each link.
- Agencies: run the same repeatable check across a client list and hand the result dataset to the next reporting or repair step.
Quick start
Enter the websites to audit and choose a crawl limit that fits the size of the site. The Actor follows public, static HTML links only; it does not render JavaScript or submit forms. A link assembled by JavaScript in a visitor's browser therefore will not be discovered by this crawl.
Every failed HEAD request is confirmed with GET before a link is called broken.
Results
The dataset has one row per supplied website:
pagesCrawled,linksChecked, andbrokenCountbrokenLinks: URL, HTTPstatus(404, 410, 500...), or networkerror(DNS failure, timeout, TLS); the source page (foundOn), anchor text, and internal/external flagblockedLinks: links that answered 401, 403, 406, or 429, and links the crawler was not allowed to check (the target's robots.txt, a private network address, or a host asking us to slow down), with the reason inerror
Those 401/403/406/429 responses are listed separately, not counted as broken. They usually mean authentication, rate limiting, or a bot wall prevented verification; they do not prove that the destination is gone.
Real result example
This row is from an existing successful run on a small company website, shown without its address (no new run was made for this example):
| website | pagesCrawled | linksChecked | brokenCount | blockedCount |
|---|---|---|---|---|
| (address left out) | 1 | 12 | 0 | 0 |
Pricing
One site-checked event is charged per website that can be crawled. Current examples: $0.01 per site on Free and Starter, $0.0075 on Scale, and $0.005 on Business and Enterprise. A site that is unreachable, blocks the crawler at the start, or answers with a bot check, a queue page or an empty or non-HTML start page returns a free error row; it is not charged.
API, schedules, and integrations
Use the Apify API to start runs and consume the resulting dataset from your own code. For recurring audits, create an Actor task and use Apify schedules. Apify's integrations documentation covers workflow tools, webhooks, data destinations, and AI clients.
FAQ
Why are some links missing? The Actor reads static HTML and does not run browser JavaScript, so it cannot see links that a page creates only after JavaScript executes.
Why is a 401, 403, 406, or 429 not called broken? Those statuses say access was refused or limited, not that the target no longer exists. They remain in blockedLinks so you can review them separately without inflating the broken-link count. Links whose robots.txt does not allow our crawler, or that point to a private network address, are listed there too: they were not checked, so they are not called broken.
Are private pages or forms checked? No. The Actor checks public pages only and never submits forms.