SnoopScan
Endpoints

Monitor

Watch a page on a schedule and get a webhook only when it really changed. Price drops, job boards, terms and docs.

POST /v1/monitor

Request

Every tool takes the same shape: a URL or a list, a few options, and back comes data plus what the call cost.

import requestsr = requests.post(    'https://api.snoopscan.com/v1/monitor',    headers={'Authorization': 'Bearer sk_YOUR_KEY'},    json={        'name': 'Pricing',        'urls': [            'https://example.com/pricing'        ],        'intervalMinutes': 60,        'webhook': 'https://hooks.example.com/snoop'    },)print(r.json())
const r = await fetch('https://api.snoopscan.com/v1/monitor', {  method: 'POST',  headers: { Authorization: 'Bearer sk_YOUR_KEY', 'Content-Type': 'application/json' },  body: JSON.stringify({      "name": "Pricing",      "urls": [          "https://example.com/pricing"      ],      "intervalMinutes": 60,      "webhook": "https://hooks.example.com/snoop"  }),});console.log(await r.json());
curl -X POST https://api.snoopscan.com/v1/monitor \  -H 'Authorization: Bearer sk_YOUR_KEY' \  -H 'Content-Type: application/json' \  -d '{    "name": "Pricing",    "urls": [        "https://example.com/pricing"    ],    "intervalMinutes": 60,    "webhook": "https://hooks.example.com/snoop"}'
Returns monitor id · webhook on change · billed as the scrapes.

Parameters

Read from the engine itself, so this table is the request it actually validates.

FieldTypeDefaultWhat it does
name required string
goal string
intervalMinutes integer 60
url string
urls array of string
webhook string

Response

A success is always {"success": true, "data": {…}}. data carries what you asked for in formats, the page's metadata, and a cost object saying what the call was charged. A failure is {"success": false, "error": {…}} with a code you can branch on — see Errors.

Nothing is charged for a request that failed. A page you already fetched, re-read within maxAge, is free; one served from the shared index costs a single credit. The cost object says which it was.