Google Maps Email Scraper avatar

Google Maps Email Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Google Maps Email Scraper

Google Maps Email Scraper

Google Maps Email Scraper finds local businesses then crawls their websites for emails - returning name, full address, phone, website, rating, review count, coordinates, place ID and every email found. πŸ“ Local lead generation on autopilot.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Hub

Scrapers Hub

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Share

πŸ“ Google Maps Email Scraper – Extract Business Emails, Phones & Contact Data

The Google Maps email scraper searches Google Maps for businesses matching a keyword and a location, then visits each business website to pull out email addresses, phone numbers and social media profiles, returning a single enriched record per business. It turns a plain local-search query such as "coffee shops in Miami, Florida" into a structured B2B lead list with verified contact data attached.

Google Maps itself rarely exposes an email address. It gives you a name, an address, a rating and β€” if you are lucky β€” a website URL. This Google Maps email scraper closes that gap: it takes the website value from each place listing, crawls the site's contact-bearing pages, harvests every email it finds, and then runs those addresses through a multi-stage validation pipeline covering syntax, DNS, MX records and SMTP reachability. The result is a lead record you can actually send to, not just a directory row.

Every field is returned flat and machine-readable, from place_id and geographic coordinates through to confidence_score and is_role_based flags, so the output drops straight into a CRM import, a cold-outreach sequence or a territory analysis spreadsheet.


πŸ“Š What Data Can You Extract with This Google Maps Email Scraper?

The Google Maps email scraper combines place data, website crawl results and email verification signals into one record per business.

CategoryFieldsWhat you get
🏒 Business identityname, place_id, platform, url, website, domainThe business name, its stable Google Maps place identifier, the source platform, and the website that was crawled for contact details
πŸ“ Location & geographystreet_address, city, state, zip, country_code, full_address, lat, longA fully decomposed postal address plus latitude and longitude for mapping and radius analysis
⭐ Reputation signalsavg_rating, total_reviewsAverage star rating and total review count, useful for qualifying and prioritising leads
πŸ“§ Contact extractionemail, emails, phone, scraped_emails, scraped_phones, scraped_social_mediaThe primary email, all emails found, phone numbers and social profile links harvested from the business website
βœ… Email verificationsyntax_valid, dns_valid, mx_valid, smtp_valid, is_disposable, is_role_based, confidence_score, validation_errorsA layered deliverability assessment for each address, from format checking to mail-server reachability
πŸ” Crawl diagnosticsemails_found, pages_scraped, scrape_status, scrape_error, status, job_id, errorHow many pages were visited, how many addresses were recovered, and exactly what went wrong when a site could not be crawled

The field that changes how you work with this data is confidence_score. Rather than forcing a binary valid/invalid decision, it lets you segment: send to high-confidence addresses immediately, route mid-range addresses through a warm-up sequence, and discard the rest. Combined with is_role_based, it separates a named contact from a generic info@ inbox before you write a single line of outreach copy.


🌟 Key Features of the Google Maps Email Scraper

FeatureDescription
πŸ”Ž Keyword and location searchDrive the whole run from two fields β€” a business type such as "dentists" and a geographic target such as "Miami, Florida"
🌐 Website contact crawlingEach business website is crawled for contact pages so emails and phone numbers are recovered even when Google Maps shows none
βœ… Four-layer email validationEvery address is checked for syntax correctness, DNS resolution, MX record presence and SMTP reachability
🚫 Disposable and role-based detectionis_disposable and is_role_based flags let you strip throwaway inboxes and generic aliases before import
πŸ“Š Confidence scoringA numeric confidence_score per address supports tiered outreach instead of a blunt keep-or-drop rule
🧭 Full geographic decompositionStreet, city, state, ZIP, country code and coordinates are returned separately, ready for territory mapping
🎯 Email-only filteringTurn on emailOnlyResults to discard businesses where no email could be recovered, keeping the dataset lead-ready
πŸ“± Social profile harvestingscraped_social_media collects social links found on the business site for multichannel prospecting
🩺 Per-business diagnosticspages_scraped, scrape_status and scrape_error make it obvious why a particular business yielded nothing

πŸš€ Why Choose This Google Maps Email Scraper?

Emails, not just listings. The overwhelming majority of Google Maps tools stop at the place record. This Google Maps email scraper treats the website field as a starting point rather than an endpoint, crawling each site to recover scraped_emails, scraped_phones and scraped_social_media that are simply not present in map data.

Verification is built in, not bolted on. Running an unverified list through a sending platform damages your domain reputation fast. Because syntax_valid, dns_valid, mx_valid and smtp_valid arrive with every record, you can filter hard bounces out before the first campaign rather than after it.

