Google Maps With Email Scraper
Pricing
Pay per usage
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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:
| Field | Source |
|---|---|
| Name | Google Maps detail panel |
| Category | Google Maps detail panel |
| Rating | Google Maps detail panel |
| Reviews | Google Maps detail panel |
| Phone | Google Maps detail panel |
| Address | Google Maps detail panel |
| Hours | Google Maps detail panel |
| Website | Google Maps detail panel |
| Plus Code | Google Maps detail panel |
| Business website → Facebook page via DuckDuckGo (fallback) | |
| City | User input |
| Country | User input |
| Type | User input |
Requirements
- Python 3.10+
- Playwright (Chromium)
Setup
python -m venv .venvsource .venv/bin/activatepip install -r requirements.txtplaywright install chromium
Usage
$python main.py
You will be prompted for three inputs:
Entity type (e.g. Dental Clinic): Dental ClinicCity (e.g. Doha): DohaCountry (e.g. Qatar): Qatar
Results are saved to results.csv in the project root.
How it works
- Opens Google Maps and searches
<entity_type> <city> <country>. - Scrolls the results feed until no new listings load.
- Clicks each listing, reads the detail panel, and extracts structured data.
- Visits the business website and scrapes it for an email address.
- 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. - Paginates through all Google Maps result pages and repeats.
- 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.