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

Send a JSON body with a URL (or a list) and any options. The response holds data and 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

FieldTypeDefaultWhat it does
url required string — The site to map. An absolute http or https URL.
ignoreSitemap boolean false Find URLs without reading the site's sitemap.
includeSubdomains boolean false Include URLs on the site's subdomains.
limit integer 5000 The most URLs to return, 1 to 30,000.
search string — Only return URLs whose address or page title contains this text. Not case-sensitive.

Response

A success returns {"success": true, "data": {…}}. data holds the formats you asked for, the page's metadata, and a cost object with what the call was charged. A failure returns {"success": false, "error": {…}} with an error code. See Errors.

Failed requests are not charged. Re-reading a page you already fetched, within maxAge, is free. See Credits for every rate.