Changed? Has this page really changed since your last check avatar

Changed? Has this page really changed since your last check

Pricing

$1.00 / 1,000 page checkeds

Go to Apify Store
Changed? Has this page really changed since your last check

Changed? Has this page really changed since your last check

Has a page really changed since your last check? Ignores timestamps, counters and markup churn; never ignores prices, hours or content. Stateless fingerprints, no AI, usually 1 request.

Pricing

$1.00 / 1,000 page checkeds

Rating

0.0

(0)

Developer

OMENZ

OMENZ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Changed?

Has this page really changed since you last looked, or is it just a new timestamp? One cheap, deterministic check per URL, before your agent or pipeline re-reads, re-scrapes, re-summarizes or re-verifies a page that didn't actually change.

What you get per page

state:

  • NEW: first check; a baseline was taken
  • UNCHANGED: same destination, same meaningful content (or the server said 304 Not Modified)
  • CHANGED: change_type = content | metadata | destination; change_size = share of text blocks added or removed (0-1)
  • REDIRECTED: the page now ends on a different site
  • GONE: dead, parked / for sale, or taken over by spam
  • BLOCKED: bot protection or rate limiting; we can't see it, so we don't guess
  • UNKNOWN: timeout, server error, or a page that only renders in a browser (JavaScript shell). Never reported as UNCHANGED.

Plus reason, final_url, observed_last_modified, checked_at and a fingerprint.

Stateless: you keep the fingerprint

We store nothing. Keep each page's fingerprint and pass it back next time:

{ "pages": [{ "url": "https://example.com", "fingerprint": "<from your last run>" }] }

First time, just send URLs:

{ "urls": ["https://example.com"] }

Tip: download your last run's dataset (url + fingerprint columns) and send it back as pages.

What it ignores and what it never ignores

Ignored (so dynamic-but-same pages stay UNCHANGED): "updated x minutes ago", timestamps, copyright years, open/closed-now badges, view and review counters, script/style/markup churn.

Never ignored: prices, menus, opening hours (including clock times on hours lines), addresses, phone numbers, added or removed paragraphs, title and description changes, redirects.

When unsure it leans to CHANGED, because a false UNCHANGED is the expensive mistake.

How accurate is it?

  • Method: this exact version passed a frozen, pre-registered test on 157 pages it had never seen (77 business sites, 25 fast-changing pages, 24 controlled pages), checked again 4 days later and graded by hand:
  • Missed real changes (false UNCHANGED): 0 of 43
  • Overall accuracy: 93.4%
  • Dynamic-but-unchanged pages correctly left UNCHANGED: 92.3%
  • Browser-only pages: always UNKNOWN, never UNCHANGED
  • In the wild it caught two small businesses changing their opening hours, plus holiday menus, sales and new collections.
  • The previous version failed this test (it called a JavaScript-only page unchanged) and was fixed before this one shipped.

Honest limits

  • Known false alarms: live inventory/result counters, rolling calendar dates, timestamps without a year, "today/tomorrow" hours widgets, captchas and embedded social feeds can show up as CHANGED.
  • It reads what an automated client gets, not what a browser renders. Browser-only pages are UNKNOWN.
  • It never bypasses bot protection. Blocked pages are reported as BLOCKED.
  • Lightweight: usually 1 request per page (often a 304), public pages only, no AI calls.

Coming back? Tell us what to add

If this runs in your pipeline or agent regularly, open an issue on the Issues tab (https://apify.com/omenz/changed-page-check/issues): what you use it for, and the next check you'd want in the same call.

Built by OMENZ: https://omenz.org

More OMENZ tools

OMENZ builds tools, research and stories for the agentic internet: omenz.org