Web scraping for agents: scrape, crawl, map, search and extract pages as clean markdown or JSON.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Turn any public page into clean markdown, structured JSON, or a schema you define β including the pages that block everything else. REST API, MCP server, and SDKs.
This repository is SnoopScan's open core. It runs on its own, and the hosted API at snoopscan.com adds the parts that are not here. See Open source vs hosted API.
The examples below call the hosted API and read your key from
SNOOPSCAN_API_KEY. The free plan includes 1,500 credits a month.
This repository contains:
These parts are not in this repository and run only on the hosted API at snoopscan.com:
A self-hosted copy fetches with the first two tiers. A page that needs a real browser or a residential exit comes back as blocked. It is reported as blocked, never as a false success. The hosted API uses all six tiers, and its free plan includes 1,500 credits a month.
Every endpoint is also an MCP tool, so an agent can call them directly with no glue code.
Apps that sign in instead of taking a key (the Claude app, ChatGPT) connect to
https://api.snoopscan.com/mcp-oauth and sign in with a SnoopScan account.
Any MCP client that speaks streamable HTTP connects the same way, including Cursor, VS Code, Windsurf, Zed and Codex.
scrape, fetchMore, crawl, crawlStatus, crawlPages, map, search,
extract, checkChanges, listProducts, listPosts, domain, company,
findContacts, hiring, people, findLeads and leadsStatus.
The company, contact, people, hiring and lead tools need the hosted API. This repository answers them with a plain "not available on this deployment".
Every tool has a title and read-only / destructive labels. None of them submits, posts or buys anything.
The tools are designed to keep an agent's context small:
maxChars budget.executeJavascript is not exposed over MCP at any level.Every page includes metadata.platform, which says what built it. Every
response reports the tier that succeeded, the tiers attempted, and the
extraction path.
This checks the page every 60 minutes and sends a webhook when it changes.
Set up and run the engine locally:
The JS/TS SDK is in sdk/js and builds on its own:
Run the tests, lint and type checks:
The engine is built to the specs in docs/spec/. Spec 01 (API surface) and
spec 02 (data model) are the contract. Everything else is implemented behind
them.
Every dependency must be MIT, Apache-2.0, BSD, ISC or MPL-2.0. The check is blocking: a build that pulls in any other licence fails instead of warning. It also runs weekly, because a transitive dependency can change its licence without you noticing.
Two results of this rule are already in the code. psycopg2 (LGPL) is not
used, and Alembic migrates through asyncpg instead. tld, which comes in as a
transitive dependency, has a recorded allowlist entry that names which branch
of its tri-licence we use.
Contributions must follow three rules:
example.com or .invalid.The engine is licensed under AGPL-3.0. If you run a modified version as a
network service, section 13 requires you to offer its source to your users.
The running instance does this itself at GET /v1/source, so it does not
depend on a document that a fork might forget to update.
Both SDKs, Python and JS/TS, are MIT. An AGPL client library would push the copyleft into every application that imports it, which is not what a client library is for.
Some modules are proprietary and are not covered by the AGPL: the proxy layer,
the browser and stealth tiers, the anti-bot knowledge base, and the lead-gen
pipeline. They are listed in LICENSE-PROPRIETARY, which is generated from
engine/licensing.py. CI enforces the split: tools/check_split.py fails the
build if any public module depends on one of them.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/snoopscan)<a href="https://allmcps.com/mcp/snoopscan"><img src="https://allmcps.com/api/badge/snoopscan?style=directory" alt="SnoopScan on AllMCPs" /></a>