Google Maps Email Scraper — Business Emails & Contacts
Pricing
from $1.60 / 1,000 business founds
Google Maps Email Scraper — Business Emails & Contacts
Search Google Maps for a kind of business in an area and get each one's contact details: the phone and address from the listing, plus the emails and social profiles found by crawling its website. Covers areas larger than one map view by tiling them.
Pricing
from $1.60 / 1,000 business founds
Rating
0.0
(0)
Developer
The Netaji
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
The Actor searches Google Maps for a kind of business in an area and returns each one's contact details: the phone and address published on the listing, plus the email addresses and social profiles found by crawling that business's own website. One business produces one record, whether or not it has a website.
Every page read is a public one. No account, no login and no session cookie is used on any source the Actor touches, which is also why a run cannot reach anything a signed-out visitor could not. Addresses can optionally be checked against the mail server that would receive them, and the senior people at each business looked up from public profiles.
{"query": "dentist","location": "Austin, Texas","spanMetres": 20000,"maxPlaces": 20}
Accepted input
query is what would be typed into Google Maps — dentist, hardware store, plumber, or a business name. Google's own interpretation of the phrase applies.
location is where to search — a town, city, district or address such as Austin, Texas or Shoreditch, London. It is resolved to a point once at the start of the run. latitude and longitude are optional and override it, for a search centred on an exact point rather than a named place; they must be given together.
spanMetres is how wide a map view to search around that point, and defaults to 20,000 m — roughly a metro area. areaMetres defaults to 0, which searches one view at the centre. Anything larger walks a grid of views across that area.
The grid is the reason areaMetres exists. One search term at one map view returns about 182 distinct businesses, and that ceiling belongs to the question rather than to the site: covering an area holding more than that is a matter of asking several narrower views instead of one wide one. A city walked at a 2,000 m span enumerates it. maxPlaces stops the walk after a given number of businesses; 0 means no limit.
contactTypes, includeContactText, smartDiscovery, maxPagesPerWebsite, useStealth and solveCloudflare control the website crawl and behave as they do in the Website Email Scraper. maxPagesPerWebsite defaults to 3 here, because a business website only has to be read as far as its contact page.
enrichSocialProfiles is off by default. Turned on, each social account linked from a business website is read for follower counts, category, verification and biography — and for the contact email or phone that business accounts publish and their website often does not.
verifyEmails is off by default. Turned on, each address found for a business is checked against the mail server that would receive it and labelled verified, accept_all or unverified. maxEmailsVerifiedPerBusiness caps how many of a business's addresses are checked and defaults to 5; the list is ordered by confidence, so the first few are the ones most likely to be the business's own.
findDecisionMakers is off by default. Turned on, the senior people at each business — C-level, VP, Head and Director — are looked up from public profiles and returned with ranked email addresses. The lookup starts from the LinkedIn company page found on the business website, and falls back to the website's own domain when there is none.
Response fields
One record per business, in one shape. The shape does not change with any input.
| Field | Contents |
|---|---|
schemaVersion | Version of this output contract |
url | The business website, or empty when it has none |
domain | Domain of that website |
status | ok when contacts were found, empty when none were, failed when the business could not be read at all |
scrapedAt | When the business finished being processed |
place | The Google Maps listing: name, address, phone, categories, rating, hours, coordinates and map link |
company | Name, description and website read from the business's own pages |
emails, phones, socials, addresses | Every contact found, from the listing and the website together |
decisionMakers | The senior people found at the business, each with name, headline, seniority, function, profile URL and ranked email addresses. Present only when findDecisionMakers is on and someone was confirmed |
stats | pagesScanned, pagesFailed, browserPages, durationMs |
error | code and message when the business could not be read, otherwise null |
Every entry in every collection carries the same five keys: value (always a string), sourceUrl, foundBy, confidence and attributes. foundBy says where the detail came from — google-maps for the listing's own phone and address, mailto or dom for the website, and the platform name for anything a social profile published.
With verifyEmails on, each checked address carries its verdict in attributes: verification, verificationReason, mailboxKind and mailProvider. Addresses that were not checked, because the cap was reached or the check could not be made, carry none of those keys rather than a guess.
A business with no website still returns a record, with its listing phone and address as ordinary entries. Those are frequently the only contact details a small business publishes anywhere, so they are the result rather than a consolation for one.
What a verified address means
verified means a mailbox was confirmed to exist at that address. unverified means it was checked and could not be confirmed — the reason says whether the mailbox was rejected, the domain could receive no mail at all, or nothing could be established.
accept_all is the third answer and it is not a weaker verified. Some domains answer yes to every address put to them, including addresses that cannot exist, so on those no mailbox can be confirmed by anyone. Measured across a sample of fifteen domains, six behaved that way, and software companies almost uniformly do. Those addresses are returned and labelled rather than counted as verified, and the add-on is not charged for them.
Reshaping the results
The dataset export handles the common reshapes without changing what the Actor writes.
| Wanted | Export setting |
|---|---|
| One row per email | unwind=emails — the record's url and place merge onto each row |
| Businesses and their emails only | fields=place,emails with unwind=emails |
| Flat CSV for a CRM | unwind=emails, flatten=place,attributes, format CSV |
| One row per business | The default; change nothing |
Charging
| Event | When |
|---|---|
| Business found | Once per distinct business the search returned, including businesses with no website |
| Add-on: contacts from the business website | Once per business whose website was crawled, however many pages that took |
| Add-on: social profile | Once per social account read, and only when the account returned data |
| Add-on: verified email | Once per business where an address was confirmed to be a real mailbox, however many of that business's addresses were checked |
| Add-on: decision-maker | Once per business where at least one senior person was confirmed to hold that role there right now |
Website crawling is charged once per business rather than per page, so the cost of a run is the number of businesses it found and not how large their websites happen to be. maxPagesPerWebsite is what keeps that offer safe, and smartDiscovery spends those pages on contact and about pages first.
The pages of one search overlap, and a business that appears on several of them is charged once.
Both new add-ons are charged per business rather than per address or per person, and only on a result. A business whose addresses all came back dead, one whose domain accepts every address, and one where nobody senior could be confirmed are each charged nothing for the add-on that found nothing.
Frequently asked questions
How precise does the location need to be?
A city or district is enough for most searches — it is resolved to a point, and spanMetres decides how far around that point the search reaches. A name that matches several places resolves to the best match, so add the region or country when that matters: Cambridge, England rather than Cambridge. When an exact centre is needed, set latitude and longitude instead and the name is ignored.
Why did a wide search return fewer businesses than expected?
One query at one map view stops at about 182 distinct businesses however wide the view is — a wider view reaches further out rather than returning more. Set areaMetres to the area to cover and lower spanMetres, and the run walks a grid of narrower views instead.
What happens to a business with no website?
It is returned as a record with its listing phone, address and categories, and url is empty. status is ok when the listing itself carried a contact.
Why did a business return no email when its website clearly has one?
Only the first few pages of each website are read, ranked so contact and about pages come first. Raising maxPagesPerWebsite reads further. Some sites also publish contact details only behind a form, which is not something a crawl can read.
Is an account or session cookie used anywhere?
No. Every source the Actor reads — the map listings, the business websites, the social profiles, the public profiles behind the decision-maker lookup — is read the way a signed-out visitor reads it. Nothing that requires a login is reachable, and an authentication wall is reported as a page that could not be read rather than worked around.
Why is an address returned as accept_all rather than verified?
Its domain accepts mail addressed to anything, including addresses that cannot exist, so a positive answer from it carries no information. The address may well be real; it cannot be confirmed, and the record says so instead of implying otherwise.
Related Actors
For crawling websites you already have a list of, see Website Email Scraper. For Google Maps business listings without the contact crawl, see Google Maps Scraper.