Semantic Change Detector
Pricing
from $5.00 / 1,000 url checkeds
Semantic Change Detector
Monitor web pages for meaningful content changes, ignoring noisy timestamps and counters. Optional webhook alerts on change. $0.005/URL + $0.02 start.
Pricing
from $5.00 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Andok
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Monitor any set of web pages for meaningful content changes — not just noisy re-renders. This Actor extracts readable text (optionally scoped to a CSS selector), strips heuristic "noise" like timestamps, relative dates, clock times, and engagement counters, and compares the result against the last stored snapshot. When a page changes, it reports a human-readable summary, a diff excerpt, and can fire a webhook.
Features
- Two sensitivity modes —
meaningful(ignores timestamps/counters) orany(raw text diff) - CSS selector scoping — check only the part of the page you care about (e.g. a pricing table or article body)
- Persistent snapshots — stores the last-seen state per URL in a named key-value store (
semantic-change-snapshots), so subsequent runs detect real drift over time - Diff excerpts — see exactly which lines were added/removed on change
- Webhook alerts — optional fire-and-forget JSON POST when a change is detected
- Resilient per-URL errors — a failed fetch on one URL never stops the batch
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
urls | array | Yes | — | Web pages to check |
selector | string | No | — | CSS selector to scope extraction (defaults to <body>) |
sensitivity | "any" | "meaningful" | No | "meaningful" | Change detection strictness |
webhookUrl | string | No | — | URL to POST a JSON payload to when a change is detected |
Input Example
{"urls": ["https://example.com/pricing"],"selector": ".pricing-table","sensitivity": "meaningful","webhookUrl": "https://your-app.com/webhooks/change-alert"}
Output
{"url": "https://example.com/pricing","changed": true,"change_summary": "Content changed: 2 line(s) added, 1 line(s) removed.","diff_excerpt": "- Starter plan: $9/mo\n+ Starter plan: $12/mo\n+ New Enterprise tier available","checked_at": "2026-07-23T16:00:00.000Z"}
| Field | Description |
|---|---|
url | The input URL, as provided |
changed | true if the content differs from the last stored snapshot |
change_summary | Human-readable summary of the change (or lack thereof) |
diff_excerpt | Up to 8 removed + 8 added lines (-/+ prefixed), truncated to ~2000 characters. null if unchanged |
checked_at | ISO timestamp of this check |
error | Present only if the fetch/extraction failed for this URL |
On the first check for a URL there is no baseline yet, so changed is false and the snapshot is simply stored for future comparisons.
How "meaningful" filtering works
Before hashing/diffing, each extracted line has the following heuristics applied to strip volatile noise:
- ISO 8601 timestamps, numeric dates, month-name dates
- Clock times (
10:30,10:30:00 AM) - Relative timestamps (
5 minutes ago,yesterday,just now) - Engagement counters (
1,234 views,12 comments,3.4k likes)
These are regex-based heuristics, not a guarantee: some volatile content may occasionally slip through, and rarely meaningful text containing dates/numbers may be stripped along with them. Use sensitivity: "any" if you want a literal raw-text diff instead.
Pricing
| Event | Cost |
|---|---|
| Actor start | $0.02 |
| URL Checked | $0.005 |
Typical run cost: 100 URLs ≈ $0.02 + 100 × $0.005 = $0.52.
Limitations
- Static HTML only — this Actor fetches raw HTML via
fetch+ Cheerio; it does not execute JavaScript. Pages that render their content client-side (SPAs) may show no extractable text. Use a URL that serves server-rendered HTML, or point at an API/RSS endpoint instead. - Snapshots are capped at 4,000 lines per URL to keep key-value store items small; extremely long pages may be truncated.
- Webhook delivery is fire-and-forget with a 10s timeout and no retries — failures are logged but never fail the run.
- The named key-value store (
semantic-change-snapshots) persists across runs of the same Actor on the same account, so re-running with the same URLs will correctly detect drift since the last run.
Use Cases
- Track competitor pricing pages for changes
- Monitor legal/ToS pages for updates
- Watch documentation pages for silent edits
- Alert on job posting or status page changes