
Google Maps Extractor MCP
β 1from dppalukuri
AI-powered lead generation from Google Maps. Search businesses, enrich with emails/phones/socials, score leads 0-100, export CSV. Free alternative to Apollo.io. No API keys required.
Google Maps Extractor MCP
AI-powered lead generation from Google Maps. Search businesses, enrich with emails/phones/socials, score leads, and export to CSV -- all from your AI agent.
Not just a scraper. A complete lead gen pipeline that replaces $200/month tools like Apollo and Hunter.io.
Why This Tool?
| Feature | This Tool | Apollo.io | Hunter.io | Outscraper |
|---|---|---|---|---|
| Free to use | Yes | $49/mo | $49/mo | Pay-per-row |
| MCP server (for AI agents) | Yes | No | No | No |
| Email discovery | Yes | Yes | Yes | No |
| Social links | Yes | Limited | No | No |
| Tech stack detection | Yes | No | No | No |
| Lead scoring | Yes | Yes | No | No |
| Google Maps search | Yes | No | No | Yes |
| Cross-platform (SERP + LinkedIn) | Yes | Partial | No | No |
| CSV/JSON export | Yes | Yes | Yes | Yes |
| No API key needed | Yes | No | No | No |
How It Works
Google Maps search
--> Detail extraction (phone, website, address, rating)
--> Website enrichment (emails, socials, tech stack)
--> SERP ranking check (optional)
--> LinkedIn company lookup (optional)
--> Lead scoring (0-100)
--> Export CSV/JSONOne command to your AI agent:
"Find me 20 dental clinics in Dubai with their emails and phone numbers, export as CSV"
Tools
search_businesses
Quick Google Maps search. Returns name, rating, address, category.
{"query": "restaurants", "location": "Dubai Marina", "max_results": 20}find_leads (the main tool)
Search + enrich + score. Returns emails, phones, socials, tech stack, lead score.
{"query": "real estate agencies", "location": "Miami", "max_results": 20, "enrich": true}Example output:
{
"leads": [
{
"name": "Sunshine Realty Group",
"lead_score": 85,
"rating": 4.8,
"review_count": 127,
"phone": "+1 (305) 555-0123",
"website": "https://sunshinerealty.com",
"emails": ["john.smith@sunshinerealty.com", "info@sunshinerealty.com"],
"social_links": {
"linkedin": "https://linkedin.com/company/sunshine-realty",
"instagram": "https://instagram.com/sunshinerealty",
"facebook": "https://facebook.com/SunshineRealtyMiami"
},
"tech_stack": ["WordPress", "Google Analytics", "HubSpot"],
"address": "1234 Brickell Ave, Miami, FL 33131",
"maps_url": "https://maps.google.com/..."
}
],
"count": 20,
"avg_score": 62.4,
"enriched": true
}generate_lead_report
Full pipeline with optional SERP ranking + LinkedIn company data.
{
"query": "plumbers",
"location": "London",
"max_results": 15,
"check_seo": true,
"check_linkedin": false
}get_business_details
Deep-dive on a single business.
{"maps_url": "https://maps.google.com/maps/place/..."}get_reviews
Customer reviews for sentiment analysis.
{"maps_url": "...", "max_reviews": 50, "sort_by": "newest"}export_leads
Export last results to CSV or JSON file.
{"format": "csv"}CSV columns: lead_score, name, category, rating, review_count, phone, email, website, address, linkedin, facebook, instagram, twitter, tech_stack
Lead Scoring
Every lead gets a score from 0-100:
| Signal | Points |
|---|---|
| Personal email (john.doe@...) | 25 |
| Any email | 15 |
| Phone number | 15 |
| Website | 10 |
| Social media links (5 each) | max 15 |
| Rating >= 4.0 | 10 |
| 50+ reviews | 10 |
| Has address | 5 |
Leads are sorted by score -- highest quality first.
Website Enrichment
When enrich=true, the tool visits each business website and extracts:
- Emails: From homepage + /contact + /about pages. Ranked by quality (personal > role-based > generic). Filters out noreply@, postmaster@, etc.
- Social links: LinkedIn, Facebook, Instagram, Twitter/X, YouTube, TikTok
- Phone numbers: From
tel:links and visible text - Tech stack: WordPress, Shopify, Wix, React, HubSpot, Intercom, Zendesk, Google Analytics, and more
Results are cached for 24 hours to avoid re-scraping.
Cross-Server Integration
When sibling MCP servers from the BlackHole suite are installed:
- SERP Scraper: Checks if leads rank on Google for the search query
- LinkedIn Scraper: Pulls company data (size, industry, specialties)
Both are optional -- works standalone without them.
Performance
- Browser geolocation auto-matched to 30+ cities worldwide
- Concurrent enrichment (3 parallel websites)
- Retry with exponential backoff on failures
- 24-hour result cache to avoid redundant scraping
- Headless browser with stealth anti-detection
License
MIT
pip install "mcp[cli]" playwright playwright-stealth
playwright install chromiumQuick Start
As MCP Server (Claude Desktop, Cursor, etc.)
Add to your MCP client config:
{
"mcpServers": {
"google-maps": {
"command": "python",
"args": ["/path/to/mcp-servers/google-maps/server.py"]
}
}
}No API keys needed. Install dependencies:
pip install "mcp[cli]" playwright playwright-stealth
playwright install chromiumWith Docker
docker build -t google-maps-mcp .
docker run google-maps-mcpNo common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.