Reviews-by-Site (partner)
Overview
Returns review/response metrics grouped by review site (publisher) for the partner — per-site review count, average rating, % of total, response count, and response rate.
Prerequisites
- A bearer token. Callable with Partner tokens.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
POST /api/v1/partner/report/review-response/by-site
Authentication
-
Requires a bearer token in the
Authorization: Bearer <bearer-token>header. -
Who can call it: Partner tokens.
-
Mounted under the
partner/reportgroup. -
No explicit bundle gate in this handler, but all id params must sit inside your own account tree.
-
Store set precedence:
store_id→ single store; elseaccount_id(account); else all stores.
Rate limit
- No rate limit.
Request body
- Body:
| Field | Type | Required | Description |
|---|---|---|---|
range_start | string | yes | Y-m-d H:i:s |
range_end | string | yes | Y-m-d H:i:s |
store_id | integer | no | belongs to auth company |
account_id | integer | no | account (bundle_id=3) under this partner |
client_location_id | string | no | resolved to store_id |
client_account_id | string | no | resolved to account_id |
{
"range_start": "2024-01-01 00:00:00",
"range_end": "2024-12-31 23:59:59",
"account_id": 7
}Response
Note: when the site list is re-sorted by review count,
datacan serialize as a JSON object keyed by numeric strings (rather than a plain array), because the sort preserves keys.
id(int) —review_siteidreview_site(string) — lowercased site name (maps.googlenormalized togoogle)review_site_logo(string|null) — S3 logo URLtotal_reviews(int) — reviews in range for this siteavg_rating(float) — average rating (hipages spans all connected sites)per_of_total(float) — % of all reviews from this sitetotal_response(int) — responses for this siteper_total_response(float) — response rate %
200 OK · 200
200{
"data": [
{
"id": 44,
"review_site": "google",
"review_site_logo": "https://s3/.../google_ic.png",
"total_reviews": 350,
"avg_rating": 4.5,
"per_of_total": 60.34,
"total_response": 320,
"per_total_response": 91.43
}
]
}Errors
| Status | Meaning |
|---|---|
401 | The bearer token is missing, expired or invalid |
422 | The request failed validation — the response names the fields |
500 | Unexpected server error |
Example request
curl --request POST \
--url "https://production-api.shoutaboutus.com/api/v1/partner/report/review-response/by-site" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{"range_start": "2024-01-01 00:00:00", "range_end": "2024-12-31 23:59:59", "account_id": 7}'Updated 8 days ago
