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.04/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

4.8

(9)

Developer

Kai

Kai

Maintained by Community

Actor stats

20

Bookmarked

712

Total users

214

Monthly active users

4.4 hours

Issues response

2 days ago

Last modified

Share

Google Maps Reviews Scraper

Collect reviews and place context from canonical Google Maps place or search URLs, or from Place IDs. Each saved review includes its rating, available text and translation, publication data, author metadata, photos, owner response, structured details, and place reference.

Use it to monitor your locations, compare customer feedback, prepare review datasets, or track owner responses over time.

Use cases

  • Monitor new reviews, ratings, and owner responses across locations
  • Compare customer feedback and recurring themes between places
  • Prepare review text, ratings, and language metadata for analysis
  • Study available structured details such as food, service, atmosphere, rooms, location, and visit information
  • Collect available review-photo metadata

What you get

Review records

The default dataset contains one item per saved review:

  • Stable review identifier and review link when available
  • Rating, source, original text, translated text, language codes, and language names
  • Publication, edit, relative, and visit-period information
  • Author profile, contribution counts, and Local Guide metadata
  • Review photos with dimensions, coordinates, description, and upload time when available
  • Owner-response text, translations, languages, and timestamps when available
  • Structured details that vary by place type
  • Likes, collection timestamp, and slim place context

Every row follows the dataset schema. Nullable fields use null when unavailable; collections and structured details remain arrays or objects.

Place records

The default key-value store contains one full place record for each place whose collection completes. Its key is place-{placeId} when a Place ID is available, otherwise place-{hexId}. A place record can contain:

  • Identity, categories, descriptions, business state, and available owner metadata
  • Address components, coordinates, timezone, neighborhood, plus code, and entrance coordinates
  • Phone, website, Maps, menu, and reservation links
  • Rating, review count, review summary, highlights, per-rating totals, topics, and featured reviews
  • Hours, photos, street view, amenities, attributes, and place types
  • Popular-times data, typical visit duration, and related places

Optional values depend on what is available for the requested place. ratingBreakdown counts reviews saved during the current run after filters and limits. It includes only ratings present in the saved reviews and is {} when no reviews are saved. It is separate from the place-level reviewsPerRating value.

Quick start

Enter one or more bare Place IDs or supported Google Maps URLs:

{
"urls": ["ChIJs0ZTJXyPGGAR3nco_Lv_q1Q"]
}

The default run saves up to 20 reviews per place, sorted by newest activity. Supported URL forms are canonical google.com/maps/place, google.com/maps/search, and equivalent maps.google.com place or search URLs. URLs containing place_id=... or q=place_id:... also work. You can mix URLs and Place IDs in the same run.

More or all available reviews

Set a larger per-place limit:

{
"urls": ["ChIJs0ZTJXyPGGAR3nco_Lv_q1Q"],
"maxReviews": 100
}

Set maxReviews to 0 to collect all reviews available to the run.

Multiple places and a result limit

{
"urls": [
"ChIJN1t_tDeuEmsRUsoyG83frY4",
"ChIJs0ZTJXyPGGAR3nco_Lv_q1Q"
],
"maxReviews": 100
}

The limit and sort order apply independently to each place. Reviews are saved as they arrive, so rows from different places can be mixed together in the dataset.

Sort modes

ValueResult order
relevantMost relevant first
newestLatest review activity first. An edit time is used when present, otherwise the publication time.
highestHighest rating first
lowestLowest rating first

newest is the default. Date filters always use the publication timestamp, regardless of the selected sort mode.

Keyword and localization

{
"urls": ["ChIJs0ZTJXyPGGAR3nco_Lv_q1Q"],
"searchQuery": "service",
"sort": "relevant",
"language": "ja",
"region": "JP"
}

Filter by date range

{
"urls": ["ChIJs0ZTJXyPGGAR3nco_Lv_q1Q"],
"reviewsNewerThan": "2026-01-01",
"reviewsOlderThan": "2026-06-30",
"sort": "newest",
"maxReviews": 0
}

