---
title: "Get app store reviews"
method: GET
path: "/app/{appId}/reviews"
tags: ["app"]
---

# Get app store reviews

`GET /app/{appId}/reviews`

## Request

- Base URL: `https://api.runway.team`
- URL: `https://api.runway.team/app/{appId}/reviews`
- Auth: API key in header `X-API-Key`

Returns the customer reviews Runway currently holds for an app, newest first, across every store the app ships to (Apple App Store via App Store Connect, Google Play, Amazon Appstore, Huawei AppGallery, Samsung Galaxy Store). Each review carries the `destination` it came from, so reviews from different stores can be told apart.

These are reviews left by end users in the app stores — not Apple's or Google's review of a submitted build.

Runway holds the most recent window of reviews returned by each store rather than a full historical archive, so a caller building its own archive should poll often enough that the window always covers the gap since its last poll. `submittedAfter` and `submittedBefore` are both **inclusive**: a review submitted exactly at the boundary is returned. Reviews are uniquely identified by `id` — dedupe on it when polling incrementally.

## Path parameters

- `appId` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `submittedAfter` string, date-time
- `submittedBefore` string, date-time
- `stepConfigId` string
- `version` string

## Response `200`

A page of app store customer reviews for an app, newest first

- AppStoreReviewsEntity
  - `reviews` AppStoreReviewEntity[], required: The matching reviews, newest first.
    - `id` string, required: The app store's identifier for the review. Stable across requests — dedupe on it.
    - `title` string, required: The review's title, empty on stores that don't have one.
    - `content` string, required: The review's body text.
    - `author` string, required: The reviewer's display name as given by the store.
    - `rating` string, required: The star rating, 1 through 5.
    - `submittedAt` string, date-time, required: When the review was submitted to the store.
    - `version` string: The app version the review was left on, when the store reports it.
    - `country` string: The storefront country the review was left in, when the store reports it.
    - `titleTranslated` string: English translation of the title, present only when review translation is enabled for the org.
    - `contentTranslated` string: English translation of the body, present only when review translation is enabled for the org.
    - `fetchedAt` string, date-time: When Runway fetched this review from the store.
    - `destination` AppStoreReviewDestinationEntity
      - `stepConfigId` string, required: Identifier of the destination, usable as the `stepConfigId` query param.
      - `name` string, required: The destination's display name in Runway.
      - `platform` 'ios' | 'android' | 'ios-sdk' | 'android-sdk' | 'react-native-ota', required: The app's platform
      - `appStoreType` 'AppStoreConnect' | 'GooglePlay' | 'Amazon' | 'Huawei' | 'Samsung' | 'ExpoEAS', required: Which app store the review came from
  - `totalCount` integer, required: Number of reviews matching the request's filters, before pagination.
  - `hasMore` boolean, required: Whether more reviews remain beyond this page.
  - `lastUpdatedAt` string, date-time: When Runway last refreshed reviews from the app stores.

## Other responses

- `400`: Bad request response
- `404`: Resource not found response

---

[API](https://skmtc.dev/runway/apis/runway-rest-api.md) - [All operations](https://skmtc.dev/runway/apis/runway-rest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/runway/apis/runway-rest-api/revisions/081109863a9a?raw)
