Google Maps Lead Scraper – Emails, Phones, Websites, Reviews
Pricing
from $3.00 / 1,000 results
Google Maps Lead Scraper – Emails, Phones, Websites, Reviews
Google Maps Lead Scraper with email extraction: search any keyword and city and get business name, email found on the website, phone, website, address, rating, reviews, opening hours, category and GPS. No API key. Export to CSV, Excel or Google Sheets for B2B lead generation and cold outreach.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Ani Björkström
Maintained by CommunityActor stats
3
Bookmarked
281
Total users
2
Monthly active users
10 days ago
Last modified
Categories
Share
The Google Maps Lead Scraper turns a Google Maps search into a B2B lead list. Type what you would type into Maps – "dentists in Los Angeles", "plumbers near 90210" – and get one row per business with name, phone, website, address, rating, review count, category, opening hours and GPS, plus the part other Google Maps scrapers skip: email addresses found on each business's own website.
- Google Maps email scraper built in. With
extractEmails(on by default) the actor opens every business website, collectsmailto:links and visible addresses, filters out placeholders and tracking domains, and gives youemailplus the fullemailslist. - No API key, no Places API bill. Runs a real browser against public Google Maps pages; no Google Cloud project needed.
- Flat rows for Google Sheets, CRMs and n8n. Every lead has the same 22 fields, ready for export to CSV/Excel or a HubSpot/Pipedrive import.
What you get
| Field | Description |
|---|---|
name, placeId | Business name and Google place ID |
email, emails | Best email found on the website, and every address found (empty when the site has none) |
phone, website | Phone number and website URL as listed on Maps |
address, plusCode, latitude, longitude | Full address, plus code and coordinates (coordinates when Maps exposes them in the listing URL) |
category, categories | Primary and all categories |
rating, reviewsCount, priceLevel | Star rating, number of reviews, $–$$$$ |
openingHours, isOpen | Hours per weekday (when published) and open-now flag |
reviews | Individual reviews (author, rating, text, date) with extractReviews |
photoUrls, mainPhotoUrl | Photo URLs with extractPhotos |
googleMapsUrl, searchQuery, scrapedAt | Source listing, the query that found it, ISO 8601 UTC timestamp |
Input
Runs with no input at all (a small default search), so a scheduled run is never empty. Realistic inputs:
Local business leads with emails
{"searchQueries": ["dentists in Los Angeles", "dental clinics in San Diego"],"maxResults": 100,"extractEmails": true,"language": "en"}
Fast directory export, no website visits
{"searchQueries": ["coffee shops in San Francisco"],"maxResults": 200,"maxScrolls": 20,"extractEmails": false,"extractReviews": true,"maxReviews": 5}
Direct Google Maps URLs (search pages or single places)
{"startUrls": [{ "url": "https://www.google.com/maps/search/plumbers+in+Austin/" },{ "url": "https://www.google.com/maps/place/Blue+Bottle+Coffee/..." }],"searchQueries": []}
| Option | Default | What it does |
|---|---|---|
searchQueries | one demo query | Searches exactly as you would type them into Google Maps |
startUrls | [] | Google Maps search-result or place URLs instead of (or as well as) queries |
maxResults | 5 | Leads per search (up to 500) – raise it once you have checked the output |
maxScrolls | 3 | How far to scroll the result list; ~20 covers most searches, 50+ for dense city centres |
extractEmails | true | Visit each website for email addresses (adds a few seconds per business) |
extractReviews, maxReviews | false, 5 | Include individual reviews per business |
extractPhotos | false | Include photo URLs |
language | en | Results language – 29 options from Spanish and German to Japanese and Arabic |
maxConcurrency | 5 | Parallel browsers; lower it if you hit memory limits with emails on |
proxyConfiguration | Apify residential | Residential proxies avoid Google's blocking; keep the default |
Output example
{"name": "The Coffee Berry SF","placeId": "0x80858135f0db680b:0x47e714bf5f0080a3","address": "1410 Lombard St, San Francisco, CA 94123, United States","phone": "+1 415-800-7073","website": "http://thecoffeeberrysf.com/","email": "hello@thecoffeeberrysf.com","emails": ["hello@thecoffeeberrysf.com"],"plusCode": "RH2G+H2 Marina District, San Francisco, CA, USA","category": "Coffee shop","categories": ["Coffee shop"],"rating": 4.9,"reviewsCount": 643,"priceLevel": null,"isOpen": true,"googleMapsUrl": "https://www.google.com/maps/place/The+Coffee+Berry+SF/...","scrapedAt": "2026-09-16T18:30:37.861Z","searchQuery": "coffee shops in San Francisco"}
Use cases
- B2B lead generation and cold outreach – sales teams and agencies build lists of local businesses with emails and phone numbers for a city or industry and push them to HubSpot, Pipedrive or Lemlist.
- Local SEO and marketing agencies – find businesses with weak ratings, few reviews or no website in a target area and pitch them your service.
- Google Maps to Google Sheets – a scheduled run keeps a spreadsheet of competitors, suppliers or partners fresh, with ratings and hours.
- Market research – analysts compare density, categories, price levels and ratings across neighbourhoods or cities.
- Recruiters and franchise developers – map every clinic, gym or restaurant of a type in a region before an expansion.
- Data enrichment for AI agents – flat, stable rows work as tool output for an LLM that qualifies leads or drafts outreach.
- Real estate and hospitality – list amenities around a property with their ratings and opening hours.
Pricing
Pay per lead delivered plus a small fixed fee per run – the current rates are in the pricing box on this page. Every business row counts as one lead whether or not an email was found; rows are only written for businesses actually scraped, so a search that returns nothing costs only the start fee. Email extraction and reviews are included in the per-lead price.
Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("nourishing_courier/google-maps-lead-scraper").call(run_input={"searchQueries": ["dentists in Los Angeles"],"maxResults": 100,"extractEmails": True,})for lead in client.dataset(run["defaultDatasetId"]).iterate_items():print(lead["name"], lead["phone"], lead["email"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('nourishing_courier/google-maps-lead-scraper').call({searchQueries: ['plumbers in Austin'],maxResults: 50,maxScrolls: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.filter((l) => l.email).length, 'leads with email');
curl
curl -X POST "https://api.apify.com/v2/acts/nourishing_courier~google-maps-lead-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQueries":["coffee shops in San Francisco"],"maxResults":20}'
n8n, Make, Zapier – use the Apify node/module, select this actor, paste an input and map name, email, phone, website to Google Sheets, HubSpot or your CRM. MCP – through the Apify MCP server an agent can request "50 dentists in Los Angeles with emails" as a tool call. Results are available as JSON, CSV, Excel, XML and RSS.
Limits and fair use
The actor scrapes what Google Maps shows an anonymous visitor: maxResults is capped at 500 per search and maxScrolls controls how much of the list is loaded. Emails come from the business's own public website – the actor visits the homepage with a 10-second timeout, reads mailto: links and visible addresses and filters out obvious placeholders; businesses without a website or without a published address return an empty list. Google may rate-limit datacenter IPs, so residential proxies are the default. You are responsible for using the data in line with Google's terms, GDPR/CCPA and anti-spam law – business contact details are public, but consent rules for outreach still apply.
FAQ
Does the Google Maps scraper extract email addresses?
Yes. That is the difference from most Google Maps scrapers: with extractEmails on, each business's website is opened and every email found is returned in emails, with the best candidate in email. Businesses with no website or no published email return an empty list.
Do I need a Google Maps API key?
No. The actor drives a real browser against public Google Maps pages, so there is no API key and no Places API pricing.
How many leads can I get per search?
Up to 500 per search query, controlled by maxResults and maxScrolls. Run several queries (different cities, districts or categories) in one run for larger lists.
Can I export Google Maps results to Google Sheets or a CRM?
Yes. Download CSV/Excel from the run, or connect the actor to Google Sheets, HubSpot or Pipedrive with n8n, Make or Zapier. Rows are flat, so they map directly onto columns.
Does it include reviews and opening hours?
Opening hours and the open-now flag are on every row when Google publishes them. Individual reviews (author, rating, text, date) are included when extractReviews is on, up to maxReviews per business.
Which countries and languages work?
Any country Google Maps covers. Set language to the language of your target market (29 options) and phrase the query the way locals would.
Why is email empty for some businesses?
Either the business has no website on Maps, the site did not load within the timeout, or it publishes no address (contact form only). The website field is still there for manual follow-up.
Does it work with n8n?
Yes – use the Apify node, choose this actor and pass the same JSON input shown above.
Is scraping Google Maps legal?
The actor collects publicly available business information. How you use it – especially for outreach – must comply with GDPR, CCPA, CAN-SPAM and Google's terms of service.