Broken Link Checker: 404s, No Login avatar

Broken Link Checker: 404s, No Login

Pricing

from $0.70 / 1,000 page checks

Go to Apify Store
Broken Link Checker: 404s, No Login

Broken Link Checker: 404s, No Login

Find broken links on your website with a bulk broken link checker. $1.00 per 1,000 pages checked, links free. Crawls your pages and checks every internal and external link, image, script and stylesheet once. Returns status code, redirect chain, source pages and anchor text. MCP-ready, no login.

Pricing

from $0.70 / 1,000 page checks

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Broken Link Checker

Broken Link Checker finds broken links on your website. It crawls your pages over plain HTTP, checks every internal and external link once, and also checks images, scripts, stylesheets and icons. For each problem link you get the HTTP status code, the redirect chain, the pages that contain it and the anchor text, so you know exactly what to fix and where.

Use it for a one-off website audit, before and after a migration or redesign, or on a schedule so a dead link never sits on your site for weeks.

CategoryWhat it means
broken404, 410, 500 and other 4xx or 5xx answers, redirect loops, malformed link addresses and domains that no longer exist
unreachableThe server timed out or refused the connection three times
restricted401, 403, 429 or 999: the server refused an automated check. The link may still work in a browser, so check it by hand
redirectedThe link works only through one or more redirects. Point it to the final address to save a hop
not_checkedNot requested: the target's robots.txt disallows it, or the target site does not allow automated checks
okAnswered 2xx directly (listed only when you turn on "List working links too")
  1. Enter your website in Start URLs, as a domain (example.com) or a full URL.
  2. Set Maximum pages per website. Start with 10 to see the output, then raise it.
  3. Choose whether to check external links and images, scripts and stylesheets. Both are on by default.
  4. Click Start. A 100-page website usually finishes in 5 to 15 minutes, because the Actor paces its requests so your server is never under load.
  5. Open the Problem links view and sort by foundOnCount to fix the links that appear on the most pages first. Export to CSV, Excel or JSON, or read the dataset through the API.

To keep a site clean, save the input as a task and add a weekly schedule in Apify.

Broken Link Checker uses pay-per-event pricing. You pay $0.001 per page crawled on the Free plan ($1.00 per 1,000 pages; $0.0009 on Starter, $0.0008 on Scale, $0.0007 on Business), and every link on that page is checked at no extra cost. Link rows and the site summary are free.

Worked example: a website with 100 pages and about 600 unique links costs 100 x $0.001 = $0.10 on the Free plan, plus the small Apify start fee. A tool that charges $0.001 per link would charge about $0.60 for the same site.

You can set a spending limit on the run. The Actor reads it before crawling and never crawls more pages than you pay for.

Input example

{
"startUrls": ["https://www.example.com/"],
"maxPagesPerSite": 200,
"checkExternalLinks": true,
"checkAssets": true,
"reportRedirects": true
}

Output example

One row per problem link:

{
"rowType": "link",
"url": "https://www.example.com/old-pricing",
"category": "broken",
"status": 404,
"finalUrl": "https://www.example.com/old-pricing",
"redirectChain": [],
"isInternal": true,
"linkType": "link",
"error": null,
"foundOnCount": 12,
"foundOn": [{ "pageUrl": "https://www.example.com/", "anchorText": "See pricing" }]
}

You also get one row per crawled page (rowType: "page") with its link counts and up to 50 problem links, and one summary row per website (rowType: "site") with totals and the reason the check stopped, if it stopped early.

How it works

  • It starts at your URL and follows links on the same host (with or without www.), up to your page limit.
  • Links found on those pages are each checked once per run, even if they appear on hundreds of pages. Pages beyond the limit are still checked as links.
  • External links get a HEAD request first and a GET only when HEAD is refused, so the check is light on other websites.
  • It obeys robots.txt on every host, including the Crawl-delay of your own site (up to 10 seconds), and waits at least 0.25 s between requests to your site and 1 s between requests to any external host.
  • It identifies itself with an honest user agent that includes a contact address.

Run it every day

Use this to hear about each new broken link once.

  1. Enter your websites and the options you need.
  2. Turn on Only new problems since the last run and give the monitor a Monitor name.
  3. Click Save as a new task.
  4. Open Schedules, create a schedule, pick the task and choose daily.

The first run reports every problem link and sets the baseline. Each later run reports only problem links that this monitor did not report before, and only the pages that carry them. Pages without a new problem are not returned and not charged. The Actor still checks the whole website on every run. A link that works again is forgotten, so it is reported again if it breaks again. The site summary row is always returned and shows the counts for the whole website. The memory is in your own Apify key-value store named linkcheck-monitor- followed by the Monitor name. It holds link addresses only. Use one Monitor name for each task.

Example: 3 pages with new broken links a day cost 3 x $0.001 = $0.003 a day on the Free plan (the 3 pages are an example, not a measured value). A run without new problems costs only the small Apify run start fee.

FAQ

Is it legal to check links on a website? Checking the links on your own website, or on a public website you have permission to audit, is a normal part of site maintenance. The Actor reads only public pages, needs no login, collects no personal data, and respects robots.txt. It does not crawl sites whose terms forbid automated access, such as LinkedIn, Facebook, Instagram, X, Reddit, TikTok, Amazon and Google. Links pointing to those sites are listed as not_checked without a request.

Why is a link "restricted" when it works in my browser? Some servers refuse automated requests with 403 or 999. The Actor does not try to get around that. Open those links by hand once.

Does it render JavaScript? No. It reads the HTML your server sends. Links that exist only after JavaScript runs are not found. Most websites put their navigation and content links in the HTML.

Can it check a page list instead of crawling? Not in this version. Set Maximum pages per website to 1 to check only the links on the start page.

The run stopped early. Why? Read stoppedReason in the site row: the page limit, your spending limit, or the website refusing requests (three block signals in a row). The Actor stops instead of pushing harder.

Found a problem or need a feature? Open an issue on the Issues tab and we will reply within a day.