# 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.