Website Change Monitoring, Done For You — or Build It Yourself
Rendex Watch monitors any URL on a schedule, renders it in real Chrome, and runs a before/after visual diff with a highlighted overlay — then alerts you by email or webhook the moment the page changes. Create a watch point-and-click in your dashboard or with one API call. Prefer to own the pipeline? The same screenshot API hands you the raw timestamped captures to diff yourself.
The Problem
Uptime checks tell you a page returns 200 — not that the hero image 404'd, the price changed, a third-party script defaced the layout, or a deploy broke the CSS. Visual monitoring catches what status codes miss, but rolling your own means a scheduler, a fleet of headless browsers, storage for every snapshot, and a diffing pipeline you have to babysit.
The Solution
The fastest path is Rendex Watch, the monitoring product built into the API: point it at a URL — in the dashboard or with one POST to /v1/watches — pick how often to check and what counts as a change, and Rendex renders the page in real Chrome on schedule, runs the before/after visual diff (with a highlighted overlay plus a secondary text diff), and fires an email or HMAC-signed webhook when it changes. No scheduler, no headless fleet, no diffing code to babysit. Or build it yourself: call the screenshot API on a cron from n8n, Make, GitHub Actions, or your own scheduler, store each timestamped capture (optionally straight to your S3/R2 bucket), and diff consecutive images with pixelmatch or your CI.
See it in action


Get Started in Minutes
# Create a managed watch — Rendex renders the page in real Chrome on a
# schedule, runs a before/after visual diff, and alerts you on change.
curl -X POST https://api.rendex.dev/v1/watches \
-H "Authorization: Bearer rdx_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"name": "Pricing page",
"diffMode": "visual",
"threshold": 0.02,
"intervalMinutes": 180,
"webhookUrl": "https://hooks.yourapp.com/rendex-watch",
"renderParams": { "fullPage": true }
}'
# Rendex captures the baseline now, re-checks every 3 hours, and POSTs your
# webhook (with a highlighted diff overlay) the moment the page changes.// Create a watch from any backend — POST /v1/watches, no SDK required.
const res = await fetch("https://api.rendex.dev/v1/watches", {
method: "POST",
headers: {
Authorization: "Bearer rdx_your_key",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com/status",
name: "Status page",
diffMode: "both", // visual + text diff
threshold: 0.01,
intervalMinutes: 30,
notifyEmail: "you@youraccount.com", // must be your own account email
renderParams: { fullPage: true },
}),
});
const { data: watch } = await res.json();
console.log(`Watching ${watch.url} — next check ${watch.nextRunAt}`);# Prefer to own the pipeline? Build it yourself on the screenshot API:
# capture a timestamped snapshot on your own schedule and diff it.
from rendex import Rendex
from pathlib import Path
from datetime import datetime, timezone
import hashlib
rendex = Rendex("YOUR_API_KEY")
def snapshot(url: str) -> None:
result = rendex.screenshot(url=url, full_page=True, format="png")
stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
Path(f"snapshots/{stamp}.png").write_bytes(result.image)
digest = hashlib.sha256(result.image).hexdigest()
last = Path("snapshots/last.sha256")
if last.exists() and last.read_text() != digest:
print(f"Visual change detected on {url} at {stamp}")
last.write_text(digest)
snapshot("https://example.com")100 free API calls/month — no credit card required. Get your API key and start building.
Built for This Use Case
Managed Real-Chrome Visual Diff
Rendex Watch renders the whole page in real Chrome on your schedule, runs the before/after visual diff, and returns a highlighted overlay of exactly what changed — plus a secondary text diff. No diffing code to babysit.
Timestamped Provenance
Every capture returns a timestamp, final URL, HTTP status, and load time — the metadata a monitoring and audit trail needs.
Monitor Hundreds of URLs
Batch and async endpoints capture an entire site's worth of pages in one run, with HMAC-signed webhooks as each finishes.
Store Snapshots Your Way
Deliver results straight to your own S3/R2 bucket (Pro+) for tamper-resistant historical snapshots and your own diffing.
Best-Attempt Reliability
A slow or flaky target returns the best capture plus a quality signal instead of a silent gap in your monitoring timeline.
Geo-Aware Monitoring (Pro+)
Monitor how a page renders from specific countries to catch geo-targeted breakage and localized content drift.
Start Free, Scale as You Grow
100 calls/month free. Starter at $69/mo for 10K calls (or $58/mo billed annually — 2 months free). Pro at $179/mo for 100K calls.