Google Maps Email Extractor ✅ $1.5/1k emails avatar

Google Maps Email Extractor ✅ $1.5/1k emails

Pricing

from $1.50 / 1,000 saved email leads

Go to Apify Store
Google Maps Email Extractor ✅ $1.5/1k emails

Google Maps Email Extractor ✅ $1.5/1k emails

From $1.50 / 1,000 saved email leads. Fast Google Maps Email Extractor for public business emails, websites, phones, social links, ratings, addresses, Place IDs, CIDs, and Google Maps URLs from keywords, categories, Place IDs, or map areas.

Pricing

from $1.50 / 1,000 saved email leads

Rating

0.0

(0)

Developer

Hundevmode Labs

Hundevmode Labs

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Google Maps Email Extractor: Scrape Business Emails from Google Maps

From $1.50 / 1,000 saved email leads on paid Apify plans. Use this Google Maps Email Extractor to find public business emails from Google Maps places, together with websites, phone numbers, social media links, ratings, addresses, coordinates, Google Place IDs, CIDs, and source URLs.

The actor is built for Google Maps lead generation. It searches Google Maps by keyword and location, Google Maps URL, Place ID, or selected map area, opens each business website, checks likely contact pages, and saves one dataset item when a public email address is found by default.

Unlike a generic Google Maps scraper, this actor is optimized around email leads: it scans more Google Maps candidates internally when needed, enriches places with fast Google Maps detail payloads to get websites, crawls business sites concurrently, and charges the primary result event only for saved email leads.

AI agent skill

Use the dedicated Google Maps Email Extractor Apify agent skill when you want AI agents to build local email lead searches, run this actor through Apify, control spend with maxTotalChargeUsd, and return public business email leads for outreach, CRM, Sheets, n8n, BI, or enrichment workflows.

Install with skills.sh-compatible agents:

npx skills add hundevmode/apify-google-maps-email-extractor-agent-skill \
--skill google-maps-email-extractor-apify

ClawHub skill slug: google-maps-email-extractor-apify.

At a glance

NeedUse this actor for
Local email leadsPublic business emails from Google Maps places
Sales outreachCompany name, website, email, phone, address, rating, category, and social links
Agency prospectingNiche and city lead lists such as dentists, roofers, lawyers, photographers, gyms, clinics, restaurants, and contractors
CRM enrichmentStart from Google Maps URLs, Place IDs, or existing Google business records
Local SEO researchFind competitors with websites, reviews, categories, coordinates, and public contact channels
Data exportDownload leads as JSON, CSV, Excel, or use the Apify Dataset API

Quick start

  1. Add a business type to searchStringsArray, for example wedding photographer, dentist, roofing contractor, or real estate agent.
  2. Add a specific locationQuery, for example Austin, Texas, USA.
  3. Set maxCrawledPlacesPerSearch to the number of email leads you want.
  4. Keep contactResultMode as emailsOnly to save only places where a public email is found.
  5. Run the actor and export the dataset from Apify.
{
"searchStringsArray": ["wedding photographer"],
"locationQuery": "Austin, Texas, USA",
"maxCrawledPlacesPerSearch": 100,
"contactResultMode": "emailsOnly",
"contactPagesLimit": 2,
"includePersonalData": true,
"website": "withWebsite",
"skipClosedPlaces": true,
"language": "en"
}

Pricing

The actor uses Apify pay-per-event pricing. The primary event is contact-lead-saved, which is charged when a lead is saved to the dataset.

EventFreePaid plans
Saved email lead$3.00 / 1,000 saved email leads$1.50 / 1,000 saved email leads
Add-on: filter applied$0.80 / 1,000 saved leads$0.35 / 1,000 saved leads
Actor start$0.00005 per start event$0.00001 per start event

Internal Google Maps candidate scanning, fast place-detail lookup, and website pages that do not produce a saved lead are not charged as primary result events.

The actor respects Apify maxTotalChargeUsd. If your run budget only allows 500 saved email leads, the actor stops before saving more than 500 charged leads and finishes successfully with a RUN_SUMMARY.

What this Google Maps email scraper extracts

Data groupExample fields
Business identitytitle, categoryName, categories, description, rank, searchString
Email dataemails, emailDetails.email, emailDetails.type, emailDetails.sourceUrl, emailDetails.domainMatch
Website datawebsite, additionalInfo.companyContacts.sourceUrl, fetchedUrls, pagesFetched
Phone dataphone, phoneUnformatted, additionalPhones
Social linksfacebooks, instagrams, linkedIns, twitters, youtubes, tiktoks
Address and locationaddress, street, neighborhood, city, state, postalCode, countryCode, location, plusCode
Google Maps metricstotalScore, reviewsCount, reviewsDistribution, permanentlyClosed, temporarilyClosed, claimThisBusiness
Google identifiersplaceId, cid, fid, kgmid, url, searchPageUrl, language
Contact diagnosticscontactSignals, contactStatus, additionalInfo.companyContacts

