Google Maps Email Extractor MCP avatar

Google Maps Email Extractor MCP

Pricing

Pay per usage

Go to Apify Store
Google Maps Email Extractor MCP

Google Maps Email Extractor MCP

Extract business emails from Google Maps searches — find businesses by location/category, scrape their websites, and extract contact emails. Built as MCP standby actor.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

AutomateLab

AutomateLab

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

11 hours ago

Last modified

Share

Extract business email addresses from Google Maps searches — find businesses by location and category, visit their websites, and pull out contact emails. Built as an Apify MCP (Model Context Protocol) standby actor for AI agents and LLM integrations.

Apify Store Listing

What does this actor do?

Two-step pipeline: first search Google Maps for businesses by query and location, then scrape each business website for contact email addresses. Returns structured JSON with business info and any emails found.

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?

  • B2B lead generation — Build prospect lists with verified contact emails by category and territory
  • Sales outreach — Find decision-maker emails for businesses in a target market
  • Market research — Map competitor presence and extract contact infrastructure
  • Business discovery — Find all businesses of a type in a neighborhood and get their contact info
  • Due diligence — Identify contact patterns and email infrastructure for counterparty research

Tools

ToolPriceDescription
search_businesses$0.03Search Google Maps by query, returns name/address/placeId
get_business_website$0.05Get website URL for a specific Google Maps place ID
extract_emails_from_website$0.05Scrape a website and extract all contact emails
search_and_extract_emails$0.10Full pipeline: search → find website → scrape emails

How to use

MCP Protocol (AI agents)

Send a JSON-RPC POST to /mcp with:

{
"method": "tools/call",
"params": {
"name": "search_and_extract_emails",
"arguments": {
"search_query": "restaurants in Manhattan",
"max_results": 10
}
}
}

Apify Batch Mode

apify call red.cars/google-maps-email-mcp \
--input '{"tool": "search_and_extract_emails", "params": {"search_query": "manufacturers in Shenzhen", "max_results": 5}}'

JavaScript / TypeScript

const { handleRequest } = await import('./dist/main.js');
const result = await handleRequest({
toolName: 'search_and_extract_emails',
arguments: { search_query: 'plumbers in Brooklyn', max_results: 10 }
});
console.log(JSON.parse(result.content[0].text));

Input

FieldTypeRequiredDescription
toolstringYesOne of: search_businesses, get_business_website, extract_emails_from_website, search_and_extract_emails
search_querystringFor search toolsGoogle Maps search query (e.g., "restaurants in NYC")
place_idstringFor details toolGoogle Maps place ID from a search result
website_urlstringFor email extractionBusiness website URL to scrape
max_resultsintegerNoMax results to return (1-50, default 10)
max_pagesintegerNoMax sub-pages to crawl per website (1-10, default 3)

Output

search_businesses

{
"query": "restaurants in Manhattan",
"count": 5,
"businesses": [
{
"name": "Joe's Pizza",
"address": "123 Smith St, New York, NY",
"website": null,
"placeId": "ChIJ8fz2XcJZwok...",
"emails": [],
"source": "google_maps_search"
}
]
}

search_and_extract_emails

{
"query": "restaurants in Manhattan",
"count": 3,
"businesses": [
{
"name": "Joe's Pizza",
"address": "123 Smith St, New York, NY",
"website": "https://joespizza.com",
"placeId": "ChIJ8fz2XcJZwok...",
"emails": ["contact@joespizza.com", "info@joespizza.com"],
"source": "google_maps_search"
}
]
}

extract_emails_from_website

{
"website": "https://example.com",
"pages_crawled": 3,
"emails": ["contact@example.com", "jobs@example.com"],
"by_page": [
{ "page": "https://example.com", "emails": ["contact@example.com"] },
{ "page": "https://example.com/contact", "emails": ["contact@example.com", "jobs@example.com"] }
]
}

Cost estimation

Pricing is per tool call, not per result:

ToolPriceNotes
search_businesses$0.03Google Maps search only, no email extraction
get_business_website$0.05Per placeId — extract website URL only
extract_emails_from_website$0.05Website scrape, multi-page crawl
search_and_extract_emails$0.10Full pipeline, one price

Cost tip: Use search_businesses ($0.03) first to see which businesses have websites, then selectively call extract_emails_from_website ($0.05) for the ones you need.

Tips

  • search_and_extract_emails max_results=20 is the practical maximum per call — each business requires sequential website visits
  • Contact pages yield the most emails — the scraper prioritizes /contact, /about, /team pages
  • No Google API key needed — uses headless browser to scrape Google Maps directly
  • Sequential processing — websites are processed one at a time to avoid timeouts; partial results are returned on timeout

FAQ

Is this legal? Scrapes publicly available business contact information from Google Maps and business websites. Ensure your use case complies with Google's Terms of Service and applicable laws. Do not use for spam or unsolicited marketing.

Why do some businesses have no emails? Not all businesses list contact emails on their website. Some use contact forms instead. The scraper only extracts visible email addresses — it cannot submit forms.

What happens if a website blocks the scraper? The actor will skip that website and continue with the next. Use Apify proxy rotation for higher volume.

Does this need a Google API key? No. The actor uses a headless browser to scrape Google Maps directly, no API key required.

Support

For issues or feature requests: Apify Console