Google Maps Email Extractor (Leads with Emails & Socials) avatar

Google Maps Email Extractor (Leads with Emails & Socials)

Pricing

from $1.40 / 1,000 place scrapeds

Go to Apify Store
Google Maps Email Extractor (Leads with Emails & Socials)

Google Maps Email Extractor (Leads with Emails & Socials)

Search Google Maps for any business type and city, then visit each business website to add emails and LinkedIn, Facebook, Instagram, X, YouTube, TikTok and WhatsApp links. Name, phone, website, address, rating and reviews included. Export to Excel, CSV or JSON.

Pricing

from $1.40 / 1,000 place scrapeds

Rating

0.0

(0)

Developer

Julio Barcellos Rangel

Julio Barcellos Rangel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

This Google Maps email extractor turns a Google Maps search into a lead list: it finds the businesses for your search terms and city, then visits each business website to add emails and LinkedIn, Facebook, Instagram, X, YouTube, TikTok and WhatsApp links. It is made for sales teams, agencies and marketers who prospect local businesses. Use it as a Google Maps lead scraper or to get emails from Google Maps businesses, with name, phone, website, address, rating and reviews in the same row, ready to export to Excel or CSV.

What does Google Maps Email Extractor do?

The robot works in two steps for every search:

  1. Google Maps search. It runs the same list search Google Maps runs when you type a query and reads the places 20 at a time. With the term dentist and the location Austin, TX, it searches for dentist in Austin, TX (with Portuguese as the language it uses em: academia em Florianópolis). Each place comes with name, categories, rating, review count, phones, website, full address, coordinates, opening status, place ID and a Google Maps link.
  2. Website visit. For each place that has a website, it loads the home page and the pages that look like contact pages on the same site (URLs with words such as contact, about, team, impressum, support, contato or sobre), up to Max pages per website. From those pages it collects emails (including simple obfuscation like name [at] domain [dot] com), phone numbers from click-to-call links and links to social profiles. Emails on the business's own domain come first.

You give it search terms, an optional location, how many places you want per search, how many pages to read on each website, and the language and country of the search. A place found by more than one search term is returned only once.

What comes out is one row per business with all the Google Maps data plus emails, websitePhones, seven social profile fields and websiteCrawled, which tells you whether the website could be read.

What data can you extract?

FieldWhat it meansExample
searchTermFull query sent to Google Maps (term plus location)dentist in Austin, TX
positionRank of the place in the results for that query, starting at 11
nameBusiness nameEmergency Dentist of Austin
categoryMain categoryDentist
categoriesAll categories shown on Google Maps["Dentist", "Cosmetic dentist", "Dental clinic"]
ratingAverage star rating4.8
reviewsCountNumber of reviews90
phonePhone in local format, from Google Maps(512) 961-6200
phoneInternationalPhone in international format, from Google Maps+1 512-961-6200
websiteBusiness website listed on Google Mapshttps://emergencydentistofaustin.com/
addressFull address1030 Norwood Park Blvd #324, Austin, TX 78753
streetStreet and number1030 Norwood Park Blvd #324
neighborhoodNeighborhoodHeritage Hills
cityCityAustin
stateState or regionTexas
postalCodePostal or ZIP code78753
countryCodeTwo-letter country codeUS
latitudeLatitude30.3406789
longitudeLongitude-97.6924276
openingStatusOpen or closed at the time of the run, in the search languageOpen · Closes 8 PM
descriptionShort Google description, when there is onenull
timezoneTime zone of the placeAmerica/Chicago
placeIdGoogle place IDChIJpXb4FgrJRIYRyRpdhSsCHHk
cidGoogle CID (customer ID) of the place13243667843430391418
googleMapsUrlLink that opens the place on Google Mapshttps://www.google.com/maps/place/?q=place_id:ChIJpXb4FgrJRIYRyRpdhSsCHHk
thumbnailURL of the place's main photo, small sizehttps://lh3.googleusercontent.com/…
emailsEmails found on the website, own-domain addresses first["info@emergencydentistofaustin.com"]
websitePhonesPhone numbers from click-to-call links on the website, digits only["5129616200", "+15129616200"]
linkedInLinkedIn links found on the website["https://www.linkedin.com/company/38th-street-dental"]
facebookFacebook links found on the website["https://www.facebook.com/emergencydentistofaustin"]
instagramInstagram links found on the website["https://www.instagram.com/atxfamilydental"]
twitterX (Twitter) links found on the website, as x.com["https://x.com/yogaeastaustin"]
youtubeYouTube channel links found on the website["https://www.youtube.com/@breezeoralcare"]
tiktokTikTok links found on the website["https://www.tiktok.com/@swishdental"]
whatsappWhatsApp links found on the website["https://api.whatsapp.com/send?…"]
websiteCrawledtrue when at least one page of the website was readtrue
scrapedAtWhen the row was collected (UTC)2026-10-10T20:28:13.418Z
errorOnly on error rows: what went wrongNo places found

