Google Maps With Email Scraper avatar

Google Maps With Email Scraper

Pricing

Pay per usage

Go to Apify Store
Google Maps With Email Scraper

Google Maps With Email Scraper

Extract business leads from Google Maps with verified emails. Search by keyword and location to get names, phones, websites, ratings, and emails scraped from websites or Facebook pages. Perfect for sales prospecting and market research. Exports to JSON, CSV, and Excel.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Hyder Khan

Hyder Khan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Maps Scraper

Scrapes business listings from Google Maps for a given entity type and location, enriches each result with an email address (from the business website or Facebook page), and exports everything to a CSV file.

What it collects

For each listing found on Google Maps:

FieldSource
NameGoogle Maps detail panel
CategoryGoogle Maps detail panel
RatingGoogle Maps detail panel
ReviewsGoogle Maps detail panel
PhoneGoogle Maps detail panel
AddressGoogle Maps detail panel
HoursGoogle Maps detail panel
WebsiteGoogle Maps detail panel
Plus CodeGoogle Maps detail panel
EmailBusiness website → Facebook page via DuckDuckGo (fallback)
CityUser input
CountryUser input
TypeUser input

Requirements

  • Python 3.10+
  • Playwright (Chromium)

Setup

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
playwright install chromium

Usage

$python main.py

You will be prompted for three inputs:

Entity type (e.g. Dental Clinic): Dental Clinic
City (e.g. Doha): Doha
Country (e.g. Qatar): Qatar

Results are saved to results.csv in the project root.

How it works

  1. Opens Google Maps and searches <entity_type> <city> <country>.
  2. Scrolls the results feed until no new listings load.
  3. Clicks each listing, reads the detail panel, and extracts structured data.
  4. Visits the business website and scrapes it for an email address.
  5. If no email is found on the website, searches DuckDuckGo (site:facebook.com <business name>) for the business's Facebook page and scrapes that instead.
  6. Paginates through all Google Maps result pages and repeats.
  7. Writes the collected records to results.csv.

Project structure

google_scraper/
├── main.py # Entry point — prompts for input, runs scraper, writes CSV
└── scraper/
├── maps.py # GoogleMapsScraper — orchestrates the scrape and email enrichment
├── parser.py # Extracts structured fields from a Maps detail panel
├── email.py # Fetches a page and extracts the first email address
├── scroll.py # Scrolls the results feed until all listings are loaded
├── stealth.py # Anti-bot browser fingerprint patches for every context
├── selectors.py # CSS selectors for Google Maps DOM elements
└── utils/
└── build_url.py # Builds Google Maps / DuckDuckGo query URLs

Anti-bot measures

Every Playwright context is created via new_stealth_context (scraper/stealth.py), which randomizes a realistic macOS Chrome user agent, sets matching client-hint headers, and injects JS patches before page scripts run — hiding the webdriver flag, restoring the chrome runtime object, faking plugins/mimeTypes, and removing Playwright-specific globals — to reduce the chance of being blocked.