Redirect Release QA avatar

Redirect Release QA

Pricing

$0.50 / completed report

Go to Apify Store
Redirect Release QA

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

Gilad Ronen

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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

  1. Start with the Input tab's supplied example. Each id is a unique string, including leading zeros.
  2. Replace mappings with your URLs or provide mappingsCsv instead. Remove the unused alternative.
  3. For live checks set mode to live and remove traces. Use public sites you are permitted to access.
  4. Run the Actor. Review status, issues, evidenceComplete and the captured chain for each row.
  5. Download the full JSON as your baseline. Supply it as previousReport on a later run with the same mapping IDs and expectations.

Input

FieldMeaning
modesupplied by default, or live for public HTTP GET requests
mappings1–250 objects with id, sourceUrl, expectedFinalUrl
allowedRedirectStatusesPer mapping; defaults to [301,308]; optionally permit 302, 303 or 307
expectedFinalStatusPer mapping; defaults to 200. An explicit 410 is supported
maxHopsPer mapping; maximum 8 redirect transitions, default 8
tracesSupplied mode only; objects with mappingId, steps, and optional failure code
mappingsCsv, csvColumnsCSV alternative and optional canonical-field-to-header mapping
previousReportPrevious full JSON report, schema 1.0 and engine 0.1.0
maxRequestsUp to 1,000 requests, including robots files and their redirects
totalTimeoutSeconds120 seconds by default, maximum 150, within a 180-second Actor timeout
requestTimeoutSeconds8 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 fieldHow to interpret it
statuspass, fail, or incomplete
issuesStable issue IDs, code, severity, category, reason and evidence reference
observedFinalUrl, observedFinalStatusTerminal observation, or null if not established
hasUsableObservationAt least one non-access-denied mapping response was observed
evidenceCompleteTerminal response was observed without a transport/access failure
traceObserved step URL, status, Location, and available timing
baselineChangesnew, 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.