{"platform":"google-maps","title":"Google Maps reviews","version":1,"summary":"Bring the listing's COMPLETE review list (every page, to the end) with the reviewer fields below. The scorer needs who wrote each review (profile id, lifetime review count, Local Guide badge) and when, not just the stars and text: the anchors are the reviewers who are costly to fake.","identity":[{"name":"platform","type":"'google-maps'","required":true,"description":"Which registry entry this submission follows."},{"name":"placeId","type":"string","required":true,"description":"Google's feature id, 0x<hex>:0x<hex>. In a /maps/place/ URL it is the '!1s0x…:0x…' segment (the LAST one when several appear), or the 'ftid=' parameter. If you only have a ?cid= link, send `cid` (decimal) instead."},{"name":"cid","type":"string","required":false,"description":"The decimal cid from a ?cid= link, when placeId is unknown."},{"name":"name","type":"string","required":true,"description":"The listing's name as shown."},{"name":"address","type":"string","required":false,"description":"Formatted address. Strongly recommended: multi-location businesses are told apart by it."},{"name":"lat","type":"number","required":false,"description":"Listing latitude ('!3d' in the URL). Needed for the place to join its city page."},{"name":"lon","type":"number","required":false,"description":"Listing longitude ('!4d' in the URL)."},{"name":"listedReviews","type":"integer","required":true,"description":"The review count Google displays on the listing ('1,234 reviews'). Checked against the feed."},{"name":"listedRating","type":"number","required":true,"description":"The star rating Google displays (4.6). Checked against the mean of the submitted ratings."},{"name":"complete","type":"boolean","required":true,"description":"True only if the review list was scrolled/paged to its very end (no next page). Partial feeds are not scored."},{"name":"capped","type":"boolean","required":false,"description":"True when you deliberately stopped at 5,000+ reviews of a much larger listing. Accepted in place of complete only at that depth."},{"name":"pulledAt","type":"ISO 8601 datetime","required":true,"description":"When the reviews were collected."},{"name":"mapsUrl","type":"string","required":false,"description":"The listing URL you collected from."},{"name":"sort","type":"string","required":false,"description":"The feed order you collected in ('relevant', 'newest'), informational."},{"name":"reviews","type":"array","required":true,"description":"Every review, one object each (see the review fields)."}],"review":[{"name":"reviewId","type":"string","required":true,"description":"Google's review id, the token starting with 'Ch' or 'Ci' (data-review-id on the card; the first element of each review row in the listugcposts payload)."},{"name":"rating","type":"integer 1-5","required":true,"description":"Stars given."},{"name":"timestamp","type":"number or numeric string","required":true,"description":"When the review was posted, as an epoch timestamp in microseconds (Google's native value), milliseconds, or seconds. All three are accepted and normalized."},{"name":"author","type":"string","required":true,"description":"Reviewer display name."},{"name":"authorUrl","type":"string","required":true,"description":"Reviewer profile link, https://www.google.com/maps/contrib/<21-digit id>. The id is what cross-business reviewer matching keys on."},{"name":"authorReviewCount","type":"integer","required":true,"description":"The reviewer's lifetime review count as shown next to their name ('12 reviews'). Drives the established-account anchor; the score degrades badly without it."},{"name":"isLocalGuide","type":"boolean","required":false,"description":"Whether the reviewer carries the Local Guide badge. Omit or false when absent. Required in practice: the credible-reviewer anchor keys on it."},{"name":"text","type":"string","required":false,"description":"Full review text in its original language; omit or empty for star-only reviews. Do not send the auto-translated version."},{"name":"date","type":"string","required":false,"description":"The relative date Google displays ('3 months ago', 'a year ago', 'Edited 2 weeks ago'). Used to cross-check timestamps."},{"name":"language","type":"string","required":false,"description":"BCP-47 language code of the text when known."},{"name":"authorPhotoCount","type":"integer","required":false,"description":"The reviewer's lifetime photo count when shown."},{"name":"photoCount","type":"integer","required":false,"description":"Photos attached to this review."},{"name":"ownerResponse","type":"{date?, text?}","required":false,"description":"The business's reply, when any."}],"rules":["The feed must be complete: paginate or scroll until Google serves no further page. A list that stopped early is rejected (the verdict would be pinned on a biased sample).","Exception: a listing far larger than 5,000 reviews may be submitted capped at 5,000+ reviews with capped=true; the listed count then serves as the denominator for share-of-corpus signals.","Google's 'limited view' sometimes answers a reviews page with 5 reviews and no next page at a listing showing hundreds. That is not the feed: retry in a fresh session, do not submit it.","Send the original-language text, never the auto-translation, and never summarize or deduplicate reviews yourself.","listedReviews and listedRating must be the numbers Google displays on the listing at collection time. The mean of the submitted ratings is checked against listedRating.","Review ids must be Google's own; the structure is verified. Reviewer profile links must be /maps/contrib/<id> links.","Identity (name, address, lat, lon) comes from you: the server never contacts Google."],"howToCollect":["Open the place in Google Maps and read the canonical URL: '/maps/place/<Name>/@…/data=…!1s0x…:0x…!8m2!3d<lat>!4d<lon>…'. The !1s segment is placeId, !3d/!4d are lat/lon.","The listing header shows the star rating and the review count; the reviews tab lists every review with the reviewer's name, profile link, 'N reviews' count and Local Guide badge, the relative date, stars and text.","Scroll the reviews list until no more reviews load. On the mobile web view each scroll loads a page of 8-10 reviews; a 1,000-review place takes roughly two minutes.","If you capture Google's own network responses (listugcposts), each review row carries the review id, author block (name, profile url, review count, Local Guide flag), the microsecond timestamp, stars and text directly."],"example":{"platform":"google-maps","placeId":"0x31752f3a1b2c3d4e:0x5f6a7b8c9d0e1f20","name":"Example Bistro","address":"12 Example St, District 1, Ho Chi Minh City, Vietnam","lat":10.776,"lon":106.7,"listedReviews":2,"listedRating":4.5,"complete":true,"pulledAt":"2026-10-26T08:00:00Z","reviews":[{"reviewId":"ChdDSUhNMG9nS0VJQ0FnSUNsZ1BMeDhRRRAB","rating":5,"timestamp":"1779890614467713","author":"A. Reviewer","authorUrl":"https://www.google.com/maps/contrib/101315872898595950451","authorReviewCount":9,"isLocalGuide":true,"date":"4 months ago","text":"Great pho, friendly staff.","language":"en"},{"reviewId":"ChZDSUhNMG9nS0VJQ0FnSUNxOGVLVWZREAE","rating":4,"timestamp":"1699791306865174","author":"B. Reviewer","authorUrl":"https://www.google.com/maps/contrib/112233445566778899001","authorReviewCount":41,"isLocalGuide":false,"date":"2 years ago"}]}}