Transparent failure reporting. When a business produces no contact data, you are told why. scrape_status, scrape_error and pages_scraped distinguish a site that blocked the crawler from one that genuinely publishes no address, which means you know whether a manual follow-up is worth the effort.

Geographic precision for territory work. Because lat, long, zip, city and state are separate fields, the output supports radius queries, postcode-level segmentation and sales-territory assignment without any post-processing or geocoding step.


πŸ“₯ Input

The Google Maps email scraper is driven by a short input object. The search term and location are both required.

{
"googleMapsSearchTerm": "coffee shops",
"googleMapsLocation": "Miami, Florida",
"maxBusinesses": 20,
"emailOnlyResults": false,
"proxyConfiguration": {
"useApifyProxy": true
}
}

πŸ”§ Google Maps Email Scraper Input Fields

FieldTypeRequiredDefaultDescription
googleMapsSearchTermstringβœ… Yescoffee shopsThe business type or niche to search for, for example "coffee shops" or "dentists".
googleMapsLocationstringβœ… YesMiami, FloridaTarget geographic location for the search, for example "Miami, Florida".
maxBusinessesintegerNo20Target number of businesses to find, between 1 and 1000. The scraper stops once this target is reached.
emailOnlyResultsbooleanNofalseOnly include businesses where emails were successfully extracted from their websites.
proxyConfigurationobjectNo{ "useApifyProxy": true }Proxy settings for scraping, recommended for large-scale runs.

πŸ’‘ Input Examples

Small qualifying sample

{
"googleMapsSearchTerm": "dentists",
"googleMapsLocation": "Austin, Texas",
"maxBusinesses": 25
}

Lead-ready list with emails only

{
"googleMapsSearchTerm": "digital marketing agency",
"googleMapsLocation": "London, United Kingdom",
"maxBusinesses": 200,
"emailOnlyResults": true
}

Large territory sweep

{
"googleMapsSearchTerm": "plumbers",
"googleMapsLocation": "Phoenix, Arizona",
"maxBusinesses": 800,
"emailOnlyResults": true,
"proxyConfiguration": { "useApifyProxy": true }
}

πŸ“€ Output

Each dataset item is one business, combining its Google Maps place data with everything recovered from its website. The example below uses the real output field names with representative values.

{
"job_id": "8c1f9d2e-4b17-4a90-9a2c-6f5d3b0e77a1",
"status": "success",
"name": "Brew & Bean Coffee Roasters",
"place_id": "ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"platform": "google_maps",
"website": "https://brewandbeanroasters.com",
"domain": "brewandbeanroasters.com",
"phone": "+1 305-555-0142",
"full_address": "812 Biscayne Blvd, Miami, FL 33132, United States",
"street_address": "812 Biscayne Blvd",
"city": "Miami",
"state": "FL",
"zip": "33132",
"country_code": "US",
"lat": 25.782551,
"long": -80.189567,
"avg_rating": 4.6,
"total_reviews": 318,
"email": "hello@brewandbeanroasters.com",
"emails": ["hello@brewandbeanroasters.com", "orders@brewandbeanroasters.com"],
"emails_found": 2,
"pages_scraped": 6,
"syntax_valid": true,
"dns_valid": true,
"mx_valid": true,
"smtp_valid": true,
"is_disposable": false,
"is_role_based": true,
"confidence_score": 0.92,
"validation_errors": [],
"scraped_emails": ["hello@brewandbeanroasters.com", "orders@brewandbeanroasters.com"],
"scraped_phones": ["+1 305-555-0142"],
"scraped_social_media": ["https://instagram.com/brewandbeanroasters"],
"scrape_status": "completed",
"scrape_error": null,
"url": "https://www.google.com/maps/place/?q=place_id:ChIJd8BlQ2BZwokRAFUEcm_qrcA",
"error": null
}

🧾 Google Maps Email Scraper Output Fields

