Litescrape MCP Server
Google Search, Bing, DuckDuckGo and Google Maps results for any MCP client, free and without an API key. Add a key for the rest of the Litescrape catalog (Google AI Mode, AI Overview, Shopping and Reviews, plus Brave, Yandex, Baidu, Naver, Yahoo, YouTube, app stores, Amazon, eBay and other retailers, Zillow and other real-estate sites, job boards, TikTok, Instagram, X, Facebook and web page capture) and to lift every limit.
Results come straight from each site's own pages as structured JSON, through the Litescrape API. Links are real destinations, never redirects, and nothing is cached: every call runs fresh.
Quick start
No account, no key, one line.
Claude Code
claude mcp add litescrape -- npx -y litescrape-mcp-server
Cursor, Windsurf, Claude Desktop, Codex, Gemini CLI and most other clients (mcp.json, claude_desktop_config.json, or the client's MCP settings)
{
"mcpServers": {
"litescrape": {
"command": "npx",
"args": ["-y", "litescrape-mcp-server"]
}
}
}
VS Code
code --add-mcp '{"name":"litescrape","command":"npx","args":["-y","litescrape-mcp-server"]}'
Codex CLI
codex mcp add litescrape -- npx -y litescrape-mcp-server
Gemini CLI
gemini mcp add litescrape npx -y litescrape-mcp-server
Requires Node.js 20 or newer.
Hosted, nothing to install: clients that connect to remote servers can use https://mcp.litescrape.com/mcp instead. Same tools, same free allowance; send an API key as Authorization: Bearer ls_live_... to unlock the rest.
claude mcp add --transport http litescrape https://mcp.litescrape.com/mcp
What you get without a key
One call runs at a time per network, and failed calls never count. When a limit is reached, the tool result says so and tells the model exactly how to add a key, so the agent can relay it to you.
Add an API key
A key unlocks every other tool (google_ai_mode, google_ai_overview, google_shopping, google_reviews, web_fetch and the rest of the catalog), removes the daily limits and allows concurrent calls. Get one at litescrape.com, then set LITESCRAPE_API_KEY in the server's environment:
{
"mcpServers": {
"litescrape": {
"command": "npx",
"args": ["-y", "litescrape-mcp-server"],
"env": {
"LITESCRAPE_API_KEY": "ls_live_..."
}
}
}
}
With Claude Code: claude mcp add litescrape -e LITESCRAPE_API_KEY=ls_live_... -- npx -y litescrape-mcp-server
With the hosted endpoint: claude mcp add --transport http litescrape https://mcp.litescrape.com/mcp --header "Authorization: Bearer ls_live_..."
Tools
The server lists only the free tools, plus two that reach the rest of the catalog, so every session starts with a small tool list (about 5K tokens) whether or not it has a key:
Tool names, descriptions and input schemas come from the Litescrape API itself (/api/tools), so they always match the endpoints.
More tools with a key
Every other Litescrape endpoint is reachable through find_tools and call_tool, named after its route (/api/amazon/product is amazon_product) and taking that endpoint's parameters. Identifiers in one result (a place, product, video or user ID) are the input of the matching detail tool. find_tools works without a key too, so an agent can see what a key would unlock.
Parameter names and accepted values follow the Litescrape API reference.
Every tool accepts result_groups (inside call_tool's arguments for a found tool), a list of top-level groups to keep (for example ["organic_results", "knowledge_graph"]) so the model's context stays small. search_metadata is always included.
Results
A tool result is one text block: a one-line summary, a blank line, then the API's JSON response unchanged.
Google Search for "espresso machine": 10 organic results; also knowledge_graph, related_questions, ai_overview. Free allowance: 24 of 25 google_search calls left today (no API key set).
{"search_metadata":{...},"search_parameters":{...},"organic_results":[...],...}
The same JSON is also returned as structuredContent for clients that read it.
Limits and errors
Requests time out after 120 seconds by default (the API's own deadline is 90 seconds). AI Mode is the slowest tool.
Configuration
Streamable HTTP mode
litescrape-mcp-server --http (or LITESCRAPE_MCP_TRANSPORT=http) serves MCP over HTTP instead of stdio: stateless POST /mcp, GET /healthz, listening on PORT (default 8080) and HOST (default 0.0.0.0), or --port and --host. Each request's API key comes from its Authorization: Bearer header or ?api_key= query parameter, so one process serves keyed and keyless callers; LITESCRAPE_API_KEY is ignored in this mode. This is what runs at https://mcp.litescrape.com/mcp.
Behind a shared address, keyless callers would all count against one allowance. LITESCRAPE_KEYLESS_PROXY_SECRET is the secret the Litescrape API shares with its own hosted endpoint for forwarding each caller's address, and LITESCRAPE_EDGE_SECRET is the value Cloudflare adds in front of that endpoint so the caller can be read from CF-Connecting-IP. Neither is needed for a private deployment, where the server's own address is metered.
docker build -t litescrape-mcp-server . && docker run -p 8080:8080 litescrape-mcp-server --http
Every request identifies itself with X-Litescrape-Client: mcp/<version> and a litescrape-mcp-server/<version> user agent. Arguments travel in a GET query string, except for endpoints that only take a JSON body and for calls with an array or object argument or a value over 2,048 characters, which are sent as a JSON POST. The server writes protocol messages to stdout and its logs to stderr.
Development
npm install
npm run lint # prettier + tsc
npm test # vitest, including real stdio and HTTP round trips
npm run build # tsc -> dist/
npm run inspector # MCP Inspector against dist/index.js
npm run dev runs the server from source with tsx. Releases are tagged with the package version (for example 0.1.0); the publish workflow builds and publishes to npm with provenance.