Endpoints
Find Leads
Businesses by trade and town from Google Maps, BBB and Yellow Pages, merged into one list, each with its phone, website and the emails its own site lists.
POST
/v1/leads
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/leads', headers={'Authorization': 'Bearer sk_YOUR_KEY'}, json={ 'who': 'roofing contractors', 'where': 'Houston, TX', 'limit': 50 },)print(r.json())
const r = await fetch('https://api.snoopscan.com/v1/leads', { method: 'POST', headers: { Authorization: 'Bearer sk_YOUR_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ "who": "roofing contractors", "where": "Houston, TX", "limit": 50 }),});console.log(await r.json());
curl -X POST https://api.snoopscan.com/v1/leads \ -H 'Authorization: Bearer sk_YOUR_KEY' \ -H 'Content-Type: application/json' \ -d '{ "who": "roofing contractors", "where": "Houston, TX", "limit": 50}'
Returns job id · phone · website · emails · 2 credits a lead.
Parameters
The parameter table is generated from the live API and could not be reached just now.
The call above is correct; refresh in a moment for the full field list.
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.