FieldTypeDescription
job_idstring | nullIdentifier of the job.
statusstring | nullStatus of the item.
namestring | nullName of the business.
place_idstring | nullIdentifier of the place on Google Maps.
platformstring | nullPlatform the item came from.
urlstring | nullCanonical URL of the scraped item.
websitestring | nullWebsite address of the business.
domainstring | nullDomain name derived from the website.
phonestring | nullPhone number found for the business.
full_addressstring | nullFull address of the business.
street_addressstring | nullStreet address of the business.
citystring | nullCity.
statestring | nullState or region.
zipstring | nullZIP or postal code.
country_codestring | nullISO country code.
latnumber | nullLatitude coordinate.
longnumber | nullLongitude coordinate.
avg_ratingnumber | nullAverage review rating.
total_reviewsinteger | nullTotal number of reviews.
emailstring | nullPrimary email address found for the business.
emailsarray | nullAll email addresses found for the business.
emails_foundinteger | nullNumber of emails found.
pages_scrapedinteger | nullNumber of website pages scraped.
syntax_validboolean | nullWhether the email address is syntactically valid.
dns_validboolean | nullWhether the email domain resolves in DNS.
mx_validboolean | nullWhether the domain has valid MX records.
smtp_validboolean | nullWhether the mailbox responded over SMTP.
is_disposableboolean | nullWhether the address belongs to a disposable email provider.
is_role_basedboolean | nullWhether the address is a role-based alias such as info@ or sales@.
confidence_scorenumber | nullScore expressing confidence in the address.
validation_errorsarray | nullValidation errors collected for the item.
scraped_emailsarray | nullEmail addresses scraped from the business website.
scraped_phonesarray | nullPhone numbers scraped from the business website.
scraped_social_mediaarray | nullSocial media profile links scraped from the business website.
scrape_statusstring | nullStatus of the website crawl.
scrape_errorstring | nullError encountered during the website crawl.
errorstring | nullError message, if the item failed to process.

πŸ’» How to Use the Google Maps Email Scraper (Step by Step)

Step 1: Define Your Google Maps Search Term

googleMapsSearchTerm should describe the category of business you want, exactly as you would type it into Google Maps. Broad terms like "restaurants" return large volumes but mixed quality; specific terms like "orthodontist" or "commercial roofing contractor" return fewer results with much tighter intent. If you are building a niche B2B list, run several narrow terms as separate runs rather than one broad term β€” the aggregate list will be cleaner and easier to segment later.

Step 2: Set the Geographic Target

googleMapsLocation accepts a natural location string such as "Miami, Florida" or "Manchester, United Kingdom". Google Maps results are strongly geography-bound, so a city-level target usually returns a manageable, coherent set. For nationwide coverage, run the Google Maps email scraper once per metropolitan area and combine the datasets; this gives you far better coverage than a single country-level query, which tends to concentrate on a handful of major cities.

Step 3: Choose How Many Businesses to Collect

maxBusinesses accepts a value between 1 and 1000 and defaults to 20. The scraper stops once the target is reached. Start small β€” 20 to 50 β€” for a first pass. Because the crawl step visits multiple pages per business website, a run of several hundred businesses takes considerably longer than a plain place-listing scrape, so it pays to confirm your search term returns the right kind of business before committing to a large number.

Step 4: Decide Whether to Filter to Email-Only Results

emailOnlyResults defaults to false, meaning every matching business is returned regardless of whether an address was recovered. Keep it off when you want a complete market map including businesses with no web presence β€” the phone and full_address fields still make those rows useful for cold calling or direct mail. Turn it on when the dataset is destined straight for an email platform and rows without addresses are just noise.

Step 5: Run the Google Maps Email Scraper and Monitor Progress

Start the run from the Apify Console or trigger it through the API. The log reports which businesses are being processed and how the website crawl is going. Watch for a pattern of scrape_error values early on β€” if many sites are failing in the same way, it is usually faster to stop, adjust, and restart than to let a long run complete with sparse results.

Step 6: Filter and Grade the Extracted Emails

Once the dataset is ready, apply your own quality bar. A common approach is to keep records where mx_valid is true and is_disposable is false, then sort by confidence_score. Use is_role_based to split generic inboxes from personal-looking addresses and write different opening lines for each. validation_errors explains any address that failed, which is worth reviewing before you discard a batch wholesale.

Step 7: Export to Your CRM or Outreach Platform

Export the dataset as CSV or Excel for a straightforward spreadsheet import, or pull JSON through the API to feed a CRM directly. Map name to the company field, email to the primary contact, full_address or the decomposed address fields to location, and website to the company domain. Keep place_id as an external identifier so that repeat runs can be de-duplicated reliably rather than by fuzzy name matching.


πŸ”Œ API Access & Integrations

Trigger the Google Maps email scraper and receive results in one synchronous call:

curl -X POST "https://api.apify.com/v2/acts/scrapers-hub~google-maps-email-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"googleMapsSearchTerm": "coffee shops",
"googleMapsLocation": "Miami, Florida",
"maxBusinesses": 50,
"emailOnlyResults": true
}'

