ScrapingDog-MCP
# πΆ ScrapingDog MCP Server
**The complete [Model Context Protocol](https://modelcontextprotocol.io) server for [ScrapingDog](https://www.scrapingdog.com) β all 77 API endpoints as AI-ready tools.**
Give Claude (or any MCP client) the power to scrape any webpage, search Google, pull Amazon product data, read LinkedIn profiles, fetch YouTube transcripts, track Google Trends, and much more β through one API key.
[](LICENSE)
[](https://nodejs.org)
[](https://modelcontextprotocol.io)
Built by extracting the **entire official documentation** (~90 pages at [scrapingdog.com/documentation](https://www.scrapingdog.com/documentation/)) into machine-readable specs, then **verifying endpoints against the live API** β including fixing endpoints the official docs get wrong (see [Deviations](#-deviations-from-the-official-docs)).
---
## β‘ Quick start
**1. Get an API key** β free 200-credit trial, no credit card: [api.scrapingdog.com/register](https://api.scrapingdog.com/register)
**2. Install** (pick your client):
### Claude Code (recommended: user scope = available in every project)
```bash
claude mcp add --scope user scrapingdog -e SCRAPINGDOG_API_KEY=YOUR_KEY -- npx -y github:alessandrobenigni/ScrapingDog-MCP
```
### Claude Desktop
Add to `claude_desktop_config.json` (Settings β Developer β Edit Config):
```json
{
"mcpServers": {
"scrapingdog": {
"command": "npx",
"args": ["-y", "github:alessandrobenigni/ScrapingDog-MCP"],
"env": { "SCRAPINGDOG_API_KEY": "YOUR_KEY" }
}
}
}
```
### Cursor / Windsurf / any MCP client
Same JSON shape as above in the client's MCP config (`.cursor/mcp.json`, `~/.codeium/windsurf/mcp_config.json`, β¦).
### From a local clone (fastest startup, easiest to hack on)
```bash
git clone https://github.com/alessandrobenigni/ScrapingDog-MCP.git
cd ScrapingDog-MCP
npm install
claude mcp add --scope user scrapingdog -e SCRAPINGDOG_API_KEY=YOUR_KEY -- node "$(pwd)/src/index.js"
```
**3. Use it** β just ask your AI naturally:
> *"Search Google for 'best espresso machine 2026' and summarize the top results"*
> *"Scrape this product page and extract the price"*
> *"Get the transcript of this YouTube video"*
> *"What's trending on Google Trends for 'AI agents' in the US this year?"*
> *"Pull the LinkedIn company profile for Anthropic"*
> *"How many ScrapingDog credits do I have left?"* (β `account` tool)
That's it. No proxy management, no CAPTCHAs, no blocked requests.
---
## π§° The 77 tools
Every tool maps 1:1 to a ScrapingDog endpoint, with every documented parameter typed and described. Credit costs are per successful request and are shown in each tool's description.
### π Web Scraping
| Tool | What it does | Credits |
|---|---|---|
| `scrape` | Scrape any URL β raw HTML. JS rendering (`dynamic`), premium residential proxies (`premium`), geotargeting (`country`), sticky sessions (`session_number`), Cloudflare/CAPTCHA bypass (`stealth_mode`), custom header forwarding | 1β25 |
| `scrape_post` | Forward a POST body (forms, POST-only APIs) through the proxy layer | 1+ |
| `screenshot` | Screenshot any page (viewport or full-page, png/jpg/webp) β returned as an actual image | 5 |
### π Google Search & AI
| Tool | What it does | Credits |
|---|---|---|
| `google_search` | Full SERP as JSON: organic results, ads, **AI Overviews**, knowledge graph, local pack, top stories, related questions/searches, inline images/videos/shopping, discussions, immersive products, pagination | 5 |
| `google_ai_mode` | Google's AI Mode answers | 10 |
| `google_ai_overview` | Standalone AI Overview extraction | 5 |
| `google_autocomplete` | Query suggestions | β |
| `google_lens` | Visual search by image URL | β |
### πΊοΈ Google Maps, Trends, News
| Tool | What it does |
|---|---|
| `google_maps_search` / `google_maps_places` / `google_maps_reviews` / `google_maps_photos` / `google_maps_posts` | Complete Maps data: place search, place details, paginated reviews, photos, business posts |
| `google_trends` / `google_trends_autocomplete` / `google_trends_trending_now` | Interest over time, entity lookup, real-time trending topics |
| `google_news_search` / `google_news_v2` | News SERP + the newer topic-token News API |
### π Google Scholar & Patents
`google_scholar` Β· `google_scholar_profiles` Β· `google_scholar_author` Β· `google_scholar_author_citation` Β· `google_scholar_cite` Β· `google_patents` Β· `google_patent_details`
> Tip: `google_patents` returns `patent_id` as `patent/US11734097B1/en`; pass just the publication number (`US11734097B1`) to `google_patent_details`.
### ποΈ Google Shopping & verticals
`google_shopping` Β· `google_immersive_product` Β· `google_images` Β· `google_videos` Β· `google_shorts` Β· `google_finance` Β· `google_jobs` Β· `google_local` Β· `google_hotels` Β· `google_flights` Β· `google_ads_transparency`
> Multi-step flows are documented in the tool descriptions β e.g. Flights chains `departure_token` β `booking_token`; Shopping filters chain via `shoprs`.
### π Other search engines
`bing_search` Β· `bing_shopping` Β· `duckduckgo_search` Β· `baidu_search` Β· `universal_search` (20 credits, engine-agnostic)
### π¦ Amazon
| Tool | Credits |
|---|---|
| `amazon_product` (by ASIN) | 1 (US) / 5 (other countries) |
| `amazon_search` | 1 (US) / 5 (other) / +25 premium |
| `amazon_reviews` Β· `amazon_offers` Β· `amazon_autocomplete` | 5 / 5 / β |
### π Walmart, eBay, Flipkart, Myntra
`walmart_product` Β· `walmart_search` Β· `walmart_reviews` Β· `walmart_autocomplete` Β· `ebay_search` Β· `ebay_product` Β· `flipkart_search` Β· `flipkart_product` Β· `myntra_search` Β· `myntra_product`
> Walmart/eBay/Flipkart/Myntra tools take the **full target-site URL** (locale lives in the domain, e.g. `ebay.co.uk`).
### πΌ LinkedIn, Jobs & Local
| Tool | What it does | Credits |
|---|---|---|
| `linkedin_person_profile` | Full person profile by public ID | 50β100 |
| `linkedin_company_profile` | Company/school profile | 10 |
| `linkedin_post` | Post data | 5 |
| `linkedin_jobs_search` / `linkedin_job_overview` | Job search + job details | 5 |
| `yelp_scraper` / `indeed_scraper` / `zillow_scraper` | Local businesses, job listings, real estate | 4 / 1 / 2 |
### π± Social & Video
`x_profile` Β· `x_post` Β· `tiktok_profile` Β· `tiktok_post` Β· `tiktok_ads` Β· `youtube_search` Β· `youtube_video` Β· `youtube_channel` Β· `youtube_comments` Β· `youtube_transcripts` (only 1 credit!)
### π€ AI & Utilities
| Tool | What it does | Credits |
|---|---|---|
| `chatgpt_scraper` | Send a prompt to ChatGPT, get the structured conversation back | 30 |
| `account` | Remaining credits, concurrency, plan info β costs nothing, check it anytime | 0 |
| `webhook` | Fire-and-forget async scraping: returns a `sid` immediately, result POSTs to your dashboard-configured webhook | β |
---
## ποΈ How it works
```
specs/*.json βββΊ src/index.js βββΊ 77 MCP tools over stdio
(source of truth) (generic engine)
```
- **`specs/*.json`** β nine category files holding every endpoint: exact URL, method, credit cost, every documented parameter (name/type/required/default/description), quirks, and response structure. Extracted from the full official docs on 2026-07-10.
- **`src/index.js`** β a single ~200-line engine. At startup it loads the specs and registers one tool per endpoint. **To fix or extend an API, edit a JSON file β zero code changes.**
- **`docs/*.md`** β distilled human-readable API reference per category (param tables, response shapes, gotchas).
- **`test/smoke.js`** β end-to-end test: boots the server over stdio as a real MCP client and makes live API calls.
### Built-in robustness
| Concern | Handling |
|---|---|
| **Your API key** | Injected server-side from `SCRAPINGDOG_API_KEY` β never exposed as a tool parameter, never visible to the model |
| Rate limits / transient errors | Automatic retry (3 attempts, backoff) on 429 / 5xx |
| Slow scrapes | 90s client timeout (ScrapingDog's own limit is 60s) |
| Giant HTML pages | Capped at 400k chars with a clear truncation notice |
| Screenshots | Returned as real MCP image content (base64 png/jpg/webp), not text |
| API errors | Mapped to actionable hints (401 β bad key, 403 β plan doesn't include this API, 410 β target returned nothing, β¦) |
---
## π§ͺ Verify your install
```bash
SCRAPINGDOG_API_KEY=YOUR_KEY npm test # macOS/Linux
$env:SCRAPINGDOG_API_KEY="YOUR_KEY"; npm test # Windows PowerShell
```
Boots the server, lists all 77 tools, and makes 4 live calls (`account`, `google_search`, `scrape`, `youtube_transcripts`). Uses ~7 credits.
---
## β οΈ Deviations from the official docs
Found and fixed by testing against the live API (2026-07-10):
1. **YouTube endpoints** β the docs list `https://api.scrapingdog.com/youtube` for all five YouTube APIs. That URL returns the ScrapingDog web app, not data. The real endpoints (used by this server) are `/youtube/search`, `/youtube/video`, `/youtube/channel`, `/youtube/comments`, `/youtube/transcripts`.
2. **`youtube_video` parameter** β docs say `video_id`; the live API rejects it and requires `v`.
3. **Datacenter proxy mode** (`http://scrapingdog:APIKEY@proxy.scrapingdog.com:8081`) is a passthrough HTTP proxy, not a REST endpoint β documented in [docs/engines-utilities.md](docs/engines-utilities.md) but intentionally not exposed as a tool.
4. Where the docs omit a credit cost or response sample (a handful of endpoints), the tool description says so explicitly rather than guessing.
---
## π³ Credits, limits & error codes
- **Free plan**: 200 credits/month. Every tool description states its cost; `account` is free and shows your balance.
- **Cost-saving tip**: `scrape` defaults to JS rendering (5 credits). Pass `dynamic: false` for static pages β 1 credit.
- Requests time out server-side after **60 seconds**; concurrency is limited per plan tier (excess β 429, which this server retries automatically).
| Code | Meaning |
|---|---|
| 200 | Success |
| 202 | Accepted, queued |
| 400 | Bad request β check parameters |
| 401 | Invalid or missing API key |
| 403 | Your plan doesn't include this API |
| 404 | Resource not found |
| 410 | Target URL returned no content |
| 429 | Rate limit β auto-retried |
---
## π§ Troubleshooting
| Symptom | Fix |
|---|---|
| Server exits immediately: `SCRAPINGDOG_API_KEY ... not set` | Pass the key via `-e` (Claude Code) or the `env` block (JSON configs) |
| `401 Unauthorized` on every call | Key is wrong/expired β check your [dashboard](https://api.scrapingdog.com/dashboard) |
| `403 Forbidden` on one specific tool | That API isn't in your plan tier |
| `npx` install is slow on first launch | It's cloning + installing once; subsequent launches use the cache. Or use the local-clone install |
| Tool returns truncated HTML | Expected on huge pages (400k-char cap) β scrape a more specific URL or use a structured tool instead of raw `scrape` |
| Windows: server won't start from a path with spaces | Quote the path in your config: `"args": ["C:\\path with spaces\\src\\index.js"]` |
---
## πΊοΈ Repo map
```
βββ src/index.js # the server (spec-driven engine)
βββ specs/ # machine-readable endpoint specs β the source of truth
β βββ web-scraping.json
β βββ google-search.json
β βββ google-ai-maps-trends.json
β βββ google-news-scholar-patents.json
β βββ google-shopping-other.json
β βββ engines-utilities.json
β βββ amazon-walmart.json
β βββ ecommerce.json
β βββ profiles-jobs-local.json
β βββ social-youtube.json
βββ docs/ # human-readable API reference per category
βββ test/smoke.js # live end-to-end test
βββ .env.example
```
## π€ Contributing
ScrapingDog ships new APIs regularly. Adding one is trivial:
1. Add an endpoint object to the matching `specs/*.json` (or a new spec file) β `tool_name`, `endpoint`, `params`, `credits`, `description`, `response_summary`.
2. Restart the server. The tool exists.
3. Run `npm test`, open a PR.
## π License
[MIT](LICENSE) Β© Alessandro Benigni
*Not affiliated with ScrapingDog β an independent MCP integration. ScrapingDog is a product of its respective owners. Use responsibly and in accordance with the terms of service of the sites you scrape.*
TDQS
Scored across 77 tools
Each tool targets a specific platform and function (e.g., google_search vs google_images), making distinctions clear. Minor overlap exists between universal_search and google_search, but descriptions resolve ambiguity.
Most tools follow a consistent 'service_function' pattern (e.g., amazon_product, google_images). A few tools like 'scrape' and 'account' lack a service prefix, causing slight inconsistency.
With 77 tools, the server far exceeds the typical well-scoped range (3-15). This overwhelming number forces agents to sift through many options, increasing selection complexity and potential errors.
Coverage is broad, including search, product details, reviews, profiles, and posts for most major platforms. Some niche endpoints (patents, scholarships) are included, though a few services (e.g., Indeed, Yelp) have only one tool.