๐ง Google Maps Email And Phone Number Scraper
Pricing
from $2.50 / 1,000 results
๐ง Google Maps Email And Phone Number Scraper
Find business emails and phone numbers behind Google Maps places: scrape listings, then crawl each website for emails, phones, socials and contact pages. Email verification, dedupe, generic-address filters. No API key needed.
Pricing
from $2.50 / 1,000 results
Rating
0.0
(0)
Developer
Data Minds
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
0
Monthly active users
15 days ago
Last modified
Categories
Features
Share
What is Google Maps Email And Phone Number Scraper?
Google Maps Email And Phone Number Scraper is a Google Maps email scraper that turns a business search such as "dentist in Denver, Colorado" into one contact row per business, with emails, phone numbers and social profiles. Enter a search term and a location, click Start, and export the list. On the Gold plan a result costs $0.0025.
Use it for:
- Lead generation: build a Google Maps lead list with a best email and a best phone number for each business, or collect Google Maps leads with emails for one niche.
- Cold email list building: keep only businesses with an email, drop free mailboxes, and skip generic inboxes such as info@ or sales@ to get a lead list for cold outreach.
- B2B prospecting for local businesses: search a niche in a city, filter by rating, category words and website, and hand the rows to your sales team.
- Google Maps lead generation for agencies: run one search per client niche and export a ready contact list.
- CRM enrichment: enrich a Google Maps dataset with contacts by pasting place links you already have.
- Email verification before sending: switch on the built-in address check and count the deliverable addresses per business.
You may know this kind of tool as a Google Maps email extractor or a Google Maps email finder. Others call it a Google places email extractor or a Google Maps business email extractor. Teams also use it as a Google Maps lead finder or a Google Maps contact info scraper. Some search for a Google Maps email and phone extractor.
Results land in an Apify dataset that you can export, call through the API, schedule, or connect to other tools.
What can this Google Maps email scraper do?
- ๐ Search by term, place or link: enter business types such as
dentistorroofing contractorplus a location, pinpoint the area with city, state, county and postal code, or paste Google Maps place links. - ๐ง Business email finder: a local business email scraper that returns every address a business publishes, with a best email chosen for you.
- ๐ Phone number finder for businesses: a Google Maps phone number extractor that keeps the number listed on Google Maps apart from numbers published on the website.
- ๐ Contact page scraper: a contact details scraper that opens up to 10 extra contact or about pages per website to collect contact details from business websites.
- ๐ Social media links from business websites: LinkedIn, Instagram, Facebook, X, YouTube, TikTok, Pinterest and Discord profiles when a site links to them.
- ๐งน Clean and verify the list: remove duplicate emails, keep business-domain addresses only, skip generic inboxes, and verify scraped emails with optional free-mail, role, disposable and deliverability checks.
- ๐ฏ Filter prospects: category keywords, name matching, minimum rating, website presence, closed places and big chains.
What data can Google Maps Email And Phone Number Scraper extract?
Each dataset row is one business. Field names below are exactly the keys in the output.
| Field group | Fields |
|---|---|
| ๐ช Business | businessName, categoryName, website, domain, totalScore, permanentlyClosed, temporarilyClosed, imageUrl |
| ๐ง Emails | primaryEmail, emails, emailCount, hasEmail |
| ๐ Phones | primaryPhone, googlePhone, googlePhoneUnformatted, websitePhones, otherPhones, phoneCount, hasPhone |
| ๐ Social profiles | socialProfilesCount, linkedIns, instagrams, facebooks, twitters, youtubes, tiktoks, pinterests, discords |
| ๐ Location | address, city, state, postalCode, countryCode, location (lat, lng) |
| ๐งช Verification | emailsVerification, verifiedEmailCount |
| ๐งญ Source and IDs | rank, searchString, placeId, cid, url, scrapedAt |
| ๐ Full profile (optional) | businessDetails, only when you turn on the full business profile option |
Note: Not every business publishes an email, a phone number or social links, so those fields can be empty lists or
null.emailsVerificationandverifiedEmailCountare filled only when email verification is on, andbusinessDetailsonly when the full profile option is on.
What data can't Google Maps Email And Phone Number Scraper extract?
- Reviews and review text. This Actor is built for contact rows, not review analysis.
- Emails that a business does not publish. If no address is public,
hasEmailisfalse.
For broader business listings with hours, categories and ratings, try Google Maps Leads Scraper.
How to scrape Google Maps emails and phone numbers
Google Maps Email And Phone Number Scraper is designed for an easy start, even if you have never extracted data from the web before.
- Create a free Apify account using your email.
- Open Google Maps Email And Phone Number Scraper.
- Enter one or more
searchStringsArrayterms, such asdentist. - Add a
locationQuery, such asDenver, Colorado, and setmaxCrawledPlacesPerSearch. - Optionally turn on
onlyWithEmail,excludeFreeEmailsorverifyEmails. - Click Start and wait for the run to finish.
- Download your contact list in JSON, CSV, Excel, XML, or HTML from the Output tab.
How much does it cost to scrape Google Maps?
Google Maps Email And Phone Number Scraper uses a pay-per-event pricing model: you pay for each contact row saved to the dataset, plus a small start event per run. Platform usage is billed in addition. For example, 1,000 contact rows on the Gold plan cost $2.50 in result events.
| Apify plan | Price per result | Price per 1,000 results |
|---|---|---|
| Free | $0.005 | $5.00 |
| Bronze | $0.00425 | $4.25 |
| Silver | $0.0035 | $3.50 |
| Gold | $0.0025 | $2.50 |
The start event costs $0.00005 per GB of memory, with a minimum of one event. With the default memory of 1,024 MB, that is 1 start event, or $0.00005 per run.
Worked example: 2,000 contact rows on the Silver plan cost 2,000 x $0.0035 = $7.00 in result events, plus one start event and platform usage.
See the pricing tab for all events.
Is scraping Google Maps free?
You can start for free. The Apify Free plan includes $5 in monthly credit. At the Free price of $0.005 per result, that credit covers about 1,000 contact rows (5 / 0.005), before platform usage. Paid plans lower the price per result.
Input
To run the Actor you only need one search term in searchStringsArray. Add a location to focus on one area. Set the input in the Actor interface or send it as JSON through the API.
This example looks up 20 dentists in Denver, Colorado:
{"searchStringsArray": ["dentist"],"locationQuery": "Denver, Colorado","maxCrawledPlacesPerSearch": 20,"proxyConfiguration": {"useApifyProxy": false}}
See the input tab for the full description of every field.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchStringsArray | array | Yes | none (prefill dentist) | Business search terms, one per line. Each term is searched on its own. |
locationQuery | string | No | "" | Free-text area such as Denver, Colorado. |
maxCrawledPlacesPerSearch | integer | No | 20 | Businesses to look up per term (1 to 5000; about 600 per search at most). |
startUrls | array | No | [] | Google Maps place links for specific businesses. |
onlyWithEmail | boolean | No | false | Drop businesses with no email. Also limits the search to places with a website. |
onlyWithPhone | boolean | No | false | Drop businesses with no phone number. |
excludeFreeEmails | boolean | No | false | Skip free mailboxes such as gmail.com and keep company-domain addresses. |
excludeGenericEmails | boolean | No | false | Skip role addresses such as info@ or sales@. |
dedupeEmails | boolean | No | true | Never return the same address twice in one run. |
maxEmailsPerPlace | integer | No | 10 | Maximum emails kept per business (1 to 100). |
contactMaxSubpages | integer | No | 3 | Extra contact or about pages opened per website (0 to 10). |
verifyEmails | boolean | No | false | Check every address and report the result. |
skipBigChains | boolean | No | true | Skip big chain websites. |
language | string | No | en | Language for business names and categories. |
countryCode | string | No | us | Country view used for the search. |
city, state, county, postalCode | string | No | "" | Precise area fields, used when locationQuery is blank. |
categoryFilterWords | array | No | [] | Keep a business only when one of these words appears in its categories or description. |
searchMatching | string | No | all | all, only_includes or only_exact name matching. |
placeMinimumStars | string | No | "" | Minimum rating, from two to fourAndHalf. |
website | string | No | allPlaces | allPlaces, withWebsite or withoutWebsite. |
skipClosedPlaces | boolean | No | false | Leave out closed businesses. |
includeBusinessDetails | boolean | No | false | Add the full business profile as businessDetails. |
proxyConfiguration | object | No | {"useApifyProxy": false} | Proxy configuration. Leave as is unless you need requests to come from a specific country. |
browserFallback | boolean | No | true | Retry requests that keep failing one more time. |
maxConcurrency | integer | No | 5 | Business websites opened at the same time (1 to 20). |
requestDelaySeconds | number | No | 0.8 | Pause between requests, 0 to 10 seconds. |
maxRetries | integer | No | 3 | Retries per failed request (1 to 10). |
Website filter and email-required mode
website controls which places are kept. Emails come from business websites, so withWebsite gives the highest hit rate.
Find businesses with a website and email by setting website to withWebsite and onlyWithEmail to true.
- โ
Good:
"onlyWithEmail": trueto build a send-ready list. - โ Bad:
"website": "withoutWebsite"together with"onlyWithEmail": true, because places without a website have no site to read emails from, so this mix gives few or no rows.
Warning: Turning on
onlyWithEmaildrops every business without an email, so a run can save far fewer rows thanmaxCrawledPlacesPerSearch.
Maps links and location fields
Use startUrls for specific places and searchStringsArray for searches. When locationQuery is filled, it is used and the city, state, county and postalCode fields are ignored. Leave locationQuery blank to use the precise fields.
- โ
Good:
"locationQuery": "Brooklyn, NY", or a blanklocationQuerywith"postalCode": "80202". - โ Bad: filling
locationQueryandpostalCodefor different areas and expecting both to apply.
Output
Results appear in the Output tab and in the run's default dataset. You can view them as a table or JSON, pick only the fields you need, and download them in JSON, CSV, Excel, XML, or HTML. The dataset has seven table views: Contact Overview, Emails, Phone Numbers, Social Profiles, Email Verification, Business and Location, and Source and IDs.
Export business contacts to Excel, CSV or JSON for your CRM. The Google Maps email scraper writes one row per business.
JSON example
Results for the input example above (fake values):
{"rank": 1,"searchString": "dentist","businessName": "Example Dental Care","categoryName": "Dentist","website": "https://example.com","domain": "example.com","primaryEmail": "hello@example.com","emails": ["hello@example.com", "appointments@example.com"],"emailCount": 2,"hasEmail": true,"primaryPhone": "+13035550100","googlePhone": "(303) 555-0100","googlePhoneUnformatted": "+13035550100","websitePhones": ["303-555-0100"],"otherPhones": [],"phoneCount": 2,"hasPhone": true,"socialProfilesCount": 2,"linkedIns": [],"instagrams": ["https://www.instagram.com/example"],"facebooks": ["https://www.facebook.com/example"],"twitters": [],"youtubes": [],"tiktoks": [],"pinterests": [],"discords": [],"address": "100 Example St, Denver, CO 80202, United States","city": "Denver","state": "Colorado","postalCode": "80202","countryCode": "US","location": { "lat": 39.7392, "lng": -104.9903 },"totalScore": 4.8,"permanentlyClosed": false,"temporarilyClosed": false,"placeId": "ChIJexample0000000000000000","cid": "0x0:0x0","url": "https://www.google.com/maps?cid=1234567890","imageUrl": "https://example.com/photo.jpg","emailsVerification": [],"verifiedEmailCount": 0,"scrapedAt": "2026-10-26T10:00:00+00:00"}
When verifyEmails is on, each item in emailsVerification has email, free, role, quality, result, subResult and error. verifiedEmailCount counts the addresses with quality set to good.
Run summary
Each run also saves a run-summary record in the key-value store with contactRows, searches, businessesFound, skippedByFilters, skippedWithoutContact, emailsCollected, rowsWithEmail, rowsWithPhone, socialProfiles, pricingModel, chargedContactEvents, stoppedByChargeLimit, durationSeconds and perSearch.
Notes and limitations
- A row is saved and charged only after a business passes your filters.
- If you set a maximum cost per run, the run stops when that budget is reached and keeps everything saved so far.
- The number of businesses depends on what Google Maps lists for your search and area, so
maxCrawledPlacesPerSearchis an upper limit, not a guarantee. - Email addresses are only returned when the business publishes them.
Tips and advanced usage
How many results can you scrape with Google Maps Email And Phone Number Scraper?
The input accepts up to 5000 businesses per search term, but each search reads at most 30 result pages of about 20 businesses, so expect roughly 600 businesses per search term at most. Split larger areas into several searches, for example one per city. The real number depends on the term, the area, your filters and how many businesses publish an email. A quick test run with 20 businesses shows what to expect.
How to build a business email list by city
Run the Google Maps email scraper for a city and niche, such as plumber in Austin, Texas. To build a business email list by city, run one search per city with the same searchStringsArray. Scrape Google Maps without an API key: no Google key is needed in the input.
How to get faster or cheaper results
- Start with a small
maxCrawledPlacesPerSearchand increase it once the rows look right. - Set
onlyWithEmailto save only rows you can use, so you pay for fewer unwanted rows. - Keep
contactMaxSubpagesat a low value if you only need the homepage email. - Leave
verifyEmailsoff unless you need the deliverability result, because it adds work per address.
Known issues
- Email verification can return an
unknownresult for some mail servers. Treat those addresses as unconfirmed.
Integrations and API
Can I use this Google Maps email scraper as an API?
Yes. The Apify API gives you programmatic access to start runs, schedule them and fetch results. Use the apify-client package for Node.js or Python. See the API tab for ready-to-use code.
How to scrape Google Maps with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("data_minds/google-maps-email-and-phone-number-scraper").call(run_input={"searchStringsArray": ["dentist"],"locationQuery": "Denver, Colorado","maxCrawledPlacesPerSearch": 20,"proxyConfiguration": {"useApifyProxy": False},})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["businessName"], item["primaryEmail"], item["primaryPhone"])
Can I integrate Google Maps Email And Phone Number Scraper with other apps?
Yes. Connect it with Make, Zapier, Google Sheets, Slack and other tools through Apify integrations. Use webhooks to trigger an action when a run finishes, and schedule runs to keep your lead list fresh. To schedule Google Maps scraping, use Apify schedules with the same input.
Can I use Google Maps Email And Phone Number Scraper with AI agents (MCP)?
Yes. Connect the Actor to Claude and other AI assistants through the Apify MCP server. Open the MCP tab for setup steps.
Other Google Maps scrapers
| Actor | What it does |
|---|---|
| ๐ Google Maps Leads Scraper | Business leads from Google Maps: name, address, phone, website, rating, hours, categories and socials. |
| ๐ Dubai Real Estate Scraper โ Unit Number & DLD Permit Checker | Scrape Dubai real estate listings and get the DLD-verified unit number, RERA permit status, price, size and agent contacts. |
| ๐ Website Lead Intelligence | Turns a list of company websites into a scored outreach list with verified emails and decision-makers. |
| ๐ Podcast Directory Scraper โ Host Contacts & Emails | Search the Apple Podcasts directory by keyword, chart or link and get host emails, owner names, websites, social profiles, ratings, publishing... |
| ๐ Website Content Crawler | Turn any website into clean text, Markdown and page metadata for RAG pipelines and LLM knowledge bases. |
FAQ
Is it legal to use a Google Maps email scraper?
It is generally legal to scrape Google Maps emails when you collect publicly available data. Business emails and phone numbers can still count as personal data in some regions, so follow cold email GDPR and CAN-SPAM rules. Read Is web scraping legal? for background. This is not legal advice.
How does Google Maps Email And Phone Number Scraper work?
You enter search terms and a location, or paste Google Maps links. The Actor finds the matching businesses, collects the contact details each one publishes, applies your filters, and saves one deduplicated row per business to a dataset. You then export the list or fetch it through the API.
Why scrape Google Maps emails and phone numbers?
Emails are published on business websites, not in a Maps listing. A contact list helps with lead generation, local sales prospecting, agency outreach and CRM enrichment. You get a best email, a best phone and social profiles in one row, so your team can contact businesses without searching each website by hand.
Why am I getting fewer results than expected?
Fewer rows usually mean your filters removed businesses. Check onlyWithEmail, onlyWithPhone, excludeFreeEmails, website, placeMinimumStars and categoryFilterWords. Also try a broader search term or a larger area. A business is saved only if it passes every filter you set, and businesses without a website cannot yield website emails. Run a small test first to see which filter removes the most rows.
Can I get only business emails and skip Gmail addresses?
Yes. Turn on excludeFreeEmails to skip free mailboxes such as gmail.com and keep company-domain addresses. Add excludeGenericEmails to also skip role addresses like info@ and sales@. Together they give you a cleaner cold email list, though some businesses will then have no email.
Can I check email deliverability and verify scraped emails?
Yes. Set verifyEmails to true. Each address gets a result in emailsVerification, and verifiedEmailCount counts the ones marked good. Some mail servers give no clear answer, so those addresses show as unknown. Verification does not guarantee that a message will reach an inbox.
How do I get a business email from Google Maps?
Enter a business type and a location, then run the Actor. It finds the matching Google Maps businesses and returns the emails each one publishes on its website as primaryEmail and emails. Turn on onlyWithEmail to keep only businesses where at least one address was found.
How is this different from a general Google Maps places scraper?
A general Google Maps places scraper or data extractor returns listing details such as address, rating and hours. This Actor is contact-first: it keeps those basics but adds emails, phone numbers and social links in one row per business. For a wider listing export, use Google Maps Leads Scraper.
Can I run it on a schedule?
Yes. Use Apify schedules to rerun the same search daily, weekly or monthly, and add a webhook or an integration to send new rows to your CRM or spreadsheet. Each run is billed on its own, and with dedupeEmails on, the same address is not returned twice within one run.
What should I do if the Actor is not working?
Open the Issues tab and describe your input and what you expected. Include the run link if you can. Check first that your search term and location are valid and that your filters are not too strict, since that explains most empty results.
Support and feedback
Found a bug or have a feature request? Please create an issue on the Issues tab.
Need a custom solution or more data? Contact hello.dataminds@gmail.com.
Built and maintained by the data_minds team on Apify.
This Actor is independent and is not affiliated with or endorsed by Google. You are responsible for using the data in line with applicable laws and the terms of the sites involved.