gmapsscraper
Provides tools for scraping Google Maps business data, including names, addresses, phones, emails, websites, ratings, review counts, categories, and coordinates.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gmapsscraperScrape coffee shops in Austin TX with emails"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
gmapsscraper MCP Server
MCP (Model Context Protocol) server for gmapsscraper.io — lets Claude, Cursor, Windsurf and any MCP client scrape Google Maps business data in plain conversation: names, addresses, phones, emails, websites, ratings, review counts, categories and coordinates.
"Find 50 dentists in Chicago with their emails" → done, right in your AI chat.
Tools
Tool | What it does |
| Search Google Maps and return business leads (blocks until done, ~30–120s) |
| Fire-and-forget version — returns a job id immediately |
| Fetch results of a previously started job |
| Check remaining credit balance |
Each scrape costs 2 credits; multiple keywords in one call cost the same. Free tier: 10 credits (5 searches, no credit card) — get an API key at gmapsscraper.io/dashboard.
Related MCP server: Outscraper MCP Server
Setup
Claude Code
claude mcp add gmapsscraper -e GMAPSSCRAPER_API_KEY=your_key -- npx -y @gmapsscraper/mcpClaude Desktop / Cursor / Windsurf
Add to your MCP config (claude_desktop_config.json, .cursor/mcp.json, etc.):
{
"mcpServers": {
"gmapsscraper": {
"command": "npx",
"args": ["-y", "@gmapsscraper/mcp"],
"env": {
"GMAPSSCRAPER_API_KEY": "your_key"
}
}
}
}Cursor Directory / Open Plugins
Installing from a plugin directory uses the bundled mcp.json, which
deliberately ships without an env block — the Open Plugins spec only expands
${PLUGIN_ROOT} and ${PLUGIN_DATA}, so a secret placeholder would be passed through
literally and the server would fail to authenticate.
Set the key in your own environment before starting the client:
# macOS / Linux — add to ~/.zshrc or ~/.bashrc
export GMAPSSCRAPER_API_KEY=your_key# Windows PowerShell
setx GMAPSSCRAPER_API_KEY "your_key"Restart the client afterwards so it picks up the variable. If a scrape returns an
auth error, run get_credits first — it fails fast and confirms whether the key
is being seen.
Requires Node.js ≥ 18. The server runs locally over stdio and talks to the gmapsscraper.io API — no other infrastructure involved.
Example prompts
"Scrape coffee shops in Austin TX with emails and give me a table"
"Find plumbers in Miami, then draft a cold email for the top 5 by rating"
"Start a scrape for 'wedding photographer in Denver CO', I'll check back later"
"How many gmapsscraper credits do I have left?"
Data returned per business
title, address, phone, email, website, rating, reviews_count, category, latitude, longitude, google_maps_url, opening_hours
Results are capped at 100 businesses per response to keep your context tidy; the full CSV is always available from the dashboard.
Related
📦 Node.js SDK —
npm install @gmapsscraper/sdk(this server is built on it)🐍 Python SDK —
pip install gmapsscraper-sdk
License
Available Tools
4 toolsget_creditsCheck credit balanceARead-onlyIdempotent
Get the remaining gmapsscraper.io credit balance for the configured API key. Each scrape costs 2 credits. Free to call.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, which cover safety. The description adds behavioral context beyond annotations by noting 'Each scrape costs 2 credits' and 'Free to call,' clarifying the tool's cost and side-effect profile. This is useful additional context, though it does not detail rate limits or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, then adds one cost detail and a 'free to call' note. Every sentence earns its place with no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema, safe by annotations), the description provides sufficient context: what it does, it's free, and the credit cost per scrape. It is complete for an agent to understand when and why to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema has 100% coverage (no properties). Per the rubric, when there are no parameters, a baseline of 4 is appropriate. The description does not need to explain parameters it does not have.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function with a specific verb ('Get') and resource ('remaining gmapsscraper.io credit balance'). It is distinct from siblings like start_scrape_job or get_scrape_results, which focus on scraping operations, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states it is 'Free to call,' implying it can be used without cost or side effects, which gives clear context for when to invoke it. It does not explicitly name alternatives or exclusions, but its purpose in relation to sibling scraping tools is obvious, so clear context is provided but no explicit when-not or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scrape_resultsGet scrape job resultsARead-onlyIdempotent
Check the status of a scrape job and fetch the business records once it is complete. Does not spend credits — safe to call repeatedly.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job id returned by start_scrape_job or scrape_google_maps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, and openWorldHint. The description adds valuable non-obvious behavior: 'Does not spend credits — safe to call repeatedly,' which is crucial for polling. It also clarifies the two-phase nature (status check then fetch).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states purpose, second states cost/safety. Every word earns its place; no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and strong annotations, the description covers purpose, polling behavior, cost impact, and parameter origin. It does not describe the response format, but since no output schema exists, a mention of business records being fetched is reasonable. Minor gap on exact return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with job_id described as 'Job id returned by start_scrape_job or scrape_google_maps.' The description adds no further parameter details, so baseline 3 applies. It does reinforce provenance, but that information already exists in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Check the status of a scrape job and fetch the business records once it is complete.' It uses a specific verb-resource pair and distinguishes itself from siblings like start_scrape_job (which initiates) and get_credits (which queries balance).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after starting a job, especially through the parameter reference to 'start_scrape_job or scrape_google_maps.' It clearly conveys when to use (to check status and fetch results), but does not explicitly discuss exclusions or alternatives beyond the implied workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrape_google_mapsScrape Google Maps businessesA
Search Google Maps and return business leads: name, address, phone, email, website, rating, reviews count, category, coordinates. Costs 2 credits per call — every call bills again (NOT idempotent, do not retry on your own). Always confirm with the user before spending credits. Multiple related keywords in one call cost the same 2 credits. Blocks until the scrape finishes (typically 30-120s). Be specific with keywords, e.g. "vegan restaurant in Brooklyn NY".
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | ISO 639-1 result language, e.g. "en", "es", "de". | en |
| depth | No | 1-2, higher returns more results at the same credit cost. | |
| No | Also crawl business websites to extract contact emails (recommended for lead generation / cold outreach). | ||
| radius | No | Search radius in meters (default 20000). | |
| keywords | Yes | Search queries including a location, e.g. ["dentist in Chicago IL"]. Multiple related keywords cost the same 2 credits. | |
| max_wait_seconds | No | How long to wait for the scrape to finish before handing back a job id to poll. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds substantial behavioral context beyond annotations: cost per call, non-idempotency with an explicit 'do not retry' warning, blocking duration of 30-120s, and user-confirmation requirement. This aligns with the idempotentHint=false annotation and enhances the agent's understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two purposeful sentences. The first states the action and output fields; the second packs cost, non-idempotency, confirmation, keyword cost, blocking time, and keyword advice. Every phrase earns its place and is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, no output schema), the description covers the return fields, cost, blocking, and retry behavior. It does not mention the async fallback (job id) that appears in the max_wait_seconds schema, but that is covered structurally. Slight gap in explicit sibling differentiation prevents a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value for the 'keywords' parameter (cost behavior, specificity guidance, example) and clarifies that 'email' extraction is conditional via the email parameter. This goes slightly beyond the schema without overburdening the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Search Google Maps and return business leads' followed by a concrete list of returned data fields. This clearly distinguishes the tool from siblings like start_scrape_job and get_scrape_results, which handle async portions of the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: costs 2 credits, must confirm with user, supports multiple related keywords at the same cost, and advises specific keyword formatting. However, it does not explicitly mention when to use alternative tools (e.g., for async scenarios), though the blocking behavior and max_wait_seconds schema hint at it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_scrape_jobStart a scrape job (async)A
Submit a Google Maps scrape job without waiting for it to finish. Costs 2 credits per call — every call bills again (NOT idempotent, do not retry on your own). Always confirm with the user before spending credits. Returns a job id — poll it later with get_scrape_results. Use this instead of scrape_google_maps for large areas or when the user wants to continue working meanwhile.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | ISO 639-1 result language, e.g. "en", "es", "de". | en |
| depth | No | 1-2, higher returns more results at the same credit cost. | |
| No | Also crawl business websites to extract contact emails (recommended for lead generation / cold outreach). | ||
| radius | No | Search radius in meters (default 20000). | |
| keywords | Yes | Search queries including a location, e.g. ["plumber in Miami FL"]. Multiple related keywords cost the same 2 credits. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses credit cost per call, non-idempotent behavior ('NOT idempotent, do not retry on your own'), and the need to confirm with the user before spending credits. These go beyond the annotations (readOnlyHint=false, idempotentHint=false) by adding financial and guidance context. It also warns about retries, which is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each adding distinct information: purpose, cost/idempotency, user confirmation, and sibling comparison. No redundant phrasing or unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool involves async job submission with cost implications, and the description covers all actionable aspects: the async behavior, credits, non-idempotence, user confirmation, job id return, and polling step. Given no output schema, the 'Returns a job id' line provides the critical return information, and the sibling guidance completes the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While the schema fully documents all 5 parameters, the description adds the economic detail that 'Multiple related keywords cost the same 2 credits,' which is not in the schema. It also hints at the `radius` parameter with 'large areas,' but the schema already covers per-parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Submit' with a clear resource ('Google Maps scrape job') and specifies asynchronous execution ('without waiting for it to finish'), distinguishing it from the synchronous `scrape_google_maps` sibling. It also mentions returning a job id, clarifying the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this instead of scrape_google_maps for large areas or when the user wants to continue working meanwhile,' providing a direct alternative comparison. Also indicates the follow-up flow with `get_scrape_results`, making the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.1- First observed
get_credits - First observed
get_scrape_results - First observed
scrape_google_maps - First observed
start_scrape_job
TDQS
Each tool has a clearly distinct purpose: async job submission, result polling, credit checking, and synchronous scraping. The overlap between start_scrape_job and scrape_google_maps is explicitly addressed in the descriptions, making ambiguity minimal.
All tool names follow a consistent verb_noun pattern with snake_case (start_scrape_job, get_scrape_results, get_credits, scrape_google_maps), making the naming predictable and readable.
With 4 tools, the server is well-scoped for a focused Google Maps scraping service. Each tool serves an essential function without unnecessary redundancy.
The tool set covers the core lifecycle: asynchronous job creation and retrieval, synchronous scraping, and credit management. Minor gaps like job cancellation or listing are not critical for the primary use case.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Google Maps scraper that extracts business contact details: emails, phone numbers, addresses…
Live Google Maps business search, review, and photo data for AI agents over MCP.
B2B lead generation from Google Maps: search, dedupe and email-enrich businesses. Needs API key.
Local business lead extraction with email + phone enrichment from Google Maps.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables access to Google Maps business data including search, reviews, photos, and geocoding. Supports searching businesses by location, area, or coordinates, retrieving detailed business information, reviews, and performing reverse geocoding operations.13MIT

Outscraper MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceProvides access to Outscraper's data extraction services for business intelligence, location data, and reviews across platforms like Google Maps, Amazon, and Yelp. It enables AI assistants to perform comprehensive web scraping tasks including contact information retrieval and geolocation services.6MIT- AlicenseAqualityBmaintenanceEnables AI assistants to access Google Maps services including places search, details, directions, geocoding, and nearby search through natural language.62MIT

Outscraper MCPofficial
AlicenseBqualityCmaintenanceConnects AI agents to Outscraper for business discovery, Google Maps intelligence, company and contact enrichment, review analysis, search, and structured web extraction.28653MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gmapsscraper/gmapsscraper-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server