All scrapers

Maps

Google Maps Reviews Scraper

google.com/maps

100% Success rate
1.8s Avg response
Google Protection
1,106 calls Measured over

Google Maps reviews are served through a dedicated plugin endpoint rather than the generic page fetch. Identify a place with a feature id (0xHEX:0xHEX), a place_id (ChIJ...) or a Maps place URL, pick one of Google's own sort orders - most relevant, newest, highest or lowest rating first - and the reviews come back already parsed: the star rating, the exact date and time in ISO 8601 (Google's page only says '2 years ago'), the original text with its language, Google's translation into the language you set with hl, the author with their review and photo counts, review photos, the guided answers such as trip type or a rating for rooms, service and location, and the owner's reply. A short place summary (name, address, rating, review count, categories) comes alongside the reviews. Reviews come in pages of 20: max_reviews collects up to 200 in one call, and nextPageToken continues where a call stopped. The lowest-first order, which is what complaint and churn monitoring needs, works without a signed-in Google account, and the reviews are read from Google's own feed over plain HTTP, so 20 reviews take about 1.8 seconds and no Google Cloud project, billing account or Places API key is involved.

What you can extract

  • Star rating, exact date and time (ISO 8601 UTC and Unix timestamp) and Google's relative date
  • Original review text with its language, plus Google's translation into the language set by hl
  • Author name, profile link, avatar and the author's review and photo counts
  • Review photos and the guided answers (trip type, travel group, ratings for rooms, service, location, meal type)
  • The owner's reply with its relative date, the review id and a link to the review on Google Maps
  • Sorted Google's way: most relevant, newest, highest or lowest rating first
  • Place summary: name, address, rating, review count, categories, feature id, cid and Maps link
  • Up to 200 reviews per call in pages of 20, with hasMore and nextPageToken to continue

Dedicated endpoints

/maps/reviews

Google Maps reviews of one place

Reviews of a place given as feature_id (0xHEX:0xHEX, fastest), place_id (ChIJ...) or a Maps place url, in Google's sort orders with sort = relevant, newest, highest or lowest (SerpApi's qualityScore, newestFirst, ratingHigh and ratingLow are accepted too). Each review has reviewId, rating, date (ISO 8601 UTC), timestamp, relativeDate, text, language, translatedText (into hl), author (name, profileUrl, avatar, reviewCount, photoCount), photos, details, ownerResponse and reviewUrl. The answer carries a place summary, reviewsReturned, pagesFetched, hasMore and nextPageToken. max_reviews 1-200 (default 20), fetched in pages of 20, each page billed as one request; hl sets the translation language and gl the Google country.

How to scrape it

curl -X POST \
  -H "X-ScrapeUnblocker-Key: $SU_API_KEY" \
  "https://api.scrapeunblocker.com/maps/reviews?feature_id=0xd51baa0e706dffd%3A0x4d6c7dbbf0f408e7&sort=lowest"
import requests

