Google Maps Contact Enrichment — Business Lead Finder avatar

Google Maps Contact Enrichment — Business Lead Finder

Pricing

from $6.67 / 1,000 results

Go to Apify Store
Google Maps Contact Enrichment — Business Lead Finder

Google Maps Contact Enrichment — Business Lead Finder

Find businesses on Google Maps, then pull an email address and social media links straight off their website. Turns a Maps search into a ready-to-use B2B contact list.

Pricing

from $6.67 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Google Maps Contact Enrichment

Find businesses on Google Maps and get back their email address and social media links — pulled straight from their own website. Turns a Maps search into a ready-to-use B2B contact list.

Why use this actor

  • Search or direct lookup — search by business type + location (e.g. "dentist" in "New York, NY"), or pass exact Google Maps links / place IDs if you already have them.
  • No account or login required — nothing to configure, nothing to authenticate.
  • Finds the website for you — most Maps listings don't show their website field directly; this actor pulls it from the place's full detail page automatically.
  • Real contact data, not guesses — email addresses (including simple "name [at] domain [dot] com" style hiding) and social profile links (Facebook, Instagram, LinkedIn, X/Twitter, TikTok, YouTube), read from the actual homepage and a linked contact/about page.
  • Honest results — if a business's website doesn't publish any contact info, you get a clear "no_contact_found" status back, not a fabricated guess.
  • Stable JSON output, ready for CRM import or a cold-outreach pipeline.

How it works

  1. You give the actor a business type + location (search mode) or a list of exact Google Maps links / place IDs (direct mode).
  2. In search mode, the actor looks up matching places on Google Maps, then fetches each place's full profile to get its website (most search results don't carry a website field on their own).
  3. For every website found, the actor fetches the homepage — and a contact/about page if the homepage links to one — and scans the page for email addresses and social profile links.
  4. Every place becomes one row in your dataset, whether or not contact info was found, so you always know exactly what was checked and what came back empty.

You don't need to manage any browser, proxy, or scraping infrastructure — just give it a query and get a dataset back.

Known limitations (read this before relying on the numbers)

  • Not every business site publishes an email or social link on its homepage/contact page — some hide it behind a contact form only, some only show a phone number. This is a limitation of the target sites, not the actor.
  • JavaScript-only contact widgets are not rendered — this actor reads the page's HTML, it does not run a browser. If a site injects its email or social icons purely via client-side JavaScript with no fallback in the page source, it won't be picked up.
  • Some sites actively block automated requests (site_unreachable status) — a handful of business websites return 403s or time out for any non-browser request, regardless of scraper.
  • Real observed hit rate: across 56 real business websites tested (dentists in New York, plumbers in Austin, coffee shops in Seattle), 71% returned at least one email or social link (41% an email, 66% a social link). Your results will vary by industry — service businesses with active social media (plumbers, coffee shops) tend to score higher than smaller practices with bare-bones sites.

Input

Search mode (default)

{
"mode": "search",
"query": "dentist",
"location": "New York, NY",
"maxItems": 20,
"maxConcurrency": 5,
"language": "en",
"country": "us"
}

Direct mode

{
"mode": "direct",
"placeUrls": [
"https://www.google.com/maps/place/Empire+State+Building/@40.7484,-73.9857,17z"
],
"maxItems": 20
}
FieldTypeDescription
modestring"search" (default) — find businesses by keyword + location. "direct" — pass exact Maps URLs or item_ids and skip search.
querystringBusiness type/keyword to search for. Only used in search mode.
locationstringCity/area text (e.g. "New York, NY"), or exact "lat,lng" coordinates. Only used in search mode.
placeUrlsarrayFull Google Maps place URLs, or item_ids (0x...:0x...). Only used in direct mode.
maxItemsintegerMax number of places to look up and enrich in this run. Default: 20.
maxConcurrencyintegerHow many places to process in parallel. Default: 5.
languagestringLanguage for the Google Maps result text. Default: en.
countrystringGeographic bias for Google Maps results. Default: us.

Output

Real sample from a search run (query: "plumber", location: "Austin, TX"):

{
"_input": "plumber | Austin, TX",
"_scrapedAt": "2026-08-06T09:53:56Z",
"placeName": "Beyond Wow Plumbing & Drains",
"placeAddress": "3432 Greystone Dr, Austin, TX 78731",
"category": "Plumber",
"phone": "(512) 601-6173",
"mapsUrl": "https://www.google.com/maps/place/Beyond+Wow+Plumbing+%26+Drains/@30.3578911,-97.7482485,14z/data=...",
"website": "https://beyondwow.com/?utm_campaign=gmb&utm_medium=gbp-austin&utm_source=google",
"contactEmails": ["info@beyondwow.com"],
"socialLinks": {
"facebook": "https://www.facebook.com/beyondwowplumbing",
"instagram": "https://www.instagram.com/beyondwowplumbing",
"tiktok": "https://www.tiktok.com/@beyondwowplumbing",
"youtube": "https://www.youtube.com/@beyondwowplumbing",
"linkedin": "https://www.linkedin.com/company/beyondwowplumbing"
},
"pagesChecked": [
"https://beyondwow.com/?utm_campaign=gmb&utm_medium=gbp-austin&utm_source=google",
"https://beyondwow.com/contact/"
],
"enrichmentStatus": "found"
}

Real example where the website was reachable but published no contact info at all (an honest "nothing found" result, not an error):

{
"_input": "plumber | Austin, TX",
"placeName": "Rooter-Man Plumbing Austin TX",
"placeAddress": "15503 Patrica St, Austin, TX 78728",
"category": "Plumber",
"phone": "(512) 720-7092",
"website": "http://rooterman.com/austin/",
"contactEmails": [],
"socialLinks": {},
"pagesChecked": ["https://rootermanofaustin.com/"],
"enrichmentStatus": "no_contact_found"
}
FieldTypeDescription
placeNamestringBusiness name from Google Maps.
placeAddressstringBusiness address from Google Maps.
categorystringBusiness category/type (e.g. "Plumber", "Dentist").
phonestringPhone number, from Google Maps (not the website).
mapsUrlstringLink back to the Google Maps listing.
websitestring | nullThe business's website, as listed on Google Maps. null if Maps has no website on file.
contactEmailsarrayEmail addresses found on the website. Empty if none found.
socialLinksobjectSocial profile links found, keyed by platform (facebook, instagram, linkedin, twitter, tiktok, youtube). Empty if none found.
pagesCheckedarrayWhich page(s) were actually fetched (homepage, and a contact/about page if one was found and followed).
enrichmentStatusstring"found" (email or social found), "no_contact_found" (website checked, nothing published), "no_website" (Maps has no website on file), "site_unreachable" (website blocked the request, errored, or timed out), "no_places_found" / "maps_search_failed" / "maps_lookup_failed" (search/lookup problems, see _error).
_inputstringThe query + location (search mode) or the URL/item_id (direct mode) that produced this row.
_scrapedAtstringUTC timestamp of when this row was collected.

Tips

  • If you already run Google Maps Search Places, feed its item_id values straight into direct mode here to skip the search step.
  • Raise maxConcurrency for faster runs on well-behaved sites; lower it if you're seeing a lot of site_unreachable results (some anti-bot-protected sites rate-limit aggressively).
  • enrichmentStatus: "no_website" means the fix is on the Google Maps listing itself, not this actor — the business hasn't added a website to their profile.

Pair with other actors

  • Use Google Maps Search Places first if you want the full raw list of places before deciding which ones to enrich.
  • Use Google Maps Place Detail if you only need the Maps profile (hours, popular times, ratings) without the website enrichment step.