Google Maps MCP Server
Recherche d'entreprises locales et génération de leads via Google Maps
Documentation
Google Maps MCP Server — Local Business Search & Leads (nexgendata/google-maps-mcp-server) Actor
MCP server exposing three tools: search_local_businesses, generate_leads and validate_emails. Search Google Maps business listings, build local-business lead lists and verify emails from Claude, Cursor and any MCP agent. Pay-per-event, no monthly minimum.
- URL: https://apify.com/nexgendata/google-maps-mcp-server.md
- Developed by: NexGenData (community)
- Categories: AI, Lead generation, MCP servers
- Stats: 15 total users, 6 monthly users, 100.0% runs succeeded, 0 bookmarks
- User rating: No ratings yet
Pricing
from $10.00 / 1,000 results
This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event
What's an Apify Actor?
Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases. In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours, and optionally produces a well-defined JSON output, datasets with results, or files in key-value store. In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server. Actors are written with capital "A".
How to integrate an Actor?
If asked about integration, you help developers integrate Actors into their projects. You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready. The best way to integrate Actors is as follows.
In JavaScript/TypeScript projects, use official JavaScript/TypeScript client:
npm install apify-client
In Python projects, use official Python client library:
pip install apify-client
In shell scripts, use Apify CLI:
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash
In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).
If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).
For usage examples, see the [API](#api) section below.
For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
# README
## 🤖 Google Maps MCP Server — Local Business Search & Lead Gen for AI Agents
Plug Google Maps local-business search into Claude, ChatGPT, Cursor, or any MCP-compatible AI agent. Ships as an Apify Actor that exposes three structured tools: `search_local_businesses`, `generate_leads`, and `validate_emails` — purpose-built for location-based lead generation in AI workflows.
### Why This MCP Server
- **MCP-ready out of the box** — connect from Claude Desktop / Cursor / any MCP client, no SDK plumbing
- **Lead-gen focused** — search local businesses and turn them into a contactable lead list
- **Email validation built in** — verify the addresses your agent collects
- **Pay-per-event** — no subscription, no seat fees, no monthly minimum
### What This MCP Exposes
The actor publishes exactly the following MCP tools to your agent:
- **`search_local_businesses`** — keyword + location search over Google Maps business listings
- **`generate_leads`** — build a lead list (business name, contact details where available) from a Google Maps search
- **`validate_emails`** — verify email addresses collected during lead generation
Each tool returns structured JSON your agent can rely on. `search_local_businesses` and `generate_leads` run on the Google Maps scraper upstream; `validate_emails` runs on the email-validator upstream.
### Use Cases
- **AI sales SDRs** — "build me a list of dental offices in Austin TX" via `search_local_businesses` + `generate_leads`
- **Lead-gen agents** — collect local-business contacts and verify their emails with `validate_emails`
- **Local market research bots** — pull business listings for a category + city
- **Outreach pipelines** — feed validated leads straight into a CRM or sequence tool
### Quick Start (MCP)
Configure Claude Desktop / Cursor / any MCP-compatible agent to use this Actor as an MCP server:
```json
{
"mcpServers": {
"google-maps-nexgendata": {
"url": "https://nexgendata--google-maps-mcp-server.apify.actor/mcp",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}
Pricing
Pay-per-event. Small Actor Start fee plus a per-tool-call fee. No monthly minimum, no seat fee. Stop paying the moment your agent stops calling.
Related NexGenData Actors
| Use case | Actor |
|---|---|
| Underlying Google Maps places scraper | google-maps-scraper |
| Email validation actor | email-validator |
| Bulk B2B leads finder | b2b-leads-finder |
| Weather MCP server | weather-mcp-server |
| News MCP server | news-mcp-server |
FAQ
What tools does this server expose?
Three: search_local_businesses, generate_leads, and validate_emails. Nothing else.
Does it handle multiple regions? Yes — pass any location; coverage follows Google Maps itself.
Is the schema stable for AI agents? Yes — each tool returns a stable JSON shape with documented field names.
Auth? Apify token only. No Google Cloud billing project required.
Cost? Pay-per-event — you only pay for the tool calls your agent actually makes.
About NexGenData
NexGenData publishes a large catalog of buyer-intent and data actors, all pay-per-result. Browse the full catalog at https://apify.com/nexgendata?fpr=2ayu9b
How NexGenData Pricing Works
Every NexGenData actor uses pay-per-event pricing — you only pay for results that actually land in your dataset. No monthly minimum, no seat fees, no surprise overage bills.
- Actor Start: a single-event charge each time you spin the actor up (scaled to memory size)
- Result / tool call: charged per MCP tool call
- No charge for retries, internal proxy rotation, or failed sub-requests — those are absorbed by the platform
Apify Platform Bonus
New to Apify? Sign up with the NexGenData referral link — you get free platform credits on signup and help fund the maintenance of this actor fleet.
Integration Surface
Every actor in the NexGenData catalog can be triggered from:
- Apify console — point-and-click run
- Apify API — REST + webhooks
- Apify Python / JS SDKs — programmatic batch
- Zapier, Make.com, n8n — official integrations
- MCP — exposed as MCP tools for Claude / ChatGPT / Cursor agents
- Schedules — built-in cron for daily / weekly / monthly runs
- Webhooks — POST results to any HTTPS endpoint on dataset write
Support
NexGenData maintains a large catalog of Apify actors and ships updates regularly. Bug reports via the Apify console issues tab get a response within 24 hours.
Home: thenextgennexus.com Full catalog: apify.com/nexgendata
Actor input Schema
Actor input object example
{}
API
You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.
JavaScript example
import { ApifyClient } from 'apify-client';
// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
token: '<YOUR_API_TOKEN>',
});
// Prepare Actor input
const input = {};
// Run the Actor and wait for it to finish
const run = await client.actor("nexgendata/google-maps-mcp-server").call(input);
// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
console.dir(item);
});
// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs
Python example
from apify_client import ApifyClient
# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")
# Prepare the Actor input
run_input = {}
# Run the Actor and wait for it to finish
run = client.actor("nexgendata/google-maps-mcp-server").call(run_input=run_input)
# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start
CLI example
echo '{}' |
apify call nexgendata/google-maps-mcp-server --silent --output-dataset
MCP server setup
{
"mcpServers": {
"apify": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.apify.com/?tools=nexgendata/google-maps-mcp-server",
"--header",
"Authorization: Bearer <YOUR_API_TOKEN>"
]
}
}
}
OpenAPI specification
{
"openapi": "3.0.1",
"info": {
"title": "Google Maps MCP Server — Local Business Search & Leads",
"description": "MCP server exposing three tools: search_local_businesses, generate_leads and validate_emails. Search Google Maps business listings, build local-business lead lists and verify emails from Claude, Cursor and any MCP agent. Pay-per-event, no monthly minimum.",
"version": "0.0",
"x-build-id": "1rQP6g2RncRCOvKPr"
},
"servers": [
{
"url": "https://api.apify.com/v2"
}
],
"paths": {
"/acts/nexgendata~google-maps-mcp-server/run-sync-get-dataset-items": {
"post": {
"operationId": "run-sync-get-dataset-items-nexgendata-google-maps-mcp-server",
"x-openai-isConsequential": false,
"summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
},
"/acts/nexgendata~google-maps-mcp-server/runs": {
"post": {
"operationId": "runs-sync-nexgendata-google-maps-mcp-server",
"x-openai-isConsequential": false,
"summary": "Executes an Actor and returns information about the initiated run in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/runsResponseSchema"
}
}
}
}
}
}
},
"/acts/nexgendata~google-maps-mcp-server/run-sync": {
"post": {
"operationId": "run-sync-nexgendata-google-maps-mcp-server",
"x-openai-isConsequential": false,
"summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
"tags": [
"Run Actor"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/inputSchema"
}
}
}
},
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Enter your Apify token here"
}
],
"responses": {
"200": {
"description": "OK"
}
}
}
}
},
"components": {
"schemas": {
"inputSchema": {
"type": "object",
"properties": {}
},
"runsResponseSchema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"actId": {
"type": "string"
},
"userId": {
"type": "string"
},
"startedAt": {
"type": "string",
"format": "date-time",
"example": "2025-01-08T00:00:00.000Z"
},
"finishedAt": {
"type": "string",
"format": "date-time",
"example": "2025-01-08T00:00:00.000Z"
},
"status": {
"type": "string",
"example": "READY"
},
"meta": {
"type": "object",
"properties": {
"origin": {
"type": "string",
"example": "API"
},
"userAgent": {
"type": "string"
}
}
},
"stats": {
"type": "object",
"properties": {
"inputBodyLen": {
"type": "integer",
"example": 2000
},
"rebootCount": {
"type": "integer",
"example": 0
},
"restartCount": {
"type": "integer",
"example": 0
},
"resurrectCount": {
"type": "integer",
"example": 0
},
"computeUnits": {
"type": "integer",
"example": 0
}
}
},
"options": {
"type": "object",
"properties": {
"build": {
"type": "string",
"example": "latest"
},
"timeoutSecs": {
"type": "integer",
"example": 300
},
"memoryMbytes": {
"type": "integer",
"example": 1024
},
"diskMbytes": {
"type": "integer",
"example": 2048
}
}
},
"buildId": {
"type": "string"
},
"defaultKeyValueStoreId": {
"type": "string"
},
"defaultDatasetId": {
"type": "string"
},
"defaultRequestQueueId": {
"type": "string"
},
"buildNumber": {
"type": "string",
"example": "1.0.0"
},
"containerUrl": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"ACTOR_COMPUTE_UNITS": {
"type": "integer",
"example": 0
},
"DATASET_READS": {
"type": "integer",
"example": 0
},
"DATASET_WRITES": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_READS": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_WRITES": {
"type": "integer",
"example": 1
},
"KEY_VALUE_STORE_LISTS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_READS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_WRITES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_INTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_EXTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_SERPS": {
"type": "integer",
"example": 0
}
}
},
"usageTotalUsd": {
"type": "number",
"example": 0.00005
},
"usageUsd": {
"type": "object",
"properties": {
"ACTOR_COMPUTE_UNITS": {
"type": "integer",
"example": 0
},
"DATASET_READS": {
"type": "integer",
"example": 0
},
"DATASET_WRITES": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_READS": {
"type": "integer",
"example": 0
},
"KEY_VALUE_STORE_WRITES": {
"type": "number",
"example": 0.00005
},
"KEY_VALUE_STORE_LISTS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_READS": {
"type": "integer",
"example": 0
},
"REQUEST_QUEUE_WRITES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_INTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"DATA_TRANSFER_EXTERNAL_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
"type": "integer",
"example": 0
},
"PROXY_SERPS": {
"type": "integer",
"example": 0
}
}
}
}
}
}
}
}
}
}