Google Maps Place Scraper
Pricing
from $1.00 / 1,000 place scrapeds
Google Maps Place Scraper
Extract place details and reviews from Google Maps using keyword search — no API key required. Get business names, addresses, ratings, phone numbers, websites, opening hours, and user reviews at scale
Pricing
from $1.00 / 1,000 place scrapeds
Rating
0.0
(0)
Developer
Romy
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
What it does
This actor searches Google Maps using an internal Android gRPC API — the same endpoint the Google Maps mobile app uses — so it's fast, reliable, and returns richer data than any HTML scraper.
One API call per query. No pagination. Up to 162 places.
Need details from a specific place URL? Use Google Maps Place Preview Scraper to look up phone, hours, and photos from any place URL or ID.
Use cases
| Use Case | How |
|---|---|
| B2B lead generation | Search "dentist Jakarta Selatan" → get name, phone, website for 100+ businesses in one run |
| Local SEO research | Compare ratings and review counts across competitors in a neighborhood |
| Market mapping | Scrape multiple categories across multiple cities to map industry density |
| Data enrichment | Append hours, amenities, and coordinates to your existing business list |
Quick start
- Open the actor on Apify Console and click Try for free
- Enter your keywords and set the search center coordinates
- Click Start — results appear in seconds
- Export as JSON, CSV, Excel, or XML from the Dataset tab
Input
{"queries": ["coffee shop", "coworking space"],"lat": -6.2088,"lng": 106.8456,"maxPlacesPerQuery": 60}
| Field | Type | Description | Default |
|---|---|---|---|
queries | string[] | Search keywords | required |
lat | number | Latitude of search center | -6.2088 (Jakarta) |
lng | number | Longitude of search center | 106.8456 (Jakarta) |
maxPlacesPerQuery | integer | Max places per query (1–162) | 60 |
Tips for better results:
- Use specific queries:
"vegan restaurant Kemang"returns more relevant results than"restaurant Jakarta" - Run multiple queries to cover different categories or neighborhoods
- The search radius is ~30 km from the center point
Output
Each place is one item in the dataset. Example:
{"name": "Kopi Kenangan","place_id": "ChIJSZhl04H7aS4RcKN6oTyYp4M","lat": -6.2918998,"lng": 106.7266464,"address": "Jl. Dasana Indah No.A-08, Sawah Baru, Ciputat","full_address": "Kopi Kenangan, Jl. Dasana Indah No.A-08, Sawah Baru, Ciputat, 15413","city": "Tangerang Selatan","postal_code": "15413","state": "Banten","country_code": "ID","timezone": "Asia/Jakarta","categories": ["Coffee shop", "Cafe"],"primary_types": [{ "type_id": "coffee_shop", "display_name": "Coffee Shop", "order": 1 }],"phone": "+62 811-1234-5678","phone_raw": "+628111234567","website": "https://kopikita.id","website_domain": "kopikita.id","photo_url": "https://lh3.googleusercontent.com/...","price_level": "$$","rating": 4.5,"review_count": 312,"reviews_text": "312 reviews","details": {"hours": {"days": [{ "day_name": "Monday", "hours_text": "7 AM–10 PM", "date": "2026-07-07", "is_open": 1 },{ "day_name": "Sunday", "hours_text": "8 AM–9 PM", "date": "2026-07-06", "is_open": 1 }],"today": {"status_text": "Open · Closes 10 PM"}},"structured_hours": {"is_open": 1}},"amenities": {"groups": [{"group_name": "Service options","items": [{ "display_name": "Dine-in", "uri": "/geo/type/establishment_poi/serves_dine_in" },{ "display_name": "Takeout", "uri": "/geo/type/establishment_poi/has_takeout" },{ "display_name": "Delivery", "uri": "/geo/type/establishment_poi/has_delivery" }]}]},"kg_id": "/g/11abc123","language": "en","reviews": [{"review_id": "Ci9DQVJR...","rating": 5,"text": "Best coffee in the area! Great service and cozy atmosphere.","lang": "en","date_text": "2 months ago","timestamp_us": 1771193411266756,"helpful_count": 12,"aspects": { "Food": 5, "Service": 5, "Atmosphere": 4 },"photos": [{ "photo_id": "CIABIhCS58wIeyzOnj57RRTKt1v-" }],"owner_reply": "Thank you so much for the kind words!","owner_reply_date": "1 month ago","reviewer_name": "Jane Doe","reviewer_uid": "104338360754531033730","reviewer_photo": "https://gz0.googleusercontent.com/a-/...","reviewer_url": "https://www.google.com/maps/contrib/104338360754531033730","reviewer_badge": "Local Guide · 47 reviews"}]}
Working with photos
Both place photos (details.photo.photo_ref) and review photos (reviews[].photos[].photo_id) use the same URL pattern:
https://gz0.googleusercontent.com/gps-cgs/{photo_id}=w{width}-h{height}-k-no
Change w and h to any pixel dimensions you need:
# Thumbnail (default)https://gz0.googleusercontent.com/gps-cgs/CIABIhD6YQvCR_sJ1wGRxRah-BNz=w96-h128-k-no# Mediumhttps://gz0.googleusercontent.com/gps-cgs/CIABIhD6YQvCR_sJ1wGRxRah-BNz=w400-h300-k-no# Largehttps://gz0.googleusercontent.com/gps-cgs/CIABIhD6YQvCR_sJ1wGRxRah-BNz=w1200-h800-k-no
Pricing
Pay Per Event — you only pay per place scraped. Reviews are included at no extra charge.
| Event | Price |
|---|---|
| Actor start | $0.05 (one-time per run) |
| Per place scraped | $0.005 — includes up to 10 reviews |
| Scenario | Places | Reviews included | Cost |
|---|---|---|---|
| 1 query | 60 | up to 600 | ~$0.35 |
| 5 queries | 300 | up to 3,000 | ~$1.55 |
| 1,000 places | 1,000 | up to 10,000 | ~$5.05 |
| 10,000 places | 10,000 | up to 100,000 | ~$50.05 |
Need more than 10 reviews per place? Use the dedicated Google Maps Reviews Scraper to paginate all reviews for specific places.
FAQ
Why is this better than HTML scrapers? This actor calls the same internal gRPC endpoint as the Google Maps Android app — the same data source you see in the mobile app. It returns up to 162 places per query in a single request (no pagination), with structured data including amenities, price level, per-aspect review ratings (Food / Service / Atmosphere), and full 7-day hours.
Are reviews included? Yes. Each place includes up to 10 of the most recent reviews at no extra cost — review text, star rating, per-aspect scores, reviewer profile, owner reply, and review photos. For full review pagination, use the dedicated reviews actor.
How accurate are the results? Data comes directly from Google's internal API — the same data you see in the Google Maps app.
Will it get blocked? The actor uses authentic Android app credentials and behaves like a real mobile client. No proxy is required for normal usage volumes.
The results are in the wrong area.
Make sure to set lat and lng to your target location. The default is Jakarta, Indonesia.
Missing fields? Not all businesses have complete data on Google Maps. Fields are omitted from the output when Google has no data for them.
Issues or feature requests? Open a ticket in the Issues tab.