---
title: "Get review stats"
method: GET
path: "/v1/analytics/reviews"
tags: ["Analytics"]
---

# Get review stats

`GET /v1/analytics/reviews`

## Request

- Base URL: `https://api.rumoro.dev`
- URL: `https://api.rumoro.dev/v1/analytics/reviews`
- Auth: HTTP bearer

Returns stats on reviews your keywords collect from the App Store, Google Play, Trustpilot and Google Maps. You get the count, average stars, the star distribution, replies and open 1 and 2 star reviews, for the workspace and per review page. Each page has a series of average stars per `bucket`, and the report lists the tags of unhappy reviews. Two keywords matching one review count it once. Pick the period with `range` (7d, 30d, 90d or 365d up to today) or with `from` and `to`. Days follow `timezone`, UTC by default. `keywordIds` and `platforms` narrow the data, and `compare=true` adds the equally long period just before. Dates are publish dates.

## Query parameters

- `range` '7d' | '30d' | '90d' | '365d': A preset period up to today, 30d by default. Ignored when you send from or to.
- `from` string: Start date in `timezone`, as YYYY-MM-DD. That day is included.
- `to` string: End date in `timezone`, as YYYY-MM-DD, included. Defaults to today.
- `keywordIds` string[], nullable: Keeps these keyword ids only. Repeat the parameter or separate values with commas. Leave it out for all keywords.
- `platforms` string[]: Keeps these platforms only. Repeat the parameter or separate values with commas. Leave it out for all platforms.
- `compare` boolean: true adds the equally long period just before as `previous`.
- `timezone` string: The IANA time zone used to split days, such as America/New_York. Defaults to UTC. The zone's offset at the end of the period is used for the whole period.
- `bucket` 'day' | 'week': The step of each series, day or week. Days by default for periods up to 90 days.

## Response `200`

The report, plus `previous` with compare=true

- ReviewsReport
  - `window` object, required: Start and end of the period.
    - `from` string, required: The first day included.
    - `to` string, required: The last day included.
    - `days` integer, required: How many days the window spans.
    - `timezone` string, required: The IANA time zone used to split the days.
    - `bucket` 'day' | 'week', required: The step of each page's series. Days for windows up to 90 days and weeks beyond, unless you ask for one.
  - `totals` object, required
    - `reviews` integer, required: Reviews published in the window, counting each review once across keywords.
    - `averageRating` number, nullable, required: The average star rating with one decimal. Null when there are no reviews.
    - `distribution` object, required: How many reviews have each star rating.
      - `1` integer, required
      - `2` integer, required
      - `3` integer, required
      - `4` integer, required
      - `5` integer, required
    - `responded` integer, required: Reviews with a reply from the owner or developer. The App Store feed has no replies.
    - `openNegative` integer, required: Reviews of 1 or 2 stars still open in triage.
  - `tags` object[], required: The intent and topic tags of 1 and 2 star reviews, most common first. They show what unhappy reviewers write about.
    - `tag` string, required
    - `count` integer, required
  - `pages` object[], required: A row for each review page with reviews in the window, the page with the most first.
    - `reviews` integer, required: Reviews published in the window, counting each review once across keywords.
    - `averageRating` number, nullable, required: The average star rating with one decimal. Null when there are no reviews.
    - `distribution` object, required: How many reviews have each star rating.
      - `1` integer, required
      - `2` integer, required
      - `3` integer, required
      - `4` integer, required
      - `5` integer, required
    - `responded` integer, required: Reviews with a reply from the owner or developer. The App Store feed has no replies.
    - `openNegative` integer, required: Reviews of 1 or 2 stars still open in triage.
    - `platform` 'appstore' | 'googleplay' | 'trustpilot' | 'googlemaps', required: Where the reviews come from. appstore is the Apple App Store, googleplay is Google Play, trustpilot is a company's Trustpilot page and googlemaps is the Google reviews of a place.
    - `id` string, required: Page id. Trustpilot domain, Place ID or cid, or the app's id or package name.
    - `url` string, required: Link to the review page.
    - `series` object[], required: Reviews and average stars for every step, oldest first, with no gaps.
      - `date` string, required: The first day of the step, as YYYY-MM-DD.
      - `reviews` integer, required
      - `averageRating` number, nullable, required: The average star rating with one decimal. Null when there are no reviews.
    - `previous` object, nullable, required: The equally long period just before the window, when compare=true. Null otherwise.
      - `reviews` integer, required
      - `averageRating` number, nullable, required: The average star rating with one decimal. Null when there are no reviews.
  - `previous` object, nullable, required: With compare=true, totals for the period before the window. Otherwise null.
    - `reviews` integer, required: Reviews published in the window, counting each review once across keywords.
    - `averageRating` number, nullable, required: The average star rating with one decimal. Null when there are no reviews.
    - `distribution` object, required: How many reviews have each star rating.
      - `1` integer, required
      - `2` integer, required
      - `3` integer, required
      - `4` integer, required
      - `5` integer, required
    - `responded` integer, required: Reviews with a reply from the owner or developer. The App Store feed has no replies.
    - `openNegative` integer, required: Reviews of 1 or 2 stars still open in triage.

## Other responses

- `400`: The query is not valid
- `401`: The API key is missing or not valid

---

[API](https://skmtc.dev/rumoro/apis/rumoro-api.md) · [All operations](https://skmtc.dev/rumoro/apis/rumoro-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rumoro/apis/rumoro-api/revisions/9ef63ea894d1?raw)
