๐Ÿ“ง Google Maps Email And Phone Number Scraper avatar

๐Ÿ“ง Google Maps Email And Phone Number Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
๐Ÿ“ง Google Maps Email And Phone Number Scraper

๐Ÿ“ง 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 $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Data Minds

Data Minds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

๐Ÿ“ง Google Maps Email And Phone Number Scraper โ€” Business Email Finder & Contact Extractor

Google Maps Email And Phone Number Scraper is a production-grade Apify Actor that answers one question fast: how do I contact this business? Give it a business type and an area โ€” dentist in Denver, Colorado โ€” and it returns one clean contact row per business: best email address, every email found, the Google phone number, every phone published on the website, and LinkedIn / Instagram / Facebook / X / YouTube / TikTok / Pinterest / Discord profiles โ€” streamed into your Apify Dataset as they are found.

๐Ÿ’ก Need a custom version, private integration, or a tailored contact-enrichment pipeline? Email hello.dataminds@gmail.com.

Built for cold email outreach, cold calling, lead enrichment, recruiting, partnership scouting and CRM hygiene โ€” anyone who needs business emails and phone numbers rather than a full business dump.


๐Ÿ“‘ Table of contents


๐Ÿ“ง What is Google Maps Email And Phone Number Scraper?

Google Maps lists the phone number of a business, but never the email address โ€” that lives on the business website, usually two clicks deep on a contact page. Collecting that by hand is the slowest part of building any outreach list.

This Actor closes the gap and hands you a contact-first table:

  • Finds the businesses matching your search in the area you choose.
  • Takes the phone number Google publishes and keeps it in both display and dialable form.
  • Opens the business website, plus its contact and about pages, and extracts every email address and phone number published there.
  • Picks the best one for you โ€” primaryEmail prefers an address on the company's own domain, primaryPhone prefers the verified Google number.
  • Cleans the list โ€” drop free mailboxes, drop generic info@ inboxes, remove duplicates across the entire run, cap emails per business.
  • Verifies deliverability on request โ€” disposable, free-mail and role checks plus a mail-server probe. No third-party key.
  • Streams every row live to your dataset โ€” export to JSON, CSV, Excel, XML, or pull it through the Apify API.

โœจ Main features

  • ๐Ÿ“ง Email finder โ€” homepage + contact/about pages, junk-domain filtering, image-file filtering.
  • ๐Ÿฅ‡ Best contact picked for you โ€” primaryEmail and primaryPhone are ready to paste into a sequence.
  • โ˜Ž๏ธ Three phone sources, kept apart โ€” Google's listed number, tel: links from the site, and loose text matches in a separate otherPhones column so you always know how confident to be.
  • ๐Ÿ”— 8 social networks discovered and deduplicated.
  • ๐Ÿงน Contact hygiene โ€” business-emails-only mode, generic-inbox skipping, run-wide deduplication, per-business caps.
  • โœ… Only-with-email / only-with-phone modes โ€” a row is saved only when it is actually actionable.
  • ๐Ÿงช Built-in verification โ€” free / role / disposable flags, MX lookup and an SMTP deliverability probe.
  • ๐ŸŽฏ Prospect filters โ€” category keywords, name matching, minimum rating, website presence, closed places, big chains.
  • ๐Ÿช Optional full business profile โ€” attach every Google Maps field under businessDetails when you need more than contacts.
  • ๐Ÿšฆ Blocking handled for you โ€” the run adapts on its own when a site pushes back, with no configuration required.
  • ๐Ÿ“ฆ Live dataset writes and seven prebuilt views โ€” Contact Overview, Emails, Phones, Socials, Verification, Business & Location, Source & IDs.

๐Ÿ‘ฅ Who is this Actor for?

  • ๐Ÿ“ฌ Cold email teams โ€” build a clean, deduplicated address list in minutes.
  • ๐Ÿ“ž Cold calling & telesales โ€” phone-first lists with the verified Google number plus website numbers.
  • ๐Ÿงฒ Lead-gen agencies โ€” deliver contact data per niche and city on demand.
  • ๐Ÿง‘โ€๐Ÿ’ผ Recruiters โ€” reach local employers directly instead of through a portal.
  • ๐Ÿค Partnership & BD teams โ€” find the right inbox for outreach at scale.
  • ๐Ÿ—ƒ๏ธ RevOps / CRM teams โ€” fill in missing emails, phones and socials on existing accounts.
  • ๐Ÿง‘โ€๐Ÿ’ป Developers โ€” a simple business email API with no scraping stack to maintain.

