📍 Google Maps Email Scraper — Scored Business Leads
Pricing
from $3.00 / 1,000 results
📍 Google Maps Email Scraper — Scored Business Leads
Most Google Maps scrapers just dump raw leads. This one scores every lead by how reachable it is and tags why it's worth contacting — no website, weak reviews, a dated site, no marketing — then gives you a one-page market summary. Emails included, all in one run, flat JSON.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Gezgin Data
Maintained by CommunityActor stats
1
Bookmarked
7
Total users
1
Monthly active users
5 days 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, review count, 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.
It also does the triage for you. Every lead is scored by how easy it is to reach, and tagged with the reasons it might be worth a call - no website, thin reviews, an ageing site, no marketing on their pages. At the end of each run you get a short market summary of everything it found, so you start from a worked list instead of a raw dump.
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 three things:
- It searches Google Maps and collects every matching business it can find.
- For each business with a website, it opens that site and pulls a real contact email, along with a few signals about the site itself - whether it runs on HTTPS, whether it is mobile-friendly, what it is built with, and whether it has any marketing tracking.
- It scores and tags each lead so you can see at a glance who to contact first and why, and writes a one-page market summary for the whole run.
The result is a lead list you can work from straight away. 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 stop at the place data and leave the emails to you - which usually means paying for a second enrichment tool and then stitching the two exports back together by hand. This one pulls the contact email in the same run, so there is no second tool, no second bill, and nothing to merge afterwards. In a typical run, most businesses that actually publish a website come back with a usable email, and everything arrives as one flat structure that drops straight into a CRM or an automation without any reshaping.
On top of that, it tells you which leads are worth your time. Instead of working through an unsorted list of a few hundred businesses, you can sort by how reachable each one is and filter to the ones with an obvious reason to switch.
It is built for:
- Sales teams building targeted prospect lists by city and industry, and working the most reachable ones first.
- Agencies finding local businesses that fit an ideal-customer profile and have a clear opening - an outdated site, weak reviews, or no online marketing.
- Automation builders feeding clean JSON into Make, n8n, Clay or a custom AI workflow.
- Market research mapping competitor density, contactability and digital maturity 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,"enrichLeads": 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. Here is a real example - this one has no open opportunities, but many leads will come back with one or more tags:
{"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,"review_count": 296,"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,"contactability_score": 100,"lead_priority": "warm","opportunity_tags": [],"opportunity_count": 0,"has_ssl": true,"site_reachable": true,"mobile_friendly": true,"cms": "squarespace","copyright_year": 2025,"has_tracking": true,"tracking_tools": ["google_analytics", "meta_pixel"],"social_links": { "facebook": "https://www.facebook.com/...", "instagram": "https://www.instagram.com/..." },"has_contact_form": true,"scraped_at": "2026-06-24T09:13:00Z"}
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, structured_data, cloudflare, raw_source, homepage or contact_page |
rating | Google rating from 0 to 5 |
review_count | Number of Google reviews |
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 |
When lead enrichment is on (the default), each lead also carries these:
| Field | Description |
|---|---|
contactability_score | How reachable the lead is, from 0 to 100 |
lead_priority | hot, warm or cold, derived from the score and the tags |
opportunity_tags | Reasons the lead may be worth contacting: needs_website, weak_reviews, stale_site, no_marketing |
opportunity_count | How many opportunity tags the lead has |
has_ssl | Whether the website loads over HTTPS |
site_reachable | Whether the website responded when we visited it |
mobile_friendly | Whether the site is built for mobile screens |
cms | What the site is built with, e.g. WordPress, Wix, Squarespace |
copyright_year | Most recent copyright year found in the page footer |
has_tracking | Whether the site runs analytics or ad tracking |
tracking_tools | Which tracking it uses, e.g. Google Analytics, Meta Pixel |
social_links | Social profile links found on the site |
has_contact_form | Whether the homepage has a contact form |
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.
- Structured data - the schema.org business markup that many sites embed for Google often carries the contact email directly.
- Cloudflare-protected emails - addresses that sites hide behind Cloudflare's email obfuscation are decoded automatically, so they are not lost.
- Page source and plain text - emails written into the page or its scripts, not just the visible 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, roughly two-thirds to three-quarters come back with an email in practice. Businesses without a website are skipped for email, since there is nowhere to look.
How the lead scoring works
Collecting the leads is half the job. Knowing which ones to call first is the other half, so alongside the raw data each business gets two things.
The first is a contactability score from 0 to 100. It is a plain, transparent tally - points for a working email, a phone number, a website, and a site that actually loads when the Actor visits it. Sort by this and the easiest businesses to reach sit at the top. The output includes a ready-made "Hot Leads" view that does this sorting for you.
The second is a set of opportunity tags, short labels for why a business might be worth approaching:
needs_website- the business has no website at all.weak_reviews- very few reviews, or a low rating.stale_site- the site looks dated: an old copyright year, no HTTPS, or not built for mobile.no_marketing- no analytics or advertising tracking on the site, so they are probably not running any online marketing yet.
These are filters, not verdicts. A web-design agency cares about needs_website and stale_site; a reputation service cares about weak_reviews; a marketing agency cares about no_marketing. Pick the tag that matches what you sell and work that slice of the list.
All of this is read from data the Actor already gathers during the email step, so turning it on does not slow the run down or add to the cost. If you only want the plain place data, set enrichLeads to false.
The market summary
At the end of every run the Actor writes a one-page summary to the run's key-value store, under the key MARKET_INSIGHTS. It covers how many businesses you found, how many came back with an email, the average rating and median review count, how many leads fall into each opportunity tag, the most common categories, and which website builders show up most often.
It is a quick read of the market you just scraped - useful for sizing up a city before a campaign, or for showing a client why a campaign is worth running.
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.enrichLeads(default true) - score and tag each lead and write the market summary, using data already gathered during the email step. Turn it off if you only want the plain place 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. The lead scoring, tags and market summary are included at no extra cost - they are built from data the Actor already collects.
| 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,"enrichLeads": True,"minRating": 4.0,}run = client.actor("berkaydev/google-maps-email-scraper-business-leads").call(run_input=run_input)items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(f"Got {len(items)} leads")# The market summary lives in the run's key-value storeinsights = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("MARKET_INSIGHTS")
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, roughly two-thirds to three-quarters is a fair expectation. Treat any single number as a rough guide, not a guarantee.
What do the opportunity tags actually mean? They flag a plausible reason to reach out, read from the business's own website and listing - no website, few reviews, a dated site, or no marketing tracking. They are a starting point for a conversation, not a definitive audit. Always glance at the site yourself before you use a tag in your pitch.
Can I turn the scoring off?
Yes. Set enrichLeads to false and you get just the place data and email, nothing else.
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.