Google Maps Lead Extractor with email — One-Page HTML Scraper
Under maintenancePricing
from $0.01 / 1,000 actor starts
Google Maps Lead Extractor with email — One-Page HTML Scraper
Under maintenanceExtract B2B leads including emails from Google Maps via Places API (bring your own API key) or single-page HTML. No credentials in source code.
Pricing
from $0.01 / 1,000 actor starts
Rating
0.0
(0)
Developer
Christian G. Ulloa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Google Maps Lead with Email Extractor
Extract structured B2B leads with email addresses from Google Maps using the official Places API (New), or from a single static HTML page (JSON-LD, embedded Maps JSON, custom CSS selectors). Results are pushed to an Apify dataset.
Unlike most Google Maps Actors published on Apify, this Actor also scrapes email addresses from each business website — most competing Maps scrapers only return phone and website and leave email outreach to you.
Credentials are never stored in code. You provide your own Google Cloud API key in the Actor input (secret field).
What does this Actor do?
Two extraction modes:
| Mode | Best for | Credentials needed |
|---|---|---|
| Google Places API (default) | Bulk search — "plumbers in Austin TX" | Google Places API key |
| Single page HTML | JSON-LD business sites, static directories | None (optional proxy) |
The Places API mode returns name, phone, website, address, category, and Google Maps URL. With email scraping enabled, it also fetches each business homepage and extracts the best contact email — a step most competing Maps Actors leave to you manually.
Apify platform advantages: secret input fields, scheduled runs, API access, proxy rotation, monitoring, CRM integrations.
Google Cloud setup
You must create your own API key. This Actor does not ship with Google credentials.
Quick steps
- Create a Google Cloud project
- Enable billing
- Enable Places API (New)
- Create an API key under APIs & Services → Credentials
- Restrict the key to Places API (New) only
- Paste the key into the Actor input → Google Places API key (masked secret)
Full walkthrough with troubleshooting: ./GOOGLE_CLOUD_SETUP.md
How to use this Actor
- Open the Actor in Apify Console.
- Set Extraction mode to Google Places API.
- Paste your Google Places API key (never commit this to git).
- Enter a Search query (e.g.
coffee shops in Austin TX). - Set Max results and run.
- Download leads from the Dataset tab.
Local development
cd Apify/my-actorpip install -r requirements.txt# Edit storage/key_value_stores/default/INPUT.json — add googlePlacesApiKeypython -m my_actor
Or: apify run
Input
| Field | Required | Description |
|---|---|---|
extractionMode | Yes | googlePlacesApi or singlePageHtml |
googlePlacesApiKey | Places mode | Secret — your GCP API key |
searchQuery | Places mode | e.g. "dentists in Chicago" |
scrapeEmailsFromWebsites | No | Fetch homepage email per listing |
startUrl | HTML mode | Single page URL to parse |
maxResults | No (default 50) | Cap on leads (max 2500) |
proxyConfiguration | No | Apify Proxy (HTML mode) |
customSelectors | No | CSS overrides (HTML mode) |
Example input (Places API)
{"extractionMode": "googlePlacesApi","googlePlacesApiKey": "YOUR_API_KEY_HERE","searchQuery": "plumbers in Austin TX","maxResults": 50,"scrapeEmailsFromWebsites": true}
Example input (HTML mode)
{"extractionMode": "singlePageHtml","startUrl": "https://example.com/directory","maxResults": 20,"customSelectors": {"item": "article.listing","name": ".business-name"}}
Output
{"name": "Joe's Plumbing","category": "Plumber","address": "123 Main St, Austin, TX 78701, USA","phone": "+1 512-555-0100","website": "https://joesplumbing.example","email": "info@joesplumbing.example","rating": null,"reviewCount": null,"googleMapsUrl": "https://www.google.com/maps/place/?q=place_id:places/ChIJ...","sourceUrl": "plumbers in Austin TX"}
Export as JSON, CSV, or Excel from the Apify Console.
Single-page HTML mode — JavaScript limitation
Google Maps search pages (/maps/search/...) load listings via JavaScript. HTML mode cannot execute JS and usually returns zero leads for search URLs. Use Places API mode for Maps bulk search, or HTML mode for place detail URLs / JSON-LD sites.
Pricing / cost estimation
This Actor uses Pay per event + usage on the Apify Store. Full setup: ./STORE_PRICING.md.
| Charge | Suggested price | Notes |
|---|---|---|
| Actor start | ~$0.00005 / run | Platform event apify-actor-start |
| Lead extracted | ~$0.002 / lead | Custom event lead-extracted |
| Apify compute | varies | Runtime + memory |
| Google Places API | your GCP bill | BYO API key |
Set max total charge per run in Apify Console to cap spend.
FAQ
Where do I get an API key? See ./GOOGLE_CLOUD_SETUP.md.
Is my API key safe? Apify marks googlePlacesApiKey as a secret in the input UI. Do not paste keys into public GitHub issues or README files.
Can I use the local CLI instead? Yes — localScraper/extract.py with export PLACES_API_KEY=....
License and responsibility
Comply with Google Maps Platform Terms and applicable privacy/telemarketing laws.