Google Maps Business & Contact Scraper
Pricing
from $7.00 / 1,000 results
Google Maps Business & Contact Scraper
Scrape Google Maps businesses with emails, reviews, images & social links. 33% cheaper than alternatives — emails included in base price. Compass-compatible input.
Pricing
from $7.00 / 1,000 results
Rating
0.0
(0)
Developer
bootforge
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
2
Monthly active users
1.6 hours
Issues response
11 days ago
Last modified
Categories
Share
Google Maps Scraper — Extract Business Emails, Reviews & Contacts
Extract business data, emails, phone numbers, reviews, images, and social links from Google Maps. Get 24 data fields per business at $5 per 1,000 results — emails included free, no add-on charges. Drop-in replacement for compass/crawler-google-places.
How to Scrape Google Maps for Business Leads
- $5 per 1,000 results — emails, social links, reviews, images all included (compass charges $6+ with emails)
- Fast — HTTP-first pipeline, no browser needed for basic scrapes (~1s per query)
- Deep email extraction — homepage + /contact + /about pages, with personal vs generic classification
- 24 data fields — more than any other scraper, including neighborhood, timezone, price level, and popular times
- Compass-compatible — same input field names, easy to switch
- Zero duplicates — deduplication by Google Maps place ID
- Open source — inspect the code, no black box
Use Cases
- Lead generation — Build prospect lists with verified emails and phone numbers for any industry or location
- Local SEO monitoring — Track ratings, review counts, and ranking positions for your clients or competitors
- Market research — Analyze business density, pricing, and categories across geographic areas
- Sales prospecting — Find businesses without websites or with low ratings that need your services
- Real estate analysis — Map businesses around properties to assess neighborhood commercial activity
- Franchise expansion — Identify underserved markets by analyzing competitor locations and density
What Data Can You Extract? (24 fields)
Always included (from HTTP — instant, no browser): name, address, phone, website, rating, categories, coordinates, place_id, google_maps_url, neighborhood, timezone, country_code, business_photo, open_status, scraped_at
With scrapeContacts: true (website crawl):
emails, email_type (personal/generic), social_links (Facebook, Instagram, LinkedIn, X, YouTube, TikTok)
With maxReviews > 0 or maxImages > 0 (detail page):
review_count, hours (full weekly schedule), reviews (author, rating, text, time, owner response), images (Google Maps photo URLs), price_level ($-$$$$), popular_times (current busy status)
Quick Start
{"searchStringsArray": ["dentist"],"locationQuery": "Austin, TX","maxCrawledPlacesPerSearch": 20,"scrapeContacts": true}
Switching from Compass / crawler-google-places?
Same field names — copy your config:
searchStringsArray, locationQuery, maxCrawledPlacesPerSearch, language, scrapeContacts, scrapePlaceDetailPage, placeMinimumStars, skipClosedPlaces, maxReviews, maxImages, scrapeSocialMediaProfiles
Input Parameters
| Parameter | Default | Description |
|---|---|---|
searchStringsArray | required | Search terms |
locationQuery | null | Location (e.g., Austin, TX) |
maxCrawledPlacesPerSearch | 100 | Max results per query |
scrapeContacts | true | Extract emails & social links from business websites |
scrapeSocialMediaProfiles | all true | Toggle per platform |
maxReviews | 0 | Reviews per business (0 = skip, saves time) |
reviewsSort | newest | Sort: newest, mostRelevant, highestRating, lowestRating |
maxImages | 0 | Images per business (0 = skip, saves time) |
placeMinimumStars | "" | Min rating filter (e.g., 4, 4.5) |
skipClosedPlaces | true | Skip permanently closed businesses |
website | allPlaces | Filter: allPlaces, withWebsite, withoutWebsite |
language | en | 19 languages supported |
geo_split | false | Auto-split large areas into grid |
geo_split_max_cells | 100 | Max grid cells (auto-adjusts) |
max_concurrency | 1 | Parallel detail pages |
proxy | null | Optional proxy config |
Sample Output — Google Maps Business Data
{"place_id": "ChIJb5gBC-u0RIYRHkntaUcdJGs","name": "ATX Family Dental","address": "1700 S 1st St, Austin, TX 78704, United States","phone": "+1 512-717-3147","website": "https://www.atxfamilydental.com/","emails": ["info@atxfamilydental.com"],"email_type": "generic","rating": 4.9,"review_count": 802,"categories": ["Dentist", "Cosmetic dentist", "Pediatric dentist"],"hours": {"Monday": "8 AM–4 PM", "Tuesday": "8 AM–4 PM"},"latitude": 30.2482229,"longitude": -97.7559705,"google_maps_url": "https://www.google.com/maps/place/...","social_links": {"facebook": "https://facebook.com/...","instagram": "https://instagram.com/..."},"reviews": [{"author": "John Smith","rating": 5,"text": "Great dentist!","time": "2 months ago","response": "Thank you!"}],"images": ["https://lh3.googleusercontent.com/..."],"neighborhood": "Bouldin Creek","timezone": "America/Chicago","country_code": "US","business_photo": "https://lh5.googleusercontent.com/...","open_status": "Open · Closes 4 PM","price_level": "$$","popular_times": "Not busy","scraped_at": "2026-03-27T01:00:00+00:00"}
How Much Does It Cost to Scrape Google Maps?
$0.007 per result + $0.01 per GB of memory at run start (default 4 GB → $0.04/run). Emails, social links, reviews, images — all included. All-in price: no separate Apify platform-usage charge to the customer.
| Results | Our cost (all-in) | Compass (with emails) + their platform usage |
|---|---|---|
| 100 | $0.74 | $0.60 + platform fees |
| 1,000 | $7.04 | $6.00 + platform fees |
| 10,000 | $70.04 | $60.00 + platform fees |
Compass charges $0.004 base + $0.002 contact-details + Apify usage on top of that. By the time you add their platform-usage line item (typically $0.001–$0.003/result for browser scraping), the difference closes — and our pricing is single line item, no surprises.
Proxy Configuration
Works without proxy for small runs. For 100+ results, configure a proxy:
// Apify managed proxy{"provider": "apify", "group": "RESIDENTIAL"}// Bright Data{"provider": "brightdata", "username": "YOUR_USER", "password": "YOUR_PASS", "zone": "residential", "country": "US"}// Oxylabs{"provider": "oxylabs", "username": "YOUR_USER", "password": "YOUR_PASS", "proxy_type": "residential", "country": "US"}// SmartProxy{"provider": "smartproxy", "username": "YOUR_USER", "password": "YOUR_PASS", "proxy_type": "residential", "country": "US"}// Any proxy URL{"provider": "raw_urls", "urls": ["http://user:pass@proxy.example.com:8080"]}
Cost Estimator
| Use case | Config | Est. cost |
|---|---|---|
| 100 businesses, basic data | default | ~$0.74 |
| 1,000 businesses with emails | scrapeContacts: true | ~$7.04 |
| 1,000 businesses + 5 reviews each | maxReviews: 5 | ~$7.04 |
| 10,000 businesses with emails | + geo_split: true | ~$70.04 |
All costs include emails, social links, reviews, and images. No add-ons.
Error Handling
| Situation | What happens |
|---|---|
| Proxy fails | Auto-retries without proxy, logs warning |
| Google blocks request | Falls back from HTTP to Playwright browser |
| Place detail page timeout | Skips place, continues with next (60s timeout) |
| Website unreachable (email extraction) | Skips emails for that business, returns other data |
| 0 search results | Returns empty dataset, no charge |
| Google consent screen | Auto-dismissed, scraping continues |
Failed places are logged but don't stop the run. You always get partial results.
Frequently Asked Questions
Do I need a proxy to scrape Google Maps? No for small runs (under 100 results). For larger scrapes, configure a residential proxy to avoid rate limits. See proxy config above.
How many Google Maps results can I scrape?
~120 per search query. Enable geo_split: true to automatically split large areas into a grid and scrape thousands of results.
Why are some emails missing? Not all businesses list emails on their website. Service businesses (law firms, dentists, plumbers) typically have better email coverage than restaurants or retail shops.
How do I extract Google Maps reviews?
Set maxReviews to any number greater than 0. Each review includes author name, star rating, review text, date, and owner response.
How fast is the Google Maps scraper? Basic data: ~1s per query. With email extraction: ~5s per business. With reviews and images: slower (requires browser rendering).
Can I cache Google Maps data between runs?
Yes. Set cache_provider: "apify" to reuse detail page data across runs. Only places that changed get re-scraped.
Related Actors
Building a full data pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.
Lead generation
- LinkedIn Profile Scraper — Scrape LinkedIn profiles via your li_at cookie. Structured fields, full experience history, optional email/phone/contact enrichment.
Lead generation / Hiring
- LinkedIn Jobs Scraper — Scrape LinkedIn job listings with 30 fields per job — company enrichment, salary, recruiter info, full description. No login required.
E-commerce intelligence
- TikTok Shop Product Scraper — Scrape TikTok Shop products across 10 regions (US, GB, VN, TH, PH, MY, SG, JP, MX, BR) — variants, prices, seller info, ratings, sold counts.