Detect Website Changes Automatically

Set up monitors that capture screenshots on a schedule and automatically detect visual changes between captures. Each snapshot includes a change flag and pixel-diff percentage. Get webhook notifications when pages change. Perfect for competitor monitoring, price tracking, content watching, and uptime verification.

Code Examples

cURL
Node.js
Python
# 1. Create a monitor (checks every 60 minutes)
curl -X POST "https://snapapi.tech/v1/monitors" \
  -H "x-api-key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","name":"Example Homepage","interval_minutes":60,"webhook_url":"https://yoursite.com/hooks/snap"}'

# 2. List snapshots — each has changed + diff_percent fields
curl "https://snapapi.tech/v1/monitors/MONITOR_ID/snapshots" \
  -H "x-api-key: YOUR_KEY"
// Create a monitor
const monitor = await fetch("https://snapapi.tech/v1/monitors", {
  method: "POST",
  headers: { "x-api-key": "YOUR_KEY", "Content-Type": "application/json" },
  body: JSON.stringify({
    url: "https://competitor.com/pricing",
    name: "Competitor Pricing Page",
    interval_minutes: 60,
    webhook_url: "https://yourapp.com/webhooks/changes"
  })
}).then(r => r.json());

// Poll for changes
const { snapshots } = await fetch(
  `https://snapapi.tech/v1/monitors/${monitor.id}/snapshots`,
  { headers: { "x-api-key": "YOUR_KEY" } }
).then(r => r.json());

const changed = snapshots.filter(s => s.changed);
console.log(`${changed.length} changes detected`);
changed.forEach(s => console.log(`  ${s.captured_at}: ${s.diff_percent?.toFixed(1)}% diff`));
import requests

API_KEY = "YOUR_KEY"
BASE = "https://snapapi.tech"
HEADERS = {"x-api-key": API_KEY}

# Create a monitor
monitor = requests.post(f"{BASE}/v1/monitors", headers=HEADERS, json={
    "url": "https://example.com",
    "name": "Example Monitor",
    "interval_minutes": 60
}).json()

# Check for changes
result = requests.get(
    f"{BASE}/v1/monitors/{monitor['id']}/snapshots",
    headers=HEADERS
).json()

for snap in result["snapshots"]:
    if snap.get("changed"):
        print(f"Change detected at {snap['captured_at']}: {snap.get('diff_percent', 0):.1f}% diff")
Get Your Free API Key Read the Docs

Try It Live

Capturing screenshot...

Why SnapAPI?

No Browser Setup

We run Chromium so you don't have to. No Puppeteer, no Selenium, no drivers.

PNG, JPEG, WebP

Choose your format. Set quality. Get optimized output.

Mobile Emulation

9 device presets — iPhone, Pixel, iPad, desktop. One parameter.

Full Page Capture

Scroll the entire page and stitch into one image. Automatic.

Element Selector

Capture a specific element by CSS selector instead of the whole page.

Dark Mode

Emulate prefers-color-scheme: dark to capture dark-themed pages.

Built For

How It Works

1. Sign up for a free API key — 100 screenshots/month, no credit card required.

2. Make a GET request to /v1/screenshot with your URL and API key.

3. Receive a pixel-perfect screenshot as a binary image, or JSON with metadata if meta=true.

That's it. No browser installation, no Chromium management, no headless infrastructure to maintain.