Google Maps Lead Enrichment - Emails, Phones, Socials avatar

Google Maps Lead Enrichment - Emails, Phones, Socials

Pricing

from $2.60 / 1,000 results

Go to Apify Store
Google Maps Lead Enrichment - Emails, Phones, Socials

Google Maps Lead Enrichment - Emails, Phones, Socials

Turn Google Maps searches into sales-ready lead lists with business names, addresses, ratings, websites, public emails, phone numbers, social profiles, contact pages, and optional email-domain validation. You can also enrich existing website or business lists.

Pricing

from $2.60 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Google Maps Lead Enrichment — Emails, Phones & Social Profiles

Turn a plain Google Maps search into a sales-ready lead list in one run.

Most Google Maps scrapers stop at the map pin: name, address, rating, website. That is a directory listing, not a lead. This Actor takes the extra step — it opens each business's website, reads the homepage and the pages a human would click to find a contact (/contact, /about, /impressum, /enquiry), and pulls out the email addresses, phone numbers and social profiles you actually need to start a conversation. It then checks whether the email's domain can receive mail at all, so obvious placeholder addresses never reach your CRM.

You give it plumbers in Austin TX. You get back rows with service@austinplumbing.com, +15129004663, a LinkedIn URL, a Facebook URL, the coordinates, the rating and the place ID — one row per business.


What you get

StageWhat happens
1. FindEach search query is resolved against Google Maps' structured business search. Up to 20 businesses per request, up to about 120 per query. Name, address, phone, rating, category, coordinates, place ID and website come from here.
2. EnrichThe business website and its most relevant contact or about pages are checked, up to your page budget.
3. ExtractPublic emails, phone numbers, and social profile URLs are collected and deduplicated.
4. ValidateThe primary email's domain gets a DNS MX lookup, so you can tell a real mailbox domain from a theme placeholder, and you learn which mail provider the business runs on.

Honest hit rates

Measured across 118 real small-business websites found through Google Maps in six countries (US, UK, India, Australia), plus a further live verification run:

SignalShare of businesses
Website reachable~89% (up to ~95% with the blocked-site retry enabled)
At least one email address~71–75%
At least one phone number~65–85%
At least one social profile~83–87%
At least one contact channel of any kind~95%

These rates vary a lot by vertical. In our measurements: US home services (plumbers, HVAC) landed around 55–60% email, because those businesses deliberately push click-to-call and hide email behind JavaScript contact forms. Wellness and design businesses in Australia and India landed around 85–90% email. Professional services (law, dental) sit in between. Plan your list size around the low end of that range, not the high end.

Around 5% of the email domains we found do not resolve at all — theme placeholders shipped with a website template. The email_domain_mx_ok field flags those for you.


Input parameters

{
"queries": [
"dentists in Portland OR",
"interior designers Bangalore",
"law firms Manchester UK"
],
"maxResults": 100,
"maxPagesPerSite": 4,
"concurrency": 8,
"verifyEmailDomains": true,
"onlyWithContact": false,
"retryBlockedWithProxy": false
}
FieldTypeDefaultDescription
queriesstring[][]Google Maps searches, written exactly as you'd type them into Maps. Put the location in the text ("plumbers in Austin TX"), not in a separate field.
websitesstring[][]Optional. Enrich these URLs directly and skip the Maps step. Can be combined with queries.
businessesobject[][]Optional. Business objects that each carry a website field (e.g. output from a Maps place scraper). Their fields are carried through onto the enriched rows.
maxResultsinteger10Maximum enriched rows across all queries. Max 1000.
maxPagesPerSiteinteger4Homepage plus up to 3 ranked contact pages. Capped at 4 — see Limitations.
concurrencyinteger8Websites fetched in parallel. Max 32. Raise the run's memory to 512 MB before going above 16.
verifyEmailDomainsbooleantrueDNS MX check on the primary email's domain.
onlyWithContactbooleanfalseDrop businesses with no email, phone or social profile at all. Fewer rows, fewer charges.
retryBlockedWithProxybooleanfalseRetry websites that restrict the first visit. This improves coverage but can make runs slower.
proxyConfigurationobjectpreconfiguredOptional connection settings used only for restricted-site retries.

