Broken Link Checker: Pages List, Images, Anchor Text
Pricing
$4.00 / 1,000 page checkeds
Broken Link Checker: Pages List, Images, Anchor Text
Paste a list of pages and get every broken link and image on them, with status code, anchor text and internal or external flag. Redirecting links and bot-blocked links are listed apart, so you fix what is really broken.
Pricing
$4.00 / 1,000 page checkeds
Rating
0.0
(0)
Developer
Luigi Fiano
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Paste a list of pages and get every broken link on them. Each page is opened, every link and image on it is checked, and you get one row per page with the broken links, their status code, their anchor text and whether they are internal or external.
No crawl to configure and no surprise bills: the checker looks only at the pages you give it. Ideal when you already know which pages matter (top landing pages, blog posts, a client's money pages, the URLs of a sitemap export).
What it is for
- SEO audits: find 404s and dead external links on the pages that bring traffic.
- Content maintenance: old blog posts pointing to sites that no longer exist.
- After a migration: see which links still go through redirects and should be updated to the final URL.
- Monitoring: schedule it weekly with
onlyProblemsand get only the pages that broke.
What it checks
- Every
<a href>on the page, resolved against the page URL and<base>. Same-page#anchors,mailto:,tel:,javascript:and links inside HTML comments are skipped. - Images (
<img src>), and optionally scripts and stylesheets. - Each unique link is checked once per run, even when it appears on hundreds of pages.
HEADfirst, thenGETwhen the server does not answerHEADproperly (405, 501 and the many servers that answerHEADwith 403 or 404).- Redirects are followed hop by hop, with loop protection.
- Links are sorted into three lists:
- broken: 4xx (except the bot-blocking ones below), 5xx, DNS errors, timeouts, refused connections, redirect loops, invalid URLs;
- blocked: 401, 403, 429 and 999 (LinkedIn and others). These usually mean "this site blocks automated checks", not "the page is gone", so they are listed apart and do not mark the page as failed;
- redirects: links that work but go through one or more redirects, with the final URL.
- Anchor text (or image alt text) and the
nofollow/sponsored/ugcflag for every reported link, so you can find it on the page.
Input
| Field | What it does | Default |
|---|---|---|
urls | One page URL per line | required |
checkExternal | Also check links to other domains | true |
includeImages | Also check images | true |
includeAssets | Also check scripts and stylesheets | false |
reportRedirects | List links that redirect | true |
maxLinksPerPage | Max unique links checked per page | 500 |
onlyProblems | Output only pages with broken or blocked links | false |
concurrency, linkConcurrency, timeoutSecs, maxRetries | Speed and resilience | 3, 10, 15, 1 |
Example:
{ "urls": ["https://www.example.com/", "https://www.example.com/blog/old-post/"] }
Output
One row per page:
{"url": "https://www.example.com/blog/old-post/","finalUrl": "https://www.example.com/blog/old-post/","status": 200,"linksFound": 64,"linksChecked": 64,"brokenCount": 2,"blockedCount": 1,"redirectCount": 1,"broken": [{ "url": "https://www.example.com/pricing-2019/", "type": "link", "text": "our old pricing", "internal": true, "nofollow": false, "status": 404, "error": null, "finalUrl": "https://www.example.com/pricing-2019/" },{ "url": "https://some-closed-tool.io/", "type": "link", "text": "this tool", "internal": false, "nofollow": false, "status": null, "error": "ENOTFOUND", "finalUrl": "https://some-closed-tool.io/" }],"blocked": [{ "url": "https://www.linkedin.com/company/example", "type": "link", "text": "LinkedIn", "internal": false, "nofollow": false, "status": 999 }],"redirects": [{ "url": "http://www.example.com/contact", "type": "link", "text": "Contact", "internal": true, "nofollow": false, "status": 200, "finalUrl": "https://www.example.com/contact/", "hops": 2 }],"ok": false,"issues": ["2 broken link(s)", "1 link(s) blocked the checker (401/403/429/999), check them by hand"],"checkedAt": "2026-10-26T00:00:00.000Z"}
The Broken links view of the dataset flattens the result to one line per broken link, ready for a spreadsheet. A SUMMARY record in the key-value store counts pages checked, pages with broken links, broken, blocked and redirecting links.
Pricing
Pay per result: $0.004 per page delivered to the dataset ($4 per 1,000 pages), plus the small Apify platform usage of the run. The links checked on a page are included, not charged one by one. With onlyProblems on, clean pages are not delivered and not charged.
Notes
- It reads only the public HTML of the pages you provide and the HTTP status of the links on them. No login, no cookies, no personal data. It does not crawl beyond the pages you list.
- Links injected by JavaScript are not seen: the check reads the raw HTML, like most crawlers do.
- A site that returns 200 for every URL (a parked domain, a soft 404) cannot be detected from the status code alone.