SnoopScan
Endpoints

Map

Every URL on a site in seconds, for a content audit, a migration inventory, or to find the pages worth scraping before you spend on them.

POST /v1/map

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/map',    headers={'Authorization': 'Bearer sk_YOUR_KEY'},    json={        'url': 'https://example.com',        'search': 'pricing'    },)print(r.json())
const r = await fetch('https://api.snoopscan.com/v1/map', {  method: 'POST',  headers: { Authorization: 'Bearer sk_YOUR_KEY', 'Content-Type': 'application/json' },  body: JSON.stringify({      "url": "https://example.com",      "search": "pricing"  }),});console.log(await r.json());
curl -X POST https://api.snoopscan.com/v1/map \  -H 'Authorization: Bearer sk_YOUR_KEY' \  -H 'Content-Type: application/json' \  -d '{    "url": "https://example.com",    "search": "pricing"}'
Returns url list · sitemaps · links · 1 credit.

Parameters

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

FieldTypeDefaultWhat it does
url required string
ignoreSitemap boolean false
includeSubdomains boolean false
limit integer 5000
search 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.