Google Maps Business Contact Scraper MCP
Pricing
from $0.01 / 1,000 results
Google Maps Business Contact Scraper MCP
MCP actor for scraping business contact information from Google Maps. Search for businesses by query, get detailed contact info including phone and website. Built as MCP standby actor with PPE pricing.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
AutomateLab
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape business contact information from Google Maps — names, addresses, phone numbers, websites, ratings, and reviews. Built as an Apify MCP (Model Context Protocol) standby actor for AI agents and LLM integrations.
Apify Store Listing | Actor Detail
What does this actor do?
Extracts business contact data from Google Maps using a headless browser. Search for businesses by query (e.g., "restaurants in Manhattan" or "plumbers near Times Square") and get back structured contact information including phone numbers, websites, ratings, and review counts.
The actor runs as an MCP standby actor — it stays idle until called via the MCP JSON-RPC protocol, then returns results directly. It's also usable as a standard batch Apify actor with JSON input.
Why use this actor?
- Lead generation — Build prospect lists by category and location
- B2B sales — Find decision-maker contacts for companies in a territory
- Market research — Map competitor locations and contact details
- Business discovery — Find all businesses of a given type in a neighborhood
- Real estate research — Map all businesses at a given address or zip code
Tools
| Tool | Price | Description |
|---|---|---|
search_businesses | $0.03 | Search Google Maps by query, returns name/address/rating/placeId |
get_business_details | $0.05 | Get phone and website for a specific placeId |
search_businesses_with_emails | $0.08 | Search + enrich each result with phone and website |
How to use
MCP Protocol (AI agents)
Send a JSON-RPC POST to /mcp with:
{"method": "tools/call","params": {"name": "search_businesses","arguments": {"search_query": "restaurants in Manhattan","max_results": 10}}}
Apify Batch Mode
apify call red.cars/google-maps-business-contact-mcp \--input '{"tool": "search_businesses", "params": {"search_query": "dentists in Brooklyn", "max_results": 5}}'
JavaScript / TypeScript
const { handleRequest } = await import('./dist/main.js');const result = await handleRequest({toolName: 'search_businesses',arguments: { search_query: 'coffee shops in SoHo', max_results: 10 }});console.log(JSON.parse(result.content[0].text));
Input
| Field | Type | Required | Description |
|---|---|---|---|
tool | string | Yes | One of: search_businesses, get_business_details, search_businesses_with_emails |
search_query | string | For search tools | Google Maps search query (e.g., "restaurants in NYC") |
place_id | string | For details tool | Google Maps place ID from a search result |
max_results | integer | No | Max results to return (1–50, default 10) |
Batch input example
{"tool": "search_businesses_with_emails","params": {"search_query": "plumbers near Times Square","max_results": 20}}
Output
Dataset items with the following fields:
| Field | Type | Description |
|---|---|---|
name | string | Business name |
address | string | Full address |
phone | string | null | Phone number |
website | string | null | Website URL |
rating | number | null | Star rating (e.g., 4.5) |
reviews | integer | null | Number of reviews |
category | string | null | Business category |
placeId | string | null | Google Maps place ID (use with get_business_details) |
Output example
{"query": "pizza in Brooklyn","count": 2,"businesses": [{"name": "Joe's Pizza","address": "123 Smith St, Brooklyn, NY 11201","phone": "+1-718-555-0100","website": "https://joespizza.com","rating": 4.7,"reviews": 892,"category": "Pizza delivery","placeId": "ChIJ8fz2XcJZwok..."}]}
Cost estimation
- Search only (
search_businesses): $0.03 per run - Search + enrichment (
search_businesses_with_emails): $0.08 per run - Container compute: Apify includes 4096 MB memory per run
- Each tool call returns up to
max_resultsbusinesses (default 10)
Example: 100 searches at $0.03 each = $3.00
Tips and advanced options
- Use
placeIdfor details — After asearch_businessescall, use the returnedplaceIdwithget_business_detailsto get phone and website for specific businesses - Batch enrichment —
search_businesses_with_emailsdoes this automatically, but costs more than search-only - Limit results — Use
max_results: 5for quick tests before scaling up - Rate limiting — Google Maps may throttle rapid requests; add delays between calls in high-volume scenarios
- Proxy rotation — Apify accounts include built-in proxy rotation for anti-bot protection
FAQ
Is this legal to use? This scraper is for scraping publicly available business contact information from Google Maps. Ensure your use case complies with Google's Terms of Service and applicable laws. Do not use for spam, harassment, or unsolicited marketing.
Why is the address sometimes empty?
Google Maps doesn't always return a full street address in search results. Use the placeId with get_business_details for more complete data.
Why does enrichment cost more?
search_businesses_with_emails requires an additional page visit per business to extract phone and website, which costs more compute.
How do I get a placeId?
Run search_businesses first — each result includes a placeId field.
Support
For issues or feature requests: Apify Issues
For custom integrations: contact via Apify Store profile