Scrapingdog MCP Server
# Scrapingdog MCP Server
A [Model Context Protocol](https://modelcontextprotocol.io) server that exposes the
[Scrapingdog](https://www.scrapingdog.com) web-scraping and SERP APIs as tools any
MCP-compatible client (Claude Desktop, Claude Code, Cursor, etc.) can call.
One tool per Scrapingdog product — general web scraping, the full Google family,
Amazon, Walmart, eBay, LinkedIn, X, YouTube, Bing, Baidu, and screenshots.
## Requirements
- Node.js ≥ 18
- A Scrapingdog API key — get one on your [dashboard](https://www.scrapingdog.com/).
## Install & build
```bash
npm install
npm run build
```
## Configuration
The server reads your API key from the **`SCRAPINGDOG_API_KEY`** environment
variable. It is never passed as a tool argument, so it stays out of the model's
context, transcripts, and logs.
| Variable | Required | Default | Description |
| --- | --- | --- | --- |
| `SCRAPINGDOG_API_KEY` | yes | — | Your Scrapingdog API key. |
| `SCRAPINGDOG_API_BASE` | no | `https://api.scrapingdog.com` | Override the API base URL. |
| `SCRAPINGDOG_TIMEOUT_MS` | no | `90000` | Per-request timeout in milliseconds. |
### Claude Desktop
Add to `claude_desktop_config.json`
(macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"scrapingdog": {
"command": "node",
"args": ["/absolute/path/to/ScrapingdogMCP/dist/index.js"],
"env": {
"SCRAPINGDOG_API_KEY": "your_api_key_here"
}
}
}
}
```
### Claude Code
```bash
claude mcp add scrapingdog -e SCRAPINGDOG_API_KEY=your_api_key_here -- node /absolute/path/to/ScrapingdogMCP/dist/index.js
```
## Available tools
**35 tools.** Each tool's full parameter set (with descriptions and API
defaults) is generated from [`src/endpoints.ts`](src/endpoints.ts) and surfaced
to the client as the tool's input schema. All paths were validated against the
live API except `amazon_reviews` (⚠️) — see [Known issues](#known-issues).
### General
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `web_scrape` | `/scrape` | `url` |
### Google family
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `google_search` | `/google` | `query` |
| `google_maps` | `/google_maps` | `query` |
| `google_news` | `/google_news/v2` | — (`query` or a `*_token`) |
| `google_trends` | `/google_trends` | `query` |
| `google_shopping` | `/google_shopping` | `query` |
| `google_scholar` | `/google_scholar` | `query` (or `cites`) |
| `google_jobs` | `/google_jobs` | `query` |
| `google_finance` | `/google_finance` | `query` |
| `google_lens` | `/google_lens` | `url` |
| `google_ai_mode` | `/google/ai_mode` | `query` |
| `google_ai_overview` | `/google/ai_overview` | `url` |
| `google_shorts` | `/google_shorts` | `query` |
| `google_hotels` | `/google_hotels` | `query`, `check_in_date`, `check_out_date` |
| `google_patents` | `/google_patents` | `query` |
| `google_immersive_product` | `/google_immersive_product` | `page_token` |
| `google_images` | `/google_images` | `query` |
### E-commerce
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `amazon_search` | `/amazon/search` | `query`, `domain`, `page`, `country` |
| `amazon_product` | `/amazon/product` | `asin` |
| `amazon_reviews` ⚠️ | `/amazon/reviews` | `asin` |
| `amazon_offers` | `/amazon/offers` | `asin` |
| `walmart_search` | `/walmart/search` | `url` |
| `ebay_search` | `/ebay/search` | `url` |
### Social / professional
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `linkedin_profile` | `/linkedin` | `type`, `linkId` |
| `x_profile` | `/x/profile` | `profileId` |
| `youtube_search` | `/youtube` | `search_query` |
| `youtube_transcripts` | `/youtube/transcripts` | `v` |
| `youtube_video` | `/youtube/video` | `v` |
| `youtube_channel` | `/youtube/channel` | `channel_id` |
| `youtube_comments` | `/youtube/comments` | `v` |
### Other search engines
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `bing_search` | `/bing/search` | `query` |
| `baidu_search` | `/baidu/search` | `query` |
| `universal_search` | `/search` | `query` |
### AI / LLM & tools
| Tool | Scrapingdog endpoint | Key required args |
| --- | --- | --- |
| `chatgpt` | `/chatgpt` | `prompt` |
| `screenshot` | `/screenshot` | `url` (returns an image) |
## Known issues
All 35 endpoints were validated against the live API and return data, with one
exception:
- **`amazon_reviews`** — the `/amazon/reviews` route is correct, but the live
endpoint currently responds `HTTP 400 "Something went wrong"` for every input
(any ASIN, with or without extra params). This looks like a Scrapingdog
backend/plan-scope issue rather than a wrapper bug. It stays marked with
`verify: true` in `src/endpoints.ts` until it returns data. List flagged
endpoints anytime with:
```bash
npm run list:unverified
```
## Adding or adjusting an endpoint
Every endpoint is a single declarative object in
[`src/endpoints.ts`](src/endpoints.ts) — no handler code to write. To add a
Scrapingdog product (e.g. Google Hotels, Patents, TikTok), append:
```ts
{
tool: "google_hotels",
title: "Google Hotels API",
path: "/google_hotels",
description: "…",
params: [
{ name: "query", type: "string", required: true, description: "…" },
// …
],
}
```
Rebuild with `npm run build`.
## Architecture
```
src/
types.ts Endpoint / EndpointParam type definitions
endpoints.ts Declarative registry of every Scrapingdog API
client.ts HTTP client: URL building, API-key resolution, error handling
server.ts Compiles each endpoint into an MCP tool + Zod input schema
index.ts stdio entry point
```
## License
MIT
TDQS
Scored across 35 tools
Most tools are clearly distinct by source and data type (e.g., google_search vs google_maps), but some close pairs like google_ai_overview and google_ai_mode, or universal_search and google_search, require careful reading. Overall, descriptions resolve most ambiguity.
Tool names consistently use lowercase snake_case with a source prefix (google_, amazon_, youtube_), making them predictable. A few general tools like web_scrape, universal_search, screenshot, and chatgpt break the prefix pattern but are still clearly named.
With 35 tools, the set exceeds the recommended range for a coherent server. While each tool targets a specific scraping scenario, the large number makes the surface feel heavy and harder to navigate.
The server covers an impressively broad range of scraping needs: multiple search engines, Amazon product/review/offer data, YouTube details/transcripts/comments, and a general-purpose scraper. No obvious dead ends or critical missing operations for the stated domain.