Email classification:

TypeMeaning
roleGeneric company inbox such as info@, sales@, hello@, or contact@
personalPerson-like email found on a public business website
unknownPublic email where the local part is not clearly role-based or person-like

domainMatch helps you distinguish emails on the business domain from emails found on third-party pages.

  • Build local business email lists from Google Maps.
  • Find public emails for dentists, doctors, clinics, law firms, contractors, restaurants, agencies, real estate companies, wedding vendors, repair services, schools, gyms, and local shops.
  • Enrich Google Maps places with websites, email addresses, phones, and social media links.
  • Collect outreach-ready leads by city, niche, category, rating, and website availability.
  • Find businesses that publish direct contact emails instead of only contact forms.
  • Create local market datasets with business name, email, phone, website, address, reviews, and coordinates.
  • Run repeatable lead generation workflows through the Apify API.

Input options

Search terms and location

Use searchStringsArray with locationQuery for standard Google Maps email extraction.

{
"searchStringsArray": ["dentist"],
"locationQuery": "Phoenix, Arizona, USA",
"maxCrawledPlacesPerSearch": 250,
"contactResultMode": "emailsOnly",
"language": "en"
}
FieldWhat it does
searchStringsArrayOne or more Google Maps search terms, such as dentist, roofing contractor, yoga studio, or restaurant.
locationQuerySearch area for all terms, such as Phoenix, Arizona, USA or Berlin, Germany. Use one concrete area per run for cleaner leads.
maxCrawledPlacesPerSearchTarget number of saved leads per search term or URL. In emailsOnly mode, the actor may scan more candidates internally to find enough public emails.
languageGoogle Maps language code used for localized place data when Google provides it.

Google Maps URLs and Place IDs

Use startUrls when you already have Google Maps URLs. Use placeIds when another system stores Google Place IDs.

{
"startUrls": [
{
"url": "https://www.google.com/maps/search/marketing+agency+near+Chicago,+IL"
}
],
"placeIds": ["ChIJ..."],
"maxCrawledPlacesPerSearch": 50,
"contactResultMode": "emailsOnly"
}
FieldWhat it accepts
startUrlsGoogle Maps search URLs, place URLs, CID URLs, and prepared Google Maps links
placeIdsGoogle Place IDs and compatible values prefixed with place_id:

Direct place URLs and Place IDs are useful for CRM enrichment. Search URLs are useful when you prepared Google Maps queries outside Apify.

Contact result mode

ModeSaved dataset items
emailsOnlyOnly places where at least one public email was found. This is the default.
contactsOnlyPlaces with at least one email, phone, or social profile.
allPlacesAll scanned places after filters, with contact fields when available.

Use emailsOnly for priced email lead generation. Use contactsOnly when phone numbers and social links are also acceptable lead signals.

Website pages to check

contactPagesLimit controls how many pages the actor fetches from each business website.

ValueTypical behavior
1Fastest. Checks the homepage only.
2Recommended default. Checks the homepage and the best contact/about page.
3-5Deeper search for niches where emails are usually hidden on team, staff, imprint, footer, or legal pages.

The actor follows likely same-domain contact links such as contact, about, team, staff, imprint, footer, privacy, and legal pages. Higher values can find more emails but increase runtime.

Personal data toggle

includePersonalData controls person-like emails and personal LinkedIn profile URLs found on public business websites.

{
"includePersonalData": false
}

Set it to false when you want mostly generic company contacts such as info@, sales@, hello@, office@, or contact@.

Filters and categories

Use filters to narrow results before contact extraction.

FieldValues
placeCategoriesPredefined Google Business Profile categories
customPlaceCategoriesCustom category text matched against categoryName and categories
categoryFilterWordsKeyword filter matched against categories
searchMatchingall, only_includes, or only_exact
minStarsMinimum Google rating
websiteallPlaces, withWebsite, or withoutWebsite
skipClosedPlacesRemove closed businesses when Google exposes the status

For email extraction, website: "withWebsite" is recommended because public emails are usually found on the business website.

Search area options

For broader or custom geography, use:

  • countryCode
  • city
  • state
  • county
  • postalCode
  • customGeolocation
  • locationBounds
  • strictLocationBounds

The free-text locationQuery has priority when provided. Use structured fields or custom map areas when you need more control over coverage.

