LeadProof — Google Maps Email Scraper
Pricing
from $25.00 / 1,000 verified contacts
LeadProof — Google Maps Email Scraper
Turn a Google Maps search into verified business emails. Crawl, extract, and verify deliverability — pay only per verified-valid contact.
Pricing
from $25.00 / 1,000 verified contacts
Rating
0.0
(0)
Developer
Danny Pfledderer
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
LeadProof — Google Maps Email Scraper with Verified Deliverability
Paste a Google Maps search (e.g. "dentists in Miami") or a list of business websites, and get back verified-deliverable contact emails. Maps scraping, site crawling, and email verification run as one pipeline — no separate Maps scraper to wire up first.
You pay only when we confirm the email is actually deliverable.
The pricing promise
One charge per verified-deliverable contact (verified_contact pay-per-event). No charge for:
- pages crawled or businesses processed
- duplicate emails (we deduplicate per business automatically)
- emails the verifier couldn't confirm as deliverable (
risky,invalid,unknown) - vendor / placeholder / SaaS-tooling addresses (filtered before they reach your dataset)
- off-domain emails we couldn't confirm actually belong to the business
In plain English: if we don't confirm it's a real, deliverable email at this business, you don't pay for it.
In our testing
In one 69-business sample from Fort Lauderdale, FL (restaurants, spas, salons, dental, local services), compared to a leading existing contact-info actor on the Apify Store:
- ~2× businesses with a found email
- 3× verified named human contacts (22 vs. 8)
- ~19% lower cost per verified contact
- 0 duplicate emails per business (vs. ~0.9 duplicates/business in the comparison)
Both tools were run on the identical business list and scored the same way; results vary by region and vertical. These numbers describe where LeadProof performs well today on the SMB segment we target — not a guarantee for every input.
Where it's strongest
LeadProof is built for the local-SMB long tail — the segment where Google Maps has dense, useful listings and where contact emails actually live on the public website:
- Restaurants, cafes, bars
- Salons, spas, barbershops
- Dental, chiropractic, massage, wellness
- Gyms, studios, fitness
- Local trades (HVAC, plumbing, electricians, landscaping)
- Independent retail and services
We crawl the actual business site (homepage, /contact, /about, /team) and decode common obfuscation patterns (Cloudflare email-protection, "info [at] example") — which is where most SMB B2B contact emails actually live.
Where it's a weaker fit
Large professional firms — enterprise law, big-4 accounting, top-tier consultancy, big medical groups — often gate contacts behind submission forms and don't publish email addresses publicly. LeadProof, like any email scraper, is not the right tool for that segment. We tell you upfront so you can pick the right tool for your use case instead of being disappointed.
How it works
- Input a Google Maps search (
"dentists in Miami") or a list of websites you already have. - Maps search runs against
compass/crawler-google-placesto turn queries into real businesses with names, categories, and websites. - Crawl + extract. For each business site we visit the homepage and likely contact pages, decode obfuscated addresses, and filter out SaaS/vendor/placeholder emails so they never reach your dataset.
- Verify. Each remaining email runs the gauntlet — syntax → role → disposable → MX → catch-all probe → MillionVerifier API call (with retries on transient failures). Only emails confirmed deliverable trigger a charge.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchTerms | string[] | – | Google Maps queries, e.g. ["dentists in Miami"]. Include city/region for accurate geolocation. |
startUrls | string[] | – | Business website URLs to enrich directly. Use this when you already have a list. |
maxResults | integer | 100 | Total businesses to process this run. Also caps the Maps source so you don't over-pay for places you won't use. |
verifierApiKey | string (secret) | – | Optional. Bring your own MillionVerifier key — see below. |
maxVerifications | integer | 1000 | Cost-guard cap on verification API calls per run. Ignored when you bring your own key. |
At least one of searchTerms or startUrls is required. Both can be supplied — Maps results are layered on top of startUrls.
Output
Every business produces at least one dataset row, so failures never silently vanish. All rows share the same schema:
{"business_name": "Mark Hamburger Law","website": "https://markhamburgerlaw.com","domain": "markhamburgerlaw.com","category": "Attorney","status": "ok","error_detail": null,"email": "mark@markhamburgerlaw.com","source_page": "https://markhamburgerlaw.com/contact","found_via": "mailto","bucket": "valid","confidence": 95,"reason": "api_deliverable","match": "same_domain","role": false,"disposable": false,"mx_found": true,"catch_all": false,"charged": true}
status — what happened to this business:
ok— contact row; an email was extracted and verification ranno_website— business had no website to crawl (common from Maps results)unreachable— DNS / SSL / connection failurehttp_error— site responded but with HTTP ≥ 400 (code inerror_detail)no_emails_found— site crawled fine but yielded no usable emailsverification_skipped_cap— email was found butmaxVerificationswas reached; re-run with a higher cap or your own key
bucket — the verification verdict for contact rows:
valid— confirmed deliverable → chargedrisky— catch-all domain, or off-domain valid lead — not chargedinvalid— confirmed not deliverable — not chargedunknown— verifier inconclusive or transient outage — not charged
match — relationship of the email's domain to the business's website:
same_domain— strongest signal (email at the business's own domain)free_provider— strong signal (gmail / yahoo / outlook etc., common for SMBs)off_domain— different domain; verified-valid off-domain leads are demoted toriskyand not charged (wrong-owner protection)
To pull just the billable, verified contacts: WHERE status = 'ok' AND bucket = 'valid'.
Bring your own MillionVerifier key (optional)
By default, leave verifierApiKey empty: LeadProof uses our verification key and the verification cost is already factored into the per-verified-contact price. No second account, no setup.
For power users who'd rather use their own MillionVerifier credits:
- Paste your key into
verifierApiKey. It's stored as a secret — masked in the Console, never logged, never echoed into the dataset. - The
maxVerificationscap is automatically disabled when you supply your own key — you're paying for the credits.
Tips
- Include the city, region, or neighborhood in Maps search terms for accurate geolocation (
"dentists in Miami Beach", not just"dentists"). - Mix
searchTermsandstartUrlswhen you have both a Maps query and a hand-picked list — they're combined. - Re-run with a higher
maxVerificationsif you seeverification_skipped_caprows — those leads were crawled but not verified yet. - Failures get an explanation row in the dataset (
statusanderror_detail), so you always know what happened — never a silent drop. The difference between "the actor returned 47 contacts" and "the actor returned 47 contacts and explained the other 23 attempts."