Reviews
List reviews, post and edit responses, and pull analytics via client.reviews.
All review methods live under client.reviews. Review analytics live under
the nested client.reviews.analytics sub-resource.
Read methods return an APIObject (dot access, dict access, .get(),
.to_dict()), a list of APIObjects, or a SyncPage for paginated results.
Mutations (respond, edit_response, archive_response, edit_settings)
raise ValidationError if the platform rejects the change, even when the HTTP
status is 200, so you never need to check success flags on the result.
reviews.list
List reviews for a location with optional filters. Returns a SyncPage.
client.reviews.list(
location_id: str | int,
*,
first: int | None = None,
after: str | None = None,
before: str | None = None,
last: int | None = None,
site_urls: list[str] | None = None,
start_date: str | None = None,
end_date: str | None = None,
category: str | None = None,
rating_filters: list[int] | None = None,
) -> SyncPage
| Parameter | Type | Description |
|---|---|---|
location_id | str | int | Location to list reviews for, numeric (16808) or base64 ("TG9jYXRpb246MTY4MDg="). |
first / last | int | Page size, counted from the start or the end of the result set. |
after / before | str | Opaque pagination cursors. |
site_urls | list[str] | Only reviews from these review-page URLs. |
start_date / end_date | str | Date bounds in YYYY-MM-DD format. |
category | str | Filter by review category. |
rating_filters | list[int] | Only these star ratings, e.g. [1, 2]. |
# Recent reviewspage = client.reviews.list(16808, first=10)for review in page: print(review.rating, review.authorName) # 1- and 2-star only, this yearpage = client.reviews.list( 16808, rating_filters=[1, 2], start_date="2026-01-01", first=50,) # Auto-paginate all reviewsfor review in client.reviews.list(16808, first=100).auto_paging_iter(): print(review.content)reviews.details
Get detailed info for specific reviews by interaction ID. Interaction IDs come
from the interactionId field on items returned by reviews.list.
client.reviews.details(interaction_ids: list[str]) -> APIObject
details = client.reviews.details(["uuid-1", "uuid-2"])print(details.to_dict())reviews.respond
Post a reply to a review.
client.reviews.respond(interaction_id: str, content: str) -> APIObject
result = client.reviews.respond( interaction_id="review-uuid", content="Thank you for your feedback, we really appreciate it!",)print(result.to_dict())reviews.edit_response
Edit an existing reply.
client.reviews.edit_response(
review_id: str,
response_id: str,
content: str,
) -> APIObject
client.reviews.edit_response( review_id="review-uuid", response_id="response-uuid", content="Updated reply text.",)reviews.archive_response
Archive (hide) a reply.
client.reviews.archive_response(response_id: str) -> APIObject
client.reviews.archive_response("response-uuid")reviews.settings
Get review source settings for a location.
client.reviews.settings(location_id: str | int) -> APIObject
settings = client.reviews.settings(16808)print(settings.to_dict())reviews.edit_settings
Update review source URLs for a location. Each entry is a dict describing one review page.
client.reviews.edit_settings(
location_id: str | int,
site_urls: list[dict],
) -> APIObject
client.reviews.edit_settings(16808, site_urls=[ {"url": "https://www.google.com/maps/...", "active": True},])reviews.site_config
Get eligible review sites for the account.
client.reviews.site_config() -> list[APIObject]
sites = client.reviews.site_config()for site in sites: print(site.to_dict())reviews.phrases
Get commonly mentioned phrases extracted from reviews. Pass base64 location IDs.
client.reviews.phrases(
location_ids: list[str],
*,
site_urls: list[str] | None = None,
start_date: str | None = None,
end_date: str | None = None,
) -> list[APIObject]
phrases = client.reviews.phrases( ["TG9jYXRpb246MTY4MDg=", "TG9jYXRpb246MTQwMjQ="], start_date="2026-01-01", end_date="2026-06-30",)for p in phrases: print(p.to_dict())Analytics sub-resource
reviews.analytics.overview
Get overall review stats (totals, average rating, response rate).
client.reviews.analytics.overview(
location_id: str | int,
*,
start_date: str | None = None,
end_date: str | None = None,
) -> APIObject
stats = client.reviews.analytics.overview( 16808, start_date="2026-01-01", end_date="2026-06-30",)print(stats.to_dict())reviews.analytics.timeline
Get review analytics over time.
client.reviews.analytics.timeline(
location_id: str | int,
*,
start_date: str | None = None,
end_date: str | None = None,
) -> APIObject
timeline = client.reviews.analytics.timeline( 16808, start_date="2026-01-01", end_date="2026-06-30",)print(timeline.to_dict())reviews.analytics.sites_stats
Get review analytics broken down by site (Google, Yelp, etc.).
client.reviews.analytics.sites_stats(
location_id: str | int,
*,
start_date: str | None = None,
end_date: str | None = None,
) -> APIObject
sites = client.reviews.analytics.sites_stats( 16808, start_date="2026-01-01", end_date="2026-06-30",)print(sites.to_dict())