# Generate a new API key Source: https://docs.sitespy.app/api-reference/api-key-management/generate-a-new-api-key /api-reference/openapi.yaml post /generate_key Generate a new unique API key for accessing the API. This endpoint does not require authentication. Each API key is associated with a unique user account. **Rate Limiting**: This endpoint is rate-limited to prevent abuse. Excessive requests from the same IP address will result in a 429 Too Many Requests response. # Change password for authenticated user Source: https://docs.sitespy.app/api-reference/authentication/change-password-for-authenticated-user /api-reference/openapi.yaml post /auth/change-password Change the password for the currently authenticated user. Requires the current password for verification. # Create an ALTCHA signup challenge Source: https://docs.sitespy.app/api-reference/authentication/create-an-altcha-signup-challenge /api-reference/openapi.yaml get /auth/altcha-challenge Create a signed proof-of-work challenge for the signup form. The solved payload must be submitted as the `altcha` field when registering. # Get current user info Source: https://docs.sitespy.app/api-reference/authentication/get-current-user-info /api-reference/openapi.yaml get /auth/me Retrieve information about the currently authenticated user. Requires a valid API key in the x-api-key header. # Login or register via social/OAuth provider Source: https://docs.sitespy.app/api-reference/authentication/login-or-register-via-socialoauth-provider /api-reference/openapi.yaml post /auth/social-login Authenticate a user via a social login provider (e.g., Google). If the user already exists, returns their API key. If the user doesn't exist, auto-creates an account and returns the new API key. This endpoint is intended to be called server-side from the NextAuth callback. # Login to existing account Source: https://docs.sitespy.app/api-reference/authentication/login-to-existing-account /api-reference/openapi.yaml post /auth/login Authenticate with email and password to retrieve your API key. Use this API key for all subsequent authenticated requests. # Permanently delete user account Source: https://docs.sitespy.app/api-reference/authentication/permanently-delete-user-account /api-reference/openapi.yaml delete /auth/delete-account Permanently deletes the authenticated user's account and all associated data, including all watches, settings, notification configurations, and password reset tokens. This action cannot be undone. # Regenerate API key for authenticated user Source: https://docs.sitespy.app/api-reference/authentication/regenerate-api-key-for-authenticated-user /api-reference/openapi.yaml post /auth/regenerate-key Regenerate the API key for the currently authenticated user. The old key is invalidated and all watches are migrated to the new key. Only works for API keys linked to a user account. # Register a new user account Source: https://docs.sitespy.app/api-reference/authentication/register-a-new-user-account /api-reference/openapi.yaml post /auth/register Create a new user account with email and password. An API key is automatically generated and linked to the account. This API key can be used for all subsequent authenticated requests. Signup requires a solved ALTCHA proof-of-work payload from `/auth/altcha-challenge`. # Request a password reset Source: https://docs.sitespy.app/api-reference/authentication/request-a-password-reset /api-reference/openapi.yaml post /auth/forgot-password Request a password reset token for the given email address. Always returns success to avoid leaking whether an email is registered. # Resend account verification email Source: https://docs.sitespy.app/api-reference/authentication/resend-account-verification-email /api-reference/openapi.yaml post /auth/resend-verification Resend the account verification email. Requires authentication. Rate limited to one request per 60 seconds. # Reset password with token Source: https://docs.sitespy.app/api-reference/authentication/reset-password-with-token /api-reference/openapi.yaml post /auth/reset-password Reset the user's password using a valid reset token obtained from the forgot-password endpoint. Tokens expire after 1 hour. # Verify account email Source: https://docs.sitespy.app/api-reference/authentication/verify-account-email /api-reference/openapi.yaml get /auth/verify-email Verify a user's account email using the token sent via email. Returns an HTML page with the verification result. # Create a Lemon Squeezy checkout session Source: https://docs.sitespy.app/api-reference/billing/create-a-lemon-squeezy-checkout-session /api-reference/openapi.yaml post /billing/checkout Creates a hosted checkout URL for upgrading to a paid plan. # Get billing subscription status Source: https://docs.sitespy.app/api-reference/billing/get-billing-subscription-status /api-reference/openapi.yaml get /billing/status Returns the current subscription status and metadata. # Get customer billing portal URL Source: https://docs.sitespy.app/api-reference/billing/get-customer-billing-portal-url /api-reference/openapi.yaml get /billing/portal Returns the Lemon Squeezy customer portal URL for managing the subscription. # Lemon Squeezy webhook receiver Source: https://docs.sitespy.app/api-reference/billing/lemon-squeezy-webhook-receiver /api-reference/openapi.yaml post /billing/webhook Receives subscription lifecycle events from Lemon Squeezy. Called by Lemon Squeezy, not clients. # Enable email notifications (no auth) Source: https://docs.sitespy.app/api-reference/email-verification/enable-email-notifications-no-auth /api-reference/openapi.yaml get /email/enable Single-click enable using a token. Returns an HTML confirmation page. # Get email verification status Source: https://docs.sitespy.app/api-reference/email-verification/get-email-verification-status /api-reference/openapi.yaml get /email Get the current email address and verification status for your API key. # Resend verification email Source: https://docs.sitespy.app/api-reference/email-verification/resend-verification-email /api-reference/openapi.yaml post /email/resend Resend the verification email for the email address associated with your API key. # Set, update, or disable email address Source: https://docs.sitespy.app/api-reference/email-verification/set-update-or-disable-email-address /api-reference/openapi.yaml post /email Set or update the email address for your API key. A verification email will be sent to the provided address. The email must be verified before notifications can be sent. To disable email notifications, send an empty string for the email field. # Unsubscribe from email notifications (no auth) Source: https://docs.sitespy.app/api-reference/email-verification/unsubscribe-from-email-notifications-no-auth /api-reference/openapi.yaml get /email/unsubscribe Single-click unsubscribe using a token. Returns an HTML confirmation page. # Verify email address Source: https://docs.sitespy.app/api-reference/email-verification/verify-email-address /api-reference/openapi.yaml get /email/verify Verify an email address using the token from the verification email. This endpoint does not require authentication as the token serves as proof. # Get watch favicon Source: https://docs.sitespy.app/api-reference/favicon/get-watch-favicon /api-reference/openapi.yaml get /watch/{uuid}/favicon Get the favicon for a web page change monitor (watch) as displayed in the watch overview list. # Get feature flags Source: https://docs.sitespy.app/api-reference/feature-flags/get-feature-flags /api-reference/openapi.yaml get /feature-flags Retrieve the feature flags for the current API key. Feature flags control which features are enabled or disabled for specific users. # Submit the PMF (Sean Ellis) survey Source: https://docs.sitespy.app/api-reference/feedback/submit-the-pmf-sean-ellis-survey /api-reference/openapi.yaml post /feedback/pmf Records a one-time Product-Market-Fit survey response for the authenticated user. Returns 409 if the user has already submitted. # Import watch URLs with configuration Source: https://docs.sitespy.app/api-reference/import/import-watch-urls-with-configuration /api-reference/openapi.yaml post /import Import a list of URLs to monitor with optional watch configuration. Accepts line-separated URLs in request body. **Configuration via Query Parameters:** You can pass ANY watch configuration field as query parameters to apply settings to all imported watches. All parameters from the Watch schema are supported (processor, fetch_backend, notification_urls, etc.). **Special Parameters:** - `tag` / `tag_uuids` - Assign tags to imported watches - `proxy` - Use specific proxy for imported watches - `dedupe` - Skip duplicate URLs (default: true) **Type Conversion:** - Booleans: `true`, `false`, `1`, `0`, `yes`, `no` - Arrays: Comma-separated or JSON format (`[item1,item2]`) - Objects: JSON format (`{"key":"value"}`) - Numbers: Parsed as int or float # Site Spy API Source: https://docs.sitespy.app/api-reference/introduction Automate watch management, retrieve change history, and integrate Site Spy into your own tools with the REST API. The Site Spy API gives you programmatic access to everything the dashboard can do: create and manage watches, organize tags, read change history and snapshots, configure notifications, and more. ## Base URL ```text theme={null} https://detect.coolify.vkuprin.com/api/v1 ``` ## Authentication Almost all requests require an API key, sent in the `x-api-key` header: ```bash theme={null} curl -H "x-api-key: YOUR_API_KEY" \ https://detect.coolify.vkuprin.com/api/v1/watch ``` You can also pass it as a `key` query parameter (`?key=YOUR_API_KEY`) when setting headers isn't practical — for example in RSS readers. Get your API key from [Settings → API & Monitoring](https://sitespy.app/dashboard/settings?tab=api) in the Site Spy dashboard and use the **Copy Key** button to copy it to your clipboard. ## Quick examples ```bash curl theme={null} # List all your watches curl -H "x-api-key: YOUR_API_KEY" \ https://detect.coolify.vkuprin.com/api/v1/watch # Create a new watch curl -X POST -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "title": "Example"}' \ https://detect.coolify.vkuprin.com/api/v1/watch ``` ```python Python theme={null} import requests API_KEY = "YOUR_API_KEY" BASE = "https://detect.coolify.vkuprin.com/api/v1" # List all watches resp = requests.get(f"{BASE}/watch", headers={"x-api-key": API_KEY}) watches = resp.json() ``` ```javascript JavaScript theme={null} const API_KEY = "YOUR_API_KEY"; const BASE = "https://detect.coolify.vkuprin.com/api/v1"; // List all watches const res = await fetch(`${BASE}/watch`, { headers: { "x-api-key": API_KEY }, }); const watches = await res.json(); ``` ## Rate limits Rate limits are enforced per API key. Exceeding the limit returns HTTP `429`. The [MCP server](/docs/dashboard/mcp-integration) uses the same limits. ## MCP integration Prefer talking to your watches from Claude, Cursor, or another AI assistant? Site Spy ships an MCP server that wraps this API — see [MCP Integration](/docs/dashboard/mcp-integration). ## Explore the endpoints Every endpoint is documented in this section with an interactive playground — pick one from the sidebar, plug in your API key, and send real requests from the browser. # Add notification URLs Source: https://docs.sitespy.app/api-reference/notifications/add-notification-urls /api-reference/openapi.yaml post /notifications Add one or more notification URLs to the configuration # Delete notification URLs Source: https://docs.sitespy.app/api-reference/notifications/delete-notification-urls /api-reference/openapi.yaml delete /notifications Delete one or more notification URLs from the configuration # Get notification URLs Source: https://docs.sitespy.app/api-reference/notifications/get-notification-urls /api-reference/openapi.yaml get /notifications Return the notification URL list from the configuration # Replace notification URLs Source: https://docs.sitespy.app/api-reference/notifications/replace-notification-urls /api-reference/openapi.yaml put /notifications Replace all notification URLs with the provided list (can be empty) # Send a test notification Source: https://docs.sitespy.app/api-reference/notifications/send-a-test-notification /api-reference/openapi.yaml post /notifications/test Send a test notification to verify webhook URL(s) are configured correctly. Available on all plans. # Get current plan and usage Source: https://docs.sitespy.app/api-reference/plan/get-current-plan-and-usage /api-reference/openapi.yaml get /plan Returns the subscription plan, limits, and watch usage for the authenticated API key. # Generate RSS feed token Source: https://docs.sitespy.app/api-reference/rss-feeds/generate-rss-feed-token /api-reference/openapi.yaml post /rss Generate (or regenerate) a personal RSS feed token. This token is used in RSS feed URLs to authenticate access. Only watches owned by this user will appear in the feeds. Feed URLs use the format: `{server}/rss?token={rss_token}` # Get RSS feed settings Source: https://docs.sitespy.app/api-reference/rss-feeds/get-rss-feed-settings /api-reference/openapi.yaml get /rss Get the current user's RSS feed token and status. Use the returned token to construct RSS feed URLs for use in any RSS reader. # Revoke RSS feed token Source: https://docs.sitespy.app/api-reference/rss-feeds/revoke-rss-feed-token /api-reference/openapi.yaml delete /rss Revoke the RSS feed token, disabling all RSS feed access for this user. # Get screenshot history timestamps Source: https://docs.sitespy.app/api-reference/screenshots/get-screenshot-history-timestamps /api-reference/openapi.yaml get /watch/{uuid}/screenshot/history Returns the list of screenshot timestamps available for a watch with screenshot monitoring enabled. # Search watches Source: https://docs.sitespy.app/api-reference/search/search-watches /api-reference/openapi.yaml get /search Search web page change monitors (watches) by URL or title text # Get single snapshot Source: https://docs.sitespy.app/api-reference/snapshots/get-single-snapshot /api-reference/openapi.yaml get /watch/{uuid}/history/{timestamp} Get single snapshot from web page change monitor (watch). Use 'latest' for the most recent snapshot. Use the Watch History API to get a list of timestamps to pass. # Get system information Source: https://docs.sitespy.app/api-reference/system-information/get-system-information /api-reference/openapi.yaml get /systeminfo Return information about the current system state # Create tag Source: https://docs.sitespy.app/api-reference/tag-management/create-tag /api-reference/openapi.yaml post /tag Create a single tag/group # Delete tag Source: https://docs.sitespy.app/api-reference/tag-management/delete-tag /api-reference/openapi.yaml delete /tag/{uuid} Delete a tag/group and remove it from all web page change monitors (watches) # Get single tag Source: https://docs.sitespy.app/api-reference/tag-management/get-single-tag /api-reference/openapi.yaml get /tag/{uuid} Retrieve tag information, set notification_muted status, recheck all web page change monitors (watches) in tag. # List all tags Source: https://docs.sitespy.app/api-reference/tag-management/list-all-tags /api-reference/openapi.yaml get /tags Return list of available tags/groups # Update tag Source: https://docs.sitespy.app/api-reference/tag-management/update-tag /api-reference/openapi.yaml put /tag/{uuid} Update an existing tag using JSON # Generate Telegram connect link Source: https://docs.sitespy.app/api-reference/telegram-notifications/generate-telegram-connect-link /api-reference/openapi.yaml post /telegram Generate a deep-link URL for connecting your Telegram account. Open the returned link in Telegram and tap Start to complete the connection. # Get Telegram connection status Source: https://docs.sitespy.app/api-reference/telegram-notifications/get-telegram-connection-status /api-reference/openapi.yaml get /telegram Get the current Telegram connection status for your API key, including any pending link. # Remove Telegram notifications Source: https://docs.sitespy.app/api-reference/telegram-notifications/remove-telegram-notifications /api-reference/openapi.yaml delete /telegram Disconnect Telegram and stop receiving notifications. # Send a test Telegram message Source: https://docs.sitespy.app/api-reference/telegram-notifications/send-a-test-telegram-message /api-reference/openapi.yaml post /telegram/test Send a test notification to verify Telegram is configured correctly. # Telegram webhook endpoint Source: https://docs.sitespy.app/api-reference/telegram-notifications/telegram-webhook-endpoint /api-reference/openapi.yaml post /telegram/webhook Receives updates from the Telegram Bot API. This endpoint is called by Telegram when users interact with the bot (e.g. /start command). Not intended for direct use. # Get user-specific settings Source: https://docs.sitespy.app/api-reference/user-settings/get-user-specific-settings /api-reference/openapi.yaml get /settings/user Retrieve the authenticated user's custom settings, including recheck interval preferences and email notification settings. # Send a test email notification Source: https://docs.sitespy.app/api-reference/user-settings/send-a-test-email-notification /api-reference/openapi.yaml post /settings/user/test-email Send a test email to verify email notification settings are configured correctly. # Update user-specific settings Source: https://docs.sitespy.app/api-reference/user-settings/update-user-specific-settings /api-reference/openapi.yaml put /settings/user Update the authenticated user's custom settings, such as default recheck interval for new watches, email notification preferences, and global ignore patterns. # Get a screenshot for a watch at a specific timestamp Source: https://docs.sitespy.app/api-reference/visual-diff/get-a-screenshot-for-a-watch-at-a-specific-timestamp /api-reference/openapi.yaml get /watch/{uuid}/screenshot/{timestamp} Returns the screenshot image (PNG/JPEG) for a watch that uses the `image_ssim_diff` processor. Requires Pro plan. # Get rendered diff overlay image Source: https://docs.sitespy.app/api-reference/visual-diff/get-rendered-diff-overlay-image /api-reference/openapi.yaml get /watch/{uuid}/screenshot/diff Returns a rendered diff image (JPEG) showing changed areas highlighted in red. Compares two screenshot snapshots using OpenCV. Requires Pro plan. # Get visual diff metadata Source: https://docs.sitespy.app/api-reference/visual-diff/get-visual-diff-metadata /api-reference/openapi.yaml get /watch/{uuid}/screenshot/diff/metadata Returns metadata about the visual diff comparison including change percentage, threshold setting, and available versions. Requires Pro plan. # Get the difference between two snapshots Source: https://docs.sitespy.app/api-reference/watch-history/get-the-difference-between-two-snapshots /api-reference/openapi.yaml get /watch/{uuid}/difference/{from_timestamp}/{to_timestamp} Generate a difference (comparison) between two historical snapshots of a web page change monitor (watch). This endpoint compares content between two points in time and returns the differences in your chosen format. Perfect for reviewing what changed between specific versions or comparing recent changes. **Timestamp Keywords:** - Use `'latest'` for the most recent snapshot (to_timestamp) - Use `'previous'` for the second-most-recent snapshot (from_timestamp) - Or use specific Unix timestamps from the watch history **Format Options:** - `text` (default): Plain text with (removed) and (added) prefixes - `html`: HTML format with (removed) and (added) text - `htmlcolor`: Rich HTML with colored highlights (green for additions, red for deletions) **Word-Level Diffing:** - Enable word-level granularity with `word_diff=true` for detailed inline comparisons - Disable with `word_diff=false` for line-level comparisons only (default false/off, line-level mode by default) **Raw Diff Output:** - Use `no_markup=true` to get raw diff content without any formatting applied - Returns content with placeholders for opening/closing tags of changes - Allows you to implement your own custom colorisation or formatting - Skips all HTML color application and service tweaks (added text, html color tags, etc) # Get watch history Source: https://docs.sitespy.app/api-reference/watch-history/get-watch-history /api-reference/openapi.yaml get /watch/{uuid}/history Get a list of all historical snapshots available for a web page change monitor (watch), use the key `timestamp` as the query argument for fetching a single watch history snapshot. # Create a new watch Source: https://docs.sitespy.app/api-reference/watch-management/create-a-new-watch /api-reference/openapi.yaml post /watch Create a single web page change monitor (watch). Requires at least `url` to be set. Every watch can be configured with: - **Processor mode**: `processor` field (`restock_diff` or `text_json_diff` - default) - **Notification settings**: `notification_urls` (array), `notification_title`, `notification_body`, `notification_format`, `notification_muted` - **Tags/Groups**: `tag` (UUID string) or `tags` (array of UUIDs) - **Check settings**: `time_between_check`, `paused`, `method`, `fetch_backend` - **Advanced options**: `headers`, `body`, `proxy`, `browser_steps`, and more # Delete watch Source: https://docs.sitespy.app/api-reference/watch-management/delete-watch /api-reference/openapi.yaml delete /watch/{uuid} Delete a web page change monitor (watch) and all related history # Get single watch Source: https://docs.sitespy.app/api-reference/watch-management/get-single-watch /api-reference/openapi.yaml get /watch/{uuid} Retrieve web page change monitor (watch) information and set muted/paused status. Returns the FULL Watch JSON. # List all watches Source: https://docs.sitespy.app/api-reference/watch-management/list-all-watches /api-reference/openapi.yaml get /watch Return concise list of available web page change monitors (watches) and basic info # Update watch Source: https://docs.sitespy.app/api-reference/watch-management/update-watch /api-reference/openapi.yaml put /watch/{uuid} Update an existing web page change monitor (watch) using JSON. Accepts the same structure as returned in [get single watch information](#operation/getWatch). # Get the public VAPID key Source: https://docs.sitespy.app/api-reference/web-push-notifications/get-the-public-vapid-key /api-reference/openapi.yaml get /webpush/vapid-key Returns the server's public VAPID key needed to subscribe to push notifications. # Get web push subscription status Source: https://docs.sitespy.app/api-reference/web-push-notifications/get-web-push-subscription-status /api-reference/openapi.yaml get /webpush/subscription Check whether the current API key has any active push subscriptions. # Remove push subscription(s) Source: https://docs.sitespy.app/api-reference/web-push-notifications/remove-push-subscriptions /api-reference/openapi.yaml delete /webpush/subscription Remove a specific push subscription by endpoint, or remove all subscriptions if no endpoint is provided. # Save a push subscription Source: https://docs.sitespy.app/api-reference/web-push-notifications/save-a-push-subscription /api-reference/openapi.yaml post /webpush/subscription Store a browser push subscription for the current API key. # Send a test push notification Source: https://docs.sitespy.app/api-reference/web-push-notifications/send-a-test-push-notification /api-reference/openapi.yaml post /webpush/test Send a test push notification to all subscribed browsers. # Acknowledgements Source: https://docs.sitespy.app/docs/acknowledgements Open source projects that Site Spy is built on Site Spy's detection engine is built on top of [changedetection.io](https://github.com/dgtlmoon/changedetection.io), an excellent open source website change detection tool. The core functionality — page fetching, diffing, and change detection — comes from their project. What Site Spy adds on top: * Browser extension with a visual element picker * Browser-first workflow (install, connect, click what you want to watch) * Hosted multi-user infrastructure with per-user API keys * Billing and plan management * MCP server for AI agent integrations * Extended notification system (email, Telegram, browser push) changedetection.io is actively maintained and free to self-host. If you prefer running your own instance, check out their project directly. # AI Chat Source: https://docs.sitespy.app/docs/dashboard/ai-chat Manage watches and check changes through natural language The AI Chat at [sitespy.app/chat](https://sitespy.app/chat) is a conversational assistant that can create watches, check changes, configure filters, get summaries, and more — all through natural language. ## What it can do **Watch management** * Create new watches from a URL * Search and find existing watches * Configure filters (CSS selectors, ignore patterns, trigger text) * Auto-apply [Smart Filters](/docs/dashboard/smart-filters) after creating a watch * Trigger manual rechecks * Generate share links **Change monitoring** * Show what changed across all watches * Get the diff for a specific watch * View snapshot history and timelines * Get the latest page content **Account info** * Check your current plan, usage, and limits * Generate RSS feed URLs for watches ## Usage limits | Plan | Messages per day | | ------------------------- | ---------------- | | Anonymous (not signed in) | 5 | | Free / Pro Trial | 15 | | Starter | 50 | | Pro | 200 | | Business | 500 | ## Example prompts * "Track the price on [https://example.com/product](https://example.com/product) and tell me when it drops" * "What changed on my watches recently?" * "Give me an overview of all my watches" * "Monitor [https://boards.greenhouse.io/anthropic](https://boards.greenhouse.io/anthropic) for new job postings" * "Show the diff for my Amazon watch" * "Recheck my watches" ## How watch creation works When you give the assistant a URL: 1. It checks if the URL is reachable 2. It checks if you're already monitoring that URL (to avoid duplicates) 3. It creates the watch 4. If you described what to track, it auto-applies [Smart Filters](/docs/dashboard/smart-filters) to reduce noise If the initial URL check gets blocked (403), the assistant will still offer to create the watch — Site Spy's backend uses a real browser (Playwright) that often succeeds where simple HTTP checks fail. ## Limitations * Notification setup (email, Telegram, webhooks, push) must be done in the [dashboard settings](https://sitespy.app/dashboard/settings) — the chat cannot configure notifications * The assistant cannot delete or pause watches * Response length is capped for readability — for full snapshot content, use the dashboard # AI Features Source: https://docs.sitespy.app/docs/dashboard/ai-features AI-powered change summaries, smart filters, and chat assistant Site Spy integrates AI throughout the product — from automatic noise reduction on new watches to a conversational assistant that manages your monitors. Some features use a server-side AI model at no cost to you, while others use your own API key. ## AI Chat A conversational assistant at [sitespy.app/chat](https://sitespy.app/chat) that can create watches, check changes, configure filters, and more — all through natural language. Available to all users with daily message limits based on your plan. See [AI Chat](/docs/dashboard/ai-chat) for the full guide. ## Smart Filters When enabled, Site Spy automatically analyzes new watches and applies noise-reduction filters — removing timestamps, cookie banners, visitor counters, and other dynamic content that causes false notifications. This uses a server-side AI model at no cost to you. See [Smart Filters](/docs/dashboard/smart-filters) for setup and details. ## AI Change Summaries (BYOK) Bring your own API key to get plain-language summaries of what changed on your watches. Instead of reading raw diffs, you get a short explanation like "The product price dropped from $49 to $39." AI change summaries require the **Pro** or **Business** plan and your own API key. ### Supported providers | Provider | Key format | Console | | ------------------ | ------------ | -------------------------------------------------------------------- | | Anthropic (Claude) | `sk-ant-...` | [console.anthropic.com](https://console.anthropic.com/settings/keys) | | OpenAI (GPT) | `sk-...` | [platform.openai.com](https://platform.openai.com/api-keys) | | Google (Gemini) | `AI...` | [aistudio.google.com](https://aistudio.google.com/apikeys) | ### Setup 1. Go to [Dashboard Settings](https://sitespy.app/dashboard/settings) and open the **API & Monitoring** tab 2. In the **AI Features** section, select your provider from the dropdown 3. Paste your API key and click **Save key** Once saved, the section shows a masked version of your key and an "AI features active" status. ### Cost This is a bring-your-own-key (BYOK) feature — you pay your provider directly for API usage. Costs depend on your number of watches and how frequently they detect changes. ### Removing your key Click **Remove key** in the AI Features section. AI features stop immediately and no further API calls are made with your key. ## Security * Your API key is stored securely on the server and is never exposed in full after saving * The key is only used to make API calls for your watches — it's not shared or used for any other purpose * You can remove the key at any time # Plans and Billing Source: https://docs.sitespy.app/docs/dashboard/billing Site Spy pricing plans, features, and account management ## Plans | Feature | Free | Starter (€4/mo) | Pro (€8/mo) | Business (€99/mo) | | ------------------------ | --------------- | --------------- | ---------------------------------------------- | ---------------------- | | Watched URLs | 2 | 25 | 100 | 500 | | Check interval | 1 hour | 10 minutes | 10-minute default; 10 fast watches at 1 minute | 1 minute | | Snapshots per watch | 5 | 25 | 100 | 500 | | Snapshot history | 30 days | 90 days | 1 year | 1 year | | Manual rechecks/day | 3 | 10 | 25 | 100 | | API requests/day | 100 (read-only) | 1,000 | 10,000 | 50,000 | | MCP access | Read-only | Full | Full + bulk ops | Full + bulk ops | | Screenshot capture | No | No | Yes | Yes | | AI change summaries | No | No | Yes (BYOK) | Yes (BYOK) | | Browser steps | No | No | Yes | Yes | | Email notifications | Yes | Yes | Yes | Yes | | Telegram notifications | Yes | Yes | Yes | Yes | | Push notifications | Yes | Yes | Yes | Yes | | 90+ webhook integrations | Yes | Yes | Yes | Yes | | RSS change feeds | Yes | Yes | Yes | Yes | | Import / Export | Yes | Yes | Yes | Yes | | Team seats | No | No | No | 5 included (+€15/seat) | | Shared watches | No | No | No | Yes | | Priority support | No | No | Yes | Dedicated + SLA | | Visual diffs | Yes | Yes | Yes | Yes | | Timeline history | Yes | Yes | Yes | Yes | | Cross-device sync | Yes | Yes | Yes | Yes | | Tags | Yes | Yes | Yes | Yes | | Element monitoring | Yes | Yes | Yes | Yes | | Browser extension | Yes | Yes | Yes | Yes | | Web dashboard | Yes | Yes | Yes | Yes | ## Free trial New accounts on the Free plan get temporary access to Pro features so you can try everything before deciding. During the trial, your plan shows as **Free (Pro features)** in the dashboard. ## Managing your plan 1. Go to [Dashboard Settings](https://sitespy.app/dashboard/settings) 2. Your current plan is shown in the **Account** tab under your profile 3. Click **Manage plan** to view upgrade options, or go directly to the [Billing page](https://sitespy.app/dashboard/billing) ## Upgrading Select a plan on the billing page and complete payment. Your new limits take effect immediately — existing watches start using the new check intervals on their next scheduled check. ## Downgrading If you downgrade to a plan with fewer watches, existing watches beyond the limit will stop being checked but won't be deleted. You can delete watches manually to get back within your plan's limit. Manual recheck limits and API rate limits also adjust to the new plan immediately. # Browser Steps Source: https://docs.sitespy.app/docs/dashboard/browser-steps Monitor pages that require login or user interactions Browser Steps let you automate interactions before Site Spy captures a snapshot — like logging in, accepting cookie consent, or navigating through a single-page app. This is how you monitor pages that aren't accessible with a simple page load. Browser Steps require the **Pro** or **Business** plan. Dashboard UI for configuring browser steps is **coming soon** — currently available via the [API](/docs/dashboard/mcp-integration) only. ## How it works Site Spy normally fetches pages with a simple HTTP request. When you configure browser steps, it instead uses a full browser (Playwright) that can: 1. Execute your defined steps (click buttons, fill forms, wait for elements) 2. Reach the target content 3. Capture the snapshot This runs on every check, so your watch can continuously monitor login-protected or interaction-dependent content. ## Current status Browser steps are fully supported on the backend and can be configured via the API. A visual editor in the dashboard is planned for a future release. ## Use cases * **Login-protected pages** — Fill in credentials to access dashboard data, account pages, or gated content * **Cookie consent** — Click "Accept" on GDPR/cookie banners before capturing content * **Single-page apps** — Navigate through JavaScript-rendered pages that require clicks to load content * **Multi-step navigation** — Click through menus or tabs to reach the specific content you want to monitor ## Fetch backend For browser steps to work, the watch must use the browser-based fetcher (`html_webdriver`) instead of the default plain HTTP fetcher. This is set automatically when you configure browser steps or enable [screenshot capture](/docs/dashboard/screenshots). ## Limitations * Browser steps run on every check, which takes longer than simple HTTP fetches * Complex multi-step flows may occasionally fail if the target site changes its layout * Two-factor authentication (2FA) requiring dynamic codes cannot be automated # CSS & XPath Filters Source: https://docs.sitespy.app/docs/dashboard/css-xpath-filters Monitor specific page sections using CSS selectors and XPath expressions Filters let you control exactly which parts of a page Site Spy monitors. Instead of tracking the entire page (and getting notifications for every small change), you can focus on specific sections and ignore the rest. Filters are available on **all plans**, including Free. ## Filter types Each watch has three filter fields, accessible from the [Watch Settings](/docs/dashboard/watch-settings) gear icon: ### Monitor Only (include filters) CSS or XPath selectors that limit monitoring to specific page sections. Only content matching these selectors is tracked — everything else is ignored. **CSS examples:** * `#price` — element with id "price" * `.product-info` — elements with class "product-info" * `table.rates` — a table with class "rates" * `h1, h2, h3` — all headings **XPath examples:** * `//*[@id="price-table"]` — element with id "price-table" * `//div[@class="rates"]` — div with class "rates" * `//table[1]` — the first table on the page You can add multiple selectors — each one on its own line. ### Exclude Elements (subtractive selectors) CSS selectors for elements to remove before checking for changes. Useful for filtering out noisy sections while keeping the rest of the page. **Examples:** * `.cookie-banner` — remove cookie consent banners * `#ads` — remove ad sections * `nav, footer` — remove navigation and footer * `.sidebar` — remove sidebar content ### Text Patterns (ignore text) Text strings or regex patterns to exclude from change detection. Any matching text is stripped before comparing snapshots. **Plain text:** `Last updated` — ignores any line containing this text **Regex:** `/\d{1,2}:\d{2}\s*(AM|PM)?/i` — ignores timestamps like "3:45 PM" Regex patterns must be wrapped in `/pattern/` with optional flags (`i` for case-insensitive). ## Finding selectors with DevTools 1. Right-click the element you want to monitor in your browser 2. Click **Inspect** (or **Inspect Element**) 3. In the DevTools Elements panel, look for the element's `id` or `class` 4. Use `#id-name` for IDs or `.class-name` for classes Alternatively, use the **element inspector** in the Site Spy browser extension — click any element on the page and the selector is applied automatically. ## Common examples | Goal | Filter type | Value | | --------------------------- | ---------------- | --------------------------------- | | Monitor only the price | Monitor Only | `#price` or `.price` | | Ignore the sidebar | Exclude Elements | `.sidebar` | | Ignore timestamps | Text Patterns | `/\d{1,2}:\d{2}/` | | Ignore "Last updated" lines | Text Patterns | `/last\s+(updated\|modified).*/i` | | Monitor a specific table | Monitor Only | `table.rates` | | Ignore cookie banners | Exclude Elements | `.cookie-banner, #consent` | ## Smart Filters Don't want to write selectors manually? Enable [Smart Filters](/docs/dashboard/smart-filters) and Site Spy will automatically analyze new watches and apply optimal filters using AI. # Email Notifications Source: https://docs.sitespy.app/docs/dashboard/email-notifications Set up email alerts for website changes Email notifications send you a report when your watched pages detect changes. Available on all plans, including Free. ## Setup 1. Go to the [Notifications page](https://sitespy.app/dashboard/notifications) in the dashboard 2. Click **Enable Notifications** 3. Check your inbox for a verification email 4. Click the verification link Once verified, you'll see a green "Verified" status next to your email. ## Testing After verification, click **Send Test Email** to confirm delivery. Check your spam folder if the test doesn't arrive within a few minutes. ## Disabling Click **Disable Notifications** to stop receiving emails. You can re-enable at any time — no need to re-verify if your email hasn't changed. ## Troubleshooting * **No verification email?** Click **Resend Verification** and check your spam folder * **Feature not available?** Try refreshing the page or contact support # Import & Export Source: https://docs.sitespy.app/docs/dashboard/import-export Bulk import URLs and export your watches Site Spy lets you import URLs in bulk and export your watch data for backup or migration. ## Bulk import 1. Go to [Dashboard Settings](https://sitespy.app/dashboard/settings) 2. Open the **Data** tab 3. In the **Bulk Import** section, paste URLs (one per line) or upload a `.txt` / `.csv` file 4. Click **Import** The import runs in the background. Duplicate URLs are automatically skipped. ### Supported formats * **Plain text** — One URL per line in the textarea * **File upload** — `.txt` or `.csv` files containing URLs URLs must start with `http://` or `https://`. Invalid URLs are skipped during import. ## Export From the same **Data** tab, you have two export options: ### Export as JSON Downloads a `.json` file containing all your watches with full configuration — URLs, titles, tags, and settings. The file includes: ```json theme={null} { "version": "1.0", "exported_at": "2025-01-15T10:30:00Z", "source": "sitespy.app", "watch_count": 12, "watches": { ... } } ``` ### Export as URL list Downloads a plain text file with one URL per line. This format can be directly re-imported using Bulk Import. ## Round-trip workflow You can export your watches as a URL list from one account and import them into another. This is useful for migrating between accounts or sharing a monitoring list with a team member. # MCP Integration Source: https://docs.sitespy.app/docs/dashboard/mcp-integration Connect Site Spy to AI assistants like Claude, Cursor, and other MCP-compatible tools Site Spy provides an [MCP server](https://www.npmjs.com/package/@site-spy/mcp-server) that lets AI assistants monitor websites, compare snapshots, and manage watches through natural language. ## Setup 1. Copy your API key from [Dashboard Settings > API & Monitoring](https://sitespy.app/dashboard/settings?tab=api) 2. Add the following configuration to your AI client's settings file: ```json theme={null} { "mcpServers": { "site-spy": { "command": "npx", "args": ["-y", "@site-spy/mcp-server"], "env": { "SITE_SPY_API_KEY": "your-api-key" } } } } ``` > **OpenClaw users:** You can run `openclaw mcp set site-spy npx -y @site-spy/mcp-server` or add it to your `openclaw.yaml` file instead. 3. Restart your AI client — Site Spy tools appear automatically ## Configuration file locations | Client | Path | | ------------------------ | ----------------------------------------------------------------- | | Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` | | Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` | | Claude Code | `.mcp.json` in project root | | Cursor | `.cursor/mcp.json` in project root | | OpenClaw | `openclaw.yaml` in project root or `~/.openclaw/openclaw.yaml` | ## Available tools ### Read tools (all plans) | Tool | Description | | -------------------- | ------------------------------------------------- | | `authenticate` | Connect to Site Spy with an API key | | `auth_status` | Check whether the MCP server is authenticated | | `list_watches` | List all monitored websites | | `get_watch` | Get full details of a specific watch | | `get_change_history` | Get timestamps when changes were detected | | `get_snapshot` | Get page content captured at a specific timestamp | | `get_diff` | Compare page content between two timestamps | | `search_watches` | Search watches by URL, title, or content | | `list_tags` | List all available tags | | `get_rss_settings` | Get RSS feed settings | | `get_notifications` | Get current notification settings | ### Write tools (Starter and above) | Tool | Description | | -------------------- | ---------------------------------- | | `create_watch` | Start monitoring a URL for changes | | `update_watch` | Update a watch's configuration | | `delete_watch` | Stop monitoring a URL | | `trigger_recheck` | Force an immediate recheck | | `generate_rss_token` | Generate or regenerate RSS token | | `revoke_rss_token` | Revoke RSS feed token | ### AI tools (Pro and above) | Tool | Description | | ---------------- | ---------------------------------------------------------------- | | `get_ai_summary` | Get AI-generated plain-English summary of the most recent change | ## Plan limits MCP access follows the same plan limits as the REST API: | Plan | MCP access | | -------- | ---------------------------------------------- | | Free | Read-only (100 requests/day) | | Starter | Full access (1,000 requests/day) | | Pro | Full access + AI summary (10,000 requests/day) | | Business | Full access + AI summary (50,000 requests/day) | ## Example usage Once connected, you can ask your AI assistant things like: * "What changed on my watches recently?" * "Start monitoring [https://example.com/pricing](https://example.com/pricing) for price changes" * "Show me the diff for my Amazon watch" * "Summarize the latest change on my competitor's site" * "Recheck all my watches" ## Troubleshooting * **"Not authenticated" errors** — Make sure `SITE_SPY_API_KEY` is set correctly in the config. You can verify by asking the assistant to run `auth_status`. * **Tools not appearing** — Restart your AI client after adding the config. Ensure `npx` is available (requires Node.js 18+). * **"Write access required" errors** — Free plan has read-only MCP access. Upgrade to Starter or above for write operations. * **"Pro plan required" errors** — The `get_ai_summary` tool requires Pro or Business plan. # Browser Push Notifications Source: https://docs.sitespy.app/docs/dashboard/push-notifications Receive instant browser notifications when watched pages change Get real-time browser notifications when your watched pages change — even when the Site Spy tab is closed. ## Enabling 1. Go to the [Notifications page](https://sitespy.app/dashboard/notifications) in the dashboard 2. Click **Enable Push Notifications** 3. Allow the browser permission prompt Once enabled, the section shows "Enabled" and two buttons appear — **Send Test Notification** and **Disable**. ## Testing Click **Send Test Notification** to send a test push to your browser. You should see a notification within a few seconds. ## Disabling Click **Disable** to unsubscribe. Your browser will stop receiving push notifications from Site Spy. ## Notes * Push notifications are tied to this browser on this device. To receive notifications on multiple devices, enable them separately on each one. * Notifications only work while the browser is running (the tab does not need to be open). * If you clear your browser data or reinstall, you will need to re-enable push notifications. # RSS Feeds Source: https://docs.sitespy.app/docs/dashboard/rss Follow website changes in any RSS reader Site Spy generates RSS feeds for your watches. You can subscribe to a single watch, a tag group, or all your watches at once. RSS is available on all plans. ## Finding your RSS feeds RSS links are available directly from the **RSS Feeds** page in the dashboard sidebar. Your feed URLs are generated automatically — no setup required. There are three feed types: ### Per-watch feed Each watch has its own RSS feed. Open a watch and look for the RSS icon or link. The feed publishes a new entry every time that page changes, with the diff content included. ### Per-tag feed Every tag has an RSS feed covering all watches with that tag. Useful if you group related pages together — for example, a "Jobs" tag feed covers all job listing pages you're watching. ### All-watches feed A single feed that includes changes from all your watches. Use this if you want one subscription in your RSS reader that covers everything. ## Using RSS feeds Paste the feed URL into any RSS reader — Feedly, NetNewsWire, FreshRSS, or any other reader that supports Atom/RSS. Each entry includes: * The page URL that changed * A diff showing what was added and removed * The timestamp of the change ## RSS vs direct alerts RSS is a good fit when you want to browse changes at your own pace, aggregate multiple watches in one place, or pipe updates into other tools. For time-sensitive changes like visa slots or stock alerts, [push notifications](/docs/dashboard/push-notifications), [email](/docs/dashboard/email-notifications), or [Telegram](/docs/dashboard/telegram) are a better choice since they notify you immediately. # Screenshot Capture Source: https://docs.sitespy.app/docs/dashboard/screenshots Capture full-page screenshots alongside text monitoring Screenshot capture is a **Pro plan** feature that saves a PNG screenshot alongside each text snapshot when a watch checks a page. This gives you both text diffs and visual comparisons. ## Enabling screenshots 1. Open the [watches list](https://sitespy.app/dashboard/watches) 2. Click the **gear icon** on a watch to open Watch Settings 3. Toggle **Screenshot Capture** on 4. The watch automatically rechecks to capture its first screenshot When enabled, the watch uses a browser-based fetcher so it can render the page and take a screenshot. Screenshot capture requires the **Pro plan**. Free and Starter users see an upgrade prompt. ## Viewing screenshots ### Preview page The preview page shows a **Text / Screenshot** tab toggle when screenshots are available. Switch to the Screenshot tab to see the most recent capture. ### Diff page The diff page shows a **Text Diff / Visual Diff** tab toggle. The visual diff view offers two modes: * **Before / After** — A slider to compare the two screenshots side by side * **Diff Overlay** — A generated image highlighting changed regions in red The change percentage and sensitivity threshold are shown below the image when available. ## How it works * Screenshots are **additive** — text monitoring always runs, screenshots are captured alongside * Each check saves both a text snapshot and a screenshot (if enabled) * At least 2 screenshots are needed before visual comparison is available * The diff overlay is generated on-demand using image comparison (SSIM) # Dashboard Settings Source: https://docs.sitespy.app/docs/dashboard/settings Configure your Site Spy dashboard preferences The [dashboard settings](https://sitespy.app/dashboard/settings) are organized into five tabs: Account, API & Monitoring, Appearance, Integrations, and Data. ## Account ### Profile Shows your name, email, and current plan. Click **Manage plan** to view upgrade options. ### Password Change your password (only available for email/password accounts, not social logins). ### Delete account Permanently delete your account, all watches, and all data. This cannot be undone. A confirmation dialog requires explicit confirmation before proceeding. ## API & Monitoring ### API connection Your API key connects the dashboard to the backend. Copy it to use in the browser extension or other integrations. See [Connecting to the Dashboard](/docs/getting-started/connecting) for setup details. ### Check frequency Set the default check interval for all watches. Individual watches can override this in their own settings. The allowed range depends on your plan: | Plan | Minimum | Maximum | | -------- | ---------- | ------- | | Free | 1 hour | 7 days | | Starter | 10 minutes | 7 days | | Pro | 10 minutes | 7 days | | Business | 1 minute | 7 days | Pro also includes 10 fast slots that can be assigned to individual watches at intervals down to 1 minute from each watch's settings. ### AI features Bring your own API key (Anthropic Claude, OpenAI GPT, or Google Gemini) for AI-powered change summaries. See [AI Features](/docs/dashboard/ai-features) for details. ### Smart Filters Toggle automatic noise reduction for new watches. When enabled, Site Spy uses AI to analyze new watches and apply filters that remove timestamps, cookie banners, and other dynamic content. See [Smart Filters](/docs/dashboard/smart-filters) for details. ## Appearance ### Theme Choose between three modes: * **Auto** — Follows your system dark/light preference * **Dark** — Always dark * **Light** — Always light The theme applies to the web dashboard. The browser extension has its own theme setting. ### Watch list actions Customize which action buttons appear on each watch in your list. Core actions (Recheck, Preview, Diff, Timeline, Settings, Delete) are always visible. Optional actions can be toggled on or off: * **Screenshots** — Quick access to screenshot capture * **RSS feed** — Link to the watch's RSS feed * **Share link** — Generate a shareable link for the watch configuration * **Open site** — Open the watched URL in a new tab Changes are saved automatically and apply immediately. ## Integrations ### Browser extension Links to install the extension from the Chrome Web Store and Firefox Add-ons. After installing, copy your API key from the API & Monitoring tab to connect. ### AI Integration (MCP) Configure the Site Spy MCP server to connect AI assistants. See [MCP Integration](/docs/dashboard/mcp-integration) for the full setup guide. ## Data ### Team management Invite and manage team members (Business plan only). See [Team Management](/docs/dashboard/team-management). ### Bulk import Import URLs in bulk by pasting them or uploading a file. See [Import & Export](/docs/dashboard/import-export). ### Data export Export your watches as JSON (full configuration) or as a plain URL list. See [Import & Export](/docs/dashboard/import-export). # Share Links Source: https://docs.sitespy.app/docs/dashboard/share-links Share watch configurations with others via a link Share links let you send a watch configuration to someone so they can add it to their own Site Spy account with one click. The recipient gets the same URL, filters, and monitoring settings — no manual setup needed. ## Sharing a watch 1. Open the [watches list](https://sitespy.app/dashboard/watches) 2. Click the **share icon** on any watch 3. A shareable link is copied to your clipboard The link encodes the watch configuration (URL, CSS/XPath filters, processor type, and other settings) into a URL parameter. No snapshot data or history is shared — only the monitoring setup. ## What recipients see When someone opens a share link, they see a preview card showing: * The website URL and favicon * The monitoring type (Text/HTML, Re-stock detection, or Visual/screenshot) * Any CSS or XPath filters applied If the recipient is signed in, they can click **Add to My Watches** to create the watch in their account. The first snapshot is taken automatically. ## Authentication flow * **Signed in** — The "Add to My Watches" button creates the watch immediately * **Not signed in** — The button says "Sign in & Add Watch" and redirects to the login page. After signing in, the user is redirected back to the share page automatically ## Duplicate detection If the recipient already monitors the same URL, a notice appears: "You're already monitoring this site." Instead of the add button, they see a link to go to their dashboard. ## Visibility The share link button can be toggled on or off in [Appearance settings](/docs/dashboard/settings#watch-list-actions). It's enabled by default. # Smart Filters Source: https://docs.sitespy.app/docs/dashboard/smart-filters AI-powered noise reduction for new watches Smart Filters automatically analyze new watches after their first snapshot and apply noise-reduction filters. This removes frequently-changing content like timestamps, cookie banners, and visitor counters that would otherwise trigger false change notifications. This feature uses a server-side AI model — no API key or paid plan is required. ## Enabling Smart Filters 1. Go to [Dashboard Settings](https://sitespy.app/dashboard/settings) and open the **API & Monitoring** tab 2. Toggle **Smart Filters** on Once enabled, every new watch you create will be automatically analyzed after its first snapshot. ## How it works 1. You add a new watch (from the dashboard, extension, or [AI Chat](/docs/dashboard/ai-chat)) 2. Site Spy captures the first snapshot 3. The AI analyzes the page content and applies optimal filters: * **Monitor Only** — CSS selectors to focus on the relevant section of the page * **Ignore Text** — Regex patterns to exclude noisy text (timestamps, counters, etc.) * **Trigger Text** — Patterns that must appear in changes to send a notification (only when you specified a condition) ## Intent field When creating a watch, you can optionally describe what you want to track in the "What do you want to track?" field. For example: * "Price changes" * "New job postings" * "When the status changes to available" The AI uses this description to apply more targeted filters. Without it, the AI still filters common noise patterns but may be less precise about what to focus on. ## What gets filtered The AI checks the page for these common noise patterns: * Timestamps and times (`3:45 PM`, `14:30:00`) * Dates in various formats (`03/26/2026`, `2026-03-26`) * "Last updated" / "Last modified" lines * Copyright years (`© 2026`) * Cookie consent and GDPR text * Visitor and view counters (`1,234 views`) * Dynamic ad text and sponsored content * CSRF tokens and session IDs ## Limitations * Smart Filters only apply to **new watches** — existing watches are not retroactively analyzed * The AI needs the first snapshot before it can analyze — there's a brief delay after watch creation * Filters are applied automatically but you can always edit them manually in [Watch Settings](/docs/dashboard/watch-settings) * The feature works best on text-heavy pages; purely visual pages benefit more from [Screenshot Capture](/docs/dashboard/screenshots) # Team Management Source: https://docs.sitespy.app/docs/dashboard/team-management Invite team members to share watches and collaborate Team management lets you invite others to share your Site Spy watches and dashboard. This is a **Business plan** feature. ## Getting started 1. Go to [Dashboard Settings](https://sitespy.app/dashboard/settings) 2. Open the **Data** tab 3. The **Team Management** section appears if you're on the Business plan 4. Click **Load Team Members** to view your current team ## Seats The Business plan includes 5 team seats. Additional seats cost €15/month each. The team stats display shows how many seats are used and available. ## Inviting members 1. Enter the team member's email address 2. Select a role: **Member** or **Admin** 3. Click **Invite** The invited person receives an email to join your team. Their status shows as "Pending" until they accept. ## Roles | Role | Access | | ------ | ------------------------------------- | | Member | View and manage shared watches | | Admin | Full access including team management | ## Removing members Click **Remove** next to any team member to revoke their access. A confirmation dialog appears before the removal is processed. The freed seat becomes available for a new invite immediately. # Telegram Notifications Source: https://docs.sitespy.app/docs/dashboard/telegram Receive change alerts via Telegram Connect the Site Spy Telegram bot to receive instant messages when your watched pages change. ## Connecting 1. Go to the [Notifications page](https://sitespy.app/dashboard/notifications) in the dashboard 2. Click **Connect Telegram** 3. Click **Open in Telegram** — this opens the Site Spy bot 4. Tap **Start** in the Telegram chat 5. The dashboard shows "Connected" once the link is established The connection process times out after 2 minutes. If it expires, click **Connect Telegram** again to start fresh. ## Testing Once connected, click **Send Test Message** to verify the bot can reach you. ## Disconnecting Click **Disconnect** in the Telegram section to unlink the bot. You can reconnect at any time. # Watch Settings Source: https://docs.sitespy.app/docs/dashboard/watch-settings Configure individual watch options Each watch has its own settings accessible from the gear icon on the watch row in your [watches list](https://sitespy.app/dashboard/watches). ## Check interval Override the global check frequency for this specific watch. Pro includes 10 fast slots for watches below its 10-minute default: | Plan | Default | Minimum | Fast slots | Maximum | | -------- | ---------- | ---------- | ----------- | ------- | | Free | 1 hour | 1 hour | 0 | 7 days | | Starter | 10 minutes | 10 minutes | 0 | 7 days | | Pro | 10 minutes | 1 minute | 10 | 7 days | | Business | 1 minute | 1 minute | All watches | 7 days | ## Screenshot capture Toggle screenshot capture on or off for this watch. When enabled, Site Spy saves a PNG screenshot alongside each text snapshot, allowing [visual diff comparisons](/docs/dashboard/screenshots). Screenshot capture requires the **Pro** plan or above. Enabling screenshots switches the watch to a browser-based fetcher that renders the page with JavaScript before capturing. ## Filters Three filter fields let you control what gets monitored. See [CSS & XPath Filters](/docs/dashboard/css-xpath-filters) for syntax and examples. * **Monitor Only** — CSS/XPath selectors to limit monitoring to specific sections * **Exclude Elements** — CSS selectors for elements to remove before checking * **Text Patterns** — Text or regex patterns to ignore ## Pause and resume Click the **pause** button on a watch to stop checking it. The watch stays in your list but no snapshots are taken until you resume it. Useful for temporarily disabling watches without losing their configuration. ## Title Edit the watch title to something more descriptive than the URL. The title appears in your watch list, notifications, and RSS feeds. ## Tags Assign color-coded tags to organize and filter your watches. Tags can also have their own notification settings — see [Managing Watches](/docs/dashboard/watches) for details. # Managing Watches Source: https://docs.sitespy.app/docs/dashboard/watches View, recheck, and manage your watches from the web dashboard The [web dashboard](https://sitespy.app/dashboard/watches) provides a central view of all your watched pages. ## Watch list The dashboard shows all your watches with: * Page URL and favicon * Last checked time * Change status indicator * Tags ### Status indicators | Status | Meaning | | ---------- | ---------------------------------------------------- | | Changed | New changes detected since you last viewed | | No changes | Page content is the same as the previous snapshot | | Pending | Watch was just created and hasn't been checked yet | | Viewing | Currently being checked by the server | | Error | The last check failed (network error, timeout, etc.) | ## Adding watches Click the **Add Watch** button in the dashboard to create a new watch. Enter a URL, optionally add a title and tags, and describe what you want to track (used by [Smart Filters](/docs/dashboard/smart-filters) if enabled). You can also add watches from the [browser extension](/docs/extension/watching-pages) or [AI Chat](/docs/dashboard/ai-chat). ## Rechecking Click the **recheck** button on any watch to trigger an immediate server-side check. The check runs in the background — if it takes longer than 90 seconds, you'll see a notification that it may still be processing. ## Viewing changes From the dashboard, you can access three views for each watch: * **Preview** — See the latest snapshot rendered as a page * **Timeline** — Browse all snapshots and compare any two * **Diff** — Compare the latest two snapshots side by side ## Pausing and resuming Click the pause button on a watch to temporarily stop checking it. The watch stays in your list with all its settings and history intact. Click resume to start checking again. ## Watch settings Click the gear icon on any watch to open its settings — check interval, screenshot capture, filters, and more. See [Watch Settings](/docs/dashboard/watch-settings) for details. ## Deleting watches Click the delete button on any watch to remove it. A confirmation dialog appears before deletion. If deletion fails, the error persists until you dismiss it or retry. ## Filtering and search Use the tag filter bar at the top to show only watches with specific tags. The search field filters by URL and title. # Webhook Notifications Source: https://docs.sitespy.app/docs/dashboard/webhooks Send change alerts to Discord, Slack, and 90+ services Webhook notifications let you send change alerts to external services. Site Spy supports **90+ notification services** through [Apprise](https://github.com/caronc/apprise/wiki#supported-notifications), including Discord, Slack, Microsoft Teams, and custom HTTP endpoints. Webhooks are available on all plans, including Free. ## Setting up webhooks 1. Go to the [Notifications page](https://sitespy.app/dashboard/notifications) in the dashboard 2. In the **Webhook Notifications** section, paste a webhook URL 3. Click **Add** You can add multiple webhook URLs. Each one receives notifications when any of your watches detect a change. ## Testing webhooks After adding a URL, click **Test** next to it. A test notification is sent immediately so you can verify the connection works. ## Supported services Webhook URLs use Apprise syntax. Some common examples: | Service | URL format | | ---------------- | --------------------------------- | | Discord | `discord://webhook_id/token` | | Slack | `slack://tokenA/tokenB/tokenC` | | Microsoft Teams | `msteams://token` | | Custom JSON | `json://your-server.com/endpoint` | | Custom form data | `form://your-server.com/endpoint` | See the full list of [90+ supported services](https://github.com/caronc/apprise/wiki#supported-notifications). ## Per-watch overrides By default, webhooks apply to all your watches. You can also set notification URLs on individual watches through the API, which override the global webhooks for that watch. ## Removing webhooks Click **Remove** next to any webhook URL to delete it. The change takes effect immediately. # Notifications Source: https://docs.sitespy.app/docs/extension/notifications Get notified when your watched pages change Site Spy can notify you through multiple channels when changes are detected. ## Browser notifications Desktop push notifications appear even when the extension popup is closed. 1. Open the extension popup and go to **Settings** 2. Expand the **Browser Notifications** section 3. Enable notifications using the toggle 4. Click **Send Test Notification** to verify they work The extension icon also shows a **badge count** of unviewed changes. ### Troubleshooting If test notifications don't appear: * **Chrome**: Check `chrome://settings/content/notifications` — make sure the browser is allowed to send notifications * **Firefox**: Check `about:preferences#privacy` under Permissions > Notifications * **macOS**: Go to System Settings > Notifications and ensure your browser is allowed * **Windows**: Go to Settings > System > Notifications and check your browser ## Email notifications Email notifications are available on all plans, including Free. 1. Go to the [web dashboard notifications page](https://sitespy.app/dashboard/notifications) 2. Click **Enable Notifications** in the Email section 3. A verification email is sent to your account email 4. Click the verification link in the email 5. Once verified, you'll receive emails when watched pages change You can send a test email to confirm delivery after verification. ## Telegram notifications Connect a Telegram bot to receive change alerts in Telegram. 1. Go to the [web dashboard notifications page](https://sitespy.app/dashboard/notifications) 2. Find the Telegram section 3. Click **Connect Telegram** 4. Click **Open in Telegram** to start the bot 5. Tap **Start** in the Telegram chat Once connected, you can send a test message and disconnect at any time. # Extension Settings Source: https://docs.sitespy.app/docs/extension/settings Configure the extension to your preferences Open the extension popup and click the gear icon to access settings. ## Timing ### Notification speed (server recheck interval) Controls how quickly you'll be notified when a tracked page changes. Shorter intervals mean faster notifications but use more server resources. Default interval minimums vary by plan: | Plan | Minimum | | ------- | ---------- | | Free | 1 hour | | Starter | 10 minutes | | Pro | 10 minutes | Pro includes 10 fast slots at 1-minute intervals. Assign those to individual watches from the web dashboard. ### Popup refresh rate How often the watch list refreshes while the popup is open. This only affects the local display, not server-side checking. * Range: 30–300 seconds * Default: 30 seconds ## Theme Three modes are available: * **Auto** — Follows your system dark/light preference * **Dark** — Always dark * **Light** — Always light The extension theme is separate from the [dashboard theme](/docs/dashboard/settings#theme). Changing one does not affect the other. ## API key management Your API key connects the extension to the backend. You can: * **Copy** the key to use in the web dashboard or other integrations * **Regenerate** the key if it's compromised ### Regenerating your key When you regenerate, a new API key is created and the old key stops working immediately. If you use the web dashboard, sign out and back in there to sync the new key. > If you're not signed in with an account, regenerating the key means losing access to existing watches. Consider signing in first to preserve your data. ## Account If signed in, this section shows your email and a **Sign Out** button. Signing out doesn't delete your watches — sign back in to access them again. # Timeline and Diff Source: https://docs.sitespy.app/docs/extension/timeline-and-diff View change history and compare snapshots Site Spy captures snapshots of your watched pages every time it checks for changes. You can view these snapshots and compare them in two ways. ## Diff Diff compares the **two most recent snapshots** of a watched page. 1. Click the **diff icon** (split-screen icon) on any watch in the extension popup 2. Site Spy triggers a fresh recheck on the server and waits a few seconds 3. The diff view opens showing what changed between the last two snapshots **Best for:** Seeing what changed since the previous check. ### Reading the diff * **Green highlights** = content that was added * **Red highlights** = content that was removed ## Timeline Timeline lets you browse **all historical snapshots** and compare any two. 1. Click the **timeline icon** (clock icon) on any watch (requires at least 2 snapshots) 2. Browse snapshots with timestamps 3. Select any two snapshots to compare side by side **Best for:** Tracking changes over time and comparing specific points in history. > Snapshots are created each time the server checks the site. Wait for the next scheduled check or trigger a manual recheck to create more snapshots. ## Preview Preview shows the most recent snapshot as a rendered page, so you can see what the page looked like at the time of capture. ## Tips * Use **Diff** for "what changed since last check" comparisons * Use **Timeline** for historical analysis across multiple snapshots * All content checking happens on the monitoring server for accuracy * Use element monitoring to ignore dynamic content like ads or timestamps # Watching Pages Source: https://docs.sitespy.app/docs/extension/watching-pages Add websites to your watchlist and monitor specific elements ## Adding a watch 1. Navigate to the page you want to track 2. Click the Site Spy icon in your toolbar 3. Click **Track Current Page** — the current page URL is added automatically You can also type a URL into the field and click **Track Entered URL**. The first snapshot is taken automatically. You'll see a "Pending" status while the initial check runs (usually takes about a minute). ## Monitoring specific elements Instead of tracking the entire page, you can monitor a specific section: 1. Click the **crosshair icon** in the extension popup to start the element picker 2. The popup closes and highlights appear as you hover over elements on the page 3. Click the element you want to monitor (e.g., a price, headline, or stock status) 4. The watch is created automatically with the CSS selector filled in This is useful for ignoring dynamic content like ads or timestamps and focusing on what matters. > The element inspector doesn't work on browser internal pages (`chrome://`, `about:`, extension pages). Navigate to a regular website first. ## Organizing with tags Color-coded tags help you organize watches into groups: * Click the tag circles next to any watch to assign tags * Tags use macOS Finder-style color labels * Filter your watchlist by clicking a tag in the filter bar * Tags sync to the server automatically ## Check intervals The server checks your watches on a schedule. Defaults and per-watch minimums depend on your plan: | Plan | Default interval | Per-watch minimum | | ------- | ---------------- | ---------------------------------- | | Free | 1 hour | 1 hour | | Starter | 10 minutes | 10 minutes | | Pro | 10 minutes | 1 minute for up to 10 fast watches | You can also trigger an immediate recheck from the [web dashboard](/docs/dashboard/watches) by clicking the recheck button on any watch. # FAQ Source: https://docs.sitespy.app/docs/faq Frequently asked questions about Site Spy ## How does change detection work? Site Spy takes snapshots of your watched pages at the interval you set (from minutes to weekly). When changes are detected, a visual diff highlights exactly what changed — green for additions, red for removals. You can browse the full snapshot timeline to compare any two versions. ## Is Site Spy free? Yes. The free plan lets you track up to 2 websites with hourly checks. All notification channels (email, Telegram, push, webhooks) are included free. For more watches, faster check intervals, and features like screenshots, upgrade to the [Starter, Pro, or Business plan](/docs/dashboard/billing). ## How can I access Site Spy? The web dashboard works in any browser, including mobile. The browser extension is available for Chrome and Firefox. When signed in, your watches sync across all devices automatically. ## Can I track specific parts of a page? Yes. The element inspector lets you click any element on a page to monitor just that section. You can also write CSS selectors or XPath expressions manually in [Watch Settings](/docs/dashboard/watch-settings). See [CSS & XPath Filters](/docs/dashboard/css-xpath-filters) for syntax and examples. ## What are Smart Filters? Smart Filters use AI to automatically reduce noise on new watches. When enabled in [settings](https://sitespy.app/dashboard/settings), Site Spy analyzes each new watch after its first snapshot and applies filters that remove timestamps, cookie banners, visitor counters, and other dynamic content. This is free and uses a server-side AI model. See [Smart Filters](/docs/dashboard/smart-filters). ## What is the AI Chat? The [AI Chat](https://sitespy.app/chat) is a conversational assistant that can create watches, check changes, configure filters, and manage your monitors through natural language. It's available to all users with daily message limits based on your plan (5/day for anonymous, up to 500/day for Business). See [AI Chat](/docs/dashboard/ai-chat). ## What are AI change summaries? Pro and Business plans can enable AI-powered change summaries by adding your own API key (Anthropic Claude, OpenAI GPT, or Google Gemini) in [Dashboard Settings > API & Monitoring](https://sitespy.app/dashboard/settings?tab=api). Site Spy uses your key to generate plain-language summaries of detected changes. See [AI Features](/docs/dashboard/ai-features). ## Can I share a watch with someone? Yes. Every watch has a share button that generates a link. When someone opens the link, they see the watch configuration and can add it to their own account with one click. See [Share Links](/docs/dashboard/share-links) for details. ## What is the MCP integration? Site Spy provides an [MCP server](https://www.npmjs.com/package/@site-spy/mcp-server) that integrates with AI assistants like Claude Desktop, Claude Code, Cursor, and other MCP-compatible tools. Your AI assistant can monitor websites, compare snapshots, and summarize changes through Site Spy. To set it up: 1. Copy your API key from [Dashboard Settings > API & Monitoring](https://sitespy.app/dashboard/settings?tab=api) 2. Add the MCP server config to your AI client's settings file: ```json theme={null} { "mcpServers": { "site-spy": { "command": "npx", "args": ["-y", "@site-spy/mcp-server"], "env": { "SITE_SPY_API_KEY": "your-api-key" } } } } ``` 3. Restart your AI client See the full [MCP Integration guide](/docs/dashboard/mcp-integration) for config file locations, available tools, and plan limits. ## What happens if I lose my API key? If you're signed in with an account, you can regenerate your API key from the dashboard or extension settings. Your watches are tied to your account and will be migrated to the new key. If you're using anonymous mode (no account), losing the key means losing access to your watches. We recommend [creating an account](/docs/getting-started/connecting) to avoid this. ## How do I get faster notifications? All notification channels (email, Telegram, push, webhooks) are available on every plan including Free. To get notified faster, upgrade to Starter for 10-minute checks, or Pro for a 10-minute default plus up to 10 fast watches at 1-minute intervals. Set up your preferred channels in [Settings → Notifications](https://sitespy.app/dashboard/settings). ## Can I monitor pages that require login? Yes, with [Browser Steps](/docs/dashboard/browser-steps) (Pro/Business). Browser Steps automate interactions like filling in login credentials, clicking cookie consent buttons, or navigating through single-page apps before capturing a snapshot. ## Can I customize what buttons appear on my watch list? Yes. Go to [Dashboard Settings > Appearance](https://sitespy.app/dashboard/settings?tab=appearance) and toggle optional action buttons (Screenshots, RSS feed, Share link, Open site) on or off. Core actions like Recheck, Preview, and Diff are always visible. See [Dashboard Settings](/docs/dashboard/settings#watch-list-actions). ## Does Site Spy work on all websites? Site Spy works on most publicly accessible websites. It cannot monitor: * Browser internal pages (`chrome://`, `about:`) * Content loaded only via JavaScript interactions (e.g., infinite scroll) — unless you use [Browser Steps](/docs/dashboard/browser-steps) Pages behind login walls can be monitored with [Browser Steps](/docs/dashboard/browser-steps) (Pro/Business). ## Can I collaborate with my team? Yes, the Business plan (€99/mo) includes 5 team seats with shared watches and dashboards. You can invite members with Member or Admin roles. Additional seats are €15/month each. See [Team Management](/docs/dashboard/team-management). ## How do I delete my account? Go to [Dashboard Settings > Account](https://sitespy.app/dashboard/settings?tab=account) and scroll to **Delete Account**. This permanently removes your account, all watches, and all data. The action cannot be undone. # Connecting to the Dashboard Source: https://docs.sitespy.app/docs/getting-started/connecting Sign in to the Site Spy dashboard and connect your devices The web dashboard at [sitespy.app/dashboard](https://sitespy.app/dashboard) gives you access to advanced settings, email/Telegram notifications, and account management. ## Connect with an account (recommended) 1. Go to [sitespy.app/login](https://sitespy.app/login) and sign in or create an account 2. Navigate to **Settings** in the dashboard sidebar 3. In the **API & Monitoring** tab, click **Copy Key for Extension** 4. In the extension popup, click the connect icon in the header to open the connect dialog 5. Paste the API key and click **Connect** Your watches will now sync across all browsers where you use the same account. ## Anonymous mode If you skip sign-in, Site Spy generates an anonymous API key automatically. This works but has limitations: * Watches are tied to the key, not to an account * If you lose the key (clear browser data, reinstall), you lose access to your watches * No cross-device sync You can sign in later at any time from the dashboard to upgrade to a full account. ## Verify the connection Once connected, your account section in the extension settings shows a green "Connected" status with your email. Your watches list will display any existing watches from the dashboard. # Installation Source: https://docs.sitespy.app/docs/getting-started/installation Install the Site Spy browser extension (optional) > **Note:** You don't need the extension to use Site Spy. The [web dashboard](https://sitespy.app/dashboard) works in any browser, including mobile. The extension adds one-click tracking from any page you visit. ## Chrome 1. Visit the [Chrome Web Store listing](https://chromewebstore.google.com/detail/site-spy/jeapcpanagdgipcfnncmogeojgfofige) 2. Click **Add to Chrome** 3. The Site Spy icon appears in your toolbar ## Firefox 1. Visit the [Firefox Add-ons listing](https://addons.mozilla.org/en-GB/firefox/addon/site-spy/) 2. Click **Add to Firefox** 3. The Site Spy icon appears in your toolbar ## After installation Click the Site Spy icon in your toolbar to open the popup. If this is your first time, you'll be prompted to connect to the dashboard. You can start tracking pages right away with the free plan (up to 2 watches, hourly checks). To unlock more features, [connect your account](/docs/getting-started/connecting). # Welcome to Site Spy Source: https://docs.sitespy.app/docs/index Monitor website changes with ease Site Spy is a website monitoring tool that tracks pages for changes automatically. Use the web dashboard on any device, or install the browser extension for Chrome and Firefox. It checks pages on a schedule you set, detects updates, and notifies you instantly. ## What can you do with Site Spy? * **Track any website** — Add pages to your watchlist and get notified when they change * **Monitor specific elements** — Use the element inspector to pick exactly what to watch (prices, stock levels, headlines) * **Visual diffs** — See exactly what changed with green (added) and red (removed) highlights * **Screenshot capture** — Capture full-page screenshots and compare them visually with before/after sliders and diff overlays (Pro) * **Snapshot timeline** — Browse every captured version and compare any two snapshots * **Get notified** — Browser alerts, email, Telegram, or [90+ webhook integrations](/docs/dashboard/webhooks) (Discord, Slack, Teams, and more) * **AI Chat** — [Manage watches through conversation](/docs/dashboard/ai-chat) — create monitors, check changes, configure filters with natural language * **Smart Filters** — [AI noise reduction](/docs/dashboard/smart-filters) automatically filters timestamps, cookie banners, and dynamic content from new watches * **AI change summaries** — Bring your own API key (Claude, GPT, or Gemini) for plain-language change summaries (Pro/Business) * **MCP integration** — Connect AI assistants like Claude and Cursor to monitor websites through Site Spy * **CSS & XPath filters** — [Monitor specific page sections](/docs/dashboard/css-xpath-filters) with precise selectors * **Browser steps** — [Monitor login-protected pages](/docs/dashboard/browser-steps) with automated interactions (Pro/Business) * **Share watches** — Send a [share link](/docs/dashboard/share-links) so others can add your watch configuration in one click * **Team collaboration** — Invite team members to share watches and dashboards (Business) * **RSS feeds** — Subscribe to change feeds in any RSS reader * **Import & Export** — Bulk import URLs and export your watches as JSON or plain text * **Organize with tags** — Color-coded labels to filter and group your watches * **Customize your view** — Toggle action buttons, choose dark/light/auto theme * **Sync across devices** — Sign in once, access all watches from any browser ## Get started # AI-Readable Documentation Source: https://docs.sitespy.app/llms Access Site Spy documentation in formats optimized for AI assistants and coding agents Site Spy publishes its documentation in machine-readable formats so AI assistants can find product guidance and API details without parsing the rendered website. Browse a compact index of every documentation page and API endpoint. Load the full documentation site as a single plain-text file. ## Available formats * [`llms.txt`](https://docs.sitespy.app/llms.txt) provides a concise index with links and descriptions. Use it to discover the pages relevant to a question. * [`llms-full.txt`](https://docs.sitespy.app/llms-full.txt) combines the complete documentation into one file for tools that need all available context. * Add `.md` to any documentation URL to retrieve that page as Markdown. For example, [`/docs/getting-started/installation.md`](/docs/getting-started/installation.md). * The [OpenAPI specification](/api-reference/openapi.yaml) provides a machine-readable description of the Site Spy API. ## Use with an AI assistant Give your assistant the documentation index and ask it to open only the pages it needs: ```text theme={null} Read https://docs.sitespy.app/llms.txt, then use the relevant linked pages to answer my question about Site Spy. ``` For offline analysis or tools that cannot follow links, provide [`llms-full.txt`](https://docs.sitespy.app/llms-full.txt) instead.