Redirect Chain Checker
Pricing
from $2.00 / 1,000 url checkeds
Redirect Chain Checker
Analyze HTTP redirect chains for any URL. Returns full redirect path, final URL, status codes, and loop detection. Perfect for SEO audits and affiliate link checks.
Pricing
from $2.00 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Analyze HTTP redirect chains for any URL — no browser required.
Redirect Chain Checker is an Apify Actor built for SEO professionals, developers, and marketers who need to audit how URLs resolve across the web. Enter one or more URLs and get a complete picture of every hop: status codes, Location headers, final destination, redirect count, loop detection, and response times.
Ideal for:
- SEO audits — verify 301/302 chains, spot redirect loops, and confirm canonical destinations
- Affiliate link checks — trace tracking URLs to their landing pages
- Site migrations — validate redirect rules after domain or path changes
- API & integration testing — confirm endpoints resolve as expected
Features
- Follows HTTP redirects manually (301, 302, 303, 307, 308) using native
fetch - Returns the full redirect chain with status codes and
Locationheaders - Detects redirect loops automatically
- Configurable max redirects, per-request timeout, and custom User-Agent
- Processes multiple URLs in a single run
- Graceful error handling — failed URLs are recorded without stopping the run
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
urls | string[] | Yes | — | URLs to check for redirect chains |
maxRedirects | integer | No | 10 | Max redirects to follow per URL (1–50) |
timeoutMs | integer | No | 10000 | Per-request timeout in milliseconds |
userAgent | string | No | ApifyRedirectChecker/1.0 | User-Agent header for requests |
Example input
{"urls": ["https://httpbin.org/redirect/3","https://google.com"],"maxRedirects": 10,"timeoutMs": 10000}
Output
Each checked URL produces one dataset item:
| Field | Type | Description |
|---|---|---|
inputUrl | string | Original URL submitted |
finalUrl | string | Final URL after all redirects |
statusCode | integer | HTTP status of the final response |
redirectChain | array | Ordered hops: { url, status, location } |
totalRedirects | integer | Number of redirect responses |
isLoop | boolean | true if a redirect loop was detected |
responseTimeMs | integer | Total time to resolve the chain (ms) |
error | string | Present only when the check failed |
Example output
{"inputUrl": "https://httpbin.org/redirect/3","finalUrl": "https://httpbin.org/get","statusCode": 200,"redirectChain": [{ "url": "https://httpbin.org/redirect/3", "status": 302, "location": "/redirect/2" },{ "url": "https://httpbin.org/redirect/2", "status": 302, "location": "/redirect/1" },{ "url": "https://httpbin.org/redirect/1", "status": 302, "location": "/get" },{ "url": "https://httpbin.org/get", "status": 200, "location": null }],"totalRedirects": 3,"isLoop": false,"responseTimeMs": 1240}
How it works
- The Actor reads
urlsfrom input and processes each one sequentially. - For each URL, it sends HTTP GET requests with
redirect: 'manual'so redirects are not followed automatically. - On 3xx responses, it reads the
Locationheader and follows the chain until a non-redirect response, a loop, an error, ormaxRedirectsis reached. - Results are saved to the default dataset via
Actor.pushData().
Run locally
$apify run
Set test input in storage/key_value_stores/default/INPUT.json:
{"urls": ["https://httpbin.org/redirect/3", "https://google.com"]}
Deploy to Apify
apify loginapify push