{"_id":"@0pen1/scrapingdog-mcp","_rev":"2-6cfc608ecbf493e07a894af78f9052ea","name":"@0pen1/scrapingdog-mcp","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@0pen1/scrapingdog-mcp","version":"0.1.0","keywords":["mcp","mcp-server","model-context-protocol","scrapingdog","web-scraping","serp","claude","claude-code","claude-desktop"],"author":{"name":"0pen1"},"license":"MIT","_id":"@0pen1/scrapingdog-mcp@0.1.0","maintainers":[{"name":"0pen1","email":"wangzc1024@gmail.com"}],"homepage":"https://github.com/0pen1/scrapingdog-mcp#readme","bugs":{"url":"https://github.com/0pen1/scrapingdog-mcp/issues"},"bin":{"scrapingdog-mcp":"dist/index.js"},"dist":{"shasum":"a77e4a5dd0f0e7792d104f9982519bac856c1faf","tarball":"https://registry.npmjs.org/@0pen1/scrapingdog-mcp/-/scrapingdog-mcp-0.1.0.tgz","fileCount":7,"integrity":"sha512-Kab/jQgRwq7cCUQ0ccbM5TAEzDZjPTOZ3XNAPxwerKiU9w5pZ7GmAWJmumAmwFk3Pb8+xH8atkG7gGad39XsWw==","signatures":[{"sig":"MEQCIDId14/tEckUVnN0E923RwQ8JDIlK95euccjhFvuA64oAiBoTcYD2ckTxGBOlWqi7xF0ptw+MMh8D0yYO5UFONG2iw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34873},"main":"dist/index.js","type":"module","engines":{"node":">=18.17"},"gitHead":"2fba126cd9a628d2c0515240c5a80ab01a166725","scripts":{"dev":"tsc && node dist/index.js","build":"tsc","start":"node dist/index.js","prepack":"npm run build","prepublishOnly":"npm run build"},"_npmUser":{"name":"0pen1","email":"wangzc1024@gmail.com"},"repository":{"url":"git+ssh://git@github.com/0pen1/scrapingdog-mcp.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server for Scrapingdog — web scraping, screenshots, and Google/Bing/DuckDuckGo/Baidu search tools.","directories":{},"_nodeVersion":"20.19.2","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.12.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.0","@types/node":"^20.11.0"},"_npmOperationalInternal":{"tmp":"tmp/scrapingdog-mcp_0.1.0_1785471569791_0.3505578735007191","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0pen1/scrapingdog-mcp","version":"0.1.1","description":"MCP server for Scrapingdog — web scraping, screenshots, and Google/Bing/DuckDuckGo/Baidu search tools.","type":"module","license":"MIT","author":{"name":"0pen1"},"homepage":"https://github.com/0pen1/scrapingdog-mcp#readme","repository":{"type":"git","url":"git+ssh://git@github.com/0pen1/scrapingdog-mcp.git"},"bugs":{"url":"https://github.com/0pen1/scrapingdog-mcp/issues"},"keywords":["mcp","mcp-server","model-context-protocol","scrapingdog","web-scraping","serp","claude","claude-code","claude-desktop"],"main":"dist/index.js","bin":{"scrapingdog-mcp":"dist/index.js"},"scripts":{"build":"tsc","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","start":"node dist/index.js","dev":"tsc && node dist/index.js","prepublishOnly":"npm run build","prepack":"npm run build"},"engines":{"node":">=18.17"},"dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","zod":"^3.25.76"},"devDependencies":{"@types/node":"^20.11.0","typescript":"^5.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@0pen1/scrapingdog-mcp@0.1.1","gitHead":"2fba126cd9a628d2c0515240c5a80ab01a166725","_nodeVersion":"20.19.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-s8YU/XLPyuoubKn2WTQuhOUmYMbC6c+wfw8PAAIzljru//LzmcUJRCwi09JiFQcSso/2LzsqEhHK1X+PbsmvuA==","shasum":"956b3c0f4ba0a1a130452aaf332c4e2b819a06d7","tarball":"https://registry.npmjs.org/@0pen1/scrapingdog-mcp/-/scrapingdog-mcp-0.1.1.tgz","fileCount":7,"unpackedSize":34958,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDHO6kux1SzSQeu5Eeg+PEO2AlbKjvK5Lr6f1zcjuz24AiBgjX5b6/bK6apwu81aRFfskAPqjqCtUV/q7Zr34PdpHA=="}]},"_npmUser":{"name":"0pen1","email":"wangzc1024@gmail.com"},"directories":{},"maintainers":[{"name":"0pen1","email":"wangzc1024@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/scrapingdog-mcp_0.1.1_1785471759745_0.08689303343180987"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-31T04:19:29.682Z","modified":"2026-07-31T04:22:40.042Z","0.1.0":"2026-07-31T04:19:29.952Z","0.1.1":"2026-07-31T04:22:39.890Z"},"bugs":{"url":"https://github.com/0pen1/scrapingdog-mcp/issues"},"author":{"name":"0pen1"},"license":"MIT","homepage":"https://github.com/0pen1/scrapingdog-mcp#readme","keywords":["mcp","mcp-server","model-context-protocol","scrapingdog","web-scraping","serp","claude","claude-code","claude-desktop"],"repository":{"type":"git","url":"git+ssh://git@github.com/0pen1/scrapingdog-mcp.git"},"description":"MCP server for Scrapingdog — web scraping, screenshots, and Google/Bing/DuckDuckGo/Baidu search tools.","maintainers":[{"name":"0pen1","email":"wangzc1024@gmail.com"}],"readme":"# scrapingdog-mcp\n\nA [Model Context Protocol](https://modelcontextprotocol.io) server that exposes the\n[Scrapingdog](https://www.scrapingdog.com/documentation/) scraping APIs as tools for\nMCP-compatible clients (Claude Desktop, Claude Code, and others).\n\nCommunicates over **stdio**. Built with TypeScript and the official MCP SDK.\n\n## What it does\n\nNine tools, each wrapping one Scrapingdog endpoint:\n\n| Tool | Endpoint | What it returns |\n|------|----------|-----------------|\n| `scrape` | `/scrape` | Raw HTML of any URL (JS rendering, premium proxies, geotargeting, sessions, stealth, wait) |\n| `screenshot` | `/screenshot` | Page screenshot metadata (png/jpg/webp, full-page, viewport, quality) |\n| `google_search` | `/google` | Google organic results, ads, knowledge graph, SERP features (JSON or HTML) |\n| `bing_search` | `/bing/search` | Bing search results (market/geo/pagination/safe-search) |\n| `duckduckgo_search` | `/duckduckgo/search` | DuckDuckGo results (region, date filter, pagination token) |\n| `baidu_search` | `/baidu/search` | Baidu results (Chinese-language restriction, pagination) |\n| `x_profile` | `/x/profile` | X (Twitter) profile data (name, handle, follower counts, bio) |\n| `x_post` | `/x/post` | X (Twitter) post (tweet) data |\n| `datacenter_proxy` | *(forward proxy)* | Connection details + ready-to-paste curl/Python for `proxy.scrapingdog.com:8081` |\n\nEvery tool accepts an optional `api_key` argument to override the configured key for that call.\n\n## Prerequisites\n\n- Node.js **≥ 18.17** (tested on 20.x).\n- A Scrapingdog API key — get one from your [Scrapingdog dashboard](https://www.scrapingdog.com/) after signing up.\n\n## Install & build\n\n```bash\nnpm install\nnpm run build      # outputs to dist/\n```\n\n## Provide your API key\n\nThe key is resolved in this order (first wins):\n\n1. The `api_key` argument on an individual tool call.\n2. The `SCRAPINGDOG_API_KEY` environment variable.\n3. A `.env` file containing `SCRAPINGDOG_API_KEY=...` in the working directory,\n   `~/.scrapingdog.env`, or `~/.env`.\n\nOption **2** (env var) is recommended — the key never touches disk beyond your MCP\nclient config, and nothing ends up in tool-call logs.\n\n## Configure your MCP client\n\n### Claude Desktop / Claude Code (`claude_desktop_config.json`)\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"scrapingdog\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/scrcpy/dist/index.js\"],\n      \"env\": {\n        \"SCRAPINGDOG_API_KEY\": \"your-key-here\"\n      }\n    }\n  }\n}\n```\n\n### Install from npm (no clone needed)\n\nPublished as [`@0pen1/scrapingdog-mcp`](https://www.npmjs.com/package/@0pen1/scrapingdog-mcp). Run directly with `npx`:\n\n```bash\nnpx @0pen1/scrapingdog-mcp\n```\n\nAdd it to Claude Code in one line (the server reads `SCRAPINGDOG_API_KEY` from the env you pass):\n\n```bash\nclaude mcp add scrapingdog --scope user \\\n  --env SCRAPINGDOG_API_KEY=your-key-here \\\n  -- npx -y @0pen1/scrapingdog-mcp\n```\n\nOr in an MCP client config (`claude_desktop_config.json` etc.):\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"scrapingdog\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@0pen1/scrapingdog-mcp\"],\n      \"env\": { \"SCRAPINGDOG_API_KEY\": \"your-key-here\" }\n    }\n  }\n}\n```\n\n## Run standalone (for testing)\n\n```bash\nSCRAPINGDOG_API_KEY=your-key node dist/index.js\n```\n\nIt speaks JSON-RPC over stdio, so you can pipe messages to it directly.\n\n## Example tool calls\n\n```\nscrape          { \"url\": \"https://example.com\", \"dynamic\": true, \"country\": \"us\" }\ngoogle_search   { \"query\": \"best espresso machines 2026\", \"results\": \"10\", \"country\": \"us\" }\nbing_search     { \"query\": \"site:github.com mcp server\", \"count\": \"20\" }\nduckduckgo_search { \"query\": \"rust async runtime\", \"df\": \"m\" }\nbaidu_search    { \"query\": \"人工智能\", \"ct\": 2 }\nx_profile       { \"profileId\": \"elonmusk\" }\nx_post          { \"tweetId\": \"1655608985058267139\" }\nscreenshot      { \"url\": \"https://example.com\", \"fullPage\": true, \"format\": \"png\" }\ndatacenter_proxy { \"target_url\": \"https://httpbin.org/ip\" }\n```\n\n## How responses are handled\n\n- **JSON endpoints** (search, social, etc.): the parsed JSON is returned as text so the\n  host can reason about it directly.\n- **`/scrape`**: raw HTML is returned as text.\n- **`/screenshot`**: the endpoint returns binary image bytes, which can't be carried as\n  text cleanly. The tool reports the content type and byte length, and notes how to fetch\n  the image directly. (If you need true image delivery, extend the handler to base64-encode\n  into an `image` content block.)\n- **Non-2xx responses**: returned as MCP error results (`isError: true`) with the upstream\n  status, content type, and body. Note Scrapingdog reports invalid keys as HTTP 400 with a\n  JSON \"Unauthorized request\" message — the body makes this clear.\n\n## Credit costs (per request)\n\nScrape: 1 (rotating proxy) → 25 (JS render + premium). Google/Bing/DDG/Baidu search: ~5.\nScreenshot: 5. Profile/Post scrapers: 5–10. See the [pricing/credit table](https://www.scrapingdog.com/documentation/)\nfor the full breakdown. Requests time out after 60s upstream.\n\n## Project layout\n\n```\nsrc/\n  index.ts          # entry point — creates McpServer, connects stdio transport\n  scrapingdog.ts    # API key resolution + shared HTTP request helper\n  result.ts         # response → MCP tool-result formatting (ok / error / fromResponse)\n  tools.ts          # the 9 tool definitions (schema + handler) and registration\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}