How it works

  1. The actor builds Google Maps search sources from keywords, location, URLs, Place IDs, or map area.
  2. Base discovery uses fast Google Maps payload responses to collect candidate places.
  3. In email extraction mode, the actor scans extra candidates internally because not every business publishes an email.
  4. A fast Google Maps detail request enriches each candidate with website and place metadata.
  5. The website contact crawler fetches the homepage and likely contact pages.
  6. Emails, phones, and social profiles are normalized and merged into the place record.
  7. The actor saves only records that match contactResultMode.
  8. RUN_SUMMARY records target, saved count, budget guard, enrichment stats, and exhaustion reason.

Output example

{
"title": "Caitlin McWeeney Photography",
"categoryName": "Wedding photographer",
"categories": ["Wedding photographer"],
"address": "4704 Sylvandale Dr, Austin, TX 78745",
"website": "http://caitlinmcweeney.com/",
"emails": ["caitlin@caitlinmcweeney.com"],
"emailDetails": [
{
"email": "caitlin@caitlinmcweeney.com",
"type": "unknown",
"sourceUrl": "https://caitlinmcweeney.com/",
"domainMatch": true
}
],
"facebooks": ["https://www.facebook.com/caitlinmcweeneyphotography"],
"instagrams": ["https://www.instagram.com/caitlinmcweeneyphotography/"],
"contactSignals": {
"emails": 1,
"phones": 0,
"socialProfiles": 2,
"website": true,
"pagesFetched": 2
},
"contactStatus": "found",
"totalScore": 5,
"reviewsCount": 72,
"placeId": "ChIJE2Flwy-1RIYRWqJr_ZiMGc",
"cid": "14617641969142499583",
"location": {
"lat": 30.2216055,
"lng": -97.7879264
},
"url": "https://www.google.com/maps/search/?api=1&query=Caitlin%20McWeeney%20Photography&query_place_id=ChIJE2Flwy-1RIYRWqJr_ZiMGc"
}

Output fields explained

FieldDescription
emailsDeduplicated public email addresses found for the business
emailDetailsPer-email metadata with classification, source page, and domain match
contactSignalsCounts for emails, phones, social profiles, website, and fetched pages
additionalInfo.companyContactsRaw contact crawl details, including fetched URLs and extracted contact data
contactStatusfound when a saved record has contact data
urlGoogle Maps URL for the place
placeId, cid, fidGoogle identifiers for deduplication and downstream enrichment

Run summary

Every run writes diagnostics to RUN_SUMMARY in the default key-value store.

Useful fields:

FieldMeaning
targetRequested saved leads
savedSaved dataset items
targetReachedWhether the requested saved lead count was reached
exhaustionReasonWhy the run stopped, such as target_reached, frontier_exhausted, or charge_limit_reached
datasetItemBudgetPay-per-event budget guard and remaining item estimate
enrichment.detailHttpSucceededFast Google Maps detail lookups that succeeded
enrichment.contactsSucceededWebsite contact crawls that produced contact data
enrichment.contactPagesFetchedWebsite pages fetched during contact extraction
enrichment.filteredBeforePushCandidates skipped because they did not match contactResultMode

If a selected niche or area has fewer public emails than requested, the actor finishes successfully and saves the email leads it found.

API usage

Start a run through the Apify API:

curl -X POST "https://api.apify.com/v2/acts/x_guru~google-maps-email-extractor/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchStringsArray": ["roofing contractor"],
"locationQuery": "Dallas, Texas, USA",
"maxCrawledPlacesPerSearch": 100,
"contactResultMode": "emailsOnly",
"contactPagesLimit": 2,
"includePersonalData": true,
"website": "withWebsite",
"skipClosedPlaces": true,
"language": "en"
}'

After the run finishes, export the default dataset as JSON, CSV, Excel, XML, RSS, or HTML from Apify Console or through the Dataset API.

Tips for better email lead results

  • Use specific niches: orthodontist, commercial electrician, wedding photographer, HVAC contractor, or estate planning attorney.
  • Use one concrete location per run: city, metro area, postal code, county, or custom map area.
  • Keep website set to withWebsite for email extraction.
  • Increase contactPagesLimit for industries where emails are often on team, staff, imprint, or legal pages.
  • Use category filters when a search term returns mixed businesses.
  • Use contactsOnly when phone and social profile leads are acceptable.
  • Set maxTotalChargeUsd on Apify runs when you want a hard spending cap.

Notes

  • Public website contacts are best-effort because each business controls what it publishes.
  • Some businesses publish only contact forms, booking widgets, or social profiles instead of direct emails.
  • emailsOnly can scan more Google Maps places internally than the requested saved lead count.
  • The run finishes successfully even when individual places or websites fail; diagnostics are saved in RUN_SUMMARY.
  • For broad geographic coverage, use a concrete city, postal code, county, state, or custom map area.