📩📍 Google Maps Email Extractor Pro
Pricing
from $1.35 / 1,000 results
📩📍 Google Maps Email Extractor Pro
Extract verified emails, phones, and tech stacks from Google Maps businesses. Multi-API fallback chain, DNS/MX validation, confidence scoring, MCP-ready metadata. 3 modes. No paid API keys required for core extraction.
Pricing
from $1.35 / 1,000 results
Rating
0.0
(0)
Developer
Virtual Footprint LLC
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Share
Google Maps Email Extractor Pro
Extract verified emails, phones, tech stacks, and confidence-scored business intelligence from Google Maps at scale. Multi-API fallback chain, DNS/MX email validation, and MCP-ready
providerHealthmetadata on every result.
Why This Actor Is Better
This actor is engineered to outperform every Google Maps email extractor on the Apify Store on reliability, data completeness, output quality, and price.
Competitor comparison
| Feature | This Actor | Google Maps Scraper (top free) | Local Lead Scraper | Outscraper |
|---|---|---|---|---|
| Email extraction | ✅ | ❌ | ✅ | ✅ |
| DNS/MX email validation | ✅ open-source | ❌ | ❌ paid add-on | ❌ |
| Tech stack detection | ✅ 16 fingerprints | ❌ | ❌ | ❌ |
| Confidence score (0-1) | ✅ every result | ❌ | ❌ | ❌ |
| Source attribution | ✅ per-field | ❌ | partial | partial |
| Provider fallback chain | ✅ Playwright→HTTP | ❌ | ❌ | ❌ |
| Cache (KVS) | ✅ 24h TTL | ❌ | ❌ | ❌ |
| MCP-ready metadata | ✅ providerHealth | ❌ | ❌ | ❌ |
| Optional Hunter.io / Clearbit | ✅ user keys | ❌ | ❌ | ❌ |
| Price / 1K results | $1.35 | free (rate-limited) | ~$2.50 | ~$3.00 |
Key Features
- 🛡️ Multi-API fallback chain — Playwright primary scraper with automatic HTTP fallback. Never fails silently.
- ✉️ Email extraction + validation — regex extraction from business websites + open-source DNS/MX validation (no paid API required).
- 🧪 Tech stack detection — 16 fingerprints (Cloudflare, React, WordPress, Shopify, Wix, Magento, GA, GTM, etc.).
- 📊 Confidence scoring — every result gets a 0.0–1.0 score so you can filter noise.
- 🔗 Source attribution — know exactly which provider contributed each field (
google_maps,website_scraper,dns_validator,hunter_io,clearbit). - ⚡ Cache-first mode —
fast_lookuphits the Apify KVS cache for <800ms responses. - 🤖 MCP-ready — every result carries
providerHealth{}so MCP agents can route around failed providers. - 🔌 Optional paid enrichment — drop in
HUNTER_API_KEY/CLEARBIT_API_KEYenv vars for higher match rates. Disabled by default. - 💰 Transparent PPE pricing — pay only for successful results, no subscription.
Architecture
flowchart TDA[Input: queries[] + mode] --> B{Cache hit?}B -- yes --> C[Return cached base results]B -- no --> D[Primary: Google Maps Playwright scraper]D -- fails --> E[Fallback: Google Maps HTTP search]D -- ok --> F[Parse business listings]E --> FF --> G[Parallel website contact scraper]G --> H[Enrichment layer]H --> H1[DNS/MX email validation]H --> H2[Tech stack fingerprinting]H --> H3[Social profile extraction]H --> H4[Optional: Hunter.io / Clearbit]H1 --> I[Confidence scoring + source attribution]H2 --> IH3 --> IH4 --> II --> J[Progressive dataset push]J --> K[Webhook + MCP-ready metadata]C --> K
Data flow: Input → Cache check → Primary scraper (fallback on failure) → Parallel website enrichment → DNS/MX validation → Tech stack detection → Optional paid enrichment → Confidence scoring → Progressive dataset push → Webhook delivery.
Every result includes providerHealth{} tracking per-provider status, latency, and errors — making this actor safe to call from MCP agents that need to route around failures.
Modes
| Mode | Description | Target latency | Use case |
|---|---|---|---|
fast_lookup | Cache-first, base results only | <800ms cached | Quick lookups, deduplication |
enrich | Full multi-provider enrichment | ~3-8s/result | Lead generation, sales enrichment |
batch | Queue-based, full enrichment, per-item isolation | varies | Large query lists (100+ queries) |
Input
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
mode | string | — | enrich | fast_lookup | enrich | batch |
queries | array | ✅ | ["restaurants in New York"] | Search queries or business names |
maxResults | integer | — | 25 | Max listings per query (1–1000) |
extractEmails | boolean | — | true | Enable email extraction from websites |
verifyEmails | boolean | — | false | Validate emails via open-source MX/DNS (~3s/email) |
extractPhones | boolean | — | true | Extract phone numbers |
extractSocialMedia | boolean | — | true | Extract Facebook/Instagram/Twitter/etc. links |
includeTechStack | boolean | — | true | Detect website technologies |
includeReviews | boolean | — | true | Include rating + review count |
language | string | — | en | Search language code |
country | string | — | us | Search country code |
webhookUrl | string | — | — | Webhook for completion notification |
Example input
{"mode": "enrich","queries": ["plumbers in Austin TX", "dentists in Miami FL"],"maxResults": 50,"verifyEmails": true,"includeTechStack": true,"webhookUrl": "https://your-app.com/webhook"}
Output
Results are stored in the Apify dataset as structured JSON. See .actor/output_schema.json for the canonical schema.
| Field | Type | Description |
|---|---|---|
query | string | Input query that produced this result |
name | string | Business name |
address | string | Business address |
rating | string | Average rating (e.g. "4.7") |
reviewCount | string | Number of reviews |
googleMapsUrl | string | Google Maps place URL |
website | string | null | Business website URL |
emails | array | Extracted + validated email addresses |
phones | array | Extracted phone numbers |
socialMedia | array | Social profile links |
techStack | array | Detected technologies |
companyInfo | object | null | Clearbit company data (if key provided) |
confidenceScore | number | 0.0–1.0 reliability score |
sources | array | Provider attribution (google_maps, website_scraper, dns_validator, hunter_io, clearbit) |
providerHealth | object | Per-provider status/latency/error for MCP routing |
cacheStatus | string | hit | miss | degraded |
mode | string | Execution mode used |
extractedAt | string | ISO timestamp |
Example output
{"query": "plumbers in Austin TX","name": "ABC Plumbing Co","address": "123 Main St, Austin, TX 78701","rating": "4.8","reviewCount": "342","googleMapsUrl": "https://www.google.com/maps/place/...","website": "https://abcplumbing.com","emails": ["info@abcplumbing.com", "service@abcplumbing.com"],"phones": ["+1 512-555-0100"],"socialMedia": ["facebook.com/abcplumbing", "instagram.com/abcplumbing"],"techStack": ["WordPress", "Cloudflare", "Google Analytics", "jQuery"],"confidenceScore": 0.9,"sources": ["google_maps", "website_scraper", "dns_validator"],"providerHealth": {"google_maps_playwright": {"status": "ok", "latency_ms": 4200, "error": null},"website_scraper": {"status": "ok", "latency_ms": 1800, "error": null},"dns_validator": {"status": "ok", "latency_ms": 900, "error": null}},"cacheStatus": "miss","mode": "enrich","extractedAt": "2026-06-28T23:30:00.000Z"}
Pricing
Transparent pay-per-event (PPE) pricing. You only pay for successful results.
| Plan | Price per 1K results | Savings vs. top competitor |
|---|---|---|
| Leading competitors | ~$1.82/1K | — |
| This actor (≤10K results/mo) | $1.35/1K | 26% cheaper |
| This actor (10K–100K/mo) | $1.20/1K | 34% cheaper |
| This actor (100K+/mo) | $1.00/1K | 45% cheaper |
Volume discounts apply automatically based on monthly usage. A small one-time Actor Start fee ($0.00005) applies per run. Optional enrichment events:
| Event | Price | When charged |
|---|---|---|
email_found | $0.20/1K | Per verified email with MX/DNS validation |
tech_stack_found | $0.10/1K | Per business with detected tech stack |
No monthly subscription required. No paid API keys required for core extraction.
Use Cases
- B2B lead generation — build local prospect lists with verified emails and phones
- Sales enrichment — append emails, tech stacks, and social profiles to existing account lists
- Agency prospecting — find businesses by category and city at scale for outreach campaigns
- Market research — map business density, ratings, and technology adoption by region
- CRM hygiene — update stale records with current website, contact, and tech stack data
- MCP agent workflows — call from LLM agents;
providerHealthlets agents route around failures - Competitive intelligence — track which CMS/frameworks competitors use via tech stack detection
- Local SEO audits — identify businesses missing websites or with outdated tech stacks
Integration Examples
Python (Apify SDK)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("ayeeyee/google-maps-email-extractor-pro").call(run_input={"mode": "enrich","queries": ["plumbers in Austin TX"],"maxResults": 50,"verifyEmails": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['name']}: {item['emails']} (confidence: {item['confidenceScore']})")
cURL
curl -X POST "https://api.apify.com/v2/acts/ayeeyee~google-maps-email-extractor-pro/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"enrich","queries":["dentists in Miami FL"],"maxResults":25}'
Zapier / n8n / Make.com
- Add an HTTP Request or Apify module.
- Use actor ID
ayeeyee/google-maps-email-extractor-pro. - Map your trigger output to the
queriesinput array. - Consume the dataset items in the next step.
MCP (Model Context Protocol)
This actor is MCP-ready. Register it via @apify/actors-mcp-server:
$npx -y @apify/actors-mcp-server --tools actors,ayeeyee/google-maps-email-extractor-pro
Agents can then call call-actor with the input above and use providerHealth + confidenceScore to route around failed providers.
FAQ
Q: Do I need any paid API keys?
No. Core extraction (Google Maps scraping, website email extraction, DNS/MX validation, tech stack detection) is fully open-source. Optional Hunter.io / Clearbit enrichment only runs if you set HUNTER_API_KEY / CLEARBIT_API_KEY environment variables.
Q: How accurate are the emails?
Emails are extracted via regex from business websites and optionally validated via DNS/MX records. Enable verifyEmails: true for MX validation (~3s/email). For higher match rates, provide a Hunter.io key.
Q: What's the difference between the three modes?
fast_lookup— cache-first, returns base Google Maps data in <800ms on cache hit. No enrichment.enrich— full pipeline: scrape → website contacts → email validation → tech stack → confidence score.batch— queue-based processing for large query lists with per-item error isolation.
Q: How does the fallback chain work?
If the primary Playwright scraper fails (blocked, timeout, no results), the actor automatically falls back to a lightweight HTTP search. The providerHealth field on every result shows which providers succeeded/failed and their latency.
Q: Can I call this from an LLM agent?
Yes. The actor is MCP-ready. Every result includes providerHealth{} and confidenceScore so agents can make routing decisions. Register it via @apify/actors-mcp-server.
Q: What is the cache TTL?
24 hours. Cached results in fast_lookup mode return in <800ms. Enrichment results are not cached (always fresh).
Q: Is this legal? Yes. This actor scrapes publicly available business listing data from Google Maps. See the Legal & Compliance section below.
Q: How do volume discounts work? Pricing automatically drops as your monthly usage increases: $1.35/1K (≤10K/mo) → $1.20/1K (10K–100K/mo) → $1.00/1K (100K+/mo).
Legal & Compliance
This actor scrapes publicly available business listing data from Google Maps. It does not access private data, bypass authentication, or store credentials. Users are responsible for complying with applicable data protection laws (GDPR, CCPA, etc.) and Google's Terms of Service.
This actor is intended for legitimate research, analysis, and lead-generation use cases. It must not be used for spam, harassment, or unlawful activity.
AI-DLC / Data Lifecycle
This actor follows AI-DLC principles for ethical data handling:
- Collection — Public data only; respects robots.txt and rate limits.
- Processing — In-memory normalization; no PII logging.
- Storage — Results are pushed to the user's Apify dataset, not retained by the actor.
- Usage — Designed for analysis, enrichment, and legitimate outreach.
- Disposal — No long-term caching of user data between runs (cache TTL 24h for base results only).
Enhancement Roadmap (API / MCP Integrations)
- Hunter.io / Apollo.io email enrichment MCP — higher match rates via paid email-finder APIs (optional, user keys)
- Clearbit logo/revenue enrichment — company firmographics for lead scoring (optional, user keys)
- URLbox / Browserless screenshot MCP — visual prospecting with website screenshots
- LangGraph conditional workflow — multi-step: Google Maps → LinkedIn → AI scoring (see
multi-api-orchestration-spec.md) - Vector store integration — semantic deduplication across runs
Changelog
- v2.0 — Multi-API orchestration edition: added provider fallback chain (Playwright→HTTP), MCP-ready
providerHealthmetadata, optional Hunter.io/Clearbit enrichment, 16 tech stack fingerprints, expanded FAQ, integration examples, volume pricing tiers. - v1.1 — Premium README, full output schema, AI-DLC documentation, confidence scoring, source attribution.
- v1.0 — Initial release with core scraping, structured output, confidence scoring, pay-per-event pricing.
Links
- Apify Store: https://apify.com/ayeeyee/google-maps-email-extractor-pro
- Actor ID:
jWqBubAIeaRU8pQke - Documentation: See this README
- Support: Open an issue on the actor's Apify Store page