📍 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
2
Bookmarked
31
Total users
5
Monthly active users
9 days ago
Last modified
Categories
Share
Scrape Google Maps business leads with e-mail addresses — and find out which of them are worth contacting. Search any business type in any city worldwide, get name, address, phone, website, rating and GPS, then let the Actor visit each business website to pull out a contact e-mail and work out how reachable and how promising that lead really is.
Other Google Maps scrapers hand you a list. This one hands you a work list: every lead carries a reachability score, tags explaining why it is worth a call, and a one-page market summary for the whole run. All in a single run, one flat JSON row per business, no dataset joins.
On a fresh test batch of 25 hairdressers in Cologne it found a phone number for 100%, a website
for 92%, and an e-mail address for 64% of all businesses — 70% of those that actually had a
website. Nine of the 25 came back flagged hot.
中文用户: 页面下方有完整的中文说明(适合外贸获客、开发海外客户)。
What you get that other Google Maps scrapers don't
E-mails are included, not an add-on. The large scrapers charge separately for contact enrichment — typically an extra fee per record on top of the per-place price, and more again for "lead enrichment". Here, e-mail extraction and lead scoring are part of the same $0.003 per result.
Every lead is scored and tagged. No other Google Maps Actor tells you which businesses to call first. This one does, and explains why.
A website field you can trust. Google Maps lists whatever the owner typed in, and a sizeable
share of small businesses type in an Instagram page, a Linktree or a Treatwell booking profile.
Other scrapers hand that to you in a column called "website", and it looks like coverage you do not
have. This Actor tells them apart in website_type and treats them for what they are: a business
with no site of its own is flagged needs_website, and no technical judgement is made about a page
that belongs to Meta rather than to the business. In Berlin test batches, 10% of tattoo studios and
25% of nail salons had no site of their own — and those are exactly the businesses worth calling if
you sell web work.
An opening line, already written. Every row carries outreach_hook — one sentence stating the
single most concrete thing found about that business: "Your Google Maps listing points at a social
media profile rather than a website of your own." or "The footer of your website still reads
2019." It is assembled from findings that were actually verified, never generated when the site
could not be read, and it names one fact rather than reciting an audit. It does not try to sell for
you; it hands you the sentence you would otherwise write 200 times by hand, and outreach_basis
tells you which finding it came from so you can check it. Available in German and English, following
the language you searched in.
It remembers what it already gave you. Prospecting means running the same city and trade again
every few weeks, and until now that returned the identical list every time. Switch on onlyNew and
you get only the businesses this search has not delivered before. Known ones are skipped before
their page is opened, so a repeat run is cheaper as well as shorter — in testing, the second run of
the same search took 34 seconds instead of 91. When there genuinely is nothing new, you get a row
saying so rather than an empty sheet.
The better reason to use it: a business that has just appeared on Google Maps usually has no website, no reviews and no online presence at all. That is the strongest lead there is for anyone selling web work, and it used to drown in 200 rows you had already worked through. Each search keeps its own memory, and entries older than 180 days are forgotten.
One row per business. Contact data, website signals and scoring arrive in the same flat record. Nothing to merge, nothing to join.
E-mail provenance. Each address records where it came from — a mailto: link, structured data,
a Cloudflare-obfuscated address, the page source, or a contact/imprint page — so you can judge how
much to trust it.
How to scrape Google Maps business leads
- Enter the business types you want, one or more:
dentists,Friseur,Italian restaurants,plumbers. - Enter the location —
Cologne, Germany,London, UK,Austin, Texas. - Start with
maxResultsaround 5–20 to see the shape of the data, then raise it. - Run it, then sort the output by
lead_priorityand start at the top.
Set the language to match your target country — it decides which language Google Maps answers in. For runs above ~100 results, switch on Apify Proxy to avoid rate limits.
Input
| Field | Default | What it does |
|---|---|---|
searchTerms | — | Business types to search. Several terms broaden coverage. Required |
location | — | City and country. Required |
maxResults | 50 | Per search term. Start small, up to 500 for production |
extractEmail | true | Visit each business website and pull out the contact e-mail |
enrichLeads | true | Score each lead and read website signals — costs no extra requests |
onlyNew | false | Return only businesses this search has not delivered before |
minRating | 0 | Only businesses at or above this Google rating |
onlyWithWebsite / onlyWithPhone | false | Skip businesses missing either |
language | en | Language of the Maps search |
proxyConfiguration | — | Recommended above ~100 results |
Output
One flat row per business. Download as JSON, CSV, Excel or HTML, or pull it through the API.
{"name": "Example Hair Studio","category": "Hairdresser","address": "Musterstraße 2, 50667 Köln, Deutschland","phone": "+49 221 56065017","website": "https://www.example-hair.de/","email": "service@example-hair.de","email_source": "mailto_link","rating": 5,"review_count": 498,"latitude": 50.937376,"longitude": 6.953564,"contactability_score": 100,"lead_priority": "hot","opportunity_tags": ["stale_site"],"opportunity_count": 1,"has_ssl": true,"mobile_friendly": true,"cms": "webflow","copyright_year": 2023,"has_tracking": true,"tracking_tools": ["meta_pixel"],"social_links": { "instagram": "https://www.instagram.com/example_hair/" },"has_contact_form": false}
Data fields
| Field | Meaning |
|---|---|
name, category, address, city, country | Core listing data |
phone, website | As published on Google Maps |
outreach_hook | One sentence you can open with, built from what was actually verified about this business |
outreach_basis | Which finding that sentence came from, so you can check it |
website_status | Plain wording for the table: Own website, Social profile only, Link page only, Booking or directory profile only, No website |
website_type | The same thing as a stable machine value: own, social, link_hub, platform, none |
email, email_source | Extracted from the business website, with its provenance |
rating, review_count | Google rating and how many reviews it rests on |
latitude, longitude, maps_url, opening_hours | Location and listing detail |
contactability_score, lead_priority, opportunity_tags | The scoring below |
has_ssl, mobile_friendly, cms, copyright_year | Technical state of their website |
has_tracking, tracking_tools, social_links, has_contact_form | Digital maturity signals |
A market summary for the whole run is written to the key-value store: contactability across the
city, average rating, how many businesses have a site of their own (with_website_pct), how many
get by on a social profile, link hub or booking platform instead
(substitute_presence_only_pct), and which opportunity signals dominate.
It also lists shared_emails — any address that turned up on more than one business in the run.
Those belong to a booking platform, a directory or a web agency rather than to any of the leads, and
they are worth removing before you send anything.
How the lead scoring works
Two separate things are measured, because they answer different questions.
contactability_score — can you reach them?
| Signal | Points |
|---|---|
| E-mail address found | 50 |
| Phone number | 25 |
| Website of their own listed | 15 |
| Website actually responded | 10 |
opportunity_tags — is it worth reaching them?
| Tag | Fires when |
|---|---|
needs_website | No website of their own — nothing listed, or only an Instagram page, a Linktree or a booking profile |
weak_reviews | Fewer than 25 reviews, or a rating below 3.8 |
stale_site | Copyright three or more years old, no viewport meta tag, or still on http |
no_marketing | Website is live but carries no analytics or tracking pixel |
lead_priority
score ≥ 60 and at least one tag → hotneeds_website and a phone number → hotscore ≥ 60 or at least one tag → warmotherwise → cold
In the Cologne test batch, no_marketing fired on 11 of 25 businesses, stale_site on 6 and
needs_website on 2 — which is the sales pitch for a web or marketing agency written out in
advance.
How much does it cost to scrape Google Maps?
$0.003 per business, with e-mail extraction and lead scoring included. There is no separate charge for contacts or enrichment.
| You scrape | You pay |
|---|---|
| 100 businesses | $0.30 |
| 500 businesses | $1.50 |
| 5,000 businesses | $15.00 |
Enrichment adds no extra cost, because it is computed from the same page fetch the e-mail search already performed.
Tips for better results
Start with 5–20 results to check the data before committing to a large run.
Use onlyWithWebsite when e-mail addresses are the whole point — businesses without a website
can never yield one. But leave it off if you sell websites: needs_website is the strongest
buying signal in the entire output.
Set minRating to 4.0 for established businesses, or leave it at 0 and use weak_reviews to
find the ones struggling with their reputation.
Turn on Apify Proxy above ~100 results to avoid Google rate limits.
Match the language to the country you are searching.
What it does well, and where it falls short
Measured on a fresh batch of 25 businesses that had no part in developing the Actor:
| Result | |
|---|---|
| Phone number found | 100% |
| Website listed | 92% |
| E-mail found | 64% of all — 70% of those with a website |
Where it falls short, honestly:
Roughly 30% of businesses with a website yield no e-mail. Some publish only a contact form, some hide the address behind JavaScript, some genuinely have none. The Actor is browser-free for the website visit, which is what keeps it fast and cheap — the trade is that client-side-rendered contact pages stay invisible.
Businesses without a website can never produce an e-mail. They come back with needs_website,
which is a signal in itself, but not an address.
no_marketing can misfire on businesses using server-side or self-hosted analytics, which
leave no trace in the page source.
The scoring weights are reasoned judgements, not learned values. They were set by argument, not
by measuring which leads actually converted, and they assume you sell websites, hosting or
marketing. If you sell something else, ignore the tags and sort by contactability_score.
Large runs need a proxy. Google rate-limits aggressive scraping; above roughly 100 results, switch Apify Proxy on.
FAQ, legal note and support
Does it work outside Germany and the US? Yes — any city worldwide. Set language to match the
country for the best results.
Do I need an API key? No. No Google API key, no third-party account.
Can I schedule it? Yes, through Apify's scheduler, and results can be pushed to your own systems by webhook or API.
The Actor reads publicly visible Google Maps listings and business websites, the way a browser does. Business contact details published in an imprint or on a contact page are public information, but what you may do with them afterwards is regulated — under GDPR in the EU, and in Germany unsolicited B2B e-mail advertising generally requires prior consent under the UWG. Please make sure your intended use is lawful where you operate.
Found a bug, or want another signal in the output? Open an issue on the Issues tab.
中文说明
输入行业关键词和城市,从谷歌地图批量获取海外企业客户名单,并自动从每家企业的官网提取联系邮箱。 适合外贸业务员、跨境服务商和需要开发海外客户的团队:不用再每天花几个小时在谷歌地图上手动翻找、复制粘贴。
为什么用它:
- 邮箱已包含在内:每条结果除了公司名称、地址、电话、官网、评分和坐标,还会自动访问企业官网查找联系邮箱,不需要另外购买邮箱挖掘服务。
- 云端运行,不占用自己的电脑:在 Apify 云端运行,无需自己配置海外网络环境或代理,不用让电脑开着跑好几个小时,也不怕中途卡住没有提示。
- 按条计费,没有年费:每家企业 0.003 美元,即每 1,000 条 3 美元,邮箱提取和客户评分都包含在内。Apify 免费套餐每月赠送 5 美元额度,可以先免费试用。
- 告诉你先联系谁:每条线索都有可联系度评分(
contactability_score)和优先级(lead_priority:hot / warm / cold),按优先级排序后从最上面开始联系即可。 - 数据可追溯:每个邮箱都标明来源(官网的 mailto 链接、联系页、结构化数据等),方便判断可信度。
实测数据: 在德国科隆随机抽取的 25 家企业中,100% 找到了电话,92% 有官网,64% 找到了邮箱(在有官网的企业中为 70%)。在德国汉诺威有官网的油漆装修公司中,邮箱获取率达到 85%。需要说明的是:美国企业更常使用网站表单而不是公开邮箱,在美国奥斯汀的同类测试中,有官网企业的邮箱获取率约为 55%。
适用场景:
- 按行业和城市开发海外买家、经销商和零售商,例如“furniture store, Munich”“dental clinic, Dubai”
- 定期重复同一搜索:开启
onlyNew后只返回上次没有出现过的新企业,重复运行更快也更便宜 - 筛选目标客户:可设置最低评分,或只要有官网、有电话的企业
使用方法:
- 在
searchTerms中填入英文或当地语言的行业关键词,每行一个,例如furniture store、Möbelhaus - 在
location中填入城市和国家,例如Munich, Germany、Dubai, UAE - 先把
maxResults设为 5–20 看看数据效果,再加大数量 - 把
language设置为目标国家的语言(如德国用de),谷歌地图会用该语言返回结果 - 超过约 100 条结果时,建议开启 Apify Proxy,避免被谷歌限流
需要注意:
- 没有官网的企业无法提取邮箱,但仍会返回电话和地址。
- 约 30% 有官网的企业没有公开邮箱(只有表单,或邮箱藏在 JavaScript 中)。
outreach_hook(开发信开场白)目前只支持英语和德语。- 联系欧洲企业时请遵守 GDPR 等当地法规;例如在德国,未经同意发送 B2B 营销邮件通常是不允许的。
有问题或功能建议?欢迎在 Issues 页面留言,中英文均可。

