Skip to main content
Glama

gmapsscraper MCP Server

npm version license

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

scrape_google_maps

Search Google Maps and return business leads (blocks until done, ~30–120s)

start_scrape_job

Fire-and-forget version — returns a job id immediately

get_scrape_results

Fetch results of a previously started job

get_credits

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/mcp

Claude 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.

License

MIT © gmapsscraper.io

Available Tools

4 tools
get_creditsCheck credit balanceA
Read-onlyIdempotent

Get the remaining gmapsscraper.io credit balance for the configured API key. Each scrape costs 2 credits. Free to call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 resultsA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob id returned by start_scrape_job or scrape_google_maps.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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".

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoISO 639-1 result language, e.g. "en", "es", "de".en
depthNo1-2, higher returns more results at the same credit cost.
emailNoAlso crawl business websites to extract contact emails (recommended for lead generation / cold outreach).
radiusNoSearch radius in meters (default 20000).
keywordsYesSearch queries including a location, e.g. ["dentist in Chicago IL"]. Multiple related keywords cost the same 2 credits.
max_wait_secondsNoHow long to wait for the scrape to finish before handing back a job id to poll.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoISO 639-1 result language, e.g. "en", "es", "de".en
depthNo1-2, higher returns more results at the same credit cost.
emailNoAlso crawl business websites to extract contact emails (recommended for lead generation / cold outreach).
radiusNoSearch radius in meters (default 20000).
keywordsYesSearch queries including a location, e.g. ["plumber in Miami FL"]. Multiple related keywords cost the same 2 credits.

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 4 tool updatesv0.1.1
    • First observedget_credits
    • First observedget_scrape_results
    • First observedscrape_google_maps
    • First observedstart_scrape_job

TDQS

A4.5/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

With 4 tools, the server is well-scoped for a focused Google Maps scraping service. Each tool serves an essential function without unnecessary redundancy.

Completeness4/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    13
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 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.
    6
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Connects AI agents to Outscraper for business discovery, Google Maps intelligence, company and contact enrichment, review analysis, search, and structured web extraction.
    28
    65
    3
    MIT

Latest Blog Posts

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