Monitoring
Screenshot Monitoring
Scheduled visual snapshots of a page, diffed pixel-by-pixel against the previous one to catch a change nothing else picks up on.
A Screenshot Monitor captures a real screenshot of a page on every check and compares it against the previous one, pixel by pixel — catching a defaced page, a broken layout, or an unexpected banner, all things that can leave status code, latency, and a keyword assertion completely untouched.
Availability
Requires a plan with Screenshot Monitoring (Professional and above) — each check launches a real headless Chromium instance, the same per-check cost as Synthetic Monitoring.
How it works
curl -X POST https://api.monsphere.com/api/v1/organizations/{orgId}/monitors \
-H "X-Api-Key: msph_live_..." -H "Content-Type: application/json" \
-d '{
"name": "Homepage appearance",
"type": "screenshot",
"target": "https://example.com",
"intervalSeconds": 300,
"timeoutSeconds": 30,
"config": { "screenshotDiffThresholdPercent": 5 }
}'Every check captures a fixed-size viewport screenshot and compares it against the last one on record. screenshotDiffThresholdPercent (5% by default) is how much of the page has to actually change before it's flagged — a low threshold catches subtler changes but is noisier on pages with dynamic content (ads, timestamps, carousels) that never look pixel-identical between two checks even when nothing meaningful changed. A resized or redesigned page is always reported as a full change.
This ships with a zero-config default alert — "Screenshot Changed" — the moment a change clears the threshold, no rule setup required, the same convention the built-in "Monitor Down" alert already uses. A monitor's very first check only ever establishes its baseline; nothing is flagged as "changed" until there's a previous screenshot to differ from.
Check frequency
A 5-minute minimum interval is enforced — a real browser launch and image capture per check costs far more than a protocol probe, so this isn't meant to run at Heartbeat-style frequency.
How it runs
Like Synthetic Monitoring, a Screenshot monitor doesn't go through Blackbox Exporter or Prometheus. It runs on MonSPHERE's own internal scheduler, the same one Heartbeat and Synthetic monitors use, so there's no region to pick.
Bot protection: if the site serves a bot-protection challenge (such as Cloudflare's "Just a moment...") instead of the page, the check says so and keeps your last real baseline — a challenge page looks different on every request and would otherwise flag a change on every check. An ordinary error page (404, 500) is still captured and compared: it appearing is a real change.