SiteVerdict — Web Change Feed (any page to RSS, Atom, JSON)
Pricing
Pay per event
SiteVerdict — Web Change Feed (any page to RSS, Atom, JSON)
Turn any public page or section into an RSS, Atom or JSON feed of its changes, or of new items on a list page. CSS selectors or automatic main content, noise filters, de-duplicated entries, Slack/webhook alerts and optional AI summaries. Respects robots.txt.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Aman Thakran
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Web Change Feed: turn any web page into an RSS feed of its changes
No RSS on the site you care about? Make one. Point this Actor at any public page, a part of one (CSS selector), or a list page (news, jobs, releases, products). Each scheduled run turns what changed into clean RSS 2.0, Atom and JSON Feed entries that feed readers, Slack, Zapier, n8n and AI agents can subscribe to.
- Two modes:
- section: a feed entry with added/removed lines whenever the content changes
- list: one entry per new item, keyed by its link
- Fewer false alarms: scripts, styles, iframes, form fields (so CSRF tokens), meta tags, hidden elements, navigation, headers, footers and common cookie banners are ignored automatically. Visible text that changes on every load (a "Last updated" time, a rotating ad or "recommended" box) still counts as a change until you add an
ignorePatternsregex, anignoreSelectorsentry orignoreNumbers. Moved lines don't count as changes, and small edits under a threshold accumulate quietly. - Honest statuses: the first run of a page is stored as its
baseline(never charged as a change). A failed fetch, timeout, HTTP error,404or bot-protection page is reported as such, is free and leaves the stored baseline untouched, so it is never reported as "changed" or "removed". - Polite by design: robots.txt is checked before every page, with at most one request per second per host, an honest User-Agent and conditional requests (ETag / Last-Modified). Bot-protected pages are reported, never bypassed.
Who it is for
- Researchers, journalists and analysts: follow regulator pages, policy pages and competitor pricing in your feed reader.
- Ops and growth teams: get a Slack alert when a supplier changes its terms, a competitor changes prices, or a careers page posts a role.
- AI agents: a JSON Feed with structured
added/removedlines is far cheaper than re-reading whole pages.
Use cases
- Competitor pricing page (
selector: "#pricing") → entries like "Pricing: 2 lines added, 1 removed", with the old and new price lines. - Government or regulator updates list (
itemSelector: "li.gem-c-document-list__item") → one feed item per new publication. - Release notes / changelog / status page → a Slack message with an AI one-liner on your own key: "Version 4.2 adds SSO and drops IE11 support."
Example (live run, 11 Oct 2026)
Input: GOV.UK HMRC organisation page, item selector li.gem-c-document-list__item, plus the HMRC "about" page in section mode.
- Run 1: both pages were stored as the baseline, and the list page published its 15 current items as
initialentries (not charged as changes). - Run 2: both pages were
unchanged, with 0 new entries (the list page got304 Not Modified).
Feed item from run 1:
<item><title>Apply for business rates for a self-catering property in Wales</title><link>https://www.gov.uk/guidance/apply-for-business-rates-for-a-self-catering-property-in-wales</link><guid isPermaLink="false">urn:sv:fe1f0c195b1663ff6058e5b3c3275238</guid><category>initial</category><description><![CDATA[Apply for business rates for a self-catering property in Wales — 9 October 2026 — Guidance]]></description></item>
Where is my feed?
Feeds live in a named key-value store in your Apify account (feedName, default siteverdict-change-feed) as feed.xml (RSS), feed.atom and feed.json. Their URLs are in the run's OUTPUT record and stay the same between runs, so subscribe once. If your account restricts storage access, make that store's records readable or fetch them with your API token. Never put your token in a public feed reader.
Output
- Dataset: one row per page check with
status(baseline / changed / unchanged / robots_disallowed / blocked / selector_not_found / http_error / not_html / error / skipped_charge_limit / invalid_input),addedLines,removedLines,newEntriesand the new entries. - Feed entries:
id(stable, used for de-duplication),kind(changed / new_item / updated_item / removed_item / initial),title,link,published,summary,added[],removed[]and HTML content with<ins>/<del>. - Webhook: Slack gets a message; other HTTPS endpoints get a JSON payload with the entries.
Pricing
Pay per event:
page-checked: $0.0005 per page successfully checked (including "unchanged")change-detected: $0.003 per page that changed in a run (the first run's baseline and initial items are not charged as changes)ai-change-summary: $0.002 per AI summary on your own LLM key (optional)
Example: 20 pages checked hourly for a month (14,400 checks) ≈ $7.20, plus $0.003 per actual change. Blocked, disallowed and failed pages are free.
Maximum total charge: the run never charges more than your maximum. Before a page's result is saved, the page check plus its change (and any AI summary) must fit in what is left. If a detected change does not fit, nothing is charged for that page, its row says skipped_charge_limit and its baseline is not moved, so the change is reported on the next run. Pages that are not processed are listed as skipped_charge_limit and the run's status message says "N not processed (max total charge reached)". An AI summary that does not fit is skipped without calling your LLM.
FAQ
JavaScript-heavy pages? This Actor reads the server HTML (fast and cheap). If the content is rendered in the browser, you will see selector_not_found. Use our Website Change & Uptime Monitor for browser rendering.
How do I stop noise from dates or counters? Use ignoreSelectors for widgets, ignorePatterns for text such as Last updated .*, and ignoreNumbers for counters. Raise minChangeChars for small edits.
Will it re-announce items that flicker in and out? No. Items are remembered by link, and those that disappear and come back are not reported as new.
Limits
- Up to 500 pages per run and 5 MB per page (larger pages are truncated). HTML and text only.
- Each run checks once. Use Apify Schedules for monitoring (e.g. hourly).
- The feed window is up to 500 most recent entries.
- The first 5,000 non-empty text lines of a page are stored and compared; changes further down a very long page are not reported (use a
selector). - If a run is migrated or restarted by the platform, it continues at the next unfinished page: finished pages are not checked or charged again, and their feed entries are kept. A finished run that is resurrected does not re-check its pages; start a new run instead.
- Changing
ignorePatterns,ignoreNumbersor a selector starts a new baseline for that page (the first run after the change isbaseline).
Sources & compliance
- Public pages only. robots.txt is honoured for our token
SiteVerdict(RFC 9309; a robots.txt server error counts as "disallow"). Redirect targets are checked too. - We fetch at most one request per second per host, identify ourselves (
SiteVerdict/web-change-feed (+hello@webrevenuescan.com)) and send conditional requests. We never get around CAPTCHAs, logins, paywalls or bot protection; those pages are reported asblocked. - Security: an SSRF guard blocks private, internal and metadata addresses on every redirect hop. Webhooks must use HTTPS. The LLM key and webhook URL are secret inputs that are never logged.
- Copyright and terms: feeds contain short excerpts of changed text for monitoring. Respect each site's terms, and don't republish full content without permission. GOV.UK content used in the example is under the Open Government Licence v3.0.
- Personal data (UK GDPR): don't monitor pages about private individuals. Not legal advice.
Built by SiteVerdict (BharatFare Travel and Technologies Ltd, UK). Contact: hello@webrevenuescan.com.