The same run in Python, with quality filtering applied to the results:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run_input = {
"googleMapsSearchTerm": "dentists",
"googleMapsLocation": "Austin, Texas",
"maxBusinesses": 200,
"emailOnlyResults": True,
}
run = client.actor("scrapers-hub/google-maps-email-scraper").call(run_input=run_input)
leads = []
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("mx_valid") and not item.get("is_disposable"):
leads.append({
"company": item.get("name"),
"email": item.get("email"),
"phone": item.get("phone"),
"city": item.get("city"),
"rating": item.get("avg_rating"),
"confidence": item.get("confidence_score"),
})
print(f"{len(leads)} qualified leads")

The Actor also connects to Zapier, Make, Google Sheets, Slack and any custom endpoint through Apify webhooks, so a finished run can append rows to a spreadsheet, create CRM records or post a summary to your sales channel automatically.


πŸ’‘ Best Use Cases for Google Maps Email Data

🎯 Local B2B Lead Generation

Pair googleMapsSearchTerm with a city to build a targeted prospect list, then qualify it on avg_rating and total_reviews so you approach established businesses first. Because email, phone and full_address all arrive together, the same dataset supports email, phone and direct-mail outreach without a second data purchase.

πŸ—ΊοΈ Territory Planning and Field Sales Routing

lat and long turn the dataset into a mappable layer. Cluster businesses geographically, assign them to reps by zip or city, and plan efficient visit routes. full_address gives you a ready-to-use string for navigation apps and CRM address fields.

πŸ“ˆ Competitive and Market Density Analysis

Running the Google Maps email scraper across several locations for the same search term reveals how densely a category is served in each market. Aggregating total_reviews and avg_rating by city shows where competition is entrenched and where a market looks underserved.

🧹 Contact Database Enrichment and Cleaning

Already have a list of company names? Use the scraper's output to enrich it β€” website, domain, phone and validated email fill in the blanks, while syntax_valid, dns_valid and mx_valid let you retire dead addresses in an existing CRM before they generate bounces.

πŸ“£ Multichannel Prospecting Campaigns

scraped_social_media captures social profile links found on business websites, so a single run supports coordinated email plus social touches. Combining that with scraped_phones gives sales development teams three independent channels per account.

πŸͺ Franchise and Partner Recruitment

Businesses in adjacent categories are often the best partnership targets. Search for complementary business types in your operating areas, filter to those with a website and a recovered email, and use avg_rating as a proxy for operational quality when prioritising who to approach.

πŸ“¬ Deliverability-Safe Email List Building

Because is_disposable, is_role_based, smtp_valid and confidence_score accompany every address, you can construct a sending list that protects your domain reputation. Segment high-confidence, non-role addresses into your primary sequence and hold everything else for a slower, lower-volume warm-up.


βš™οΈ Tips for Better Google Maps Email Scraping Results

  • Run narrow search terms rather than broad ones. "Italian restaurant" produces a far more coherent list than "food", and narrow terms are easier to write relevant outreach copy for.
  • Split large geographies into city-level runs. A single country-wide googleMapsLocation tends to over-sample big cities. Several city runs give better coverage and let you track cost per market.
  • Start with a low maxBusinesses value. Twenty results is enough to confirm the search term matches the businesses you intend to reach before scaling to hundreds.
  • Leave emailOnlyResults off for market research. Businesses without recoverable emails still carry useful phone, avg_rating and address data; filter them out later rather than discarding them at collection time.
  • Always filter on mx_valid before sending. An address that passes syntax checks but has no MX record will bounce. This one filter removes the majority of hard bounces.
  • De-duplicate on place_id, not on business name. Names vary between listings and datasets; place_id is stable and unique per location, which matters when you merge runs from overlapping areas.

πŸ› οΈ Troubleshooting

Why do some businesses have no email address? Not every business publishes one. Check pages_scraped and scrape_status β€” if pages were crawled successfully and emails_found is zero, the site genuinely has no visible address. If scrape_error is populated, the site blocked or failed the crawl and may be worth a manual look.

Why did the run return fewer businesses than maxBusinesses? maxBusinesses is a target, not a guarantee. Google Maps returns a finite number of places for a given term and location, so a narrow niche in a small town will legitimately exhaust the available results early. Broaden the search term or widen the location.

Some emails have smtp_valid set to false but look correct. Should I drop them? Not necessarily. Many mail servers deliberately refuse verification probes, so smtp_valid can be false for a perfectly deliverable address. Treat mx_valid as the reliable floor and use smtp_valid and confidence_score together as a ranking signal rather than a hard filter.

