Website Migration QA: SEO Diff of Old vs New Site
Pricing
from $5.00 / 1,000 path compareds
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
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
noindexshipped to production, lost titles, missing canonicals, pages that now 404. - No noise from tiny edits. Word-count and response-time tolerances are adjustable, and
ignoreFieldsskips 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
noindexshipped 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).
| Event | Price |
|---|---|
| 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.