Google Maps Place Scraper avatar

Google Maps Place Scraper

Pricing

from $1.00 / 1,000 place scrapeds

Go to Apify Store
Google Maps Place Scraper

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

Romy

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

2 days ago

Last modified

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 CaseHow
B2B lead generationSearch "dentist Jakarta Selatan" → get name, phone, website for 100+ businesses in one run
Local SEO researchCompare ratings and review counts across competitors in a neighborhood
Market mappingScrape multiple categories across multiple cities to map industry density
Data enrichmentAppend hours, amenities, and coordinates to your existing business list

Quick start

  1. Open the actor on Apify Console and click Try for free
  2. Enter your keywords and set the search center coordinates
  3. Click Start — results appear in seconds
  4. 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
}
FieldTypeDescriptionDefault
queriesstring[]Search keywordsrequired
latnumberLatitude of search center-6.2088 (Jakarta)
lngnumberLongitude of search center106.8456 (Jakarta)
maxPlacesPerQueryintegerMax 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
# Medium
https://gz0.googleusercontent.com/gps-cgs/CIABIhD6YQvCR_sJ1wGRxRah-BNz=w400-h300-k-no
# Large
https://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.

EventPrice
Actor start$0.05 (one-time per run)
Per place scraped$0.005 — includes up to 10 reviews
ScenarioPlacesReviews includedCost
1 query60up to 600~$0.35
5 queries300up to 3,000~$1.55
1,000 places1,000up to 10,000~$5.05
10,000 places10,000up 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.