Google Maps Reviews Scraper - Most Comprehensive
Pricing
from $0.04 / 1,000 reviews
Google Maps Reviews Scraper - Most Comprehensive
π₯ ~$0.05/1K reviews π₯ The most comprehensive Google Maps review scraper. Extract reviews with ratings, text, translations, photos, author details, owner responses, structured dining/hotel/attraction data, and 65+ place fields. Supports keyword filtering, sorting.
Pricing
from $0.04 / 1,000 reviews
Rating
0.0
(0)
Developer
Kai
Actor stats
1
Bookmarked
22
Total users
13
Monthly active users
3 hours ago
Last modified
Categories
Share
Extract Google Maps reviews with full detail: ratings, text with translations, review photos with GPS coordinates, author profiles with Local Guide data, owner responses with edit timestamps, and structured survey ratings for restaurants, hotels, and attractions.
Paste a Google Maps place URL and hit Run.
Use cases
- Track new reviews, ratings, and owner responses across your locations over time
- Compare review sentiment, ratings, and recurring complaints between competitors
- Extract review text with language detection and translations for NLP pipelines
- Analyze structured survey data (food/service/atmosphere ratings) across restaurants in an area
- Extract customer photos with GPS coordinates, AI descriptions, and upload dates
- Monitor how businesses respond to reviews, including edit timestamps
Why this scraper?
| This scraper | Google Places API | SerpApi | Outscraper | Bright Data | |
|---|---|---|---|---|---|
| Fields per review | 39 fixed + photos + survey | ~10 | ~20 | ~25 | ~26 |
| Cost per 1,000 reviews | ~$0.50 (platform compute) | ~$5,000 (5 reviews max) | $0.50-3.13 | $1-3 | $2.50 |
| Max reviews per place | Unlimited | 5 | Unlimited | Unlimited | Pre-collected dataset |
| Review photos | URLs + GPS + AI descriptions + dates | No | No | URL only | No |
| Author profiles | 12 fields (Local Guide level, badge, counts) | Name + avatar | Name + boolean isLocalGuide | Name + avatar | Name + boolean |
| Owner responses | Text + translation + published + edited | No | Text + published + edited | Text + published | Text + published |
| Structured survey data | Yes (food/service/rooms/atmosphere) | No | Yes | No | No |
| Translations | Text + language codes + language names | Original + text only | Text + codes | No | No |
| Date filtering | Yes, with early-stop on newest sort | No | No | Yes | Via custom order |
What's unique to this scraper:
- Review photo GPS coordinates and AI descriptions - latitude, longitude, AI captions, and upload dates per photo. No other scraper extracts these.
- 12-field author profiles - Local Guide level number, contribution counts, badge labels, guide profile flag. Others return a boolean at best.
- Human-readable language names - returns "Vietnamese" and "English" alongside "vi" and "en".
- Generic survey parser - automatically extracts structured ratings and free-text tips for any place type (restaurants, hotels, attractions, parks).
What data do you get?
Per review (39 fixed fields + dynamic photos and survey data)
- Text: full review text, translated text, original and translated language codes with human-readable names (e.g., "Vietnamese", "English")
- Rating: 1-5 stars
- Author (12 fields): name, ID, profile URL, avatar, review count, photo count, contribution count, Local Guide status and level, guide profile flag, badge label
- Photos (8 fields each): URL, dimensions, GPS coordinates, AI description, upload date
- Owner response (8 fields): reply text, translated text, language codes, published and last-edited timestamps, relative date
- Timestamps: published date (ISO 8601), last edited date, relative date, visited-in period with structured year and month
- Context: review URL, review origin, engagement likes count
- Survey data (dynamic, varies by place type):
- Restaurants: meal type, price per person, order type, food/service/atmosphere ratings, tips
- Hotels: trip type, travel group, rooms/service/location ratings, hotel highlights
- Attractions: visit day, wait time, reservations
Per place (66 fields, stored in key-value store)
- Identity: name, place ID, hex ID, categories, description, business type and status, owner name and avatar, claimed status, chain detection
- Location: full and short address, structured components (street, city, state, postal code, country), latitude/longitude, entrance coordinates, plus code, timezone, area, neighborhood
- Contact: phone (local + international), website and domain, Google Maps URL, menu link, reservation links
- Ratings: overall rating, total review count, reviews per rating breakdown, review summary, review highlights, review topics with mention counts, featured reviews
- Hours: business hours by day, hours status
- Photos: cover photo, street view URL and panorama ID, place photos with dimensions and captions
- Amenities: structured amenities with category and availability, hotel amenities, place attributes, place types
- Other: popular times, typical time spent, hotel stars, price range, price label, knowledge graph ID, CID, related places, sub-destinations
Quick start
Paste a Google Maps place URL:
{"urls": ["https://www.google.com/maps/place/Starbucks+Reserve+Roastery"]}
Default: 20 reviews, sorted by newest.
Get more reviews
{"urls": ["https://www.google.com/maps/place/Starbucks+Reserve+Roastery"],"maxReviews": 500}
All reviews for a place
Set maxReviews to 0 for no limit:
{"urls": ["https://www.google.com/maps/place/Empire+State+Building"],"maxReviews": 0}
Multiple places
Up to 3 places scraped in parallel, each on its own proxy session:
{"urls": ["https://www.google.com/maps/place/Starbucks+Reserve+Roastery","https://www.google.com/maps/place/Empire+State+Building","https://www.google.com/maps/place/The+Ritz+London"],"maxReviews": 200}
Filter by keyword
{"urls": ["https://www.google.com/maps/place/The+Capital+Grille"],"searchQuery": "steak","sort": "relevant"}
Filter by date range
Use sort: "newest" for early stopping - scraping stops once reviews fall outside the date range instead of paginating through everything:
{"urls": ["https://www.google.com/maps/place/Ueno+Woo+Hotel"],"reviewsNewerThan": "2025-01-01","reviewsOlderThan": "2025-12-31","sort": "newest","maxReviews": 0}
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
| urls | string[] | required | Google Maps place URLs |
| maxReviews | integer | 20 | Max reviews per place. Set to 0 for no limit. |
| sort | string | newest | relevant, newest, highest, or lowest |
| searchQuery | string | - | Only return reviews containing this keyword |
| reviewsNewerThan | date | - | Only return reviews after this date (ISO 8601). With sort=newest, stops early. |
| reviewsOlderThan | date | - | Only return reviews before this date. Combine with reviewsNewerThan for a range. |
| language | string | en | Language code (e.g. es, ja, de). Affects which translations Google returns. |
| region | string | US | Country/region code (e.g. JP, DE). Affects regional content and availability. |
| proxyConfiguration | object | Apify proxy | Proxy settings. Residential proxies recommended. |
Sample output
Each review is a JSON object in the default dataset. This is real output from a hotel scrape:
{"place": {"name": "Ueno Woo Hotel","placeId": "ChIJs0ZTJXyPGGAR3nco_Lv_q1Q","address": "Ueno Woo Hotel, 2 Chome-4-1 Higashiueno, Taito City, Tokyo 110-0015, Japan","googleMapsUri": "https://www.google.com/maps/preview/place/Ueno+Woo+Hotel,+2+Chome-4-1+Higashiueno,+Taito+City,+Tokyo+110-0015,+Japan/@35.7087565,139.7811978,3240a,13.1y/data=!4m2!3m1!1s0x60188f7c255346b3:0x54abffbbfc2877de"},"reviewId": "ChZDSUhNMG9nS0VJQ0FnSURiZzZ6M1JnEAE","url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSURiZzZ6M1JnEAE!2m1!1s0x0:0x54abffbbfc2877de!3m1!1s2@1:CIHM0ogKEICAgIDbg6z3Rg%7C%7C?hl=en","publishedAt": "2024-08-08T17:27:27.065Z","lastEditedAt": null,"relativeDate": "a year ago","text": "Piccolo hotel moderno e dallo stile minimale, vicino alla metropolitana Inaricho, in una posizione strategica fra Ueno e il famoso tempio SensΕ-ji...","textTranslated": "A small, modern, minimalist hotel near the Inaricho subway station, conveniently located between Ueno and the famous SensΕ-ji temple...","language": "it","originalLanguage": "it","translatedLanguage": "en","rating": 3,"reviewOrigin": "Google","originalLanguageName": "Italian","translatedLanguageName": "English","visitedIn": null,"visitedYear": null,"visitedMonth": null,"author": {"name": "Brian Wilson","id": "100389180161670536428","url": "https://www.google.com/maps/contrib/100389180161670536428?hl=en","avatarUrl": "https://lh3.googleusercontent.com/a-/ALV-UjVdGydNCPTkdOmXayDjZtQ24v6g7u4FWUmP0PSRDV3ju4zBbeE","profileUrl": "https://www.google.com/maps/contrib/100389180161670536428/reviews?hl=en","reviewCount": 123,"photoCount": 132,"isLocalGuide": true,"localGuideLevel": 6,"hasGuideProfile": true,"contributionCount": 0,"badgeLabel": "Local Guide Β· 123 reviews"},"photos": [{"id": "CIHM0ogKEICAgIDbg6z3pgE","url": "https://lh3.googleusercontent.com/geougc-cs/ABOP9psizfVhOLr8k7ezluy-mjI6WEvXGM6WkdVtzp8UQISoDRuSJ_VhjQ9FjGWdslFEQysW5Mh4ncq0IiKD3gDm4D5bqrIUnpD2IbarVarZLvjiA5Xnxx-c8ar32zZZAkSlmCnH8C9cRQ","width": 4032,"height": 3024,"latitude": 35.708756482610134,"longitude": 139.78119781992504,"aiDescription": null,"uploadedAt": "2024-08-08T17:00:00.000Z"}],"details": {"tripType": "Vacation","travelGroup": "Couple","rooms": 2,"service": 3,"location": 4},"ownerResponse": {"text": "Thank you for sharing your feedback! We're glad you found our hotel's location convenient and our staff friendly...","textTranslated": null,"language": "en","originalLanguage": null,"translatedLanguage": null,"publishedAt": "2024-08-10T05:16:21.000Z","lastEditedAt": null,"relativeDate": "a year ago"},"engagement": {"likes": 0},"meta": {"scrapedAt": "2026-04-07T07:34:15.504Z"}}
Performance
- ~2,000 reviews per minute
- 256 MB memory default - lightweight HTTP-only, no browser
- Reviews streamed to dataset per page - constant memory regardless of total review count
Output
- Default dataset - one row per review with place context (name, placeId, address, googleMapsUri)
- Key-value store - one entry per place (
place-{placeId}) with all 66 fields plus rating breakdown
FAQ
How many reviews can I scrape?
No hard limit. Set maxReviews to 0 for unlimited. Reviews stream to the dataset per page, so memory stays constant.
Where is the full place data?
In the key-value store under place-{placeId}. Each review row has a slim place object (4 fields) for identification. Access the full 66 fields via the Apify dashboard or API.
Does it work for non-English reviews?
Yes. Reviews are returned in their original language. When Google provides translations, you get both the original and translated text with language names. Set language and region to control which translations Google returns (e.g. language: "ja", region: "JP" for Japanese).
Troubleshooting
- 0 reviews returned - proxy IP blocked by Google. Use residential proxies instead of datacenter.
- Fewer reviews than expected - Google may not serve all reviews. Date-filtered scrapes skip reviews without timestamps. Try without filters to verify.
Limitations
maxReviewsis per place, not total across all URLs- Results may vary by proxy region