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

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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/report group.

  • 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; else account_id (account); else all stores.

Rate limit

  • No rate limit.

Request body

  • Body:
FieldTypeRequiredDescription
range_startstringyesY-m-d H:i:s
range_endstringyesY-m-d H:i:s
store_idintegernobelongs to auth company
account_idintegernoaccount (bundle_id=3) under this partner
client_location_idstringnoresolved to store_id
client_account_idstringnoresolved 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, data can serialize as a JSON object keyed by numeric strings (rather than a plain array), because the sort preserves keys.

  • id (int) — review_site id
  • review_site (string) — lowercased site name (maps.google normalized to google)
  • review_site_logo (string|null) — S3 logo URL
  • total_reviews (int) — reviews in range for this site
  • avg_rating (float) — average rating (hipages spans all connected sites)
  • per_of_total (float) — % of all reviews from this site
  • total_response (int) — responses for this site
  • per_total_response (float) — response rate %

200 OK · 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

StatusMeaning
401The bearer token is missing, expired or invalid
422The request failed validation — the response names the fields
500Unexpected 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}'

Did this page help you?