Redirect Release QA
Pricing
$0.50 / completed report
Redirect Release QA
Check redirect maps against live public GET requests or supplied traces. Detect wrong targets, temporary redirects, loops and regressions; export JSON, CSV and HTML evidence.
Pricing
$0.50 / completed report
Rating
0.0
(0)
Developer
Gilad Ronen
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What does Redirect Release QA do?
Redirect Release QA checks an intended URL migration map against HTTP evidence. Give it old URLs and their expected destinations, then choose live public GET requests or previously captured traces. It reports the exact observed chain, wrong destinations, unexpected redirect codes, loops, failed terminal statuses and incomplete observations. The supplied example is deterministic and uses synthetic evidence; switch to live mode to check an actual public site.
The Actor works through the Apify API and can be scheduled after releases or for recurring legacy-link checks. Its purpose is narrow: check the HTTP behavior you specify. It does not modify websites, deploy rewrite rules or estimate search rankings.
Why use it?
Migration spreadsheets become difficult to review when redirects cross hosts, change query strings or accidentally lead to a successful but incorrect page. This report keeps every mapping visible and distinguishes an assertion failure from an inaccessible destination. Teams can review the CSV, share a standalone HTML report, and compare a later run with a previous JSON report. Google's site-move guidance describes URL mapping and redirect testing as parts of migration work; this tool checks those supplied expectations without claiming to certify a migration.
How to use it
- Start with the Input tab's supplied example. Each
idis a unique string, including leading zeros. - Replace
mappingswith your URLs or providemappingsCsvinstead. Remove the unused alternative. - For live checks set
modetoliveand removetraces. Use public sites you are permitted to access. - Run the Actor. Review
status,issues,evidenceCompleteand the captured chain for each row. - Download the full JSON as your baseline. Supply it as
previousReporton a later run with the same mapping IDs and expectations.
Input
| Field | Meaning |
|---|---|
mode | supplied by default, or live for public HTTP GET requests |
mappings | 1–250 objects with id, sourceUrl, expectedFinalUrl |
allowedRedirectStatuses | Per mapping; defaults to [301,308]; optionally permit 302, 303 or 307 |
expectedFinalStatus | Per mapping; defaults to 200. An explicit 410 is supported |
maxHops | Per mapping; maximum 8 redirect transitions, default 8 |
traces | Supplied mode only; objects with mappingId, steps, and optional failure code |
mappingsCsv, csvColumns | CSV alternative and optional canonical-field-to-header mapping |
previousReport | Previous full JSON report, schema 1.0 and engine 0.1.0 |
maxRequests | Up to 1,000 requests, including robots files and their redirects |
totalTimeoutSeconds | 120 seconds by default, maximum 150, within a 180-second Actor timeout |
requestTimeoutSeconds | 8 seconds by default, maximum 10, bounded by the remaining overall time |
A minimal live input is:
{"mode":"live","mappings":[{"id":"001","sourceUrl":"https://example.com/","expectedFinalUrl":"https://example.com/"}]}
For CSV use id,sourceUrl,expectedFinalUrl and optionally expectedFinalStatus,maxHops,allowedRedirectStatuses. Status lists use 301|308. BOM and quoted fields are supported. Duplicate, blank or padded headers, irregular records and overlapping column mappings are rejected. Duplicate mapping IDs are rejected; duplicate source URLs with different IDs remain separate rows and receive input findings. Conflicting targets are never silently merged.
Supplied traces must be contiguous: each step URL must equal the preceding Location after resolution. Each step requires url and numeric status; redirect steps can supply location. Optional durationMs is milliseconds and observedAt is an ISO timestamp with timezone. The Actor does not invent timestamps for supplied evidence. Missing traces are incomplete.
Output
The dataset contains one complete report item, including summary, rows, baselineChanges and a report integrity digest. The key-value store has full JSON (OUTPUT), flat mapping CSV (redirects.csv) and standalone HTML (report.html). Use the download link for HTML. CSV formula cells are neutralized and HTML source content is escaped.
{"rowId":"001","status":"fail","evidenceComplete":true,"observedFinalStatus":404,"issues":[{"code":"wrong_final_status","category":"assertion"}]}
| Result field | How to interpret it |
|---|---|
status | pass, fail, or incomplete |
issues | Stable issue IDs, code, severity, category, reason and evidence reference |
observedFinalUrl, observedFinalStatus | Terminal observation, or null if not established |
hasUsableObservation | At least one non-access-denied mapping response was observed |
evidenceComplete | Terminal response was observed without a transport/access failure |
trace | Observed step URL, status, Location, and available timing |
baselineChanges | new, unchanged, resolved, unobserved or not_comparable |
A row can contain a proven assertion failure and incomplete terminal evidence, so summary incomplete can overlap failed. A known old issue resolves only when the same contract is comparable and the current terminal evidence is complete. Changed expectations, changed evidence mode or changed duplicate-source groups are not comparable. Unobserved and omitted rows do not resolve old findings. Incomplete transport findings themselves are excluded from assertion regression counts.
Pricing
The price is $0.50 per completed report, including platform usage, for the entire bounded batch. No startup or per-row event is charged. A new run produces a new billable report. A live batch with zero usable mapping HTTP observations fails before the report event; HTTP 404 and 410 are usable observations, while DNS failures, timeouts, blocked robots access and 401/403/407/429 are incomplete. A partially observed batch can deliver a billable report containing explicit incomplete rows.
The dataset is the primary paid deliverable and is persisted before the report charge is confirmed. If a convenience-export write is interrupted, resurrecting the same run restores exports from the saved report without refetching the web or charging again. Recovery requires the original input, intact saved dataset and platform charge counts. The digest detects accidental modification; it is not an authenticated signature. If the process stops after a charge but the dataset is missing, recovery refuses to create another charge.
Limits and comparison rules
Only HTTP and HTTPS on ports 80 or 443 are supported. Live DNS is checked by the actual socket lookup, all returned addresses must be public, and a validated address is pinned for that connection. Private, loopback, link-local, reserved and special address ranges are rejected on every hop. TLS certificate verification is enabled. No credentials, cookies, arbitrary headers, proxies or host overrides are accepted.
Requests run sequentially with at least 100 ms per-host spacing; applicable robots crawl delays are respected. Robots are checked on every new origin and can redirect at most five times. A missing robots file (404/410) permits the request; inaccessible or unsupported robots policy yields incomplete evidence. Robots bodies are limited to 128 KB of uncompressed UTF-8 and response headers to 16 KB. Compressed robots responses are rejected. For mapping GET requests, the stream is closed after headers and the page body is not downloaded or stored.
URL parsing normalizes scheme, hostname and default ports using standard HTTP URL rules. Path case, query order and values, percent-encoded forms and trailing slashes remain significant. Fragments are omitted from requests and comparisons because HTTP does not send them. Relative Locations are resolved against their response URL. No HTML meta refresh, JavaScript redirect, browser rendering, content relevance or authenticated staging check is performed.
Input JSON is limited to 4 MB. Full report JSON must remain below 8 MB and every export below 9 MB; limits are checked before billing. Split large or slow site inventories into smaller batches. A public site can still refuse or vary its response by location, time or user agent; this is a point-in-time header audit, not a search engine simulation.
Support
Use the Actor's Issues tab with a minimal redacted mapping and captured trace. Do not include tokens, cookies, personal information or confidential query parameters. Only submit URLs you are authorized to inspect. A passed mapping is evidence that the supplied HTTP expectations passed for that observation, not a ranking or traffic guarantee.