Google Maps Business Leads Scraper (Emails, Phones & Socials)
Pricing
from $17.00 / 1,000 results
Google Maps Business Leads Scraper (Emails, Phones & Socials)
Turn Google Maps searches into contact-enriched business leads. Get name, category, address, phone, website, rating and review count, plus emails, social profiles and extra phones pulled from each business website. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Google Maps Business Leads Scraper (Emails, Phones & Socials)
Here is one real result, with every field the actor returns:
{"businessName": "Icon Dental","category": "Dentist","imageUrl": "https://lh3.googleusercontent.com/gps-cs-s/AHRPTWmBjdvxLNYNK-pCSwRhPMe4VSkEh5fPeEo37bJ_7b5FHtl1olfXM1lF9tHfOhLyPML8TxpmgT0Fi-XEXJ5ZH2FTXqBmZ4UWn2c4bE5oQVPBf4eRsGBY4EgvRfvO_8As8gA6Y3M=w86-h122-k-no","rating": 4.6,"reviewCount": 46,"hoursStatus": "Closed · Opens 8 AM","todayHours": "8 AM–4 PM","openNow": false,"permanentlyClosed": false,"phone": "(720) 645-2153","phoneInternational": "+17206452153","website": "https://icondentaldenver.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp-listing","domain": "icondentaldenver.com","email": "info@icondentaldenver.com","emails": ["info@icondentaldenver.com"],"websitePhone": "7206452153","facebook": "https://www.facebook.com/IconDentalDenver","instagram": "https://www.instagram.com/icon_dental_denver","linkedin": null,"twitter": null,"youtube": null,"contactPage": "https://icondentaldenver.com/contact-us/","enrichedFromWebsite": true,"fullAddress": "Icon Dental, 1425 Market St Ste. 100, Denver, CO 80202","street": "1425 Market St Ste. 100","neighborhood": "Central","city": "Denver","state": "Colorado","postalCode": "80202","countryCode": "US","latitude": 39.748563399999995,"longitude": -105.0004756,"placeId": "ChIJDYsdqcV4bIcRd3HhDPOgrpM","cid": "10641619935276659063","googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJDYsdqcV4bIcRd3HhDPOgrpM","searchQuery": "dentist Denver, CO","aiProfileSummary": "Icon Dental is a dental practice located in Denver, Colorado, offering a range of dental services to meet the needs of its patients. With a strong focus on patient care, they aim to provide a comfortable and professional environment for dental health.","aiLeadScore": 75,"aiLeadTier": "warm","source": "Google Maps","observedAt": "2026-08-14T08:02:41.433Z","error": null}
The most complete Google Maps business leads scraper available. It returns every field a Maps listing exposes (name, category, rating, hours, phone, coordinates), then enriches each lead from the business website with emails, extra phones and social profiles, plus optional AI add-ons for a profile summary and a 0 to 100 lead score, so you get outreach-ready contacts, not just map pins.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor runs each search query against Google Maps in the region and language you choose, paginates through the results, and writes one normalized record per business to the run's dataset. For every business with a website, it fetches the site and pulls public emails, a validated phone from tel: links, and Facebook, Instagram, LinkedIn, Twitter and YouTube profiles, so each lead is contact-ready. Missing source values are returned as null, never invented.
Two optional AI add-ons run only on paid Apify plans and only charge when they produce output: aiProfileSummary writes a short business description, and aiLeadScore scores the business 0 to 100 with a hot, warm or cold tier for B2B outreach.
Quickstart
Open the actor, paste this into the input, and press Run. It returns dentist leads in Denver with website enrichment and both AI add-ons.
{"searchQueries": ["dentist"],"location": "Denver, CO","maxLeads": 2,"region": "us","language": "en","withAiProfileSummary": true,"withAiLeadScore": true}
You can also paste Google Maps search URLs into searchQueries to run them directly. Every field except a query is optional; the AI add-ons are off by default and require a paid plan.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | string[] | no | ["dentist"] | One or more things to find, for example plumber, coffee shop, law firm. Each is combined with location. You can also paste Google Maps search URLs to run them directly. |
location | string | no | Austin, TX | City, area or region to search in, for example Miami FL. Appended to each query. |
maxLeads | integer | no | 10 | Maximum leads to collect across all searches. Google returns roughly 100 to 120 results per search. |
language | enum | no | en | Interface language for results. One of en, es, pt, fr, de, it, nl. |
region | enum | no | us | Country context and in-country connection. One of us, gb, ca, au, mx, br, ar, co, cl, es, fr, de. |
enrichContacts | boolean | no | false | Paid add-on. For each result without an email, try to find a public business contact email and a contact name. Charged per attempt, plus extra only when an email is found. |
enrichContactsMax | integer | no | 50 | Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3. |
withAiProfileSummary | boolean | no | false | Paid add-on. Adds an AI-written 1 to 2 sentence business profile. Charged per business only when a summary is produced. |
withAiLeadScore | boolean | no | false | Paid add-on. Scores each business 0 to 100 as a B2B lead with a hot, warm or cold tier. Charged per business only when a score is produced. |
Output reference
One dataset item per business. Types: string, number, boolean, string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
businessName | string | Business name as shown on Google Maps. |
category | string | Primary Google Maps category, for example Dentist. |
imageUrl | string | Representative storefront or logo photo from the Maps card. |
rating | number | Average star rating, or null if unrated. |
reviewCount | number | Number of Google reviews. |
hoursStatus | string | Current open or closed status text, for example Closed. |
todayHours | string | Today's opening hours. |
openNow | boolean | true when open now, false when closed, null if unknown. |
permanentlyClosed | boolean | true when the listing is permanently closed. |
phone | string | Business phone in national format. |
phoneInternational | string | Phone in E.164 international format. |
website | string | Business website URL from the listing. |
domain | string | Bare domain of the website. |
email | string | First public email found on the website, or null. |
emails | string[] | All public emails found on the website (up to 10), or null. |
websitePhone | string | Phone parsed from a tel: link on the website, or null. |
facebook | string | Facebook profile URL from the website, or null. |
instagram | string | Instagram profile URL from the website, or null. |
linkedin | string | LinkedIn company or profile URL, or null. |
twitter | string | Twitter or X profile URL, or null. |
youtube | string | YouTube channel URL, or null. |
contactPage | string | Contact or about page URL on the business site, or null. |
enrichedFromWebsite | boolean | true when the website was reachable and parsed. |
fullAddress | string | Full address as displayed on Maps. |
street | string | Street line of the address. |
neighborhood | string | Neighborhood, or null. |
city | string | City. |
state | string | State or region. |
postalCode | string | Postal code. |
countryCode | string | Two-letter country code. |
latitude | number | Latitude of the business. |
longitude | number | Longitude of the business. |
placeId | string | Google Place ID. |
cid | string | Google customer ID (CID) for the place. |
googleMapsUrl | string | Direct Google Maps link to the place. |
searchQuery | string | The resolved query that produced this lead. |
aiProfileSummary | string | AI-written business profile (add-on), else null. |
aiLeadScore | number | AI B2B lead score 0 to 100 (add-on), else null. |
aiLeadTier | string | AI lead tier hot, warm or cold (add-on), else null. |
source | string | Always Google Maps. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run, a single item with a populated error field is written instead. |
Example output record
Real record from a live run (input {"searchQueries":["dentist"],"location":"Denver, CO","maxLeads":2,"withAiProfileSummary":true,"withAiLeadScore":true}):
{"businessName": "Icon Dental","category": "Dentist","rating": 4.6,"reviewCount": 46,"hoursStatus": "Closed · Opens 8 AM","todayHours": "8 AM–4 PM","openNow": false,"phone": "(720) 645-2153","phoneInternational": "+17206452153","website": "https://icondentaldenver.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp-listing","domain": "icondentaldenver.com","email": "info@icondentaldenver.com","emails": ["info@icondentaldenver.com"],"websitePhone": "7206452153","facebook": "https://www.facebook.com/IconDentalDenver","instagram": "https://www.instagram.com/icon_dental_denver","contactPage": "https://icondentaldenver.com/contact-us/","enrichedFromWebsite": true,"fullAddress": "Icon Dental, 1425 Market St Ste. 100, Denver, CO 80202","city": "Denver","state": "Colorado","postalCode": "80202","countryCode": "US","latitude": 39.748563399999995,"longitude": -105.0004756,"placeId": "ChIJDYsdqcV4bIcRd3HhDPOgrpM","cid": "10641619935276659063","googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJDYsdqcV4bIcRd3HhDPOgrpM","searchQuery": "dentist Denver, CO","aiProfileSummary": "Icon Dental is a dental practice located in Denver, Colorado, offering a range of dental services to meet the needs of its patients.","aiLeadScore": 75,"aiLeadTier": "warm","source": "Google Maps","observedAt": "2026-08-14T08:02:41.433Z","error": null}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-maps-business-leads-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["dentist"],"location":"Denver, CO","maxLeads":25}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~google-maps-business-leads-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"searchQueries":["coffee shop","law firm"],"location":"Miami, FL","maxLeads":200,"region":"us"}'
Apify CLI:
apify call scrapers_lat/google-maps-business-leads-scraper \--input '{"searchQueries":["plumber"],"location":"Austin, TX","maxLeads":50}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per business returned (
resultevent). See the pricing tab for the current per-result price. - Paid add-ons. The contact search, AI profile summary and AI lead score are opt-in and priced separately. Each charges only when it produces output; the contact add-on charges per attempt plus extra only when an email is found.
- No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 results per run, and the contact add-on to 3 enrichments. Upgrade for higher
maxLeads.
FAQ and troubleshooting
A run returned 0 records. Why? The query and location matched nothing, or Google returned no map results. Broaden the query or location. Zero-result runs are not charged.
Why is email null for some leads?
The business had no website, the site was unreachable, or it published no public email. Website enrichment only reports what is actually on the page; missing values stay null.
Can I search a specific area precisely?
Yes. Paste a Google Maps search URL into searchQueries and it is used as-is, so you control the exact map viewport and query.
Why did the AI fields come back null?
The AI add-ons require a paid Apify plan and are off by default. Enable withAiProfileSummary or withAiLeadScore on a paid plan. They charge only when output is produced.
How many results can I get per search? Google practically caps a single text query near 120 to 260 results. For more, use several narrower queries or locations.
Is this an official Google tool? No. This actor is independent and not affiliated with Google. It reads only publicly visible Google Maps results and public business websites.
Related scrapers
- Google Maps Scraper: Full Google Maps place details at scale.
- Google Maps Reviews Scraper: Reviews for any Google Maps place.
- Cybo Business Leads Scraper: Global business directory leads with contacts.
- Overpass OSM Business Leads Scraper: Business leads from OpenStreetMap.
- Contact Enrichment Tool: Find emails and contacts for a company domain.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with Google. Accesses only publicly available Google Maps results and public business websites.
