Skip to main content
Glama
Darshan972

Scrapingdog MCP Server

by Darshan972
README.md
# 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

B3.2/5.0

Scored across 35 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count2/5

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.

Completeness5/5

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.

Maintenance

ActivitySlowing
ResponsivenessNo issues