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
ParameterTypeDescription
location_idstr | intLocation to list reviews for, numeric (16808) or base64 ("TG9jYXRpb246MTY4MDg=").
first / lastintPage size, counted from the start or the end of the result set.
after / beforestrOpaque pagination cursors.
site_urlslist[str]Only reviews from these review-page URLs.
start_date / end_datestrDate bounds in YYYY-MM-DD format.
categorystrFilter by review category.
rating_filterslist[int]Only these star ratings, e.g. [1, 2].
Python
# Recent reviews
page = client.reviews.list(16808, first=10)
for review in page:
print(review.rating, review.authorName)
 
# 1- and 2-star only, this year
page = client.reviews.list(
16808,
rating_filters=[1, 2],
start_date="2026-01-01",
first=50,
)
 
# Auto-paginate all reviews
for 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
Python
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
Python
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
Python
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
Python
client.reviews.archive_response("response-uuid")

reviews.settings

Get review source settings for a location.

client.reviews.settings(location_id: str | int) -> APIObject
Python
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
Python
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]
Python
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]
Python
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
Python
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
Python
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
Python
sites = client.reviews.analytics.sites_stats(
16808,
start_date="2026-01-01",
end_date="2026-06-30",
)
print(sites.to_dict())

See also

  • Locations: retrieve location IDs
  • Analytics: Google, Bing, and Facebook profile metrics
  • Use cases: review monitoring and auto-reply recipes