Date boundaries are inclusive. Date-only values use UTC: the lower boundary starts at 00:00:00.000, and the upper boundary ends at 23:59:59.999. Date-time values must include Z or a UTC offset.

Input

ParameterTypeDefaultDescription
urlsstring[]requiredNon-empty list of canonical Google Maps URLs or bare Place IDs. Short share links are not accepted. You can mix both supported forms.
maxReviewsinteger20Maximum saved reviews per place. Use 0 for all available reviews.
sortstringnewestrelevant, newest, highest, or lowest.
searchQuerystringnoneReturn reviews matching this keyword or phrase.
reviewsNewerThanstringnoneInclude reviews published on or after this ISO 8601 boundary.
reviewsOlderThanstringnoneInclude reviews published on or before this ISO 8601 boundary.
languagestringenRequested language code. Values are not restricted to a built-in list.
regionstringUSRequested country or region code. Values are not restricted to a built-in list.
proxyConfigurationobjectApify Proxy enabledOptional connection settings.

Sample output

These fields were copied from one real dataset item returned on 2026-07-29. Fields not shown are omitted.

{
"place": {
"name": "Eiffel Tower",
"placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0"
},
"publishedAt": "2026-07-13T13:05:39.615Z",
"lastEditedAt": "2026-07-15T20:02:44.481Z",
"relativeDate": "Edited a week ago",
"language": "en",
"originalLanguage": null,
"translatedLanguage": null,
"rating": 3,
"reviewOrigin": "Google",
"details": {
"visitedOn": "Weekend",
"waitTime": "Up to 10 min",
"reservationRecommended": "No"
},
"ownerResponse": null,
"engagement": {
"likes": 0
}
}

The matching place record from the same run includes:

{
"name": "Eiffel Tower",
"placeId": "ChIJLU7jZClu5kcR4PcOOO6p3I0",
"rating": 4.7,
"totalReviewCount": 492464,
"categories": [
"Historical landmark",
"Monument",
"Tourist attraction"
],
"businessStatus": null,
"ratingBreakdown": {
"3": 1,
"4": 1,
"5": 3
}
}

Both examples are selected subsets. The full records contain the fields described by the dataset schema and place-record section above. hasLocalGuideBadge is the current author badge field; hasGuideProfile is a deprecated compatibility alias with the same value.

FAQ

How many reviews can I scrape?

Set maxReviews to a positive per-place limit or use 0 for all reviews available to the run. Availability can vary over time. Use newest when completeness matters; relevant can expose only a ranked subset of the place's total reviews.

Where is the full place data?

Open the default key-value store and select place-{placeId}, or place-{hexId} when no Place ID is available. Each review row repeats only name, placeId, address, and googleMapsUri.

Does it work for non-English reviews?

Yes. Set language and region to request localized results. Original and translated text and language metadata are included when available.

Troubleshooting

  • A successful run can contain no review rows when a place has no available reviews or no reviews match your filters. When the place finishes successfully, its place record is still saved.
  • Date-filtered runs skip reviews that do not have a publication timestamp.
  • The full input is checked before collection starts. An unknown field, an invalid URL or Place ID anywhere in urls, or a start date later than the end date stops the run before any results are saved.
  • Place IDs that Google reports as unavailable are logged and skipped. Any other per-place collection failure is also logged as a warning and counted in the final summary without failing the overall run. Rows saved before a failure remain in the dataset, including partial rows from that place. Only completed places receive a full place record. Invalid run input and actor-level storage, infrastructure, or startup failures remain fatal.

Limitations

  • maxReviews applies per place, not across the whole input.
  • Short share links such as maps.app.goo.gl are not accepted. Use the expanded canonical URL or a Place ID.
  • Available reviews and optional fields can vary by language, region, and upstream availability.
  • Date filters use the review publication timestamp. Reviews without one are excluded.
  • ratingBreakdown describes rows saved by the current run, not the place's lifetime distribution.