List a profile's reviews
The reviews Google publishes for one Business Profile, read from our mirror: filterable, sortable and paged.
Request
GET https://api.hallie.app/v1/profiles/{profile_id}/reviews
profile_id comes from the profiles endpoint, or from the customer's dashboard on the profile's Reviews tab.
Query parameters
|
Parameter
|
Values
|
Default
|
Description
|
|---|---|---|---|
| rating | 1–5 | — | Only reviews with this star rating. |
| replies | all · answered · unanswered | all | Whether the review carries your reply. |
| search | string | — | Matches the start of a word in the author name or the review text. Ignored below two characters. |
| sort | reviewed_at · star_rating · reviewer_name · replied_at | reviewed_at | Which column orders the list. |
| direction | asc · desc | desc | Order of that column. |
| per_page | 1–100 | 25 | Reviews per page. |
| page | integer | 1 | Which page to read. The response also links to the next one. |
Response
{
"data": [
{
"id": "AbFvOqm...",
"rating": 5,
"comment": "Best sourdough in Lyon.",
"author": {
"name": "Camille D.",
"photo_url": "https://lh3.googleusercontent.com/..."
},
"reply": {
"comment": "Thank you! See you soon.",
"published_at": "2026-07-20T09:12:00+00:00"
},
"reviewed_at": "2026-07-19T18:41:00+00:00",
"updated_at": "2026-07-19T18:41:00+00:00"
}
],
"links": { "first": "...", "last": "...", "prev": null, "next": "..." },
"meta": { "current_page": 1, "last_page": 9, "per_page": 25, "total": 213 }
}
reply is null when you have not answered. author.name is null on a review Google publishes anonymously. The id is Google's own, so it survives a re-index and is safe to cache against.
Example
curl -s \
-H "Authorization: Bearer $TOKEN" \
-H "Accept: application/json" \
"https://api.hallie.app/v1/profiles/bp_01jd8x2kqe7yq3m4v5n6p7r8s9/reviews?rating=5&per_page=10"