Page Change Watch: Website Change Detection & Diff
Pricing
from $2.00 / 1,000 page checks
Page Change Watch: Website Change Detection & Diff
Watch any public web page, or one section via a CSS selector, for text changes. Returns which lines were added and removed since the last run. Respects robots.txt. Great for pricing pages, policies, job boards and docs.
Pricing
from $2.00 / 1,000 page checks
Rating
0.0
(0)
Developer
Tudor Lane
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Security
Limited permissionsShare
Use when…
- You need to detect when a web page’s content changes (diff since last run).
- A monitoring agent watches pricing, policy or careers pages for updates.
- You want a watchlist of URLs with a content hash / text diff, not a full archive.
Try this input
Copy-paste this JSON as the Actor input (it matches a successful run / the default schema):
{"pages": [{"url": "https://www.python.org/downloads/","selector": ".download-list-widget"}],"watchlistId": "default"}
Sample output (real run 2026-10-26)
One dataset item, shortened:
{"key": "https://www.python.org/downloads/ | .download-list-widget","baseline": false,"changed": false,"change_count": 0,"changes": [],"change_types": [],"url": "https://www.python.org/downloads/","selector": ".download-list-widget","http_status": 200,"line_count": 1102,"checked_at": "2026-10-26T12:39:13+00:00","error": null}
Watch any public web page, or one section via a CSS selector, for text changes. Returns which lines were added and removed since the last run. Respects robots.txt. Great for pricing pages, policies, job boards and docs.
How it works
Schedule it (e.g. daily). The first run saves a baseline snapshot in your named key-value store page-change-watch under watchlistId; each later run reports only what is new or changed. The snapshot is also saved as the run's SNAPSHOT record; stateless agents can pass it back as previousSnapshot.
Quick start
Leave the default input (it is prefilled) and click Start:
{"pages": [{"url": "https://www.python.org/downloads/", "selector": ".download-list-widget"}], "watchlistId": "default"}
Sample output (real run, 26 Oct 2026, default input)
| key | baseline | changed | change_count | http_status | line_count | checked_at |
|---|---|---|---|---|---|---|
| https://www.python.org/downloads/ | .download-list-widget | true | false | 0 | 200 | 1102 | 2026-10-26T12:37:00+00:00 |
The first run saves the baseline. On later runs changes lists the exact lines added and removed, and change_types says what changed.
Use cases
- Watch competitor pricing pages for price changes.
- Track terms, privacy policy or regulation pages for edits.
- Get told when new jobs, releases or products appear on a page.
- Watch documentation or changelog pages your code depends on.
Pricing
- $0.002 per item checked
- +$0.01 per page changed. Baseline runs never charge for changes.
FAQ
Do I need an API key? No.
Can I watch just part of a page? Yes, add a CSS selector to the page.
Where is the last snapshot kept? In your own named key-value store page-change-watch, under watchlistId. Stateless agents can pass it back as previousSnapshot.
Can I get alerts? Use Apify integrations (email, Slack, webhook) on runs, or filter the dataset on changed = true.
Limits & failure modes
- It reads the page's server HTML, so content that only appears after JavaScript runs may be missed.
- Pages blocked by robots.txt are skipped, and paywalls or logins are not bypassed.
- Busy pages (adverts, dates, counters) can trigger changes; use a tighter selector.
- It only checks when it runs, so changes between runs are reported at the next run.
- Boilerplate/nav changes can trigger diffs — narrow selectors or ignore noisy regions when available.
- First run stores the baseline; meaningful “changed” flags appear on later runs.