Policy and Fee Page Change Watch for Sellers
Pricing
from $4.00 / 1,000 pages
Policy and Fee Page Change Watch for Sellers
Sellers usually learn about a fee or policy change when it bites. I watch the policy, fee and terms pages you rely on and compare each with your last snapshot: added text, removed text and the source link. No API key needed. $0.004 per checked page, with a free synthetic demo.
Pricing
from $4.00 / 1,000 pages
Rating
0.0
(0)
Developer
Jessy Mariau
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 hours ago
Last modified
Categories
Share
Sellers usually learn about a fee or policy change when it bites. I watch the policy, fee and terms pages you rely on and compare each with your last snapshot: added text, removed text and the source link. No API key needed. $0.004 per checked page, with a free synthetic demo.
See the changes, with the source attached
The built-in synthetic demo compares three fictional pages after a baseline exists.
| Demo page | Result | Change |
|---|---|---|
| demo-crm.example / terms | Unchanged | No text changes |
| demo-crm.example / DPA | Changed | Notice period text moved from 30 days to 10 days |
| demo-analytics.example / subprocessors | Changed | Northwind Data Services BV added; Pinehurst Mail Group Inc removed |
Supplier rows also carry the stated purpose and location. The DPA row includes the added and removed lines. A change is a prompt for your own review of the contract.
Try it free: leave pages and vendors empty. For live monitoring:
- Enter page URLs and choose a
watchKey. The first run saves a baseline. - Keep that key and run again. The second run can report changes.
- Schedule checks and route
pages_changed > 0to your own notification workflow.
The Actor produces the report. Slack or email delivery needs an Apify integration or a workflow you configure.
What it does
Point it at pages or at vendors.
With pages, you give one URL per line: terms of service, privacy policy, DPA, subprocessor list, security page, pricing page, whatever you care about. With vendors, you give bare domains and the Actor fetches each homepage and follows the links whose text or address mentions privacy, terms, DPA, data processing, subprocessor, security or trust. If it does not find the subprocessor page from the homepage, it takes one more hop through the privacy or terms page, which is usually where that link actually lives.
Every page then gets fetched, stripped down to its readable text, and compared against the snapshot saved the last time you ran with the same watch key. You get back whether it changed, how much of the text survived, the lines that appeared and the lines that went away.
The part I care most about is the subprocessor extraction. A supplier register on the page gets parsed into rows. Each row carries the supplier's name, what it does for the vendor, and where the processing happens. It reads a register laid out as a table and a register laid out as a bulleted list, because vendors do both. Those rows are then compared against last time by name rather than by position, so a vendor reordering the table alphabetically does not show up as fifteen changes. What you get is the short answer: these two are new, that one is gone.
Everything runs on plain HTTP requests. No browser and no proxy.
What you need
Nothing. Give it URLs and run it.
There is one optional extra. If you paste an OpenAI API key, every changed page also gets labelled material or cosmetic with one sentence on what the change touches. It is off by default and the Actor is fully useful without it. Apify stores the key as a secret.
Run it with no input at all and you get a demo: three sample pages, one unchanged, one DPA whose notice period moved, one subprocessor list with a name added and a name removed. Nothing is fetched and nothing is charged.
How to run it
Pages you already know, watched under a name you choose:
{"pages": "https://sentry.io/legal/subprocessors/\nhttps://n8n.io/legal/sub-processors/\nhttps://www.datadoghq.com/legal/subprocessors/\nhttps://buttondown.com/legal/subprocessors","watchKey": "core-vendors"}
Vendors you want the pages found for:
{"vendors": "sentry.io\nbuttondown.com","watchKey": "core-vendors"}
Use the same watchKey every run. That key names the snapshot the run compares against and writes back to, so the second run is the first one that can tell you anything. Run it on a schedule, weekly or monthly, and point the run at Slack or email when pages_changed comes back above zero.
The OUTPUT record in the key-value store holds the run summary: pages checked, pages changed, which vendors were affected, every subprocessor added or removed across the whole run, and one line you can paste into a message.
Output fields
| Field | What it holds |
|---|---|
vendor | your vendor value, or the page's domain. |
label | your label, or the detected page type. |
url | the page as fetched, after redirects. |
page_type | terms, privacy, dpa, subprocessors, security, pricing or other. |
changed | true when the readable text is not what it was last run. |
first_run | true when no snapshot existed, so this run set the baseline. |
similarity | 0 to 1: how much text survived. Null on a first run. |
added_lines | new lines, capped at 40. |
removed_lines | vanished lines, capped at 40. |
added_lines_total, removed_lines_total | the real counts behind the cap. |
subprocessors | every supplier parsed off the page: name, purpose, location, entity. |
subprocessors_added | suppliers on the page now, absent last run. |
subprocessors_removed | suppliers on the page last run, absent now. |
change_summary | one sentence in plain English. |
content_hash | the hash of the readable text, for spotting a change yourself. |
previous_checked_at | when the snapshot it compared against was taken. |
checked_at | when this run happened. |
error | why a page could not be checked, or null. |
Pricing
Pay per event: one page-checked charge per page that was fetched and compared, at $0.004 a page. A page that failed to load, a domain that resolved to nothing and a demo run cost nothing. Discovering pages from a vendor domain is not charged either, only the pages that end up being checked.
First-run baselines and unchanged pages count as checked pages.
Thirty pages checked four times cost $0.48 in Actor events. First-run baselines and unchanged pages count. Optional OpenAI usage is separate.
These examples describe Actor event charges. Any additional platform or proxy charges shown by Apify are separate. Review run costs before scheduling repeated checks.
Limits
- This reports what a page says and how it changed. It is not legal advice. A change it finds is not a finding that anyone breached anything. Whether a change matters, and whether you were properly notified, is a question for whoever owns the contract.
- The first run has nothing to compare against. It saves the baseline and says so. The second run is the one that tells you something.
- Discovery is best effort. A vendor can rename a page, move it behind a trust portal, split it across a paginated table or drop the link from its footer. Check what came back, then pin the URLs in
pagesonce you know them. - Some pages need a browser and this Actor does not use one. A page rendered entirely by JavaScript, or fronted by a bot check, comes back empty or blocked and lands in the row as an error rather than a silent pass. I hit this on three well known vendor pages while testing, so expect it on a few of yours.
- Subprocessor parsing needs a register that reads like one. A table works when its first column is headed something like Vendor, Name, Company or Subprocessor. A bulleted list works when each entry says what the supplier does or where it is. A bare list of names with nothing else is skipped on purpose, because that is also what a page's link menu looks like.
- If a site's robots.txt disallows the path, the page is skipped and the row says so rather than the Actor pushing through.
- Only watch pages whose terms allow automated checks. Some marketplaces forbid robots on their sites in their own terms, eBay and Printify among them, so this Actor offers no marketplace presets.
- Names are matched with common company suffixes ignored, so Acme Ltd and Acme Limited are the same supplier. A vendor that renames an entry outright shows as one removed and one added, which is the honest answer when you cannot tell the two apart.
Pair it with a workflow
Filter to changed pages, keep the evidence URLs and send the summary to the owner of your supplier register. Schedule the Actor, then configure delivery in Apify or n8n.
Use it from an AI agent
Should you prefer to ask an agent instead of reading a dataset, I made this Actor speak MCP as well. Its server is at https://fractionalhqforyou--vendor-policy-change-watch.apify.actor/mcp and carries a single tool, watch_vendor_policies, which takes the same page list and returns the changes it found. You are charged the same per-event price as a console run. A client with no raw endpoint option can load apify/actors-mcp-server and list fractionalhqforyou/vendor-policy-change-watch as the Actor.
Related Actors I publish
Watching vendor terms tends to sit alongside watching counterparties and pipelines, which is what these three Actors do.
- UK Counterparty Risk Watch: keeps an eye on a customer or supplier list for filings that signal trouble.
- Silent-Success Watchdog for n8n: catches n8n workflows that report success while producing nothing.
- E-Invoice Validator: validates XRechnung, ZUGFeRD and Peppol invoices before they bounce.
Help and maintenance
Built and maintained by Jessy Mariau. For a bug, open this Actor's Issues tab with the run ID and expected result. Remove keys and private data before sharing an input.