You can run with queries alone, websites alone, or both together.


Output fields

One row per business.

Business (from Google Maps)

FieldTypeDescription
source_querystringThe query this business came from (or direct-input).
business_namestringBusiness name.
business_addressstringFull formatted address.
business_phonestringPhone listed on the Maps profile.
business_categorystringPrimary category, e.g. Plumber.
business_categoriesstring[]All categories on the listing.
business_ratingnumberStar rating, e.g. 4.8.
latitudenumberDecimal latitude.
longitudenumberDecimal longitude.
place_idstringGoogle place ID.
google_maps_cidstringGoogle Maps CID.
google_maps_urlstringAbsolute link to the Maps listing.

Contact intelligence (from the website)

FieldTypeDescription
websitestringWebsite as listed on Google Maps.
final_urlstringURL actually reached after redirects.
emailsstring[]All email addresses found, deduplicated, best-signal first.
primary_emailstringThe highest-confidence address.
primary_email_sourcestringmailto, cfemail (decoded from obfuscated markup) or text.
emails_countnumberNumber of distinct emails found.
email_domainstringDomain of the primary email.
email_is_freemailbooleantrue for gmail/yahoo/outlook-type addresses — normal and usable for small businesses.
email_domain_mx_okbooleantrue when the domain has MX records and can receive mail.
email_mx_providerstringgoogle, microsoft365, zoho, godaddy or other. Useful for segmentation.
phonesstring[]Phone numbers found on the site, tel: links first.
primary_phonestringBest phone number, falling back to the Maps phone.
phones_countnumberNumber of distinct phones found.
facebook_urlstringFacebook profile/page URL.
instagram_urlstringInstagram profile URL.
linkedin_urlstringLinkedIn company/person URL.
youtube_urlstringYouTube channel URL.
x_urlstringX (Twitter) profile URL.
tiktok_urlstringTikTok profile URL.
pinterest_urlstringPinterest profile URL.
social_profiles_countnumberHow many distinct social networks were found.
contact_pagesstring[]The contact/about pages that were actually read.
has_contactbooleantrue if any contact channel was found.

Run diagnostics

FieldTypeDescription
fetch_statusstringok, http_4xx, http_5xx, blocked_shell, dns_error, ssl_error, timeout, connect_error, not_html, social_website, no_website.
http_statusnumberHTTP status of the homepage request.
pages_fetchednumberPages read for this business.
bytes_fetchednumberBytes of HTML read for this business.
elapsed_msnumberWall time spent on this business.
scraped_atstringISO 8601 UTC timestamp.

Example output

{
"source_query": "plumbers in Austin TX",
"business_name": "Austin Plumbing",
"business_address": "5115 N Lamar Blvd Ste 100, Austin, TX 78751",
"business_phone": "(512) 900-4663",
"business_category": "Plumber",
"business_categories": ["Plumber", "Drainage service", "Water softening equipment supplier"],
"business_rating": 4.8,
"latitude": 30.3189435,
"longitude": -97.7301705,
"place_id": "ChIJq0fCfwkpW4YR4EqPvo68RGQ",
"google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJq0fCfwkpW4YR4EqPvo68RGQ",
"website": "https://austinplumbing.com/",
"final_url": "https://www.austinplumbing.com/",
"emails": ["service@austinplumbing.com"],
"primary_email": "service@austinplumbing.com",
"primary_email_source": "text",
"email_domain": "austinplumbing.com",
"email_is_freemail": false,
"email_domain_mx_ok": true,
"email_mx_provider": "microsoft365",
"phones": ["+15129004663", "5129004663", "(512) 900-4663"],
"primary_phone": "+15129004663",
"facebook_url": "https://www.facebook.com/AustinPlumbing512",
"instagram_url": "https://www.instagram.com/austinplumbingtx/",
"linkedin_url": "https://www.linkedin.com/company/austin-plumbing/",
"youtube_url": "https://www.youtube.com/@AustinPlumbingtx",
"x_url": "https://x.com/austinplumber",
"tiktok_url": "https://www.tiktok.com/@austinplumbingtx",
"pinterest_url": "https://www.pinterest.com/austinplumbingtx/_profile/",
"social_profiles_count": 7,
"contact_pages": [
"https://www.austinplumbing.com/contact-us/",
"https://www.austinplumbing.com/about-us/",
"https://www.austinplumbing.com/book-appointment/"
],
"fetch_status": "ok",
"http_status": 200,
"pages_fetched": 4,
"bytes_fetched": 415783,
"elapsed_ms": 5423,
"has_contact": true,
"scraped_at": "2026-07-27T22:51:47+00:00"
}

