📍 Google Maps Leads — Verified Emails · $10/1k
Pricing
$1.90 / 1,000 leads
📍 Google Maps Leads — Verified Emails · $10/1k
Scrape Google Maps for B2B leads with MX-verified emails, phone, address, hours, rating & category. Pay only per verified-email lead; closed/no-email rows are free. Cross-run dedup. Works in Claude, ChatGPT & any MCP agent.
Pricing
$1.90 / 1,000 leads
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Google Maps Leads Scraper — Verified Emails, B2B Leads (No Login)
What is Google Maps Leads Scraper?
Google Maps Leads Scraper turns any Google Maps search — "plumbers in Chicago", "dentists in Mumbai", "coffee shops in Austin TX" — into a clean list of B2B leads with business name, category, address, phone, website, rating, review count, opening hours, coordinates, and MX-verified email addresses. No Google account, no login, no API key. And the pricing model is the point: you are billed only for leads that carry at least one confirmed, deliverable email.
- Generate qualified local leads — get contactable businesses, not raw rows
- Pay only for verified emails — closed, no-website, and no-email places are always free
- Never pay twice — cross-run deduplication skips businesses you already bought
- Feed your CRM or sequencer — export as JSON, CSV, or Excel
- Automate lead research — re-run on a schedule to pull only fresh businesses
Beyond the official Google Places API — bypass the 120-results limit
The official Google Places API caps search results and Google Maps itself will only display and scrape no more than 120 places per area. This scraper drives Google Maps the way a person would — searching, scrolling, and opening each place — so it goes beyond the official API's limits and past the 120-results-per-area ceiling, then enriches each business by crawling its website for contact emails. Every email's domain is checked for live DNS MX records before the lead is ever charged, so a dead domain or a typo address never costs you anything. No datacenter-IP blocks (residential proxy by default), no login, no per-seat license.
What data does Google Maps Leads Scraper extract?
Every lead record contains these real fields:
| Field | Description |
|---|---|
🏢 name | Business name |
🏷️ category | Business category |
📍 address | Full address |
📞 phone | Phone number |
🌐 website | Business website URL |
📧 email | Best verified email address found |
✅ email_status | valid / catch_all_likely / role_based / unverified |
📇 all_emails | All emails found, each with its verification status |
⭐ rating | Google Maps star rating |
💬 review_count | Number of Google Maps reviews |
🕒 hours | Business hours by day |
🗺️ coordinates | Latitude / longitude |
🚦 business_status | OPERATIONAL / CLOSED_PERMANENTLY / etc. |
🔎 query_used | Search query that returned this business |
💳 charged | Whether this result was billed via PPE |
📊 enrichment_status | full / email_verified / no_email / closed_skipped / extraction_failed |
🆔 place_id | Google Maps place ID (used for cross-run dedup) |
🕰️ scraped_at | ISO-8601 timestamp |
How to use Google Maps Leads Scraper (5 steps)
- Add one or more Search Queries — each becomes its own search (e.g.
["plumbers in Chicago", "dentists in Mumbai"]). - Set Max Leads Per Query (default 5) to cap volume and cost per query.
- Leave Verify Emails (MX Check) on so you are only charged for deliverable leads.
- Keep Skip Permanently Closed Businesses and Deduplicate Across Runs on to avoid paying for dead or repeat businesses.
- Click Start, then export the dataset — or pull it via API/MCP.
Example input
{"searchQueries": ["coffee shops in Austin TX"],"maxLeadsPerQuery": 5,"language": "en","verifyEmails": true,"skipClosedBusinesses": true,"deduplicateAcrossRuns": true,"proxyConfig": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Example output record
{"place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4","name": "Apex Plumbing Co.","category": "Plumber","address": "412 W Monroe St, Chicago, IL 60606","phone": "+1 312-555-0182","website": "https://apexplumbingchicago.com","email": "service@apexplumbingchicago.com","email_status": "valid","all_emails": [{ "email": "service@apexplumbingchicago.com", "status": "valid", "mx_found": true, "confidence": 1.0 }],"rating": 4.7,"review_count": 312,"hours": { "Monday": "7 AM-6 PM", "Saturday": "8 AM-2 PM", "Sunday": "Closed" },"coordinates": { "lat": 41.8789, "lng": -87.6359 },"business_status": "OPERATIONAL","query_used": "plumbers in Chicago","charged": true,"enrichment_status": "email_verified","scraped_at": "2026-07-10T09:14:22.000Z"}
Every result appears in the dataset whether it was charged or not. Uncharged rows carry an enrichment_status (closed_skipped, no_email, extraction_failed) so you always know exactly why a row was free.
Use cases
- B2B outbound prospecting — build clean, geo-targeted lead lists by niche and city, equipped with verified emails.
- Local marketing agencies — pull potential clients in a vertical, prioritized by rating and review volume.
- Lead-gen resale — deliver leads you can stand behind, since every email cleared an MX check.
- Market research — map business density, category mix, and rating profiles across regions using the coordinates and review fields.
- CRM enrichment — refresh phone, website, and email data for local accounts.
- Franchise / competitor monitoring — track locations, ratings, and review counts across markets.
FAQ
How do you go past Google's 120-results limit?
A plain Google Maps search screen only exposes about 120 places before the scroll ends. This scraper runs each query as its own search and drives the map like a real user, so across queries you can pull far more than a single map screen would show. Use several distinct, local queries for the widest coverage.
When am I charged?
Only when a lead has at least one email that passes DNS MX verification (enrichment_status: email_verified). Permanently closed businesses, businesses with no website, businesses with no extractable email, emails that fail MX, and any place already seen in a previous run are all free. The charge event is lead-verified at $0.01 per verified lead ($10 per 1,000).
Do you actually verify the emails?
Yes — regex-harvested strings are not leads. Each candidate email's domain is queried for DNS MX records; addresses on dead domains or NXDOMAIN are marked invalid and never charged. Emails are also scored by relevance to the business domain, and the best one is surfaced in email, with the full ranked list in all_emails.
Does it need a login or API key?
No. It reads only public Google Maps and public business-website data through Apify's residential proxy. No Google account, no cookies, no third-party data API.
Can I use it inside an AI agent?
Yes — it is exposed as an MCP tool. See below.
Use in Claude, ChatGPT & any MCP agent
This actor is exposed as a Model Context Protocol (MCP) tool, so AI agents can pull verified local leads on demand:
https://mcp.apify.com/?tools=themineworks/maps-leads
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/maps-leads').call({searchQueries: ['coffee shops in Austin TX'],maxLeadsPerQuery: 5,verifyEmails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((i) => !i._type));
Related lead-generation actors (they chain together)
Google Maps Leads Scraper is the top of a pipeline:
- maps-leads (this actor) — find businesses + verified emails from a Google Maps search.
- Website Contact Scraper — take the websites you collected and dig out more emails, phones, and social profiles.
- Email Verifier & Validator — run a full MX + SMTP check on every address before you send.
- B2B Leads Finder — add named decision-makers (email, LinkedIn, phone) behind each company.
Typical flow: maps-leads → website-contact-finder → email-verifier-validator.