Website Visual Monitor avatar

Website Visual Monitor

Pricing

Pay per usage

Go to Apify Store
Website Visual Monitor

Website Visual Monitor

takes screenshots and compare them visually to baselines, and generating diff images with change statistics.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Kareem Amr

Kareem Amr

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Website Visual Monitor do?

Website Visual Monitor is an Apify Actor that automatically monitors websites for visual changes. It takes screenshots of your target URLs, compares them against previously stored baselines, generates visual diff images highlighting exactly what changed, and returns detailed change statistics.

Simply provide a list of URLs and run the Actor. On the first run it creates baselines. On every subsequent run it detects visual differences, calculates the percentage change, and flags pages that exceed your configured threshold. Perfect for regression testing, website monitoring, competitor change tracking, and automated visual QA.

Why use Website Visual Monitor?

  • Visual regression testing — Automatically detect unwanted UI changes before they reach production
  • Competitor monitoring — Track when competitors make visual changes to their landing pages, pricing pages, or product catalog
  • Content freshness — Verify that your own website content is rendering correctly across environments
  • SLA compliance — Monitor third-party integrations and embedded content for unexpected visual changes
  • Apify platform advantages — Schedule runs via cron, access results via REST API, integrate with Zapier/Make/GitHub, and store screenshots in the built-in key-value store

How to use Website Visual Monitor

  1. Install dependencies — Run pip install -r requirements.txt and playwright install chromium
  2. Run locally — Execute apify run or python -m my_actor to test with sample input
  3. Configure input — Edit the default input in .actor/input_schema.json or provide input via the Apify Console
  4. Deploy to Apify — Run apify push to deploy and build the Actor on the Apify platform
  5. Schedule monitoring — Use Apify Console to schedule periodic runs (daily, hourly, etc.)
  6. Review results — Check the Output tab for change statistics and the key-value store for diff images

Input

The Actor accepts the following input fields:

FieldTypeDefaultDescription
urlsarray of stringsList of website URLs to monitor (required)
fullPagebooleantrueCapture full-page or viewport-only screenshots
mobilebooleanfalseEmulate mobile viewport (390x844) or desktop (1366x768)
delayinteger0Extra wait time in milliseconds after page load
thresholdnumber1.0Minimum pixel difference percentage to flag as changed

Sample input JSON

{
"urls": [
"https://example.com",
"https://apify.com"
],
"fullPage": true,
"mobile": false,
"delay": 2000,
"threshold": 2.0
}

Output

The Actor pushes one dataset item per URL with the following structure:

{
"url": "https://example.com",
"changed": true,
"differencePercent": 12.45,
"threshold": 1.0,
"timestamp": "2026-06-17T12:00:00+00:00",
"baselineCreated": false,
"status": "changed",
"screenshotKey": "d41d8cd98f00b204e9800998ecf8427e-current.png",
"diffKey": "d41d8cd98f00b204e9800998ecf8427e-diff.png"
}

Field descriptions

FieldDescription
urlThe monitored URL
changedBoolean indicating if the page changed beyond the threshold
differencePercentPercentage of pixels that differ between baseline and current screenshot
thresholdThe threshold used for this comparison
timestampISO 8601 timestamp of the comparison
baselineCreatedtrue on first run when no previous baseline existed
statusOne of baseline_created, changed, unchanged, or error
screenshotKeyKey in the key-value store to access the current screenshot
diffKeyKey in the key-value store to access the diff image (null if baseline was just created)
errorError message if processing failed for this URL

Screenshots and diff images

All images are stored in the Actor's default key-value store:

  • {md5(url)}-current.png — Most recent screenshot
  • {md5(url)}-previous.png — Previous screenshot (used as comparison baseline)
  • {md5(url)}-diff.png — Visual diff highlighting changed pixels in red

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel from the Apify Console.

Pricing / Cost estimation

Website Visual Monitor uses Playwright (full browser) for each URL, so each URL consumes compute time proportional to page load and screenshot processing. For most static websites, each URL takes 5-15 seconds. The Actor runs within the Apify free tier for light usage. Monitor up to 10 URLs on a daily schedule and stay well within the free tier's monthly compute grant.

Tips and advanced options

  • Set an appropriate threshold — Start with 1.0 and adjust. Dynamic content (ads, live counters, dynamic backgrounds) may need a higher threshold. Static pages can use a lower one.
  • Use delay for dynamic pages — Pages with animations or lazy-loaded images may need a 2-3 second delay to render fully.
  • Full page vs viewport — Full-page captures are more thorough but produce larger images. Use viewport-only for faster runs if you only care about the above-the-fold area.
  • Baseline auto-update — After each comparison, the current screenshot replaces the previous baseline automatically. This means the Actor tracks incremental changes, not changes since the very first run.
  • Concurrent monitoring — For large numbers of URLs, consider splitting across multiple Actor runs or using the Apify scheduling feature.

Local development

Prerequisites

Setup

# Clone the repository
git clone <repo-url>
cd website-visual-monitor
# Install dependencies
pip install -r requirements.txt
# Install Playwright browser
playwright install chromium
# Run locally
apify run

Testing with custom input

# Create or edit .actor/input_schema.json with your URLs
# Then run:
apify run --purge

The --purge flag clears previous storage (datasets, key-value stores) for a clean run.

Deployment

Deploy to Apify platform

# Login to Apify (one-time)
apify login
# Push and build the Actor
apify push

Your Actor will be available at https://console.apify.com/actors under "My Actors".

FAQ and support

Is web scraping legal? Web scraping and monitoring are legal when you comply with the target website's Terms of Service and robots.txt. This Actor is a tool — you are responsible for using it responsibly.

Known limitations:

  • Very large pages (10000+ px tall) may produce large images that take longer to compare
  • Pages requiring login or cookies need session handling (not included in this version)
  • The diff algorithm is pixel-based and does not detect semantic changes (e.g., text content that shifts position)

Need help? reach out via the Apify platform.

Custom solutions? Contact us for tailored monitoring solutions, multi-step flows, or integration with your CI/CD pipeline.