SnoopScan
Get started

Introduction

What the API does and the shape of every call.

SnoopScan is a web scraping API for AI agents. Send a URL and get the page back as markdown, HTML, links, a summary, a screenshot or JSON in your own schema. It handles JavaScript-heavy pages and pages that block ordinary scrapers.

Request and response

Every endpoint takes a JSON body with a URL (or a list) and options, and returns the same response shape:

import requestsr = requests.post(    'https://api.snoopscan.com/v1/scrape',    headers={'Authorization': 'Bearer sk_YOUR_KEY'},    json={        'url': 'https://example.com/pricing',        'formats': [            'markdown',            'links'        ],        'onlyMainContent': True    },)print(r.json())
const r = await fetch('https://api.snoopscan.com/v1/scrape', {  method: 'POST',  headers: { Authorization: 'Bearer sk_YOUR_KEY', 'Content-Type': 'application/json' },  body: JSON.stringify({      "url": "https://example.com/pricing",      "formats": [          "markdown",          "links"      ],      "onlyMainContent": true  }),});console.log(await r.json());
curl -X POST https://api.snoopscan.com/v1/scrape \  -H 'Authorization: Bearer sk_YOUR_KEY' \  -H 'Content-Type: application/json' \  -d '{    "url": "https://example.com/pricing",    "formats": [        "markdown",        "links"    ],    "onlyMainContent": true}'
Every response has success, data and what the call cost.

A success returns {"success": true, "data": {…}}. A failure returns {"success": false, "error": {…}} with an error code.

Try it before you sign up. The Playground runs these calls in your browser, with no account and no key.

Start here

Endpoints

Every endpoint uses the same API key and the same credits.

ToolEndpointWhat it is for
Scrape POST /v1/scrape One URL into clean markdown for a RAG pipeline, an LLM prompt or an archive. Navigation, cookie walls and boilerplate stay out of it.
Crawl POST /v1/crawl A documentation site, a help center or a whole blog, page by page, with depth and path filters. Poll the job or take a webhook.
Map POST /v1/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.
Search POST /v1/search Web search with every result already scraped, so a research agent reads whole pages instead of guessing from snippets.
Extract POST /v1/extract A JSON schema or a named template, and up to 100 URLs in, rows out — pricing tables, spec sheets, job listings.
Batch POST /v1/batch/scrape Thousands of URLs as one job, for a backfill or a nightly refresh, running at whatever concurrency your plan allows. Poll it or take a webhook.
Products POST /v1/products A whole store catalog with prices, variants and stock, hundreds of products in one call. Competitor pricing without a crawl.
Posts POST /v1/posts Every article from a blog or forum, hundreds at a time, for a content aggregator, a newsroom feed or a training set.
Monitor POST /v1/monitor Watch a page on a schedule and get a webhook only when it really changed. Price drops, job boards, terms and docs.
Places POST /v1/places/search Business listings by trade and town, with the website, the phone number and the people behind it. Lead lists, ready to work.
Domain POST /v1/domain Domain age, registrar, hosting and backlinks for any site. Judge a source, size up a competitor, or check a domain was not registered last week.
Domain report POST /v1/domain/report Check a domain before you buy it: its archive history, whether the backlinks it is sold on still exist, and the questions to ask the seller.
Domain screen POST /v1/domain/screen Check up to 500 domain names in one call to see which are available. Cut a drop list down to a shortlist, then run a report on the few that matter.
Find Leads POST /v1/leads Local businesses by trade and town, each with its phone, website, address and the emails it publishes, ready for outreach.
Company POST /v1/company One company domain in, the details a lead list sells out: name, phone, LinkedIn, headcount, industry, plus the emails and socials the site publishes.
Failed requests are not charged. Re-reading a page you already fetched, from cache, is free too. Every response includes a cost object. See Credits.