Google Maps Reviews Scraper - Most Comprehensive avatar

Google Maps Reviews Scraper - Most Comprehensive

Pricing

from $0.04 / 1,000 reviews

Go to Apify Store
Google Maps Reviews Scraper - Most Comprehensive

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

Kai

Maintained by Community

Actor stats

1

Bookmarked

22

Total users

13

Monthly active users

2 hours ago

Last modified

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 scraperGoogle Places APISerpApiOutscraperBright Data
Fields per review39 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 placeUnlimited5UnlimitedUnlimitedPre-collected dataset
Review photosURLs + GPS + AI descriptions + datesNoNoURL onlyNo
Author profiles12 fields (Local Guide level, badge, counts)Name + avatarName + boolean isLocalGuideName + avatarName + boolean
Owner responsesText + translation + published + editedNoText + published + editedText + publishedText + published
Structured survey dataYes (food/service/rooms/atmosphere)NoYesNoNo
TranslationsText + language codes + language namesOriginal + text onlyText + codesNoNo
Date filteringYes, with early-stop on newest sortNoNoYesVia 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

ParameterTypeDefaultDescription
urlsstring[]requiredGoogle Maps place URLs
maxReviewsinteger20Max reviews per place. Set to 0 for no limit.
sortstringnewestrelevant, newest, highest, or lowest
searchQuerystring-Only return reviews containing this keyword
reviewsNewerThandate-Only return reviews after this date (ISO 8601). With sort=newest, stops early.
reviewsOlderThandate-Only return reviews before this date. Combine with reviewsNewerThan for a range.
languagestringenLanguage code (e.g. es, ja, de). Affects which translations Google returns.
regionstringUSCountry/region code (e.g. JP, DE). Affects regional content and availability.
proxyConfigurationobjectApify proxyProxy 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

  • maxReviews is per place, not total across all URLs
  • Results may vary by proxy region