Retrieve user reviews for a specific business. Supports multiple sort options and pagination for fetching large review sets. Each review includes the reviewer, rating, text, and both a relative time string and a Unix timestamp.
HTTP Request
| |
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
business_id | string | Yes | — | Business identifier in hex format (0x...:0x...). Use the google_id value returned by Locate and Search |
language | string | No | "en" | Language code for the response |
country | string | No | "us" | Country code for regional context |
limit | integer | No | 20 | Reviews per page. Capped at 20 — larger values still return 20 |
sort_by | string | No | "qualityScore" | Sort order: qualityScore, mostRecent, ratingHighToLow, or ratingLowToHigh |
next_page_token | string | No | — | Pass the next_token value from a previous response to fetch the next page |
Response
| |
Response Fields
| Field | Type | Description |
|---|---|---|
status | boolean | true when the request succeeded |
request_id | string | Unique identifier for this request |
data | array | List of reviews |
data[].id | string | Unique review identifier |
data[].text | string/null | Review text. null when the reviewer left only a star rating |
data[].translated_text | string/null | Translated review text, when available |
data[].time | string | Relative time as Google displays it (e.g. "13 hours ago") |
data[].timestamp | integer | Unix epoch seconds. Use this for real dates, sorting, and filtering |
data[].url | string | Direct link to the review on Google Maps |
data[].photos | array | Photos attached to the review |
data[].rating | integer | Rating given (1-5) |
data[].language | string/null | Detected language of the review |
data[].source | string | Review source ("Google") |
data[].rating_breakdown | array | Per-aspect sub-ratings, when the listing has them |
data[].question_breakdown | array | Structured question answers, when present |
data[].user_id | string | Reviewer’s Google account ID |
data[].user_name | string | Reviewer name |
data[].user_avatar | string | Reviewer profile image URL |
data[].user_profile_url | string | Link to the reviewer’s Google Maps profile |
data[].user_reviews_count | integer | Total reviews written by this user |
data[].user_images_count | integer | Total images uploaded by this user |
data[].user_reviews_url | string | Link to all reviews by this user |
data[].user_local_guide_level | integer/null | Local Guide level, when the user is one |
data[].user_is_local_guide | boolean | Whether the reviewer is a Local Guide |
data[].owner_response_text | string/null | Business owner’s reply, null when there is none |
data[].owner_response_translated_text | string/null | Translated owner reply |
data[].owner_response_time | string/null | Relative time of the owner reply |
data[].owner_response_timestamp | integer/null | Unix epoch seconds of the owner reply |
data[].owner_response_language | string/null | Language of the owner reply |
next_token | string | Token for the next page. Pass it back as next_page_token. Empty when there are no more pages |
Pagination
limit is capped at 20, so a full review history always requires pagination. Each response
returns a next_token; pass it as the next_page_token parameter on the next request
and repeat until next_token comes back empty.
Notes
- A business ID that matches nothing returns
status: truewith an emptydataarray, not an error. Check for empty arrays rather than catching exceptions. - Many reviews are star-only, so
textis frequentlynull. Across three businesses we tested, 30-48% of reviews had no text. - With
sort_by=mostRecent, an occasional much older review appears mid-list. Those are edited reviews: Google orders them by edit date whiletimestampkeeps the original posting time.
Code Examples
| |
| |
| |
Related Endpoints
- Business Details — Get full business information
- Business Photos — Get photos for this business
- Locate and Search
— Find the
google_idfor a business by name