Website Change History - Wayback Machine Snapshots + Diff
Pricing
from $0.80 / 1,000 snapshots
Website Change History - Wayback Machine Snapshots + Diff
List Wayback Machine snapshots of any URL and see exactly what changed between two dates: pricing pages, terms of service, policies, competitor sites.
Pricing
from $0.80 / 1,000 snapshots
Rating
0.0
(0)
Developer
Musedenny
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Website Change History – Wayback Machine Snapshots + Diff
See how any web page changed over time using the Internet Archive's Wayback Machine. List every archived capture of a URL, or get a readable "what changed" report between two dates: the main text of both versions is extracted, compared and summarised, with price changes called out.
Good for pricing pages, terms of service, privacy policies, job pages, product pages and competitor sites.
Uses the official Wayback CDX API and archived pages only. No login, no API key.
Modes
| Mode | What you get |
|---|---|
snapshots | One row per archived capture: time, HTTP status, size, content digest, link. Dedupe with collapse (only when content changed / one per day / month / year). onlyNewSinceLastRun lists only captures newer than the previous run. |
compare | The captures closest to compareFrom and compareTo (or the newest), compared: summary, price/figure changes, added/removed lines, unified diff. |
timeline | Consecutive comparisons across a date range (e.g. one capture per month, up to maxComparisonsPerUrl), so you see when a page changed. |
monitor | Schedule it: each run compares the capture seen last time with the newest one and reports only new changes. The first run saves a baseline (no comparison charge). |
Input example
{"urls": ["https://www.notion.com/pricing"],"mode": "compare","compareFrom": "2024-06-01","compareTo": "2025-09-01"}
Dates accept YYYY-MM-DD, YYYY-MM or YYYY.
Output examples
Snapshot:
{"type": "snapshot", "url": "https://stripe.com/pricing", "timestamp": "20250101130720","capturedAt": "2025-01-01T13:07:20Z", "originalUrl": "https://stripe.com/pricing", "statusCode": 200,"mimeType": "text/html", "digest": "OSQTIT5IQIOPY5UAH37AE2MIHOYWZZ6N", "lengthBytes": 127566,"archiveUrl": "https://web.archive.org/web/20250101130720/https://stripe.com/pricing"}
Comparison (real result, shortened):
{"type": "comparison","comparisonKind": "dates","url": "https://www.notion.com/pricing","from": {"capturedAt": "2024-11-16T22:48:46Z", "archiveUrl": "https://web.archive.org/web/20241116224846/..."},"to": {"capturedAt": "2025-08-31T18:38:59Z", "archiveUrl": "https://web.archive.org/web/20250831183859/..."},"summary": "Note: nearest captures are 168 / 0 days from the requested dates. 39 change(s): 168 line(s) added, 156 removed (55% of the text differs). Prices/figures removed: $0, $10, $15, $8 per member, $10 per member, $15 per seat; added: $0 per seat, $20 per seat. …","changed": true,"similarity": 0.4471,"linesAdded": 168,"linesRemoved": 156,"pricesRemoved": ["$8 per member", "$10 per member", "$15 per seat"],"pricesAdded": ["$0 per seat", "$20 per seat"],"changes": [{"type": "changed", "before": ["…"], "after": ["…"]}],"unifiedDiff": "--- before\n+++ after\n@@ …","requestedFrom": "20240601", "fromGapDays": 168, "toGapDays": 0}
Problems with a single URL (no captures, archive errors) come back as {"type": "error", "url": …, "error": …} rows and do not stop the run (only the $0.0003 URL lookup is charged). If the archive fails for 3 URLs in a row, the run stops so you are not charged for an outage.
Pricing (pay per event + usage)
| Event | Price | When |
|---|---|---|
apify-actor-start | $0.001 | Apify built-in event, charged once per run (per GB of memory above 1 GB). Covers start-up cost and deters empty runs. |
url-lookup | $0.0003 | One URL looked up in the Wayback Machine index (charged even if it has no captures). |
snapshot | $0.0008 | One archived capture listed. |
comparison | $0.015 | Two archived captures fetched, main text extracted and compared. |
Examples: a year of daily captures of one page = $0.001 + $0.0003 + 365 × $0.0008 = $0.29. A 12-month timeline of one page = 12 comparisons ≈ $0.18. A monitor run with no new capture costs about $0.0013.
Plus Apify platform usage for the run itself (server time), typically $0.0002–0.0005 per run because the Actor is lightweight and capped at 512 MB. The run stops cleanly when your maximum cost per run is reached.
How the text comparison works
Archived pages are fetched exactly as captured (id_ mode, no Wayback toolbar). The main text is taken from <main>/<article> when present, otherwise the body without navigation, header, footer, scripts and forms. Texts are compared block by block; amounts like $29/mo, €12.50 per month, 20% are listed separately so price changes stand out.
Limitations
- The archive only has what it captured. Busy pages are captured daily; small sites may have months between captures. The result always shows the actual capture dates, and the summary notes it when they are more than 30 days from the dates you asked for.
- Pages that build their content with JavaScript may have little text in the archived HTML.
- archive.org can be slow or rate-limit; the Actor paces requests (one every 0.5 s) and retries with backoff.
Local development
pip install -r requirements.txt pytest pytest-asyncio respxpytest # HTTP mockedpython -m src # reads storage/key_value_stores/default/INPUT.json