Site SpySite Spy
← Site Spy

Developers

Build on top of Site Spy with our REST API and MCP server. Monitor websites, detect changes, and get structured diffs programmatically.

Quick Start

Get your API key from Settings → API in the dashboard. Then start making requests:

bash
# List all your watches
curl -H "x-api-key: YOUR_KEY" \
  https://api.sitespy.app/api/v1/watch

# Create a new watch
curl -X POST -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "title": "Example"}' \
  https://api.sitespy.app/api/v1/watch

# Get change history timestamps
curl -H "x-api-key: YOUR_KEY" \
  https://api.sitespy.app/api/v1/watch/{uuid}/history

Authentication

All API requests require an API key passed via the x-api-key header. You can also pass it as a key query parameter.

python
import requests

API_KEY = "your-api-key-here"
BASE = "https://api.sitespy.app/api/v1"

# List all watches
resp = requests.get(f"{BASE}/watch",
    headers={"x-api-key": API_KEY})
watches = resp.json()

# Create a watch
resp = requests.post(f"{BASE}/watch",
    headers={"x-api-key": API_KEY},
    json={"url": "https://example.com", "title": "My Monitor"})
watch_uuid = list(resp.json().keys())[0]
print(f"Created watch: {watch_uuid}")
javascript
const API_KEY = "your-api-key-here";
const BASE = "https://api.sitespy.app/api/v1";

// List all watches
const res = await fetch(`${BASE}/watch`, {
  headers: { "x-api-key": API_KEY },
});
const watches = await res.json();

// Create a watch
const created = await fetch(`${BASE}/watch`, {
  method: "POST",
  headers: {
    "x-api-key": API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com",
    title: "My Monitor",
  }),
});

MCP Server

Site Spy has a native MCP (Model Context Protocol) server that lets AI assistants like Claude, Cursor, OpenCode, and Codex monitor websites directly — creating watches, reading diffs, and fetching pages without leaving the conversation.

Add to Claude Code / Cursor
# Claude Code
claude mcp add site-spy --env SITE_SPY_API_KEY=your-api-key-here -- \
  npx -y @site-spy/mcp-server

# Or add to .mcp.json manually
{
  "mcpServers": {
    "site-spy": {
      "command": "npx",
      "args": ["-y", "@site-spy/mcp-server"],
      "env": {
        "SITE_SPY_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available MCP Tools

list_watchesread

List all monitored websites

get_watchread

Get full details of a watch

get_change_historyread

Browse change timestamps

get_snapshotread

Read the page as captured

get_diffread

Compare content between timestamps

search_watchesread

Search by URL or title

get_rss_settingsread

Read RSS feed settings

get_notificationsread

Read notification settings

auth_statusread

Check the connection

create_watchwrite

Start monitoring a URL

update_watchwrite

Change watch settings

delete_watchwrite

Remove a watch

trigger_recheckwrite

Force immediate recheck

authenticatewrite

Connect with an API key

generate_rss_tokenwrite

Mint an RSS feed token

revoke_rss_tokenwrite

Disable RSS feed access

fetch_urlweb

Fetch any URL, browser backend included

web_searchweb

Search the web for URLs to fetch

get_ai_summaryPro

Plain-English summary of the last change

Rate Limits

API rate limits are enforced per API key. The MCP server uses the same limits. Exceeding the limit returns HTTP 429.

PlanRequests / dayMCP write accessPrice
Free100Full, 2 watches€0
Starter1,000Full + bulk import, 25 watches€4/mo
Pro10,000Full + bulk import, 100 watches€8/mo
Business50,000Full + bulk import, 500 watches€99/mo

Webhooks

Site Spy uses Apprise for notifications, supporting 90+ services. For webhooks, configure a notification URL in the format:

Webhook URL formats
# Generic webhook (POST with JSON payload)
json://your-server.com/webhook

# Slack
slack://TokenA/TokenB/TokenC

# Discord
discord://WebhookID/WebhookToken

# Telegram
tgram://BotToken/ChatID

# Email
mailto://user:pass@smtp.gmail.com?to=you@example.com

The webhook payload includes the watch UUID, URL, title, diff content, and timestamps. Configure via the API: PUT /watch/{uuid} with notification_urls.

Full API Reference

The complete OpenAPI 3.0 specification covers all endpoints including watches, tags, notifications, search, history, diffs, screenshots, RSS feeds, billing, and user settings.

Key endpoints:

MethodEndpointDescription
GET/watchList all watches
POST/watchCreate a watch
GET/watch/{uuid}Get watch details
PUT/watch/{uuid}Update watch config
DELETE/watch/{uuid}Delete a watch
GET/watch/{uuid}/historyChange history timestamps
GET/watch/{uuid}/history/{ts}Snapshot at timestamp
GET/watch/{uuid}/difference/{from}/{to}Diff between timestamps
GET/search?q=termSearch watches
GET/tagsList all tags

The full interactive API documentation is available at docs.sitespy.app/api-reference.

Ready to build?

Get your free API key and start monitoring websites in minutes.