📍 Google Maps Email Scraper - Business Leads
Pricing
from $3.00 / 1,000 results
📍 Google Maps Email Scraper - Business Leads
Scrape Google Maps for business leads with contact emails. Get name, phone, website, rating and email for any city or niche. No code, export to CSV/JSON
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Berkay
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Find business leads on Google Maps anywhere in the world - and get their contact email in the same run. This scraper pulls the business name, address, phone, website, rating, GPS coordinates and a contact email for any business type, in any city, and gives it all back as clean, flat JSON.
One run, all the data, email included. No add-ons, no second tool, no nested objects to untangle.
What does the Google Maps Lead Scraper do?
You tell it what to look for (for example "dentists") and where (for example "London, UK"), and it does two things:
- It searches Google Maps and collects every matching business it can find.
- For each business with a website, it opens that site and tries to pull a real contact email address.
The result is a ready-to-use lead list. Because it runs on the Apify platform, you also get scheduling, an API, integrations with tools like Make and n8n, and the option to export to JSON, CSV or Excel.
Why scrape business leads from Google Maps?
Most Google Maps scrapers give you the place data, then sell email enrichment as a separate, more expensive add-on - so you end up running two tools and paying twice. This one does both in a single run, and returns a flat 18-field structure that drops straight into a CRM or an automation without any reshaping.
It is built for:
- Sales teams building targeted prospect lists by city and industry.
- Agencies finding local businesses that match an ideal-customer profile (filter by rating or "has a website").
- Automation builders feeding clean JSON into Make, n8n, Clay or a custom AI workflow.
- Market research mapping competitor density and contactability across a city.
How to scrape Google Maps leads with emails
- Click Try for free.
- Enter the business type (for example
dentists) and the location (for exampleLondon, UK). - Optionally set filters: minimum rating, only businesses with a website, language.
- Click Start and wait for the run to finish.
- Download the results as JSON, CSV or Excel, or pull them through the API.
No coding needed - you just fill in a form and run it.
Input
The Actor takes a simple JSON input. Here is a typical example:
{"searchTerms": ["dentists"],"location": "London, UK","maxResults": 100,"extractEmail": true,"minRating": 4.0,"onlyWithWebsite": true,"language": "en"}
You can also configure everything through the visual input form in the Apify Console - no JSON required.
Output
Every business comes back as one flat JSON object with 18 fields. Here is a real example:
{"place_id": "ChIJYyTiQ1gbdkgRnDRYs8__GbY","name": "London Dental Centre","category": "Dentist","address": "109 Lever St, London EC1V 3RQ, United Kingdom","city": "London","country": "United Kingdom","phone": "+44 20 3667 7070","website": "http://www.thelondondentalcentre.co.uk/","email": "info@thelondondentalcentre.co.uk","email_source": "mailto_link","rating": 4.8,"latitude": 51.527144,"longitude": -0.095682,"maps_url": "https://www.google.com/maps/place/London+Dental+Centre/...","opening_hours": ["Monday: 9:00-18:00", "Tuesday: 9:00-18:00"],"price_level": 2,"is_permanently_closed": false,"scraped_at": "2026-06-11T13:22:46Z"}
You can download the dataset in various formats such as JSON, HTML, CSV or Excel.
Data fields
Every field is always present. When a value is missing it comes back as null instead of being dropped, so your downstream tools never break on a missing key.
| Field | Description |
|---|---|
place_id | Unique Google Maps ID, useful for deduplicating across runs |
name | Business name |
category | Primary category, e.g. Dentist, Restaurant, Lawyer |
address | Full address string |
city | City parsed from the address |
country | Country parsed from the address |
phone | Phone number |
website | Website URL |
email | Contact email extracted from the business website |
email_source | Where the email was found: mailto_link, homepage or contact_page |
rating | Google rating from 0 to 5 |
latitude | GPS latitude |
longitude | GPS longitude |
maps_url | Direct link to the Google Maps listing |
opening_hours | List of opening hours per day |
price_level | Price bracket from 1 to 4 |
is_permanently_closed | True if the business is permanently closed |
scraped_at | Timestamp in ISO 8601 format |
How email extraction from business websites works
There is no magic and no third-party AI involved - just a careful, layered approach that is transparent about where each email came from:
- mailto links on the homepage - the fastest and most reliable source.
- Text matching on the homepage, for emails written in plain text.
- The contact or imprint page - the Actor looks for a "contact", "imprint" or "Impressum" link, opens it, and repeats the search there.
The email_source field tells you exactly which step found the email, so you always know how it was obtained.
A realistic expectation: how many businesses yield an email depends heavily on the industry and on whether they publish a website at all. For local service businesses with a website, somewhere around half is typical. Businesses without a website are skipped for email, since there is nowhere to look.
All input options
searchTerms(required, list) - business types to search for. Multiple terms widen coverage. Examples:["dentists"],["Italian restaurants"],["plumbers", "electricians"].location(required, text) - city and country. Examples:"London, UK","Berlin, Germany","Tokyo, Japan".maxResults(default 50) - maximum places per search term, up to 500.extractEmail(default true) - visit each website to pull a contact email. This is the main value of the Actor, so keep it on unless you only need map data.minRating(default 0) - only keep businesses at or above this rating. Set4.0for higher-quality leads.onlyWithWebsite(default false) - skip businesses with no website.onlyWithPhone(default false) - skip businesses with no phone number.language(default "en") - search language. Available: en, de, fr, es, it, nl, pt, pl, tr, sv.maxRunTimeSecs(default 3000) - a safety limit. The Actor saves everything collected so far and exits cleanly before this time, so a large job never gets killed by the platform timeout with empty output.
Pricing - how much does it cost to scrape Google Maps?
This Actor uses pay-per-event pricing, so you only pay for what you actually run:
$0.00005per run, charged once when the run starts.$0.003per business result.
There are no subscriptions and no minimum spend.
| Volume | Approximate cost |
|---|---|
| 100 leads | about $0.30 |
| 1,000 leads | about $3.00 |
| 10,000 leads | about $30.00 |
How long does a run take?
Reliability is the priority here, so by default the Actor scrapes carefully rather than aggressively. As a rough guide, expect a few seconds per business - a 40-lead run takes around five to six minutes, and larger runs scale roughly in proportion.
If you need large jobs to finish faster, increase the Actor's memory in the run settings. The Actor automatically scrapes more pages in parallel when it has more CPU available (on Apify, CPU scales with memory), so a higher memory setting directly translates into a faster run.
How to get more Google Maps results per city
A single Google Maps query usually returns somewhere between 20 and 120 results. To cover a large city more thoroughly, run several search terms aimed at different districts:
{"searchTerms": ["Zahnarzt Berlin Mitte","Zahnarzt Berlin Kreuzberg","Zahnarzt Berlin Prenzlauer Berg","Zahnarzt Berlin Charlottenburg"],"location": "Berlin, Germany","maxResults": 50}
Results are automatically deduplicated by place_id, so overlapping districts will not create duplicate rows.
Use the Google Maps scraper via API
You can run this Actor from any application. Here is a Python example using the Apify client:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run_input = {"searchTerms": ["dentists"],"location": "London, UK","maxResults": 50,"extractEmail": True,"minRating": 4.0,}run = client.actor("berkaydev/google-maps-lead-scraper-emails-contacts").call(run_input=run_input)items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(f"Got {len(items)} leads")
For no-code tools like Make, n8n or Zapier, search for this Actor in the Apify integrations and connect it without writing any code.
FAQ
What email hit rate can I expect? It varies a lot by industry and by how many of the businesses actually have a website. For local services with a website, around half is a fair expectation. Treat any single number as a rough guide, not a guarantee.
Can I import the results into HubSpot or Salesforce? Yes. Export as CSV from Apify, or use the API. The flat structure imports cleanly with no transformation step.
What happens on very large jobs? The Actor keeps an eye on the clock and exits cleanly with everything collected so far before it can hit the platform timeout. You get a partial result you can use, never an empty failed run.
Support? Use the Issues tab on this Actor's page. I read and respond to every report.
Legal and responsible use
This Actor extracts publicly available business information from Google Maps - the same names, addresses, phone numbers and websites that Google shows to everyone.
You are responsible for using that data lawfully. In practice that means:
- For B2B outreach, make sure your offer is genuinely relevant to the business you contact.
- Follow the rules that apply to you - for example GDPR in the EU, CAN-SPAM in the US, CASL in Canada, and UWG in Germany.
- Always identify yourself clearly and make opting out easy.
- Do not send mass spam, do not resell the raw data without proper licensing, and do not keep contacting a business that has asked you to stop.
The Actor is a technical tool. Lawful use of what it collects is your responsibility, and if you are unsure, talk to a data protection lawyer.