Website Change Detection, Visual Diff & Webpage to PDF avatar

Website Change Detection, Visual Diff & Webpage to PDF

Pricing

from $3.00 / 1,000 screenshots

Go to Apify Store
Website Change Detection, Visual Diff & Webpage to PDF

Website Change Detection, Visual Diff & Webpage to PDF

Watch pages and see what actually changed: a diff image, the percent of pixels that moved, and the before/after screenshots. Also takes full-page screenshots and webpage-to-PDF at any device size. Failed pages are free.

Pricing

from $3.00 / 1,000 screenshots

Rating

0.0

(0)

Developer

Tidyrun

Tidyrun

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Watch pages and see what actually changed. Turn on Detect visual changes and each run compares every page with its previous capture, returning changed, the percent of pixels that moved, and a diff image with the changes highlighted — so you review one picture instead of two. Put it on a daily schedule and you have a monitor.

It is also a straightforward capture tool: full-page screenshots and webpage-to-PDF for many URLs across desktop, tablet and mobile in one run. Lazy images are loaded, cookie banners are hidden and sticky headers don't repeat down the page.

$3 per 1,000 pages captured, $1 per 1,000 change checks. Failed pages are free.

Quick start

  1. Add your URLs (bare domains like example.com work).
  2. Pick Devices: desktop, laptop, wide, tablet, mobile.
  3. Optional: tick Also save a PDF or Detect visual changes.
  4. Click Start. The Output tab shows every screenshot as a preview with a link to the full image.

Input example:

{
"urls": [{ "url": "https://stripe.com" }, { "url": "https://www.python.org" }],
"devices": ["desktop", "mobile"],
"pdf": true
}

One output row per URL and device:

{
"url": "https://www.python.org/",
"device": "desktop",
"statusCode": 200,
"title": "Welcome to Python.org",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/www-python-org-3f1c2a9b7e-desktop.png",
"imageWidth": 1366,
"imageHeight": 2546,
"truncatedAtMaxHeight": false,
"pdfUrl": "https://api.apify.com/v2/key-value-stores/.../records/www-python-org-3f1c2a9b7e-print.pdf",
"error": null
}

Watch pages for visual changes

Turn on Detect visual changes and put the Actor on a Schedule (for example daily). The first run saves a baseline; every later run compares against the previous screenshot of the same URL and device:

"change": { "status": "compared", "changed": true, "changedPercent": 3.42, "previousCapturedAt": "2026-10-08T09:00:00.000Z", "diffUrl": "https://api.apify.com/v2/key-value-stores/.../records/example-com-1a2b3c4d5e-desktop-diff.png" }

Connect a Slack, email or webhook integration to get alerted when changed is true. Baselines live in a named key-value store in your own account (screenshot-baselines by default); use a different Baseline store name to keep separate monitors.

Why this one

Common problemWhat happens here
One screenshot per run, one devicePaste a list of URLs and pick several devices; you get one row per URL × device.
Grey boxes where images should beThe page is scrolled first so lazy-loaded images render.
Cookie pop-ups covering the pageCommon consent banners are hidden (OneTrust, Cookiebot, Didomi, Usercentrics and more). Nothing is clicked or accepted.
Sticky header repeated or covering contentFixed and sticky elements are pinned so the full-page image reads naturally.
Emoji and non-Latin text show as boxesEmoji, Thai, Chinese, Japanese and Korean fonts are installed.
Paying for pages that failedFailed pages are never charged. Errors say what to fix.
Need to know when a page changesDetect visual changes compares with the previous run and returns changed, changedPercent and a diff image.

Use it from n8n

Install the Apify community node @apify/n8n-nodes-apify (it is already built into n8n Cloud), add an Apify node and point it at tidyrun/website-screenshot-api. A flow people build with it:

A Slack alert when a page changes

Schedule (every morning) → Apify: tidyrun/website-screenshot-api → Keep only changed pages → Post to Slack

Each run compares the new capture with the previous one, so the Slack step only fires when something actually moved. Send a message on a failed run too, or a broken monitor stays silent.

Pricing

EventPrice
Screenshot (captures taller than 15,000 px count as 2)$0.003
PDF$0.003
Change check (comparison with the previous run)$0.001

So 1,000 full-page screenshots cost $3; only very long pages (over 15,000 px captured) count twice. Set Maximum height to 15,000 to never pay double. Pages that fail to load are free, and the run stops cleanly at your maximum charge limit.

Call it from your code

curl -X POST "https://api.apify.com/v2/acts/tidyrun~website-screenshot-api/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls":[{"url":"https://example.com"}]}'

Tips

  • Full-page shots stop at Maximum height (20,000 px by default); truncatedAtMaxHeight tells you when that happened.
  • Use JPEG for much smaller files when you don't need pixel-perfect images.
  • If a page keeps loading forever (chat widgets, live tickers), set Wait until to "DOM ready" and add an Extra delay.

Responsible use

This Actor opens public pages in a normal browser, like a visitor would. It does not log in, solve CAPTCHAs or get around bot protection; pages that block automated browsers are reported as errors and not charged. Make sure you have the right to capture and store the pages you list, and respect each site's terms.