resp = requests.post(
    "https://api.scrapeunblocker.com/maps/reviews",
    headers={"X-ScrapeUnblocker-Key": SU_API_KEY},
    params={"feature_id": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7", "sort": "lowest"},
)
print(resp.text)
import { ScrapeUnblockerClient } from 'scrapeunblocker';

const su = new ScrapeUnblockerClient({ apiKey: process.env.SU_API_KEY });

const reviews = await su.mapsReviews({
  featureId: '0xd51baa0e706dffd:0x4d6c7dbbf0f408e7',
  sort: 'lowest',
});
console.log(reviews);

Requests are POST and take their parameters in the query string. Browser rendering always happens - there is no flag to enable.

Example response

{
  "place": {
    "name": "Hotel ILUNION San Sebastián",
    "address": "Hotel ILUNION San Sebastián, De Zumalakarregi Hiribidea, 20, 20008 Donostia / San Sebastián, Gipuzkoa, Spain",
    "rating": 4.2,
    "reviewCount": 1638,
    "categories": ["Hotel", "Event venue", "Restaurant"],
    "featureId": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7",
    "cid": "5578972284560083175",
    "googleMapsUrl": "https://www.google.com/maps?cid=5578972284560083175"
  },
  "featureId": "0xd51baa0e706dffd:0x4d6c7dbbf0f408e7",
  "sort": "lowest",
  "reviewsReturned": 20,
  "pagesFetched": 1,
  "hasMore": true,
  "nextPageToken": "CjEIARIpCgoAP7-pR_E-____EhAiwW2qhDEwKtcbc_IAAAAAGgn93cgCfaoaRJEYACIA",
  "reviews": [
    {
      "reviewId": "ChdDSUhNMG9nS0VJQ0FnSURIMjZuTzhRRRAB",
      "rating": 1,
      "date": "2024-09-20T07:24:32Z",
      "timestamp": 1726817072,
      "relativeDate": "2 years ago",
      "text": "La ubicación del hotel es muy buena, ya que estas a un paso de la playa...",
      "language": "es",
      "translatedText": "The hotel's location is excellent, as it's just steps from the beach...",
      "author": {
        "name": "Reviewer name",
        "profileUrl": "https://www.google.com/maps/contrib/100000000000000000000/reviews",
        "avatar": "https://lh3.googleusercontent.com/a-/...",
        "reviewCount": 36,
        "photoCount": 15
      },
      "details": [
        { "label": "Trip type", "value": "Vacation" },
        { "label": "Travel group", "value": "Couple" },
        { "label": "Rooms", "rating": 1 },
        { "label": "Service", "rating": 2 },
        { "label": "Location", "rating": 5 }
      ],
      "ownerResponse": {
        "text": "Agradecemos que nos haga llegar sus impresiones y sentimos que su estancia no haya sido lo satisfactoria que esperaba...",
        "relativeDate": "2 years ago"
      },
      "reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURIMjZuTzhRRRAB!2m1!1s0x0:0x4d6c7dbbf0f408e7..."
    }
  ]
}

Read the API docs

Frequently asked questions

Is it legal to scrape Google Maps reviews?

Collecting publicly available Google Maps reviews and ratings is lawful in many jurisdictions, but the rules depend on your country, the data you collect and how you use it. Reviewer names, profile links and review text can be personal data, so follow the privacy rules that apply to you. ScrapeUnblocker returns the public reviews; what you collect and how you use it is your responsibility.

How do I scrape Google Maps reviews without getting blocked?

Google protects Maps with its own anti-bot systems, and the Maps web app no longer lets a signed-out visitor sort or page through reviews. The /maps/reviews plugin reads the review feed Google serves to signed-out visitors in Search's place viewer, which still takes Google's sort orders and a page token, as plain HTTP over rotating ISP exits, so no browser or Google account is involved. In ScrapeUnblocker's benchmark it returned reviews on 100% of 1,106 calls, each a different place (hotels, restaurants, pubs, shops, hospitals, companies, schools and landmarks in over 70 countries), about 1.8s per call.

Can I get the lowest-rated or newest Google reviews first?

Yes. Set sort to lowest, highest, newest or relevant (Google's default). Lowest first is the order complaint and churn monitoring needs; in Google Maps itself, sorting reviews asks you to sign in, while here no Google account is involved. SerpApi's values qualityScore, newestFirst, ratingHigh and ratingLow are accepted too, so switching an existing integration only means changing the endpoint.

Do I get exact review dates?

Yes. Google's page shows only a relative date such as '2 years ago'. Every review here carries date, the exact date and time in ISO 8601 UTC, and timestamp, the same moment in Unix seconds, next to Google's relativeDate. That makes it possible to filter reviews by period or alert on new ones; the owner's reply comes with its relative date.

How many Google Maps reviews can I get per call?

max_reviews takes 1 to 200 and defaults to 20. Google serves reviews in pages of 20, so the plugin fetches as many pages as it needs one after another. When there are more, hasMore is true and nextPageToken continues from where the call stopped with the same place and sort; if max_reviews is not a multiple of 20 the next page can repeat a few reviews, so dedupe on reviewId. A place with no reviews answers 200 with an empty list, and an unknown feature id answers 404.

Are reviews in other languages translated?

Both versions come back. text holds the review as it was written, with its language code, and translatedText holds Google's translation into the language you set with hl (en by default) whenever the review was written in another language. hl also sets the language of Google's labels such as the guided answers.

Do I need a Google Maps API key or account?

No. The Places API returns at most 5 reviews per place, with no lowest-first order and no paging. The /maps/reviews plugin needs only your ScrapeUnblocker key: pass a feature id, a place_id or a Maps place URL. A feature id skips the resolve step a place_id goes through, and the Google Maps Place Details plugin returns the feature id along with the rest of the place.

How much does it cost to scrape Google Maps reviews?

Each page of up to 20 reviews is billed as one request: the default 20 reviews cost 1 request, max_reviews=200 up to 10, and pagesFetched shows the exact number. 1 request = 1 credit, EUR 1.00 per 1,000 on pay as you go, down to about EUR 0.55 per 1,000 on the Ultimate plan. Blocks, timeouts and errors on ScrapeUnblocker's side are not billed, and the free trial includes 500 requests with no card.

Related scrapers

Google Maps Reviews and other names and marks of google.com belong to their owner and are used here only to identify the website this API works with. ScrapeUnblocker is an independent service, not affiliated with, endorsed by or sponsored by the owner of google.com.

Start scraping this site today

Free tier included. No credit card required to test it.