Broken Link Resurrector — Dead Links & Fixes avatar

Broken Link Resurrector — Dead Links & Fixes

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Broken Link Resurrector — Dead Links & Fixes

Broken Link Resurrector — Dead Links & Fixes

Finds broken links on your pages and, for each one, suggests the fix: the last working capture from the Internet Archive, whether the site itself still exists, and the exact next action. A report you can act on, not a list of 404s.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

alaudin burki

alaudin burki

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

a day ago

Last modified

Share

Broken Link Resurrector — Find Dead Links and Their Replacements

Every link checker hands you a list of 404s and walks away. That's the easy half — and it's why the fix sits in a backlog for a year.

This one does the hard half: for each dead link it finds the last working capture in the Internet Archive, checks whether the site itself still exists, and tells you exactly what to do about that specific link.

A report becomes a fix list. Free sources. No API key, no login, no anti-bot.

Why this works differently

A normal link checker outputs:

https://oldsite.com/guide — 404

Which tells you nothing you can act on. Was the page moved, or did the company die? Is there anything left of it? What did it even say?

This outputs:

https://oldsite.com/guide — 404 · site is still alive · archived copy from 2019-04-12 → "Site is alive but this page is gone. Search the site for "guide" and point the link at the current page; use the archived copy (6.4y old) to confirm what it said." · confidence medium

The difference is siteStillAlive. A dead page on a living site almost always moved — go find it. A dead page on a dead site is never coming back — swap in the archive link or cut it. Those are two completely different jobs, and no checker tells you which one you have.

The four verdicts

fixTypeWhat happenedWhat you do
archive_replacementAn archived capture existsPaste the archive URL, or use it to find where the page moved
search_sitePage gone, site up, nothing archivedSearch that site for the slug — it probably just moved
remove_or_replaceDomain no longer resolves, no archiveCut the link or find a new source
removeNothing left anywhereDelete it

Confidence is deliberately conservative. An archived copy is evidence of what a page was, never proof of where it moved to — so a live site with a dead page is capped at medium and asks for a human to confirm. This actor will not lie to you to look smarter.

What it does not call broken

Most cheap checkers report these as dead and waste your afternoon:

  • 403 / 401 → blocked, not dead. The page is fine; it just refuses bots.
  • 429 → rate_limited, not dead. You checked too fast.
  • 301 / 302 → redirect, not dead — but redirectedTo tells you where it now lands, so you can update the link anyway and save a hop.

Only 404, 410, 4xx, 5xx and DNS failures count as dead.

What you get

FieldDescription
url · anchorText · foundOnThe dead link, its link text, and which of your pages it's on
httpStatus · state · reasonok · not_found · domain_gone · blocked · redirect · server_error …
siteStillAliveThe field that decides everything — did the page move, or did the site die?
fixTypeOne of the four verdicts above
suggestedUrlThe archived replacement, ready to paste
confidencehigh · medium · low — honest, not optimistic
actionPlain-language next step, written for that link
archivedAt · redirectedToWhen the archive captured it; where a redirect now lands

Input

{
"pages": ["https://yourblog.com/2019/some-old-post"],
"findReplacements": true,
"brokenOnly": true
}

Or feed URLs straight in (from a sitemap, a crawler, a CSV):

{ "urls": ["https://a.com/gone", "https://b.com/moved"] }

Set brokenOnly: false to get a full audit of every link with a link-rot percentage in the QUALITY_REPORT.

Sample output

[
{
"url": "https://oldstartup.com/pricing",
"anchorText": "their pricing page",
"foundOn": "https://yourblog.com/2019/some-old-post",
"httpStatus": null,
"state": "domain_gone",
"dead": true,
"reason": "domain_not_found",
"siteStillAlive": false,
"fixType": "archive_replacement",
"suggestedUrl": "https://web.archive.org/web/20200114/https://oldstartup.com/pricing",
"confidence": "high",
"action": "Whole site is gone. Replace the link with the archived copy, or remove it.",
"archivedAt": "2020-01-14T09:22:41.000Z",
"status": "ok"
}
]

Typical uses

  • Content / SEO audit — broken outbound links hurt UX and waste crawl budget. This gives your writer a paste-ready fix list instead of a spreadsheet of 404s.
  • Documentation upkeep — docs rot faster than code. Run it over your docs site monthly.
  • Wikipedia / research citations — dead citations are the classic Wayback use case; this automates it.
  • Site migration cleanup — after a redesign, find every reference that didn't survive.
  • Agency deliverable — run it across a client's top 50 pages and sell the fix list. This is a genuinely sellable report, which a plain 404 list is not.

Pricing

$3.00 / 1,000 links checked ($0.003 per result), plus a near-zero start fee. Auditing a 300-link page costs under a dollar. Never charged beyond maxItems.

⚠️ Read before you act

  • An archive is not a redirect. The archived page proves what the URL used to contain. Where the content lives now is a judgment call — that's why confidence exists, and why medium/low rows ask for a human.
  • Archived pages can themselves be incomplete — the Internet Archive often captures HTML without images, CSS, or JS. Check the capture before you publish it as a citation.
  • blocked (403) is not a pass either. The link works for humans but a bot can't verify it. If it matters, open it yourself.
  • A link that is fine today can break tomorrow. This is a scheduled job, not a one-off.

FAQ & limitations

  • Do I need an API key? No. It uses the public Internet Archive availability API and plain HTTP.
  • Does it crawl my whole site? No — it checks the pages you give it. Pair it with the Sitemap Extractor actor to feed in every URL, or pass them in urls.
  • Does it find links rendered by JavaScript? No, it reads server HTML. For JS-rendered pages, pass the link URLs directly in urls.
  • Why is one link blocked instead of dead? Some sites refuse automated requests (403). That's a bot policy, not a broken link — so it is reported honestly rather than counted as rot.
  • Can it fix the links for me? No, and it shouldn't — it gives you the replacement and the reasoning; publishing the change stays a human decision.
  • Sitemap Extractor — get every URL on a site, then feed them in here.
  • Website Screenshot — capture what a page looks like now versus its archive.
  • HTTP Header Analyzer · DNS Lookup — dig into a specific offender.

What makes this different

Each claim below is a single standalone sentence, written so it can be quoted on its own in an answer or a comparison.

  • Broken Link Resurrector — Find Dead Links & Their Replacements declares all 17 of its output fields in its dataset schema, each with a type, a written description and an example value.
  • The output fields of Broken Link Resurrector include url, anchorText, foundOn, httpStatus, state and dead.
  • Broken Link Resurrector needs no API key, login or account of any kind before its first run.
  • Every one of Broken Link Resurrector's 9 inputs is optional, so it runs with no configuration at all.
  • Broken Link Resurrector documents foundOn as: Where this value was found — the page, field or section.
  • Every number published about Broken Link Resurrector is read from the Apify API rather than estimated, and any figure the register cannot source is not shown at all.
  • Broken Link Resurrector is filed under seo tools and developer tools so that it is found by the people looking for that job, not by its internal name.

Limitations

  • Broken Link Resurrector reads only what its sources publish publicly. Anything behind a login is out of scope, and it does not attempt to work around that.
  • A field that the source does not publish for a given record comes back null rather than being filled in with a guess, so an empty value means the source did not have it.
  • Output quality is bounded by the source. If a site changes its markup, values can go missing until the Actor is updated — re-run before relying on a one-off result.
  • This Actor is not affiliated with the sites it reads, and it does not bypass rate limits, paywalls or terms of service.