Google Maps fields that a place does not have come back as null. Contact fields are always lists, empty ([]) when nothing was found or the place has no website.

How to use Google Maps Email Extractor

  1. Open the robot in Apify Console and go to the Input tab.
  2. Add one or more Search terms, one per line, for example dentist, real estate agency or yoga studio.
  3. Type a Location such as Austin, TX, Lisbon or Curitiba, or leave it empty if each term already says where.
  4. Set Max places per search and Max pages per website.
  5. Set Language and Country, for example pt-BR and br for Brazil.
  6. Click Start and wait for the run to finish. Visiting websites takes longer than a plain Google Maps search.
  7. Open the Output tab to see the Leads table, then export the data as JSON, CSV, Excel or HTML.

Input

FieldTypeDefaultWhat it does
searchTermsarray of strings (required)["dentist"]What you would type in Google Maps. One search per entry; repeated terms are removed.
locationstringempty (the form shows Austin, TX as an example)City, region or neighborhood added to every search term. Leave it empty if the place is already in the terms.
maxPlacesPerSearchinteger20Places per search, from 1 to 500. Google shows about 120 per search.
maxPagesPerWebsiteinteger3Pages read on each business website, from 1 to 10 (home, contact, about…).
languagestringenLanguage of the search, categories and opening status, e.g. en, pt-BR, es, de, fr.
countrystringusTwo-letter country code Google uses for the search, e.g. us, br, gb, de.
proxyobject{"useApifyProxy": true}Apify Proxy settings, used for Google Maps and for the website visits.

Example input:

{
"searchTerms": ["dentist", "yoga studio"],
"location": "Austin, TX",
"maxPlacesPerSearch": 50,
"maxPagesPerWebsite": 3,
"language": "en",
"country": "us",
"proxy": { "useApifyProxy": true }
}

Output example

One real row from the latest run (20 dentists in Austin, TX). The thumbnail URL is shortened.

{
"searchTerm": "dentist in Austin, TX",
"position": 1,
"name": "Emergency Dentist of Austin",
"category": "Dentist",
"categories": ["Dentist", "Cosmetic dentist", "Dental clinic", "Dental hygienist", "Emergency dental service", "Endodontist", "Medical Center", "Oral surgeon", "Orthodontist", "Periodontist"],
"rating": 4.8,
"reviewsCount": 90,
"phone": "(512) 961-6200",
"phoneInternational": "+1 512-961-6200",
"website": "https://emergencydentistofaustin.com/",
"address": "1030 Norwood Park Blvd #324, Austin, TX 78753",
"street": "1030 Norwood Park Blvd #324",
"neighborhood": "Heritage Hills",
"city": "Austin",
"state": "Texas",
"postalCode": "78753",
"countryCode": "US",
"latitude": 30.3406789,
"longitude": -97.6924276,
"openingStatus": "Open · Closes 8 PM",
"description": null,
"timezone": "America/Chicago",
"placeId": "ChIJpXb4FgrJRIYRyRpdhSsCHHk",
"cid": "13243667843430391418",
"googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:ChIJpXb4FgrJRIYRyRpdhSsCHHk",
"thumbnail": "https://lh3.googleusercontent.com/grass-cs/AABkmLfPUZ9K3kTbn8Qc3qWn2gCmSMBZR80MdIc3Vwlusx8L4ZqO5ELcPYkpb5YvU0CgodO83LfkrrQNFvNFucR9ZOJ3w4vCAnFt…=w86-h114-k-no",
"emails": ["info@emergencydentistofaustin.com"],
"websitePhones": ["5129616200", "+15129616200"],
"linkedIn": [],
"facebook": ["https://www.facebook.com/emergencydentistofaustin"],
"instagram": [],
"twitter": [],
"youtube": [],
"tiktok": [],
"whatsapp": [],
"websiteCrawled": true,
"scrapedAt": "2026-10-10T20:28:13.418Z"
}

Not every business publishes an email. In that latest run, 18 of the 20 websites could be read and 9 businesses had at least one email.

How much does it cost?

The robot uses pay per event pricing with two events. Platform usage is included in the price, so there is no separate charge for compute or proxy.

  • Place scraped: $2.00 per 1,000 places ($0.002 each), for every business row returned.
  • Website contacts: $2.00 per 1,000 websites ($0.002 each), only when the business has a website and at least one page of it loads (websiteCrawled is true).
Apify planPer 1,000 placesPer 1,000 websites read
Free$2.00$2.00
Bronze (10% off)$1.80$1.80
Silver (20% off)$1.60$1.60
Gold and higher (30% off)$1.40$1.40

