Google Maps Lead Scraper – Emails, Phones, Websites, Reviews avatar

Google Maps Lead Scraper – Emails, Phones, Websites, Reviews

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Google Maps Lead Scraper – Emails, Phones, Websites, Reviews

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

Ani Björkström

Maintained by Community

Actor stats

3

Bookmarked

281

Total users

2

Monthly active users

10 days ago

Last modified

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, collects mailto: links and visible addresses, filters out placeholders and tracking domains, and gives you email plus the full emails list.
  • 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

FieldDescription
name, placeIdBusiness name and Google place ID
email, emailsBest email found on the website, and every address found (empty when the site has none)
phone, websitePhone number and website URL as listed on Maps
address, plusCode, latitude, longitudeFull address, plus code and coordinates (coordinates when Maps exposes them in the listing URL)
category, categoriesPrimary and all categories
rating, reviewsCount, priceLevelStar rating, number of reviews, $–$$$$
openingHours, isOpenHours per weekday (when published) and open-now flag
reviewsIndividual reviews (author, rating, text, date) with extractReviews
photoUrls, mainPhotoUrlPhoto URLs with extractPhotos
googleMapsUrl, searchQuery, scrapedAtSource 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": []
}
OptionDefaultWhat it does
searchQueriesone demo querySearches exactly as you would type them into Google Maps
startUrls[]Google Maps search-result or place URLs instead of (or as well as) queries
maxResults5Leads per search (up to 500) – raise it once you have checked the output
maxScrolls3How far to scroll the result list; ~20 covers most searches, 50+ for dense city centres
extractEmailstrueVisit each website for email addresses (adds a few seconds per business)
extractReviews, maxReviewsfalse, 5Include individual reviews per business
extractPhotosfalseInclude photo URLs
languageenResults language – 29 options from Spanish and German to Japanese and Arabic
maxConcurrency5Parallel browsers; lower it if you hit memory limits with emails on
proxyConfigurationApify residentialResidential 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 ApifyClient
client = 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.

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.

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.