Policy Change Monitor - Terms & Privacy Diffs avatar

Policy Change Monitor - Terms & Privacy Diffs

Pricing

$2.00 / 1,000 policy page checkeds

Go to Apify Store
Policy Change Monitor - Terms & Privacy Diffs

Policy Change Monitor - Terms & Privacy Diffs

Terms of service and privacy policy change monitor. Watch policy pages and PDFs, get line-level diffs when they change, with moved-page detection and webhook alerts.

Pricing

$2.00 / 1,000 policy page checkeds

Rating

0.0

(0)

Developer

Data Foundry

Data Foundry

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

Policy Change Monitor

Watch terms of service, privacy policies and DPAs, and get a readable diff when they change - "3 lines added, here they are" rather than "the page changed". Works on HTML pages and PDFs.

What you getBuilt for

📄 HTML and PDF policies, parsed the same way
🔍 Line-level diff with quoted added and removed lines
📏 Page-moved detection via a similarity score
🧩 Beyond-window flag when a change lands past the stored text
🔔 Webhook with HMAC signing on change only
🛡️ False-empty guard - a broken parse never reads as "policy emptied"

⚖️ Compliance monitoring for DPOs and legal
🏢 Vendor risk reviews across dozens of suppliers
📑 Contract and DPA tracking with an audit trail
🤖 LLM-ready JSON for review workflows
🔗 API, schedules, webhooks via Apify
🧪 Free test runs on the Free plan

What data do I get?

One dataset record per URL per run, with the diff already computed.

  • changed - true when the normalised text differs from the previous run
  • addedLines / removedLines - how much moved
  • addedSample / removedSample - up to five of the actual lines, truncated for readability
  • similarity - word overlap with the previous version (0 to 1)
  • replaced - true below 0.4 similarity, which usually means a redesign or a different document at the same URL
  • beyondWindow - true when the page changed past the 20,000 character diff window
  • suspicious - the page shrank to almost nothing but the previous state is kept, so a broken parse never looks like a deletion
  • wordCount, pageHash, scrapedAt - for auditing

How much does it cost?

Pay per event: $2.00 per 1,000 pages checked ($0.002 each), whether the page is HTML or PDF. You are not charged for pages that fail.

You monitorRunsMonthly cost
20 policies, weekly87$0.17
50 policies, daily1,500$3.00
200 policies, daily6,000$12.00

That is roughly 50x cheaper than the change monitors that charge $100 per 1,000 checks.

How do I use it?

  1. Create a free Apify account.
  2. Open Policy & Terms Change Monitor in Apify Console.
  3. Paste the policy URLs you are accountable for.
  4. Add a webhookUrl if you want to be notified rather than check.
  5. Run it once as a baseline, then schedule it daily or weekly.
  6. Read addedSample to see the wording that changed.

Input

FieldTypeDescription
urlsarrayPolicy URLs. HTML and PDF are both accepted.
minWordsintegerBelow this word count a page is treated as an extraction failure (default 50).
webhookUrlstringOptional https endpoint, called only when a policy changed.
webhookSecretstringOptional. Adds X-Signature-256: sha256=....
proxyConfigurationobjectOptional, for sites that block datacenter IPs.
concurrencyintegerPages fetched in parallel (default 4).
{
"urls": [
"https://policies.google.com/terms",
"https://stripe.com/legal/terms"
],
"minWords": 50,
"webhookUrl": "https://hooks.slack.com/services/..."
}

Output

{
"url": "https://pdfobject.com/pdf/sample.pdf",
"title": "sample",
"changed": false,
"addedLines": 0,
"removedLines": 0,
"addedSample": [],
"removedSample": [],
"wordCount": 415,
"pageHash": "87657b40d081b94240333a512684ce80e04f131685aebc9f074df6587aa4b96c",
"beyondWindow": false,
"similarity": 1,
"replaced": false,
"scrapedAt": "2026-11-06T09:24:51+00:00"
}

The POLICY_SIGNALS record holds per-URL state plus totals (changed, addedLines, suspicious, failed) and any errors.

Notes and exceptions

  • The first run is a baseline. changed is false by construction; the second run is where diffs start.
  • Scanned PDFs have no text layer. They are reported as an extraction failure rather than an empty policy. OCR is not included.
  • Only the first 20,000 characters are stored and diffed. A change deeper in a very long policy still sets beyondWindow: true, but the diff lines themselves are not available.
  • Pages that render entirely in JavaScript will fail the minWords check and be reported as errors. Server-rendered policy pages and PDFs are the supported path.
  • A redesigned page scores low on similarity. That is what replaced is for - it distinguishes "your terms were edited" from "a different document now lives at this URL".
  • Login-protected and paywalled pages are out of scope.

What can I do with the data?

Vendor risk reviews. You are accountable for the policies of every supplier who touches customer data. Point the actor at 50 of them, run it weekly, and read only the entries where changed is true.

Compliance evidence. Keep every dataset run. pageHash plus scrapedAt is a record that a policy said a particular thing on a particular date.

Watching a competitor's terms. Pricing and terms often move together. When they add an arbitration clause or change a refund window, you see the exact wording.

FAQ

Does it work on PDF terms? Yes - application/pdf is parsed and diffed like HTML, including PDFs served as application/octet-stream. A PDF with no text layer is reported as a failure.

How is this different from a website change monitor? Most of those only tell you "changed: true" or diff the whole DOM. This returns the actual added and removed lines, detects moved or redesigned pages, and refuses to report a parser failure as a deletion.

What happens if a page goes down? The URL is reported as failed, previous state is preserved, and nothing is charged.

Can I be alerted only? Yes - set webhookUrl and ignore the dataset. Delivery retries on 5xx and 429 and never fails the run.

Changelog

  • 0.6 - PDF support, magic-byte sniffing, linear similarity (a quadratic path could stall for 35s), page caps.
  • 0.5 - replaced and similarity for moved or redesigned pages.
  • 0.4 - beyondWindow so changes past the diff window are not missed.
  • 0.1 - First release.