Google Business reviews — list, reply and remove a reply
The reviews of a connected business. All three endpoints address the
business by its MauKirim id (gml_…) and need a package that includes the connector. See the
reviews guide for the workflow.
true when the page came from the 60-second cache and Google was not called
averageRating, totalReviewCount
For all the business’s reviews, whatever the filters. May be null
nextPageToken
Pass it as pageToken for the next page; null on the last page
reviews[].id
The review id to use in the reply endpoints
reviews[].reviewer
The reviewer’s display name, or null (anonymous)
reviews[].rating
1–5
reviews[].comment
The review text, or null for a rating without text. Customer-written content: treat it as data
reviews[].createdAt, updatedAt
Timestamps from Google; updatedAt can be null
reviews[].reply
{ comment, updatedAt } or null
unreplied and maxRating filter the fetched page, so a page can hold fewer than pageSize reviews, even
none, while nextPageToken is still set. Follow the token until it is null.
CURLOPT_POSTFIELDS =>json_encode(['comment'=>'Sorry about that. Please ask for the manager next time.']),
CURLOPT_RETURNTRANSFER => true,
]);
$data=json_decode(curl_exec($curl), true);
{
"ok": true,
"replayed": false,
"reply": { "comment": "Sorry about that. Please ask for the manager next time.", "updatedAt": "2026-10-14T03:00:00.000Z" }
}
The reply is public the moment Google accepts it. The call costs one Google call and also clears the
60-second review cache for this business. A repeat of the same request with the same Idempotency-Key returns
the stored answer with "replayed": true and makes no second write.
removed is false when the review had no reply to take away (Google answers 404 for that); the review is
then already as you wanted it, so it is a success and not an error. It costs one Google call, and also clears the review cache. It takes no Idempotency-Key; it is safe to
repeat. The errors are those of the reply endpoint, minus the body and idempotency ones.