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# 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]) -> APIObjectdetails = 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) -> APIObjectresult = 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,) -> APIObjectclient.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) -> APIObjectclient.reviews.archive_response("response-uuid")reviews.settings
Get review source settings for a location.
client.reviews.settings(location_id: str | int) -> APIObjectsettings = 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],) -> APIObjectclient.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,) -> APIObjectstats = 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,) -> APIObjecttimeline = 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, Facebook, Yelp).
client.reviews.analytics.sites_stats( location_id: str | int, *, start_date: str | None = None, end_date: str | None = None,) -> APIObjectsites = client.reviews.analytics.sites_stats( 16808, start_date="2026-01-01", end_date="2026-06-30",)print(sites.to_dict())