POST /web/scrape with formats.parse: true and parseParams: {"type": "prebuilt", "parser": "google-maps-reviews"}. Read the result in parsed.data, with parsed.type: "google-maps-reviews". See the Quickstart for authentication and SDK setup.
Don’t send custom rules with this parser. For CSS selectors and rules, use the Custom parser.
Request
The URL identifies the place. These forms are accepted:- A Maps place URL, such as
https://www.google.com/maps/place/.... When the URL carries a feature ID (!1s0x…:0x…), that exact place is used. - A CID URL, such as
https://maps.google.com/?cid=16537904221077587530. Signed CIDs, as returned by the Google Maps parser, work too. - A reviews URL, such as
https://search.google.com/local/reviews?placeid=ChIJ…. - A Maps search URL. The first result is used.
google_maps_url and google_reviews_url fields of Google Maps parser results both work as input.
Two optional fields on parseParams control the result:
newest, relevant, highest, and lowest follow Google’s own orders. oldest returns the earliest reviews first, ordered by exact posting time, which Google itself does not offer. Other parsers reject sort and limit.
timeoutOpts.milliseconds when you need headroom beyond the 90-second default.
Output
Field names and shapes match Serper’s Google reviews response, so existing Serper integrations work unchanged.featureId, cid, and sort at the top level, and user.isLocalGuide, language, and details on each review, are additions.
When parsed.success is true, the parsed output has this shape:
featureId is the place’s Maps feature ID. cid is the same signed CID the Google Maps parser returns, so you can join the two outputs. sort is the order used.
Review fields
null, when empty, matching Serper. Other unavailable values are null.
dateis Google’s relative label, such as"3 months ago", andisoDateis the exact posting time as an ISO 8601 timestamp.snippetis the review in its original language, andlanguageis that language’s code.translatedSnippetis Google’s English translation, omitted when there is none, such as for English reviews. Line breaks are\n, and rating-only reviews have nosnippet.likescounts every reaction on the review.useris the reviewer:thumbnailis the avatar URL,linkthe contributor profile, andreviewsandphotosthe contributor’s review and photo counts.medialists the review’s photos and is omitted when there are none.captionis omitted when empty.responseis the owner’s reply, omitted when the owner hasn’t replied. Google only gives a relativedatefor replies.linkis the review’s permalink.detailsholds the guided answers, such as{"Meal type": "Breakfast", "Food": 5}for restaurants or{"Rooms": 4, "Location": 5}for hotels, and is{}when there are none.
Empty results and errors
A place without reviews returnsreviews: []. Google answers an unknown CID the same way, so an empty list does not establish that the place exists. A search or place URL that matches no place fails with NOT_FOUND.
Reviews posted in the last few hours can take a while to appear in every Google region, so a very fresh review may be missing from one request and present in the next.
Read parsed.success before using the data. A failed parse has data: null and can coexist with successful outputs. parsed.type remains "google-maps-reviews" even when parsing fails. See timeouts and errors for handling failures.