How to Reply to Google Business Reviews via API
List and reply to Google Business Profile reviews programmatically — multi-location filtering, star-only reviews, webhooks for new reviews, and reply management.
How reviews surface in the API
Google reviews live on a location, not on a post, so they flow through the Profile Comments API rather than the post-level Comments API. A review is a top-level comment; your answer is a reply nested under it.
Postproxy pulls reviews from Google twice a day (06:00 and 18:00 UTC) for every connected google_business profile, and fires a profile_comment.created webhook for each new one — so you don’t poll Google or manage its OAuth scopes.
Prerequisites
- A Postproxy API key
- A connected Google Business profile (the connected Google account may manage several locations)
List reviews
curl "https://api.postproxy.dev/api/profiles/PROFILE_ID/comments" \ -H "Authorization: Bearer YOUR_API_KEY"Results are newest-first by posted_at. Each review carries the reviewer’s name and avatar, your replies in a replies array, and the star rating in platform_data.star_rating.
Two Google-specific shapes to handle:
- Star-only reviews — Google allows ratings with no text.
bodyisnullbutplatform_data.star_ratingis populated, so don’t skip records on an empty body. - Permalink — points at the location’s reviews page on Google, shared by all reviews there. Google’s API doesn’t expose per-review URLs.
Multi-location accounts
A google_business profile represents the connected Google account, which may manage multiple locations — including unrelated businesses. Without a filter, the list interleaves reviews from all of them.
Enumerate locations first, then scope by placement_id:
# List locationscurl "https://api.postproxy.dev/api/profiles/PROFILE_ID/placements" \ -H "Authorization: Bearer YOUR_API_KEY"
# Reviews for one locationcurl "https://api.postproxy.dev/api/profiles/PROFILE_ID/comments?placement_id=accounts/1234/locations/5678" \ -H "Authorization: Bearer YOUR_API_KEY"Reply to a review
curl -X POST "https://api.postproxy.dev/api/profiles/PROFILE_ID/comments" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "parent_id": "REVIEW_ID", "body": "Thanks Jane — glad the espresso landed. See you next week!" }'parent_id is required — Google reviews are user-generated, so top-level comments can’t be authored through the API (the request returns 422 without it). It accepts the Postproxy hashid or Google’s native resource path (accounts/X/locations/Y/reviews/Z).
The reply is stored with status: "pending" and pushed to Google asynchronously; it flips to published once it lands, or failed / failed_waiting_for_retry with error_details if Google rejects it.
React to new reviews in real time
Subscribe to profile_comment.created on your webhook endpoint. It fires for newly synced incoming reviews and for your own replies once published. The payload includes placement_id, body, and platform_data.star_rating — enough to route on the spot: thank 5-star reviewers automatically, page a human for anything at 3 stars or below.
The event fires across all locations of the account; filter on data.object.placement_id if you only care about some. For a fully automated pipeline with an LLM drafting the responses, see How to Auto-Respond to Google Reviews with AI.
Update or remove your reply
Google supports one owner reply per review. To remove yours:
curl -X DELETE "https://api.postproxy.dev/api/profiles/PROFILE_ID/comments/REPLY_ID" \ -H "Authorization: Bearer YOUR_API_KEY"This deletes your reply only — businesses can’t delete the review itself; the original stays.
What the API can and can’t do
| Action | Supported |
|---|---|
| List reviews per location | Yes |
| Read star ratings (incl. star-only reviews) | Yes |
| Reply to a review | Yes |
| Delete your reply | Yes |
| Create or delete a review | No — reviews are user-generated |
Full object fields and error shapes: Profile Comments API. Publishing local posts, events, and offers to the same profile is covered on the Google Business platform page.