Google Maps Business Contact Scraper MCP avatar

Google Maps Business Contact Scraper MCP

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Google Maps Business Contact Scraper MCP

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

AutomateLab

Maintained by Community

Actor 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

ToolPriceDescription
search_businesses$0.03Search Google Maps by query, returns name/address/rating/placeId
get_business_details$0.05Get phone and website for a specific placeId
search_businesses_with_emails$0.08Search + 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

FieldTypeRequiredDescription
toolstringYesOne of: search_businesses, get_business_details, search_businesses_with_emails
search_querystringFor search toolsGoogle Maps search query (e.g., "restaurants in NYC")
place_idstringFor details toolGoogle Maps place ID from a search result
max_resultsintegerNoMax 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:

FieldTypeDescription
namestringBusiness name
addressstringFull address
phonestring | nullPhone number
websitestring | nullWebsite URL
ratingnumber | nullStar rating (e.g., 4.5)
reviewsinteger | nullNumber of reviews
categorystring | nullBusiness category
placeIdstring | nullGoogle 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_results businesses (default 10)

Example: 100 searches at $0.03 each = $3.00

Tips and advanced options

  • Use placeId for details — After a search_businesses call, use the returned placeId with get_business_details to get phone and website for specific businesses
  • Batch enrichmentsearch_businesses_with_emails does this automatically, but costs more than search-only
  • Limit results — Use max_results: 5 for 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