SnoopScan
Endpoints

Search

Web search with every result already scraped, so a research agent reads whole pages instead of guessing from snippets.

POST /v1/search

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/search',    headers={'Authorization': 'Bearer sk_YOUR_KEY'},    json={        'query': 'best headless browsers',        'limit': 5,        'scrapeOptions': {            'formats': [                'markdown'            ]        }    },)print(r.json())
const r = await fetch('https://api.snoopscan.com/v1/search', {  method: 'POST',  headers: { Authorization: 'Bearer sk_YOUR_KEY', 'Content-Type': 'application/json' },  body: JSON.stringify({      "query": "best headless browsers",      "limit": 5,      "scrapeOptions": {          "formats": [              "markdown"          ]      }  }),});console.log(await r.json());
curl -X POST https://api.snoopscan.com/v1/search \  -H 'Authorization: Bearer sk_YOUR_KEY' \  -H 'Content-Type: application/json' \  -d '{    "query": "best headless browsers",    "limit": 5,    "scrapeOptions": {        "formats": [            "markdown"        ]    }}'
Returns results · each page scraped · 2 credits.

Parameters

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

FieldTypeDefaultWhat it does
query required string
autoCorrect boolean true
device desktop · mobile
freshness string
language string
limit integer 10
location object
page integer 1
place string
safeSearch off · moderate · strict
scrapeOptions object
sources array of web · news · images

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.