HTTP Redirect Chain & Status Checker
Pricing
$0.80 / 1,000 checked urls
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
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?
| Field | Description |
|---|---|
url | Original input URL |
finalUrl | URL after following redirects |
finalStatusCode | Final HTTP status |
ok | true when final status is 2xx |
isRedirect | At least one hop / URL changed |
isBroken | 4xx/5xx, timeout, or network/SSL error |
hopCount | Number of redirect hops |
redirectChain | Array of hops: url, statusCode, location, elapsedMs |
totalTimeMs | Wall-clock time for the whole chain |
errorType | timeout / network / ssl / too_many_redirects / other |
contentType, server, … | Optional final-response headers |
How to check redirects and broken links
- Open the Input tab and paste URLs (defaults already include a few public examples).
- Optionally add a sitemap URL and set Max URLs.
- Click Start. Results appear in the Dataset within seconds.
- 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}
| Field | Description |
|---|---|
urls | URL list / CSV-like paste. |
sitemapUrls | Optional XML sitemaps to expand into page URLs. |
maxUrls | Cap after de-duplication (default 100). |
requestMethod | HEAD (default) or GET. |
maxRedirects | Hop limit / loop protection (default 15). |
onlyBroken / onlyRedirects | Output filters. |
includeUrlPatterns / excludeUrlPatterns | Regex filters on input URLs. |
| Advanced | maxConcurrency, 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
maxUrlssmall, then raise it once the sample looks right. - Keep
maxConcurrencyaround 5–10 on the Free plan. - Prefer
HEADunless 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.