โš™๏ธ How the contact hunt works

  1. Search โ€” each term is looked up in your chosen area, page after page, deduplicated by place.
  2. Filter early โ€” rating, category, website presence and closed status are applied before any website is opened.
  3. Read the listing โ€” business name, category, address, rating and the Google phone number.
  4. Crawl the website โ€” homepage plus up to 10 contact/about pages per business.
  5. Extract & clean โ€” emails, phones and socials are collected, filtered by your rules, then deduplicated.
  6. Verify (optional) โ€” every surviving address gets a quality verdict.
  7. Save immediately โ€” each contact row lands in your dataset the moment it is ready.

๐ŸŽ›๏ธ Contact rules you control

RuleWhat it does
๐Ÿ“ง Only keep businesses with an emailRows without an address are dropped; the search is automatically limited to businesses that publish a website
โ˜Ž๏ธ Only keep businesses with a phoneRows without any phone number are dropped
๐Ÿข Business emails onlySkips gmail.com, yahoo.com, outlook.com and friends
๐Ÿ™‹ Skip generic inboxesSkips info@, sales@, support@, contact@ and similar role addresses
โ™ป๏ธ Remove duplicate emailsThe same address is never returned twice in one run
๐Ÿ”ข Max emails per businessCaps how many addresses each row keeps
๐Ÿ“„ Extra pages per websiteHow deep to look for a contact page (0โ€“10)
๐Ÿฌ Skip big chain websitesChains rarely publish a reachable inbox

๐Ÿงช Email verification explained

Turn on Verify email addresses and each address gets a verdict:

FieldMeaning
qualitygood, bad or unknown โ€” the summary you can filter on
resultok, invalid, disposable or unknown
subResultWhy โ€” accepted_email, rejected_email, no_mx_record, disposable_domain, smtp_unreachable
freeThe domain is a free mailbox provider
roleThe address is a role inbox rather than a person
emailThe address the verdict belongs to
errorEmpty unless the check itself failed, then the reason

โ„น๏ธ Cloud networks routinely block outbound mail ports. When that happens the verdict is unknown โ€” deliberately, rather than guessing a false good.


๐Ÿ“ค Output format (Dataset)

One row per business, contact fields first. The Output tab ships with seven prebuilt views:

ViewWhat it shows
โœจ Contact OverviewBusiness, best email, best phone, website, counts, city, Maps link
๐Ÿ“ง EmailsDomain, best email, every email, count, has-email flag
โ˜Ž๏ธ Phone NumbersBest phone, Google phone, dialable format, website phones, other numbers
๐Ÿ”— Social ProfilesLinkedIn, Instagram, Facebook, X, YouTube, TikTok, Pinterest, Discord
๐Ÿงช Email VerificationPer-address verdicts and the deliverable count
๐Ÿช Business & LocationCategory, rating, address parts, coordinates, photo
๐Ÿงญ Source & IDsRank, search term, place ID, CID, Maps link, collected timestamp

Field groups in every row

GroupFields
BusinessbusinessName, categoryName, website, domain, address, city, state, postalCode, countryCode, location, totalScore, permanentlyClosed, temporarilyClosed, imageUrl
EmailprimaryEmail, emails, emailCount, hasEmail
PhoneprimaryPhone, googlePhone, googlePhoneUnformatted, websitePhones, otherPhones, phoneCount, hasPhone
SocialsocialProfilesCount, linkedIns, instagrams, facebooks, twitters, youtubes, tiktoks, pinterests, discords
VerificationemailsVerification, verifiedEmailCount
Sourcerank, searchString, placeId, cid, url, scrapedAt
OptionalbusinessDetails โ€” the complete Google Maps profile when you switch it on

A run summary โ€” totals, per-search counts and contact coverage โ€” is stored in the key-value store as run-summary.


๐Ÿงช Example output (JSON)

