Google Maps Lead Finder (Filters & Executive Emails)
Pricing
from $0.005 / actor start
Google Maps Lead Finder (Filters & Executive Emails)
Scrape Google Maps by location + keyword, filter with static rules (rating, reviews, category, contact requirements), then enrich with business emails and decision-maker contacts (name, title, MX-validated email, LinkedIn).
Pricing
from $0.005 / actor start
Rating
5.0
(4)
Developer
AM
Maintained by CommunityActor stats
5
Bookmarked
12
Total users
9
Monthly active users
3 days ago
Last modified
Categories
Share
Google Maps Lead Finder
Scrape Google Maps by location + keyword, filter with static rules (no AI, no surprises), and optionally enrich each result with business emails and decision-maker contacts (CEO, Founder, Partner, Director, …).
Built for B2B prospecting where you know exactly what you want and don't want to pay LLM rates on every row to find out.
What you get
For every business that passes your filters:
| Field | Source |
|---|---|
name, address, lat, lng | Google Maps |
phone, website | Google Maps |
rating, review_count | Google Maps |
category, categories | Google Maps |
place_id, cid, timezone | Google Maps |
emails, best_email | Enrichment (visits website) |
executives[] — name, title, email_high, email_high_mx_valid, email_low, email_pattern, direct_phone, linkedin | Enrichment (team/about pages) |
domain_mx_valid | DNS MX check |
Filters (all static, all optional)
- Rating — minimum stars
- Reviews — min and/or max (handy for excluding chains)
- Website — require / exclude / any
- Phone — require
- Email — require (applied after enrichment)
- Include categories — substring match against Google's category strings
- Reject categories — exact category exclusion
- Reject keywords — substring exclusion against name or category
- Country code — naive token check against the address
No LLM involved at any stage. What you ask for is what runs.
Pricing — pay only for outcomes
| Event | Price | When charged |
|---|---|---|
| Actor start | $0.005 | Once per run |
| Place scraped (post-filter) | $0.003 | Per place that passes your filter — dropped rows are free |
| Business email found | $0.002 | Only when the site yielded ≥1 valid email |
| Executive found | $0.030 | Per executive name+title detected |
| Executive email MX-validated | $0.030 | Only when the exec's email passes a live MX check |
Worked example — 1,000 dental clinics in Texas
- 1,000 places × $0.003 = $3.00
- ~500 with extractable email × $0.002 = $1.00
- ~270 places with execs, ~700 execs total × $0.030 = $21.00
- ~700 MX-valid exec emails × $0.030 = $21.00
- Start fee: $0.005
- Total ≈ $46.00 — about $0.046 per fully-enriched lead, or ~$0.06 per verified decision-maker contact
Comparison with Apify's market-leader (compass crawler-google-places at Free-tier list prices):
- Scrape: $4/1k vs $3/1k here
- Executive enrichment: $100/1k vs $30/1k here
- Email verification: $100/1k vs $30/1k here
- Same 1k-dental-clinic workload on compass costs ≈ $144 → this actor saves ~68% on Free-tier prices.
Buying verified executive emails from Apollo/ZoomInfo typically runs $1+ per contact; this actor is ~16× cheaper.
Input — minimal
{"location": "Austin, TX","query": "dentist","min_rating": 4.0,"min_reviews": 10,"website_filter": "with","enrich_emails": true,"enrich_executives": true}
Input — full reference
See .actor/input_schema.json for every field with descriptions.
How the scrape works
- Geocode the location string via OpenStreetMap Nominatim → polygon.
- Grid the polygon into ~5 km cells (configurable).
- For each cell: hit Google Maps' raw
tbm=mapendpoint, paginate 20 results at a time until the API stops returning new places, parse the JSPB tuple into structured fields. - Subdivide any cell that saturates (≥18 results inside the cell's own bounds) into 4 quadrants — drills into dense urban areas.
- Dedup by Google's
place_idacross the whole run.
UA rotation, jittered delays, captcha detection, and 429/5xx retry are all built in. Use Apify Proxy for production runs (the default).
Email enrichment
- Visits the homepage, then
/contact, then/aboutonly if the homepage was empty. - Regex-extracts emails, decoding HTML entities and
mailto:links. - Filters role-mailbox junk (
noreply@,sentry@, image-filename "@" matches) and platform-CDN leakage (wixpress.com,googleapis.com, …). - Sorts results so role mailboxes (
contact@,info@,sales@, …) come first.
Executive enrichment
- Discovers team/leadership pages from the homepage navigation (
/team,/leadership,/our-attorneys,/who-we-are, etc.). - Scans for title regex hits (CEO, CTO, Founder, Partner, President, Director, Head of …, Managing Partner, …) and pairs each with the nearest capitalized name in the preceding 80 characters.
- For each named executive:
- Verified email: searches the page for an email whose local-part matches the name (e.g.
jane.doe@,jdoe@). - Proximity email: nearest valid email within 250 chars if no verified match.
- Pattern inference: votes the company's email convention across verified pairs (
first.last,flast,first, …) and derives an email for execs we couldn't directly match. - MX validation: runs a live DNS check on every derived email; you only pay the $0.015 event when MX returns yes.
- Verified email: searches the page for an email whose local-part matches the name (e.g.
- Pulls a LinkedIn URL and "Direct phone:" labeled number from the same proximity window when present.
No GPT involved. Trade-off vs an LLM-validated approach: more false positives from testimonial/partner sections — the title-regex gate filters most, but expect 5–10% noise on busy sites. Buy the executive event only when that's an acceptable cost.
Limitations
- Google Maps caps at ~120 results per viewport; we work around it by gridding and subdividing, but extremely dense urban areas may still miss some places at the bottom of the long tail.
- Nominatim has a 1 req/sec TOS — we make one call per actor run, well within bounds.
- Captcha responses cancel the run early. With Apify Proxy in residential mode, this almost never happens.
- No JavaScript rendering on enrichment pages — sites that hide emails behind JS (rare) won't yield contacts.