Bulk URL Status Checker - Broken Links & Redirect Chains avatar

Bulk URL Status Checker - Broken Links & Redirect Chains

Pricing

from $0.76 / 1,000 url checkeds

Go to Apify Store
Bulk URL Status Checker - Broken Links & Redirect Chains

Bulk URL Status Checker - Broken Links & Redirect Chains

Check thousands of URLs at once: status code, full redirect chain, final URL, response time, title, canonical and noindex. Broken links and redirect loops flagged. No browser. dryRun prices a run before you pay; charged only for URLs checked.

Pricing

from $0.76 / 1,000 url checkeds

Rating

0.0

(0)

Developer

Natalia Ivanova

Natalia Ivanova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Check thousands of URLs in minutes: HTTP status, the full redirect chain and final URL, response time, content type, server, page title, H1, canonical and noindex. Every URL is classified — ok, redirect, broken, forbidden, server-error, rate-limited, redirect-loop, error — so a spreadsheet filter is all you need to find what is wrong. No browser, no API keys.

What you can do with it

  • Broken-link audits — paste the URL list from your sitemap (pair it with the Sitemap URL Extractor), get every 404/410/5xx.
  • Migration checks — verify old URLs redirect to the right new ones in one hop; catch chains and loops.
  • Uptime and SEO monitoring — schedule daily runs for key pages; alert on status changes, noindex slipping in, canonicals pointing elsewhere.
  • Link-list hygiene — clean CSV exports, directories, bookmarks, affiliate links.
  • AI agents — "is this link alive and where does it go?" through the Apify MCP server.

Input

FieldTypeDefaultDescription
urlsarray—URLs to check.
methodselectGETGET (reads HTML details) or HEAD (faster; falls back to GET when refused).
onlyProblemsbooleanfalseReturn only URLs that are not OK; healthy ones are not charged.
expectedStatusnumber—OK only if the final status equals this.
maxRedirectsnumber10Longer chains are reported as loops.
requestTimeoutSecsnumber20Per request.
maxConcurrencynumber20Parallel requests.
parseHtmlbooleantrueTitle, H1, canonical, robots meta, noindex.
proxyConfigurationobjectoffApify Proxy for sites that block datacenter IPs.
{ "urls": ["https://apify.com", "https://example.com/missing", "http://github.com"], "onlyProblems": false }

Output

{
"url": "http://github.com",
"finalUrl": "https://github.com/",
"status": 200,
"statusText": "OK",
"ok": true,
"result": "ok",
"redirectCount": 1,
"redirectChain": [{ "url": "http://github.com", "status": 301, "location": "https://github.com/" }],
"responseTimeMs": 412,
"contentType": "text/html",
"contentLength": null,
"server": "github.com",
"title": "GitHub · Build and ship software on a single, collaborative platform",
"h1": "Build and ship software on a single, collaborative platform",
"canonical": "https://github.com/",
"robots": null,
"noindex": false,
"lastModified": null,
"error": null,
"checkedAt": "2026-09-10T15:30:00Z"
}

The OUTPUT record holds totals: checked, OK, problems, rows pushed.

Use cases

Ready-made examples you can run without configuring anything:

Bulk URL status checker for a sitemap export

Paste a sitemap export and get the HTTP status of every page, classified as ok, redirect, broken, forbidden or rate-limited.

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

Redirect chain checker after a migration

The full redirect chain and final URL per link, so loops and long hops surface before Google finds them.

{ "urls": ["https://old.example.com/page"], "maxRedirects": 10 }

Status, response time, content type, title, canonical and noindex in one row per URL — a link audit without a browser.

{ "urls": ["https://example.com"] }

Pricing

Pay per event: a small fee per Actor start plus a fee per URL checked (per row returned when onlyProblems is on). Current prices are in the Pricing tab.

Good to know

  • Requests come from Apify's datacenter IPs with a browser-like User-Agent; a few sites answer 403 to any non-browser client — use the proxy option or treat forbidden as "needs a manual look".
  • HTML is read only up to 512 KB per page; titles and canonicals are found in that range in practice.
  • Keep maxConcurrency low (3–5) when checking hundreds of URLs on a single small site.

Use with AI agents (MCP)

Add the Actor to the Apify MCP server: "Check whether these ten links still work" → { "urls": ["…"], "onlyProblems": true }.

Cost control

Pay per event only works if you can see the bill before you pay it:

  • Set dryRun to count every result and print what a full run would cost - nothing is charged, and only a few sample rows are stored.
  • You are charged only for rows actually delivered to the dataset; a run that finds nothing costs nothing beyond the start event.
  • maxItems is respected exactly, and the run stops before the platform's Max total charge for the run.
  • Every run writes a COST record to the key-value store: chargeable events, charged events, the amount in USD and whether a limit was hit.