Google Maps Scraper
Pricing
Pay per usage
Google Maps Scraper
Scrape Google Maps leads with phones, emails, websites, opening hours and every review. Export CSV, Excel or JSON, or use the API. Cheaper than other scrapers.
Pricing
Pay per usage
Rating
5.0
(1)
Developer
khalil ur Rehman Zaryani
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Google Maps Scraper: Leads, Emails & All Reviews
Google Maps Scraper extracts business leads from Google Maps with phone numbers, websites, emails found on the website, opening hours, star ratings and every review. Search by keyword and location, get one clean row per business, and export to CSV, Excel or JSON, or call it as a Google Maps API from your own code. No Google API key, no coding needed.
- ✅ All reviews, not just 5: every review with star rating, text, date, author and language
- ✅ Emails and contacts from each business website (home and contact page)
- ✅ Website check: finds businesses with no website or only a Facebook or booking page
- ✅ Opening hours, star breakdown, coordinates, categories included at no extra cost
- ✅ Cheaper than the big Google Maps scrapers, pay only for what you get
What data can you extract from Google Maps?
| Data | Fields |
|---|---|
| Business | title, category, categories, description, priceRange |
| Contact | phone, website, emails |
| Website check | websiteStatus: own, social_only, booking_platform or none |
| Location | address, street, city, postalCode, state, countryCode, latitude, longitude, plusCode |
| Ratings | rating, reviewsCount, reviewsDistribution (1 to 5 star counts) |
| Opening hours | openingHours per day, timezone |
| Reviews | reviews[]: rating, text, language, publishedAt, authorName, authorUrl, ownerReply, images |
| Links and IDs | googleMapsUrl, reviewsUrl, placeId, cid, thumbnail |
How much does it cost to scrape Google Maps?
You pay only for results. Every price is listed on the Pricing tab.
| What you get | Price |
|---|---|
| Business with all details: contacts, hours, ratings, star breakdown | $3.00 per 1,000 businesses |
| Review with rating, text, date and author | $0.50 per 1,000 reviews |
| Website checked for emails | $2.00 per 1,000 websites |
| Run start | $0.02 per run |
Examples
| Job | Cost |
|---|---|
| 1,000 businesses, no reviews, no emails | about $3 |
| 1,000 businesses with emails | about $5 |
| 1,000 businesses with emails and 20 reviews each | about $15 |
Other Google Maps scrapers charge extra for place details and contacts. Here they are included in the business price. Apify's free plan includes monthly credit, enough to test on real data. Higher Apify plans get lower prices automatically.
Keep costs down: set Maximum businesses, lower Maximum reviews per business, or turn off reviews or emails when you don't need them. Each run also respects the maximum cost you set in its run options.
How to scrape Google Maps
- Enter search terms, for example
dentist in Sydneyorplumber in Austin, TX. One search returns up to about 120 businesses, which is Google's limit. - Optional: fill Location to add it to every search term.
- Choose how many reviews per business you want (0 = all) and their order. Lowest rating first is the fastest way to collect complaints.
- Keep Find emails on to visit each business website.
- Click Start. Results appear while the run is going. Download them as CSV, Excel or JSON.
Input example
{"searchStrings": ["Physiotherapy in Sydney, Australia", "Dentist in Melbourne, Australia"],"maxPlaces": 200,"includeReviews": true,"maxReviewsPerPlace": 20,"reviewsSort": "newest","includeEmails": true,"language": "en"}
| Field | Default | Description |
|---|---|---|
searchStrings | required | Search terms, one per business type and place |
location | none | Added to every search term, for example Austin, TX |
maxPlaces | 0 = no limit | Stop after this many businesses in total |
includeReviews | true | Collect reviews |
maxReviewsPerPlace | 50 | Reviews per business, 0 = all |
reviewsSort | newest | newest, lowest, highest or relevant |
includeEmails | true | Visit websites and collect emails |
scrollDepth | 20 | How far to scroll Google's results; 20 reaches the end |
language | en | Google Maps language |
centerCoordinates, zoom, radiusMeters | none | Search around a point, for example -33.8688,151.2093 |
proxyConfiguration | built-in residential | Leave on the default, or choose Own proxies |
Output example
{"searchString": "Physiotherapy in Sydney, Australia","title": "Sydney Health Physiotherapy CBD","category": "Physical therapist","address": "Level 1 Shop 35/210 Pitt St, Sydney NSW 2000, Australia","city": "Sydney","phone": "+61 2 9267 0077","website": "https://sydneyhealthphysio.com.au/","websiteStatus": "own","emails": ["cbd@sydneyhealthphysio.com.au"],"rating": 5,"reviewsCount": 103,"reviewsDistribution": {"oneStar": 1, "twoStar": 0, "threeStar": 0, "fourStar": 1, "fiveStar": 101},"openingHours": {"Monday": ["7 AM–8 PM"], "Saturday": ["8 AM–1 PM"], "Sunday": ["Closed"]},"googleMapsUrl": "https://www.google.com/maps/place/...","reviewsCollected": 20,"reviews": [{"rating": 5,"text": "Friendly, helpful and accommodating reception staff and top physio expertise...","language": "en","publishedAt": "2026-07-28T07:32:18.194Z","authorName": "Bettina S.","ownerReply": ""}]}
The results table has two views: Businesses and Lead signals. For one row per review, export
with unwind=reviews. Each run also saves a SUMMARY record with the totals.
Use it as a Google Maps API
Run the scraper from any language with your Apify API token.
cURL: run and get results in one call
For runs that finish within 5 minutes, about 100 businesses:
curl -X POST "https://api.apify.com/v2/acts/expensive_kapi~google-maps-scraper-emails-reviews/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchStrings": ["Dentist in Sydney, Australia"], "maxPlaces": 50, "maxReviewsPerPlace": 10}'
cURL: large runs
# 1. start the run; the response contains data.id and data.defaultDatasetIdcurl -X POST "https://api.apify.com/v2/acts/expensive_kapi~google-maps-scraper-emails-reviews/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchStrings": ["Plumber in Austin, TX"], "maxReviewsPerPlace": 20}'# 2. check the status until it is SUCCEEDEDcurl "https://api.apify.com/v2/actor-runs/RUN_ID?token=YOUR_API_TOKEN"# 3. download the results as CSV, Excel or JSONcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=csv&token=YOUR_API_TOKEN" -o leads.csvcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=xlsx&unwind=reviews&token=YOUR_API_TOKEN" -o reviews.xlsx
Python
$pip install apify-client
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("expensive_kapi/google-maps-scraper-emails-reviews").call(run_input={"searchStrings": ["Dentist in Sydney, Australia"],"maxPlaces": 100,"maxReviewsPerPlace": 20,"includeEmails": True,})for business in client.dataset(run["defaultDatasetId"]).iterate_items():print(business["title"], business["rating"], business["emails"], len(business["reviews"]))
JavaScript / Node.js
$npm install apify-client
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('expensive_kapi/google-maps-scraper-emails-reviews').call({searchStrings: ['Dentist in Sydney, Australia'],maxPlaces: 100,maxReviewsPerPlace: 20,includeEmails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((b) => console.log(b.title, b.rating, b.emails, b.reviews.length));
No-code: n8n, Make, Zapier, Google Sheets
Use the Integrations tab to send results to Google Sheets, Slack, email, webhooks, n8n, Make or Zapier when a run finishes. Use Schedules to refresh a lead list daily or weekly.
AI agents (MCP)
Connect the scraper to Claude, ChatGPT, Cursor or any MCP client:
https://mcp.apify.com?tools=expensive_kapi/google-maps-scraper-emails-reviews
Use cases
- Lead generation for agencies: businesses with no website, only a Facebook page, or low ratings
- Web design and SEO sales:
websiteStatusshows who needs a website - Reputation and sentiment analysis: all reviews with ratings and dates, including 1 and 2 star complaints
- Market research: compare competitors' ratings, review volume and opening hours by area
- CRM enrichment: phone numbers, emails and websites for local businesses
FAQ
Can I get more than 120 businesses? Google shows about 120 per search. Split a city into
suburbs or add more business types: plumber in Parramatta NSW, plumber in Penrith NSW.
Why do I get fewer reviews than the Google count? Google's count includes ratings without text and reviews it hides. Everything Google lists publicly is collected, up to your maximum.
How do I get only negative reviews? Set Review order to lowest rating first, or filter the
results by rating 1 and 2.
Do I need a proxy? No setup is needed. The Actor uses built-in residential proxies, included in the price. To use your own, open Proxy and choose Own proxies.
Is scraping Google Maps legal? The scraper collects publicly available business information. Personal data in reviews, such as author names, is protected by laws like GDPR. Only collect and use it for a legitimate purpose, and check the rules in your country.
Limits
- About 120 businesses per search term.
- Owner replies are available for the first few reviews of each business.
- Google decides which businesses a search returns, so two runs can differ slightly.