Worked examples on the Free plan:

  • The latest run: 20 places and 18 websites read = $0.040 + $0.036 = about $0.08.
  • 1,000 places where 850 websites load = $2.00 + $1.70 = $3.70.
  • 10,000 places, all with working websites = $20.00 + $20.00 = $40.00 (or $28.00 on Gold).

What is not charged: error rows (No places found, Google Maps did not respond, try again later), places skipped as duplicates, and the website event when a place has no website, when its website does not load, or when the visit runs out of time. A website that loads is charged even if no email was found on it. The number of pages per website does not change the price.

Use cases

  • Cold email lists for local businesses: dentists, lawyers, gyms or restaurants in a city, with email, phone and website in one row.
  • Agency prospecting: find businesses with a weak online presence, for example a low review count or no social profiles on their site.
  • Social media outreach: collect the Instagram, Facebook and TikTok accounts of local businesses.
  • WhatsApp-first markets: find businesses that link a WhatsApp chat on their website.
  • CRM enrichment: refresh phones, websites and emails of the businesses you already work with.
  • Market research: count and compare businesses in each neighborhood, with ratings and review counts.
  • Franchise and distributor search: list shops of one type in many cities with their contact details.

Tips and limits

  • About 120 places per search. That is what Google Maps shows for one query. For a whole city, run one search per neighborhood or ZIP code; places found twice are returned once.
  • Location is optional. From the API, location stays empty unless you send it, so a term like plumber in Miami is searched exactly as typed. In the Console form it comes pre-filled with Austin, TX as an example; clear it if your terms already say where.
  • 45 seconds per website. A slow website is cut off so it does not hold up the run; each page has a 12-second timeout and is tried up to 2 times. If nothing loaded, websiteCrawled is false and the contact lists are empty.
  • Same website only. Only pages on the business's own host are read, without running JavaScript, so contacts that only appear in a browser can be missed.
  • Phones from the website come from click-to-call links only. The Google Maps phone is always in phone and phoneInternational.
  • Review the social links. Every matching link on the pages is kept, so a list can include a share button (for example a WhatsApp share link with no phone number) or a personal profile.
  • Emails are collected, not verified. Run them through an email verification tool before a campaign.
  • No review texts. You get rating and reviewsCount only.

Use it from the API, Python or JavaScript

JavaScript (Node.js) with the official apify-client package:

const { ApifyClient } = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const input = { searchTerms: ['real estate agency'], location: 'Lisbon', maxPlacesPerSearch: 60, maxPagesPerWebsite: 3 };
const run = await client.actor('juliob.rangel/google-maps-email-extractor').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.filter((x) => x.emails && x.emails.length));

Python with the official apify-client package:

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
input = {'searchTerms': ['academia'], 'location': 'Curitiba', 'language': 'pt-BR', 'country': 'br'}
run = client.actor('juliob.rangel/google-maps-email-extractor').call(run_input=input)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

You can also connect the robot to Make, Zapier or n8n, export results to Google Sheets, send them to a webhook when a run finishes, or let AI agents call it through the Apify MCP server.

FAQ

Do I need a Google account, cookies or a Google Maps API key? No. The robot reads public Google Maps results and public business websites. You only need an Apify account.

Can I export the leads to Excel or CSV? Yes. Download the dataset as JSON, CSV, Excel or HTML from the Output tab, or read it through the API.

How many leads can I get? About 120 places per search, because that is what Google Maps shows. Add more search terms or split the city into neighborhoods or ZIP codes to get more.

Why do some businesses have no email? Many businesses do not publish an email on their website, use only a contact form, or show it in a way the robot cannot read. When the website does not load, websiteCrawled is false and you are not charged for the website visit.

What is the difference with Google Maps Scraper? Google Maps Scraper returns only the Google Maps data and is charged per place. This robot also visits each website for emails and social profiles, which adds the website event.

Why did I get an error row? No places found means Google returned nothing for that query. Google Maps did not respond, try again later means the first result page could not be loaded after several tries. Error rows are free.

Is it legal to collect emails from Google Maps businesses? The robot only collects publicly available data. You are responsible for complying with Google's terms, with privacy laws such as GDPR and LGPD, and with anti-spam laws such as CAN-SPAM. Some businesses are run by individuals under their own name, and personal data needs a legitimate reason to be processed.


Extrator de E-mails do Google Maps (PT-BR)

Pesquise negócios no Google Maps por tipo e cidade e receba uma lista de contatos: nome, telefone, site, endereço, nota e, visitando o site de cada empresa, e-mails e redes sociais (Instagram, Facebook, LinkedIn, WhatsApp). Use idioma pt-BR e país br.