Server data from the Official MCP Registry
Outscraper MCP business discovery, Maps intelligence, enrichment, reviews, and contact data.
Outscraper MCP business discovery, Maps intelligence, enrichment, reviews, and contact data.
Remote endpoints: streamable-http: https://mcp.outscraper.com/mcp
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
9 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Set these up before or after installing:
Environment variable: OUTSCRAPER_API_KEY
Environment variable: CLOUD_SERVICE
Environment variable: HTTP_STREAMABLE_SERVER
Environment variable: SSE_LOCAL
Environment variable: HTTP_STATEFUL_SERVER
Environment variable: HOST
Environment variable: PORT
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
Official MCP server for Outscraper.
Connect AI agents to Outscraper for business discovery, Google Maps intelligence, company and contact enrichment, review analysis, search, and structured web extraction.
businesses_search, then enrich a chosen record with businesses_getrequests_getai_scraperIt exposes production-ready MCP tools for:
The server supports stdio and HTTP transports, npm-based installation, hosted header or URL auth, and a normalized structuredContent result shape for MCP clients and agents.
This MCP server exposes Outscraper data sources and enrichment workflows to MCP-compatible clients.
It is designed for:
ai_scraperrequests_getIn practice, the server acts as a thin MCP layer over the Outscraper API:
set OUTSCRAPER_API_KEY=YOUR_API_KEY
npx -y outscraper-mcp
For MCP clients, configure:
npx["-y", "outscraper-mcp"]OUTSCRAPER_API_KEY=YOUR_API_KEYFor task-oriented workflows, copy-paste examples, and example agent skills, see the examples folder.
pingbusinesses_searchbusinesses_getai_scrapergoogle_maps_searchgoogle_maps_reviewscompany_insightsemails_and_contactsemails_validatorgoogle_maps_photoschain_infoyellowpages_searchbooking_reviewsphones_enrichertp_data (legacy alias for trustpilot_data)trustpilot_datatp_reviews (legacy alias for trustpilot_reviews)trustpilot_reviewsyelp_reviewstripadvisor_searchtripadvisor_reviewsgoogle_searchgoogle_search_imagesindeed_searchbalance_getrequests_getrequests_listrequests_deleteThese tools are aligned to the current documented Outscraper API shapes, including:
POST /businessesPOST /ai-scraperGET /businesses/{business_id}GET /google-maps-searchGET /google-maps-photosGET /google-searchGET /google-search-imagesGET /yellowpages-searchGET /booking-reviewsGET /phones-enricherGET /trustpilotGET /trustpilot-reviewsGET /yelp-reviewsGET /tripadvisor-searchGET /tripadvisor-reviewsGET /indeed-searchGET /google-maps-reviewsGET /company-insightsGET /emails-and-contactsGET /email-validatorai_chain_info enrichment via google-maps-searchGET /profile/balanceGET /requests/{requestId}DELETE /requests/{requestId}GET /requestsEvery tool now returns the same structured envelope:
{
"data": {},
"meta": {
"service": "company_insights",
"operation": "get"
},
"async": {
"id": "request-id",
"status": "Pending",
"results_location": "https://api.outscraper.com/requests/request-id",
"is_async_submission": true,
"next_step": "Call requests_get with request_id=\"request-id\" to check progress."
}
}
async is present when the response is an async submission or exposes async request metadata.
Async-capable tools now accept:
{
"execution_mode": "auto"
}
Available values:
auto: let the MCP server choose sync or asyncsync: force direct response modeasync: force async submission modeThe old boolean async is still accepted for compatibility, but execution_mode now has priority.
The recommended way to use this MCP server is from npm.
npx -y outscraper-mcp
Provide OUTSCRAPER_API_KEY through your MCP client config or shell environment.
The server auto-loads .env on startup via dotenv.
On Windows, if a client cannot find npx, use the full Node.js path instead, for example:
{
"command": "C:\\Program Files\\nodejs\\npx.cmd",
"args": ["-y", "outscraper-mcp"]
}
Security-sensitive issues should be reported according to SECURITY.md.
The server currently supports these connection patterns:
Best for:
Auth source:
OUTSCRAPER_API_KEY environment variableTransport:
Best for:
Auth source when CLOUD_SERVICE=true:
X-OUTSCRAPER-API-KEYX-API-KEYAuthorization: Bearer <api-key>/v1/mcp/<api-key> path authTransport:
POST /mcpPOST /v1/mcp/<api-key>Best for:
Auth source when CLOUD_SERVICE=true:
Transport:
POST /mcpGET /mcpDELETE /mcp/v1/mcp/<api-key> route patternNote:
If you want to connect this server to ChatGPT as a remote MCP connector, the simplest hosted form is:
https://your-domain.example/v1/mcp/YOUR_API_KEY
Recommended setup:
CLOUD_SERVICE=true.Typical connector values:
Outscraper MCPBusiness discovery, Google Maps data, enrichment, search, and AI scrapinghttps://your-domain.example/v1/mcp/YOUR_API_KEYNoneNotes:
If you want hosted behavior, enable:
set CLOUD_SERVICE=true
Then the HTTP caller can send the Outscraper API key in one of these headers:
Authorization: Bearer <api-key>X-API-KEY: <api-key>X-OUTSCRAPER-API-KEY: <api-key>In CLOUD_SERVICE=true HTTP mode, request headers are used as the API key source. In local stdio mode, OUTSCRAPER_API_KEY is still required.
HTTP requests without one of these auth forms are rejected before MCP processing begins.
For ChatGPT-style connectors or other hosted setups that cannot send custom headers, you can also pass the API key in the path:
http://localhost:3000/v1/mcp/YOUR_API_KEY
This route supports the same MCP behavior as /mcp, but authenticates from the URL path when CLOUD_SERVICE=true.
For server-to-server integrations, header auth is still preferred because URL-based API keys are more likely to appear in logs.
set HTTP_STREAMABLE_SERVER=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcp
MCP endpoint:
http://localhost:3000/mcp
Hosted URL auth endpoint:
http://localhost:3000/v1/mcp/YOUR_API_KEY
Health endpoint:
http://localhost:3000/health
This repository also includes a docker-compose.yml for hosted/container deployments:
docker compose up --build -d
Default container behavior:
3000:3000CLOUD_SERVICE=true0.0.0.0https://api.outscraper.com as the upstream API base URLEndpoints:
http://localhost:3000/mcp
http://localhost:3000/v1/mcp/YOUR_API_KEY
http://localhost:3000/health
Important notes for Docker usage:
This mode uses local session management:
set SSE_LOCAL=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcp
You can also enable the same mode with:
set HTTP_STATEFUL_SERVER=true
set HOST=localhost
set PORT=3000
npx -y outscraper-mcp
In this mode the server accepts:
POST /mcp for initialize and subsequent requestsGET /mcp for the session streamDELETE /mcp for session terminationThe session is tracked through the mcp-session-id header.
Hosted URL auth also works in stateful mode through:
http://localhost:3000/v1/mcp/YOUR_API_KEY
Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}
Add the server with the Claude Code CLI:
claude mcp add outscraper -e OUTSCRAPER_API_KEY=YOUR_API_KEY -- npx -y outscraper-mcp
Add this to your global MCP configuration:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}
Add this to your MCP config:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}
For settings.json:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "outscraperApiKey",
"description": "Outscraper API Key",
"password": true
}
],
"servers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "${input:outscraperApiKey}"
}
}
}
}
}
Use the standard stdio command form:
{
"mcpServers": {
"outscraper": {
"command": "npx",
"args": ["-y", "outscraper-mcp"],
"env": {
"OUTSCRAPER_API_KEY": "YOUR_API_KEY"
}
}
}
}
For n8n or other HTTP MCP clients, run the server in Streamable HTTP mode:
set HTTP_STREAMABLE_SERVER=true
set HOST=localhost
set PORT=3000
set OUTSCRAPER_API_KEY=YOUR_API_KEY
npx -y outscraper-mcp
Then use:
http://localhost:3000/mcp
{
"filters": {
"country_code": "US",
"states": ["NY"],
"cities": ["New York"],
"types": ["restaurant", "cafe"]
},
"fields": ["name", "phone", "website", "address", "rating", "reviews"],
"limit": 25
}
Natural-language query support on /businesses currently depends on Outscraper's own parser behavior. In live testing, structured filters were reliable while free-form query values often returned Could not parse query into a valid request format.
{
"query": "https://outscraper.com",
"prompt": "Extract company name, company description, and people mentioned on the page.",
"schema": {
"type": "object",
"required": [],
"properties": {
"company_name": { "type": "string" },
"company_description": { "type": "string" },
"people": {
"type": "array",
"items": { "type": "string" }
}
}
},
"execution_mode": "sync"
}
Use execution_mode: "async" if you want a request id and plan to poll later with requests_get.
{
"business_id": "YOUR_BUSINESS_ID",
"fields": ["name", "phone", "website", "address", "rating", "reviews"]
}
{
"query": ["restaurants brooklyn usa"],
"limit": 20,
"language": "en",
"region": "us"
}
{
"query": ["ChIJrc9T9fpYwokRdvjYRHT8nI4"],
"reviews_limit": 20,
"sort": "newest",
"language": "en"
}
{
"query": ["outscraper.com"],
"fields": ["name", "description", "industry"],
"execution_mode": "async"
}
{
"query": ["outscraper.com"],
"preferred_contacts": ["technical", "decision makers"],
"execution_mode": "sync"
}
{
"query": ["support@outscraper.com"],
"execution_mode": "sync"
}
{
"query": ["NoMad Restaurant, NY, USA"],
"photos_limit": 5,
"limit": 1,
"execution_mode": "sync"
}
{
"query": ["Starbucks, New York, NY, USA"],
"limit": 1,
"execution_mode": "sync"
}
{
"query": ["outscraper.com"],
"execution_mode": "sync"
}
{
"query": ["outscraper"],
"pages_per_query": 1,
"execution_mode": "sync"
}
{
"query": ["outscraper"],
"limit": 5,
"execution_mode": "sync"
}
{
"query": ["https://www.indeed.com/jobs?q=software+engineer&l=New+York%2C+NY"],
"limit": 10,
"execution_mode": "sync"
}
{}
{
"request_id": "YOUR_REQUEST_ID"
}
businesses_search works reliably with structured filters, but free-form query values on /businesses may fail with Could not parse query into a valid request format. This behavior was reproduced against the live API, not only inside the MCP layer.ai_scraper works best through POST with a JSON body. In live validation, POST accepted prompt and schema reliably, while GET variants around schema and query_schema did not match the same behavior consistently.businesses_search is intentionally exposed here as a synchronous MCP tool because the current /businesses OpenAPI shape is request-body-based and did not prove to be a stable async-style workflow during live validation.execution_mode="auto" is heuristic-driven. It is designed to choose a practical default, but callers that need deterministic behavior should explicitly use sync or async.CLOUD_SERVICE=true; stdio mode still expects OUTSCRAPER_API_KEY in the process environment.chain_info is implemented from the documented ai_chain_info enrichment on google-maps-search, because Outscraper currently does not describe a standalone chain info endpoint.builtwith is not currently exposed as a tool because Outscraper currently does not document a dedicated BuiltWith endpoint.businesses_search for structured business discovery with filters and cursor pagination.businesses_get once you already have a concrete business id.google_maps_search for Google Maps-style place discovery from human search queries.google_maps_reviews when the user specifically needs review data rather than place discovery.company_insights for firmographics and company profile enrichment.emails_and_contacts for contact discovery from known domains.requests_get, requests_list, and requests_delete only for async lifecycle management.balance_get for account and billing checks, not business data retrieval.CLOUD_SERVICE=true enables header-based API key resolution for HTTP requests.Be the first to review this server!
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
by Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace · Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm — conversationally
by Taylorwilsdon · Productivity
Control Gmail, Calendar, Docs, Sheets, Drive, and more from your AI
by mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.