Broken Link Checker — Find Broken Links, Images & Redirects
Pricing
from $0.50 / 1,000 url checkeds
Broken Link Checker — Find Broken Links, Images & Redirects
Crawl a website and check every link and image. Each broken link comes with the pages it is on and its link text, so you know where to fix it. Internal and external links, redirects, robots.txt honoured.
Pricing
from $0.50 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Salih Küçükkayış
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Find broken links on a website. The Actor crawls your site, checks every link and image it finds (internal and external), and lists each broken link with the pages it is on and its link text, so you know exactly where to fix it. 404s, 410s, server errors, dead domains and timeouts are errors; links a site refuses to automated checks (401, 403, 429, LinkedIn's 999) are listed as warnings. Optionally it also reports redirects, checks stylesheets, scripts and embeds, or outputs every link for a full inventory.
$0.50 per 1,000 URLs checked. URLs that robots.txt closes are free. No browser, no proxy: fast and cheap.
Quick start
Press Start with the example input (a public test site with deliberately broken links, small limits):
{"startUrls": [{"url": "https://crawler-test.com/"}],"maxPagesToCrawl": 5,"maxLinksToCheck": 150}
For your own site, give its address and raise the limits:
{"startUrls": [{"url": "https://www.example.com/"}],"maxPagesToCrawl": 2000,"reportRedirects": true}
One row per problem link (a real run on the example input, trimmed):
{"url": "https://crawler-test.com/redirects/redirect_to_404","status": 404,"severity": "error","problem": "Not found (404)","linkType": "internal","kind": "page","foundOnCount": 1,"foundOn": [{"page": "https://crawler-test.com/", "text": "Redirect To 404 Http Status", "tag": "a"}],"firstFoundOn": "https://crawler-test.com/"}
The same run found 8 problems in 143 URLs on 5 pages in under a minute: 404s, redirect loops ("Too many redirects") and a redirect that ends on a 404.
What it does
- Crawls your site: follows links on the same site from the start pages (www. and the bare domain count as one site), up to Max pages to crawl. Crawl only pages matching and Do not crawl pages matching limit the crawl with regular expressions.
- Checks every unique URL once: crawled pages by their own request; every other link, image and file with a HEAD request. When HEAD fails, a GET confirms it (many servers answer HEAD badly), without downloading the file.
- External links are checked, never crawled.
- Where to fix: each problem lists the pages that link to it (up to Pages listed per broken link), the link text or image alt text, and the total count.
- Severity:
error(404, 410, other 4xx, 5xx, DNS failure, timeout, connection error),warning(401, 403, 429, 999: often bot protection, check in a browser),redirect(with Report redirects),okandskipped(with Report all links). - Summary in the key-value store record
SUMMARY: pages crawled, URLs checked, broken links, warnings, redirects, counts by HTTP status.
Polite and safe
- robots.txt is honoured for every page crawled and every link checked. A URL that robots.txt closes is not requested and not charged.
- One request at a time per host, with a short pause; different hosts are checked in parallel.
- Private and internal addresses (localhost, 10.x, 192.168.x, cloud metadata) are blocked, including every redirect.
- Use it on your own sites, or sites you have permission to crawl.
Input
| Field | Default | What it does |
|---|---|---|
startUrls | Websites or start pages | |
maxPagesToCrawl | 500 | Pages read for links |
maxLinksToCheck | 10,000 | Cap on unique URLs checked (and on the price) |
checkExternalLinks | true | Check links to other sites |
checkImages | true | Check <img> and srcset |
checkAssets | false | Also stylesheets, icons, scripts, iframes, video, audio |
reportRedirects | false | List links that redirect, with their final URL |
reportAllLinks | false | Output every checked URL, not only problems |
includePatterns, excludePatterns | Regular expressions limiting which pages are crawled | |
maxSourcesPerLink | 10 | Pages listed for each problem link |
Output
One row per problem link: url, status, severity, problem, finalUrl (redirects), linkType (internal or external), kind (page, image or asset), foundOnCount, foundOn (page, text, tag), firstFoundOn, contentType. Errors come first, internal before external, most-linked first. Export as JSON, CSV or Excel, or connect the dataset to Slack or email with an Apify integration.
What it costs
| Run | Price |
|---|---|
| A 200-page site with 3,000 unique links | $1.60 |
| 10,000 URLs | $5.00 |
| Weekly check of a 50-page site (about 800 URLs) | $0.40 a week |
You only pay for URLs checked. The run stops cleanly at your spending limit or shortly before its timeout, and still writes everything it found.
Good to know
- Only links in the HTML are found. Links that JavaScript adds after the page loads are not seen (no browser).
- Some sites refuse automated requests (LinkedIn, some social networks, sites behind bot protection). They are listed as warnings, not errors, so you can decide.
- Checks are polite: about 4 requests a second per host, so a 2,000-page site takes 10 minutes or more. Raise the run timeout for big sites; the run stops before the timeout and keeps its results.
- To check a list of URLs without crawling, use Bulk HTTP Requests or the status check of Sitemap Extractor.
FAQ
Can I get an alert when a new broken link appears? Yes: schedule the Actor (for example weekly) and connect the dataset to email or Slack with an Apify integration.
Can an AI agent use it? Yes, through the Apify MCP server: "check example.com for broken links".
More from this developer
- Sitemap Extractor: every URL a website lists in its sitemaps, with lastmod, images and hreflang.
- Tech Stack Detector: CMS, ecommerce platform, analytics and hosting of a list of websites.
- Website Screenshot + Change Detection: screenshots of many URLs with visual change detection between runs.
- Bulk HTTP Requests: call any API once for every row of a CSV, JSON list or Apify dataset.
- Keyword Search Volume: Google search volume, CPC and trends for a keyword list.
Code examples (curl, Python, Node.js, n8n) for this and the other Actors: github.com/msalihk/apify-actor-examples.
Questions or a missing feature: open an issue on the Actor page.