Website Migration QA: SEO Diff of Old vs New Site avatar

Website Migration QA: SEO Diff of Old vs New Site

Pricing

from $5.00 / 1,000 path compareds

Go to Apify Store
Website Migration QA: SEO Diff of Old vs New Site

Website Migration QA: SEO Diff of Old vs New Site

Before you switch DNS, compare every page on your old and new site: HTTP status, redirects, title, meta description, canonical, robots, H1, word count and structured data. Get a per-field diff with severity, configurable tolerances, and a summary of what regressed.

Pricing

from $5.00 / 1,000 path compareds

Rating

0.0

(0)

Developer

Aleksandr Jelohhin

Aleksandr Jelohhin

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Website Migration QA — Source vs Target Diff

Replatforming, moving domains, or pushing a big redesign? Before you switch DNS, run this Actor to compare every page on the old site and the new site side by side and catch what changed before your users — and Google — do.

For each path it fetches both the source and the target, then diffs the things that matter for SEO and content parity, and flags every difference with a severity.

Why this one

  • Compares content and SEO, not just redirects. For each path you get the status, redirects, title, meta description, canonical, robots / noindex, H1 and headings, word count, structured data and response time, old site against new.
  • Every difference has a severity (info / warning / error), and each path gets a 0–100 score, so you know what blocks the launch and what's cosmetic.
  • Catches the classics: staging noindex shipped to production, lost titles, missing canonicals, pages that now 404.
  • No noise from tiny edits. Word-count and response-time tolerances are adjustable, and ignoreFields skips fields you changed on purpose.
  • No path list needed. It can take every URL from the old site's sitemap.xml.

What it compares

  • HTTP status and redirects (does the new page 200, or 404, or add an unexpected redirect?)
  • Title and meta description
  • Canonical URL and robots / indexability — catches the classic "staging noindex shipped to production"
  • H1 and heading structure
  • Word count (with a configurable tolerance so tiny changes are ignored)
  • Structured data — the schema types present on the page
  • Broken links (optional) — did the new page introduce dead links?
  • Response time

Input

{
"sourceBaseUrl": "https://www.example.com",
"targetBaseUrl": "https://staging.example.com",
"paths": ["/", "/pricing", "/about"],
"wordCountTolerancePercent": 10
}

Or turn on sitemap discovery to compare every URL in the source site's sitemap.xml automatically.

Output

One dataset row per path:

{
"path": "/pricing",
"score": 82,
"worstSeverity": "warning",
"source": { "statusCode": 200, "title": "Pricing | Example" },
"target": { "statusCode": 200, "title": "Example" },
"differences": [
{ "type": "title_changed", "field": "title", "severity": "warning",
"sourceValue": "Pricing | Example", "targetValue": "Example" }
]
}

Plus a run SUMMARY: paths compared, how many differ, how many have errors, counts by difference type, average score, and the worst-affected paths.

Use it for

  • A go/no-go check the day before a migration launch
  • Post-launch verification that nothing regressed
  • Ongoing parity checks between production and a staging environment
  • Vendor QA — proving a migration project delivered what was scoped

Pricing

Pay per path compared (a fetch on each site plus the diff).

EventPrice
Path compared$0.005
Run start$0.00005

Examples: 100 paths cost about $0.50. A 500-page sitemap costs about $2.50.

Run it from the API, a schedule or an automation

Run it on demand, schedule it in Apify Console → Schedules (e.g. weekly), or call it from code, n8n, Make or Zapier. One synchronous call returns the rows:

curl -X POST "https://api.apify.com/v2/acts/moonweil~website-migration-qa/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sourceBaseUrl":"https://www.example.com","targetBaseUrl":"https://staging.example.com","discoverPathsFromSitemap":true,"maxPaths":200}'

Add a webhook or Slack / email integration on Run succeeded to get the results pushed to you.

FAQ

My URLs change during the migration. Can it follow an old → new mapping? It compares the same path on both base URLs and reports where the target redirects. A path-to-path map (old /a → new /b) isn't supported yet.

Can I see only the pages that changed? Yes. Set onlyReportPathsWithDifferences: true.

Will small copy edits show up? Word-count changes under wordCountTolerancePercent (default 10%) are ignored. Add fields to ignoreFields to skip them entirely.

Can it check for new broken links on the target? Yes. Turn on checkBrokenLinks.