{
"rank": 2,
"searchString": "dentist",
"businessName": "Icon Dental",
"categoryName": "Dentist",
"website": "https://icondentaldenver.com/",
"domain": "icondentaldenver.com",
"primaryEmail": "info@icondentaldenver.com",
"emails": ["info@icondentaldenver.com"],
"emailCount": 1,
"hasEmail": true,
"primaryPhone": "+17206452153",
"googlePhone": "(720) 645-2153",
"googlePhoneUnformatted": "+17206452153",
"websitePhones": ["17206452153", "7206452153"],
"otherPhones": ["720-645-2153", "720.645.2167"],
"phoneCount": 3,
"hasPhone": true,
"socialProfilesCount": 2,
"linkedIns": [],
"instagrams": ["https://www.instagram.com/icon_dental_denver/"],
"facebooks": ["https://www.facebook.com/IconDentalDenver/"],
"twitters": [],
"youtubes": [],
"tiktoks": [],
"pinterests": [],
"discords": [],
"address": "Icon Dental, 1425 Market St Ste. 100, Denver, CO 80202",
"city": "Denver",
"state": "Colorado",
"postalCode": "80202",
"countryCode": "US",
"location": { "lat": 39.7485634, "lng": -105.0004756 },
"totalScore": 4.6,
"permanentlyClosed": false,
"temporarilyClosed": false,
"placeId": "ChIJโ€ฆ",
"cid": "0x876c78โ€ฆ",
"url": "https://www.google.com/maps?cid=โ€ฆ",
"imageUrl": "https://lh5.googleusercontent.com/โ€ฆ",
"emailsVerification": [],
"verifiedEmailCount": 0,
"scrapedAt": "2026-07-30T09:14:22.104Z"
}

๐Ÿš€ Quick start

Run in Apify Console

  1. Log in at console.apify.com โ†’ Actors.
  2. Open Google Maps Email And Phone Number Scraper.
  3. Enter a business search term (dentist) and a location (Denver, Colorado).
  4. Set Businesses per search term to 10 for a first test.
  5. (Optional) switch on Only keep businesses with an email and Business emails only.
  6. Click Start and watch each contact row appear live in the log.
  7. Open the Output tab, switch between the seven views, and export to JSON / CSV / Excel.

Run via API

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchStringsArray": ["dentist"],
"locationQuery": "Denver, Colorado",
"maxCrawledPlacesPerSearch": 25,
"onlyWithEmail": true,
"excludeFreeEmails": true
}'

Fetch the results once the run finishes:

$curl "https://api.apify.com/v2/datasets/YOUR_DATASET_ID/items?token=YOUR_APIFY_TOKEN&format=csv"

