Reviews by site

Overview

Get the share of reviews from each site.

Use this for a pie or bar chart.

You'll need a token. Send both range_start and range_end to count only that window; otherwise the counts are all-time.

Returns counts per site, most reviews first. When there are more than five sites (and no review_site_id), you get the top four plus one Others row that adds up the rest.

Prerequisites

  • A bearer token. See Authentication.
  • Optional: a location (store_id), a review site (review_site_id) and a date range (range_start, range_end, both Y-m-d).

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/account/dashboard/get-review-site-distribution

Authentication

Partner or Account token

  • store_id must be inside your own account tree; otherwise 422.
  • Without store_id, the figures cover every location the token can see: every location under the partner for a Partner token, the account's locations for an Account token, or only the assigned locations for a user limited to some locations.

Rate limit

120 requests per minute, counted per user (the token’s user). See Rate limits.

Request parameters

ParameterInTypeRequiredDescription
store_idqueryintegerNoOne location. Must exist and be inside your account tree. Leave it out to cover every location your token can see.
review_site_idqueryintegerNoOnly this review site, e.g. 44 for Google. Must be an existing review site. When set, there's no Others row.
range_startquerystringNoStart of the window, Y-m-d. Used only together with range_end.
range_endquerystringNoEnd of the window, Y-m-d. Must be on or after range_start. Used only together with range_start.

Request body

None.

Request payload

None.

Response body

data is an array with one row per review site, most reviews first.

FieldTypeDescription
data[]array of objectsOne row per review site, most reviews first; at most five rows when there's no review_site_id.
data[].namestringThe review site's name, e.g. Google, or Others for the combined row.
data[].total_reviewsintegerReviews from this site.
data[].avg_ratingnumber or stringAverage rating, 2 decimals. A site row returns it as a string such as "4.40"; the Others row as a number.
data[].logostringURL of the site's logo.

Response payload

{
  "data": [
    {
      "name": "Google",
      "total_reviews": 223,
      "avg_rating": "4.40",
      "logo": "https://d2ny6zb7otrnhl.cloudfront.net/static/images/img-google.png"
    }
  ]
}

Examples

Success payload

See Response payload.

Error payload

422 Date not in Y-m-d

{
  "message": "The range start field must match the format Y-m-d.",
  "errors": {
    "range_start": [
      "The range start field must match the format Y-m-d."
    ]
  }
}

422 range_end before range_start

{
  "message": "The range_end must be greater than or equal to range start.",
  "errors": {
    "range_end": [
      "The range_end must be greater than or equal to range start."
    ]
  }
}

422 Location outside your tree

{
  "message": "The selected store id does not belong to your company hierarchy.",
  "errors": {
    "store_id": [
      "The selected store id does not belong to your company hierarchy."
    ]
  }
}

422 Review site doesn't exist

{
  "message": "The selected review site id is invalid.",
  "errors": {
    "review_site_id": [
      "The selected review site id is invalid."
    ]
  }
}

429 Too many requests

{
  "message": "Too Many Attempts."
}
StatusMeaning
200One row per review site.
401The token is missing, expired or invalid.
422A date isn't Y-m-d, range_end is before range_start, store_id doesn't exist or is outside your tree, or review_site_id doesn't exist.
429More than 120 requests in a minute from this user.
500Unexpected server error.

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/account/dashboard/get-review-site-distribution?store_id=3007&range_start=2026-01-01&range_end=2026-09-30" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?