Redirect Checker & Migration QA (Redirect Map Validator)
Pricing
from $1.20 / 1,000 url checkeds
Redirect Checker & Migration QA (Redirect Map Validator)
Check redirect chains and validate site-migration redirect maps. Records every hop and flags loops, 302s, HTTPS downgrades, wrong destinations, broken final pages, canonical mismatches and noindex. Plain HTTP, robots.txt-aware.
Pricing
from $1.20 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Saiber Operations
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Check where your URLs really end up. Paste a list of URLs, or an old-URL → new-URL redirect map from a site migration, and get one row per URL with every redirect hop, the final destination and status code, and a pass / warning / fail verdict with plain issue codes.
Built for:
- Site migrations and redesigns. Prove that every old URL lands on the right new page with a single permanent redirect, before rankings drop.
- SEO audits. Find redirect chains, loops, temporary (302) redirects, HTTPS downgrades and pages that redirect to a 404.
- Ad and email campaigns. Confirm final URLs still resolve, so you don't pay for clicks that land on broken pages.
- Developers and AI agents. One API call returns clean JSON for a whole URL list.
What it checks
For each URL, the Actor follows redirects itself, one hop at a time, so nothing is hidden. It reports:
- Every hop: URL, status code,
Locationheader and response time. - The final URL and status code, and the redirect count.
- Loops, chains longer than your limit, and redirects missing a
Locationheader. - Temporary redirects (302, 303, 307), which search engines may not treat as permanent moves.
- HTTPS → HTTP downgrades, and final pages that are not on HTTPS.
- Expected vs. actual destination for each pair in your redirect map, with strict or relaxed matching.
- Indexability of the final page: canonical link, robots meta tags and the
X-Robots-Tagheader, including canonicals that still point at the old domain.
Quick start
- Add URLs to URLs to check, or old/new pairs to Redirect map.
- (Optional) Set a Base URL if your map uses paths such as
/old-page. - Click Start. Results appear in the Overview, Redirect map and Indexability tabs.
Redirect-map entries can be objects or one-line strings:
[{ "from": "https://old.example.com/pricing", "to": "https://www.example.com/plans" },"https://old.example.com/about, https://www.example.com/company","/blog/launch -> /news/launch"]
Sample output
{"index": 3,"status": "fail","inputUrl": "http://shop.example.com/legacy","expectedUrl": "https://shop.example.com/landing","finalUrl": "https://shop.example.com/","finalStatus": 200,"matchesExpected": false,"redirectCount": 1,"chain": "302 → 200","issues": ["TEMPORARY_REDIRECT", "EXPECTED_MISMATCH"],"hops": [{ "url": "http://shop.example.com/legacy", "status": 302, "location": "https://shop.example.com/", "timeMs": 84 },{ "url": "https://shop.example.com/", "status": 200, "location": null, "timeMs": 121 }],"canonicalUrl": "https://shop.example.com/","metaRobots": null,"xRobotsTag": null,"indexable": true,"totalTimeMs": 212,"stoppedAt": null,"errorMessage": null,"checkedAt": "2026-10-11T22:40:05+00:00"}
Turn on Create a migration summary report to also get MIGRATION_REPORT (totals, redirect-map match rate, issue counts, slowest URLs) and FAILURES.csv (every URL that did not pass) in the run's key-value store.
Issue codes
| Code | Result | Meaning |
|---|---|---|
EXPECTED_MISMATCH | fail | The URL did not land on the expected URL from your redirect map |
FINAL_CLIENT_ERROR / FINAL_SERVER_ERROR | fail | The final page returned 4xx / 5xx |
REDIRECT_LOOP | fail | The chain comes back to a URL it already visited |
TOO_MANY_REDIRECTS | fail | The chain is longer than "Max redirects to follow" |
MISSING_LOCATION | fail | A 3xx response without a Location header |
HTTPS_TO_HTTP | fail | A hop downgrades from HTTPS to HTTP |
DNS_ERROR / CONNECTION_ERROR / TLS_ERROR | fail | The host does not resolve, refuses connections, or has a certificate problem |
TIMEOUT | fail | No answer within the timeout (not charged) |
INVALID_URL | fail | Not an http(s) URL (not charged) |
TEMPORARY_REDIRECT | warning | The chain uses 302, 303 or 307 instead of 301 or 308 |
REDIRECT_CHAIN | warning | More than one redirect before the final page |
FINAL_NOT_HTTPS | warning | The final page is served over HTTP |
CANONICAL_MISMATCH | warning | The final page's canonical points to a different URL |
NOINDEX | warning | The final page has noindex in robots meta tags or X-Robots-Tag |
POSSIBLY_BOT_BLOCKED | warning | 401, 403 or 429, often bot protection (see FAQ) |
SLOW_RESPONSE | warning | The whole chain took more than 3 seconds |
BLOCKED_BY_ROBOTS / ROBOTS_UNAVAILABLE | skipped | robots.txt disallows the URL, or returned a server error (not charged) |
Pricing
Pay per event: you pay only for results.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| URL checked (per URL with a definitive answer) | $0.0018 | $0.0015 | $0.00135 | $0.0012 |
| Migration report (once per run, only when enabled) | $0.06 | $0.05 | $0.045 | $0.04 |
That is $1.20–$1.80 per 1,000 URLs, plus Apify's standard Actor start fee. Not charged: timeouts, invalid URLs, URLs skipped because of robots.txt, and internal errors. Set Max cost per run to cap any run; the Actor stops cleanly when it reaches the cap.
Integrations and API
Run it from the Apify API, on a schedule (for example, a weekly check of your top landing pages), or from Make, Zapier, n8n and other tools through Apify's integrations. AI agents can call it through Apify's MCP server: input is plain arrays of URLs, and no credentials are needed.
FAQ
Does it follow JavaScript or meta-refresh redirects? Not yet. It follows HTTP redirects (301, 302, 303, 307, 308), which is what search engines and most migrations rely on.
Why do I see POSSIBLY_BOT_BLOCKED on my own site? Some firewalls block automated requests. The Actor identifies itself honestly as SaiberOpsBot. Allowlist that User-Agent on your firewall or CDN, then re-run.
Will it overload a website? No. It sends at most 4 requests at a time to any single host by default, and reads only the response headers of redirects and the <head> of the final page (up to 512 KB).
Can it check pages behind a login? No. It sends no cookies or credentials and only checks public URLs.
My map uses relative paths. Set Base URL (for example https://www.example.com), and paths such as /old-page resolve against it.
Responsible use
The Actor only requests the URLs you provide, plus each site's robots.txt. It respects robots.txt by default (switch this off only for sites you own or are authorized to test), identifies itself as SaiberOpsBot, never logs in, never solves CAPTCHAs, and does not rotate IP addresses to get around blocks. It collects no personal data: output is limited to URLs, status codes and HTTP headers. You are responsible for checking only sites you are allowed to test.
Support
Found a bug or need a feature? Open an issue on this Actor's Issues tab and we'll respond there.
Maintained by Saiber Operations LLC.