Python client

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("YOUR_ACTOR_ID").call(run_input={
"searchStringsArray": ["law firm", "accountant"],
"locationQuery": "Chicago, Illinois",
"maxCrawledPlacesPerSearch": 50,
"onlyWithEmail": True,
"excludeGenericEmails": False,
"verifyEmails": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["businessName"], row["primaryEmail"], row["primaryPhone"])

๐Ÿ› ๏ธ Input parameters reference

๐Ÿš€ Who are you looking for?

ParameterTypeDefaultDescription
searchStringsArrayarrayโ€”Required. Business search terms, one per line
locationQuerystringโ€”Free-text area, e.g. Denver, Colorado
maxCrawledPlacesPerSearchinteger20Businesses looked up per term
startUrlsarray[]Google Maps place URLs โ€” full, ?cid=โ€ฆ, ?place_id=โ€ฆ or short links (bulk supported)

๐Ÿ“ง Contact rules

ParameterTypeDefaultDescription
onlyWithEmailbooleanfalseKeep only businesses with an email
onlyWithPhonebooleanfalseKeep only businesses with a phone
excludeFreeEmailsbooleanfalseCompany-domain addresses only
excludeGenericEmailsbooleanfalseSkip info@, sales@, support@โ€ฆ
dedupeEmailsbooleantrueNever return the same address twice
maxEmailsPerPlaceinteger10Cap addresses kept per business
contactMaxSubpagesinteger3Extra contact/about pages per website
verifyEmailsbooleanfalseQuality-check every address
skipBigChainsbooleantrueSkip global chain websites

๐ŸŽฏ Business filters ยท ๐Ÿ—ฃ๏ธ Language & region ยท ๐Ÿ“ก Area

ParameterTypeDefaultDescription
categoryFilterWordsarray[]Keep only matching categories
searchMatchingstringallall, only_includes, only_exact
placeMinimumStarsstringโ€”two โ€ฆ fourAndHalf
websitestringallPlacesallPlaces, withWebsite, withoutWebsite
skipClosedPlacesbooleanfalseDrop closed businesses
language / countryCodestringen / usGoogle view used for the search
city / state / county / postalCodestringโ€”Precise area targeting

๐Ÿ“ฆ Output ยท ๐ŸŒ Network ยท โšก Speed

ParameterTypeDefaultDescription
includeBusinessDetailsbooleanfalseAttach the full Maps profile as businessDetails
proxyConfigurationobjectdirectOptional proxy configuration for the run.
browserFallbackbooleantrueGive stubborn requests one extra, more thorough attempt.
maxConcurrencyinteger5Websites opened in parallel (1โ€“20)
requestDelaySecondsnumber0.8Pause between requests
maxRetriesinteger3Attempts per request before it is skipped.

๐Ÿ”Œ Integrations & automation

  • โฐ Schedules โ€” refresh a niche list weekly and only push new addresses to your sequencer.
  • ๐Ÿ”” Webhooks โ€” notify your service when a run finishes.
  • ๐Ÿ”„ Make, Zapier & n8n โ€” send contacts to HubSpot, Pipedrive, Instantly, Lemlist, Airtable or Sheets.
  • ๐Ÿ—„๏ธ Direct API access โ€” dataset items as JSON, JSONL, CSV, XLSX, XML or RSS.

โ“ Frequently asked questions (FAQ)

How do I find a business email address from Google Maps?

Google Maps never shows emails. This Actor follows each listing's website link, opens the contact and about pages, and extracts the addresses published there โ€” then picks the best one for you.

What is primaryEmail exactly?

The first address on the business's own domain. If there is none, the first non-free address. If everything is free-mail, the first address found.

Why are there three phone columns?

Confidence. googlePhone is the number Google publishes, websitePhones come from tel: links (very reliable), and otherPhones are numbers matched in page text (useful, occasionally a fax or a partner's number).

How do I get only company emails, not Gmail addresses?

Turn on Business emails only (excludeFreeEmails).

How do I avoid info@ addresses?

Turn on Skip generic inboxes (excludeGenericEmails). Note that many small businesses publish nothing else, so expect fewer rows.

Are emails deduplicated across the whole run?

Yes, when dedupeEmails is on โ€” useful for franchises and multi-location businesses that share one inbox.

Does verification guarantee delivery?

No verification does. It rules out disposable domains, missing mail servers and rejected recipients; anything it cannot probe is reported as unknown instead of guessed.

Can I also get the full business profile?

Turn on Attach the full business profile and every row gains a businessDetails object with the complete Google Maps record โ€” categories, description, hours, attributes, coordinates and more.

Do I need a proxy?

No. Leave the proxy input empty and the run handles blocking on its own. Set one only when you want a specific country or route.

Is this the same as your Leads Scraper?

Same collection engine, different shape. Use Google Maps Leads Scraper when you want the full business record; use this one when you want a tight contact table ready for outreach.


๐Ÿ› ๏ธ Troubleshooting

SymptomFix
No rows savedonlyWithEmail is strict โ€” switch it off, or raise contactMaxSubpages so contact pages get opened.
Few emails foundSet website: withWebsite, raise contactMaxSubpages, and turn off excludeGenericEmails.
All emails are info@That is what most small sites publish. Turning on excludeGenericEmails trades volume for named inboxes.
Verification returns unknownOutbound mail ports are blocked in most cloud networks; the address is still valid-looking, it simply could not be probed.
Duplicate businesses across termsThey are already deduplicated by place ID โ€” identical names are usually genuinely different branches.
Run feels slowLower contactMaxSubpages, raise maxConcurrency, turn off verifyEmails.
Fewer businesses than requestedThe area may hold fewer matches; broaden the location or add related terms.

๐Ÿ’ฌ Help, support & custom builds

  • ๐Ÿ› Found a bug or need a new field? Open an issue on the Actor's Issues tab.
  • ๐Ÿ“ง Custom scrapers, private integrations, bulk pipelines: hello.dataminds@gmail.com
  • โญ Enjoying it? Leave a review โ€” it genuinely helps.

This Actor collects publicly published business contact details โ€” the same information any visitor can read on a company website. Scraping public data is generally lawful in the EU and the US, but you remain responsible for how you use it:

  • Do not collect data behind authentication or paywalls.
  • Respect the target site's terms of service and reasonable request rates.
  • Handle personal data (a named person's email, for instance) in line with GDPR, CCPA and local law.
  • Follow CAN-SPAM, CASL and equivalent rules before sending marketing email, and always offer an opt-out.

See Apify's guide on the legality of web scraping for background. This is not legal advice.


๐Ÿ” SEO keywords targeted

google maps email scraper ยท google maps phone number scraper ยท business email finder ยท email extractor from google maps ยท b2b contact scraper ยท lead contact enrichment ยท cold email list builder ยท google maps contact details ยท company email finder ยท local business phone numbers ยท email verification tool ยท social media profile scraper ยท sales prospecting data ยท google places contact extractor ยท outreach list builder ยท email finder API ยท business directory scraper ยท phone number extractor ยท maps lead contacts ยท verified business emails