Broken Link Checker — Find Broken Links, Images & Redirects avatar

Broken Link Checker — Find Broken Links, Images & Redirects

Pricing

from $0.50 / 1,000 url checkeds

Go to Apify Store
Broken Link Checker — Find Broken Links, Images & Redirects

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ış

Salih Küçükkayış

Maintained by Community

Actor 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), ok and skipped (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

FieldDefaultWhat it does
startUrlsWebsites or start pages
maxPagesToCrawl500Pages read for links
maxLinksToCheck10,000Cap on unique URLs checked (and on the price)
checkExternalLinkstrueCheck links to other sites
checkImagestrueCheck <img> and srcset
checkAssetsfalseAlso stylesheets, icons, scripts, iframes, video, audio
reportRedirectsfalseList links that redirect, with their final URL
reportAllLinksfalseOutput every checked URL, not only problems
includePatterns, excludePatternsRegular expressions limiting which pages are crawled
maxSourcesPerLink10Pages 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

RunPrice
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

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.