Limitations

Read these before you size a campaign.

  • Roughly one business in four yields no email. That is a real outcome, not a bug. 18 of 105 successfully-read sites in our measurement had no email address anywhere across four pages — many small businesses genuinely only publish a phone number and a JavaScript contact form. Those rows still carry phone and social data.
  • Hit rate depends heavily on the vertical. US home services are the weakest (~55–60% email); wellness, design and professional services abroad are the strongest (~85–90%). Budget for the low end.
  • Crawl depth is capped at 4 pages per site and this is deliberate. We tested going to 10 pages on the sites that produced no email: it recovered 2 of 18, one of which was a regulator's address rather than the business's, while tripling bandwidth per site. There is no meaningful yield beyond 4.
  • Email validation is domain-level, not mailbox-level. email_domain_mx_ok proves the domain can receive mail. It does not prove info@ exists. Mailbox-level checks require SMTP conversations that are not possible from this environment.
  • A single Maps query saturates at about 120 businesses. For larger territories, split into several narrower queries (by suburb, by adjacent city, by sub-category) rather than raising maxResults on one broad query.
  • Free-mail addresses are kept, not filtered. About one in six small businesses uses a Gmail or Yahoo address as its real business contact. The email_is_freemail flag lets you decide; the Actor does not decide for you.
  • Some businesses list a Facebook page as their website. Those are recorded in facebook_url with fetch_status: social_website rather than crawled.
  • Roughly 5–11% of sites are unreachable because of dead domains, broken hosting, or access restrictions. fetch_status records the user-visible outcome.
  • A search that matches nothing returns zero rows and finishes successfully. It is not treated as an error.

Use cases

  • Feed the output straight into a CRM or cold-email tool — the rows are flat, typed and deduplicated.
  • Filter on email_domain_mx_ok = true and has_contact = true for the cleanest outreach list.
  • Segment by email_mx_provider when you want to target businesses on Google Workspace versus Microsoft 365.
  • Use business_rating and business_categories to prioritise before you ever send.

Compliance

This Actor reads only publicly published business contact information from public websites and public business listings. It does not access private accounts, does not log in anywhere, and does not attempt to bypass authentication. Business contact data is still personal data in many jurisdictions — you are responsible for having a lawful basis for contacting the businesses you collect, and for honouring opt-outs under GDPR, CAN-SPAM, CASL, DPDP and any other regime that applies to you.

Compared to alternatives

  • vs. lukaskrivka Google Maps enrichment actors: This actor combines Maps discovery and website-contact enrichment in one run while keeping the source place fields.
  • vs. a standard Google Maps scraper: It adds public emails, phones, social profiles, contact pages, and domain-level email signals to each place record.

FAQ

Does every business return an email address? No. Expect roughly 71–75% email coverage overall, with meaningful variation by industry and country.

Can I enrich an existing website list? Yes. Use websites, or use businesses to preserve your original business fields.

Does domain validation prove a mailbox exists? No. It confirms that the email domain accepts mail, not that an individual mailbox is active.

Last verified: 2026-07

More lead-generation actors at thirdwatch.dev.