HTTP Redirect Chain & Status Checker avatar

HTTP Redirect Chain & Status Checker

Pricing

$0.80 / 1,000 checked urls

Go to Apify Store
HTTP Redirect Chain & Status Checker

HTTP Redirect Chain & Status Checker

Bulk-check HTTP status codes and the full redirect chain for any URL list. Records every hop (status + Location), final URL, hop count, timing, and flags broken/dead links (4xx/5xx/timeouts). Batch from a URL list, CSV-like paste, or XML sitemap. Fast, monitor-friendly JSON — no browser needed.

Pricing

$0.80 / 1,000 checked urls

Rating

0.0

(0)

Developer

Matt

Matt

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

Bulk-check HTTP status codes and the full redirect chain for any list of URLs. For every URL you get each hop (status + Location), the final URL, hop count, timing, and clear broken / dead flags for 4xx, 5xx, timeouts and network errors.

Paste a URL list, a CSV-like dump, or point at an XML sitemap — no browser, no login, monitor-friendly flat JSON. Schedule it to catch new 404s after deploys or track whether marketing short-links still resolve.

What does this Actor do?

  • ✅ Status check every URL (HEAD by default, auto-falls back to GET when servers reject HEAD)
  • 🔗 Full redirect chain: every hop records url, statusCode, location, elapsedMs
  • 🏁 Final URL + hop count + total time for monitoring and SEO audits
  • 💀 Broken / dead detection: 4xx, 5xx, timeouts, SSL and network errors (isBroken, errorType)
  • 📦 Batch inputs: URL list, CSV-like paste, or XML sitemap / sitemap index
  • 🎯 Filters: only broken, only redirects, include/exclude regex
  • 🛡️ Retries with backoff on 429/5xx; concurrency capped for Free-plan friendliness
  • 🤖 AI-agent friendly: simple input, flat JSON, usable via Apify API and MCP

Why use a redirect-chain checker?

A single final status code hides the story. Marketing links, HTTP→HTTPS upgrades, trailing-slash rules and CDN hops all rewrite the URL. This Actor keeps the hop-by-hop trail so SEO, QA and monitoring tools can see exactly where a chain breaks or loops — not just that it ended on a 404.

What data can it extract?

FieldDescription
urlOriginal input URL
finalUrlURL after following redirects
finalStatusCodeFinal HTTP status
oktrue when final status is 2xx
isRedirectAt least one hop / URL changed
isBroken4xx/5xx, timeout, or network/SSL error
hopCountNumber of redirect hops
redirectChainArray of hops: url, statusCode, location, elapsedMs
totalTimeMsWall-clock time for the whole chain
errorTypetimeout / network / ssl / too_many_redirects / other
contentType, server, …Optional final-response headers
  1. Open the Input tab and paste URLs (defaults already include a few public examples).
  2. Optionally add a sitemap URL and set Max URLs.
  3. Click Start. Results appear in the Dataset within seconds.
  4. For monitoring: create an Apify Schedule and filter on isBroken=true (or enable Only output broken / dead URLs).

How much does it cost?

Pay per event: you are charged for each URL row written to the dataset. Sitemap discovery and filtered-out rows are not charged. Platform usage is covered by the Actor — customers do not pay compute on top. Set a maximum cost per run in the run options; the Actor stops cleanly when it is reached.

Typical smoke tests of a handful of URLs finish in well under a minute on 256 MB.

Input

urls and/or sitemapUrls — at least one is required. Example:

{
"urls": [
"https://example.com",
"https://httpbin.org/redirect/2",
"https://httpbin.org/redirect-to?url=https://example.com&status_code=301",
"https://httpbin.org/status/404"
],
"maxUrls": 20,
"requestMethod": "HEAD",
"maxRedirects": 15,
"onlyBroken": false,
"maxConcurrency": 5
}
FieldDescription
urlsURL list / CSV-like paste.
sitemapUrlsOptional XML sitemaps to expand into page URLs.
maxUrlsCap after de-duplication (default 100).
requestMethodHEAD (default) or GET.
maxRedirectsHop limit / loop protection (default 15).
onlyBroken / onlyRedirectsOutput filters.
includeUrlPatterns / excludeUrlPatternsRegex filters on input URLs.
AdvancedmaxConcurrency, requestTimeoutSecs, maxRetries, proxyConfiguration.

See the Input tab for the full form.

Output example

{
"url": "https://httpbin.org/redirect-to?url=https://example.com&status_code=301",
"finalUrl": "https://example.com",
"finalStatusCode": 200,
"ok": true,
"isRedirect": true,
"isBroken": false,
"hopCount": 1,
"redirectChain": [
{
"url": "https://httpbin.org/redirect-to?url=https://example.com&status_code=301",
"statusCode": 301,
"location": "https://example.com",
"elapsedMs": 48.2
},
{
"url": "https://example.com",
"statusCode": 200,
"location": null,
"elapsedMs": 95.0
}
],
"totalTimeMs": 145.1,
"method": "HEAD",
"source": "list"
}

A SUMMARY record in the key-value store holds aggregate counts (okCount, redirectCount, brokenCount, timeoutCount).

Tips for large batches

  • Start with maxUrls small, then raise it once the sample looks right.
  • Keep maxConcurrency around 5–10 on the Free plan.
  • Prefer HEAD unless a site blocks it.
  • Leave Apify Proxy off unless targets block datacenter IPs — proxies spend credits.

FAQ

Does it execute JavaScript / open a browser?
No. It uses plain HTTP requests, so it is fast and cheap. Client-side redirects are not followed.

Will it follow meta-refresh or JavaScript redirects?
Only HTTP 3xx Location redirects. Meta-refresh and JS navigations are out of scope.

How are redirect loops handled?
The Actor stops when a URL repeats in the chain or maxRedirects is hit, and sets errorType to too_many_redirects.

Can I feed a sitemap?
Yes — put sitemap or sitemap-index URLs in sitemapUrls. Nested indexes are walked (depth-limited).

Support

Built by thomson-digital. Open an issue on the Actor page if something looks wrong — include a sample URL and the run ID.