Why are most of my results role-based addresses like info@ or contact@? That is normal for small local businesses, which typically publish a single shared inbox. is_role_based flags them so you can adjust tone and expectations. Role addresses often still reach a decision-maker at a small company, even though they perform poorly at larger organisations.

The run is taking a long time. What is happening? Each business with a website triggers a multi-page crawl, so runtime scales with maxBusinesses rather than being fixed. Lower maxBusinesses, or split the work into several smaller runs by location so partial results are available sooner.


❓ Frequently Asked Questions About Google Maps Email Scraping

What is a Google Maps email scraper? It is a tool that searches Google Maps for businesses matching a keyword and location, then visits each business website to extract email addresses, phone numbers and social profiles, returning one enriched record per business.

Does Google Maps show business email addresses directly? Almost never. Google Maps listings carry a name, address, phone and sometimes a website, but not an email. This Actor recovers emails by crawling the linked website, which is why website and domain appear alongside the contact fields.

How do I search a specific city or region? Set googleMapsLocation to a natural location string such as "Miami, Florida" or "Manchester, United Kingdom". For multi-region coverage, run the scraper once per area and merge the datasets.

How many businesses can I scrape in one run? maxBusinesses accepts values from 1 to 1000, with a default of 20. The scraper stops as soon as the target is reached or the available results run out.

Can I get only businesses that have an email address? Yes. Set emailOnlyResults to true and businesses where no email could be extracted are excluded from the dataset.

How are the extracted emails validated? Each address is checked across four layers, reported as syntax_valid, dns_valid, mx_valid and smtp_valid, with additional is_disposable and is_role_based flags and an overall confidence_score.

What does confidence_score mean in practice? It is a numeric quality signal for the address. Use it to tier your outreach β€” highest scores first, mid-range through a slower warm-up sequence β€” rather than as a single yes/no threshold.

What is the difference between email and emails? email is the single primary address selected for the business, while emails is the full array of addresses recovered. scraped_emails holds what the website crawl found before selection.

Can I export the Google Maps email scraper results to CSV or Excel? Yes. Apify datasets export as JSON, JSONL, CSV, Excel, XML and RSS directly from the Console, or through the dataset API.

How do I avoid duplicates when merging several runs? De-duplicate on place_id. It is unique and stable per Google Maps location, unlike business names which vary in punctuation and formatting between listings.

Can I use the coordinates for mapping? Yes. lat and long are returned as numbers per business, so the dataset plots directly onto any mapping tool and supports radius filtering without a separate geocoding step.

Does the scraper find phone numbers as well as emails? Yes. phone carries the number associated with the business, and scraped_phones holds any additional numbers discovered during the website crawl.

What does pages_scraped tell me? It reports how many pages of the business website were visited. A value of zero alongside a populated scrape_error means the crawl never got started, which usually points to a blocked or offline site rather than a business with no contact details.

Can I schedule the Google Maps email scraper to run regularly? Yes. Apify Schedules let you run it on a cron expression, which is useful for tracking new business openings in a territory or refreshing a lead list monthly.

Is scraping business contact details from Google Maps legal? The Actor collects publicly available business information. How you use it is governed by data-protection law in your jurisdiction and by the marketing rules that apply to your outreach. See the disclaimer below.


πŸ†˜ Support & Feedback

Hit a problem with the Google Maps email scraper? Report it on the Issues tab of the Actor page, including your input configuration and the run ID so the behaviour can be reproduced.

Need something tailored? For custom search logic, additional enrichment steps, a different validation policy or direct integration with your CRM, get in touch at scraperhubapi@gmail.com with a short description of your requirements.

If the Actor helped you build a usable lead list, a review on the Apify Store is genuinely appreciated. Feedback from real users guides which improvements get built next.


βš–οΈ Disclaimer

This Google Maps email scraper collects publicly available business information β€” listings, published websites and the contact details businesses choose to display on them. It does not access private accounts, bypass authentication or retrieve data hidden behind a login.

You are responsible for how the collected data is used. Business contact details can still constitute personal data under the GDPR, the CCPA, PECR and equivalent regimes, particularly where an address identifies an individual. Before running outreach, establish a lawful basis, honour opt-out requests promptly, include the disclosures your jurisdiction requires, and store only what you genuinely need for as long as you need it.

Respect the terms of service of Google Maps and of every website crawled during a run, along with any applicable rate limits and robots directives. Marketing to the addresses in this dataset is subject to anti-spam legislation such as CAN-SPAM, CASL and the ePrivacy rules, and compliance is entirely the user's responsibility.

If you want data about you or your business removed from a dataset produced by this Actor, contact scraperhubapi@gmail.com and the request will be actioned.