# Google Play In-App Review API: rules, quota and code

> The Google Play In-App Review API shows a Play rating card inside your app on Android 5.0 (API 21) and newer devices with the Play Store, under a time-bound quota whose exact value Google does not publish, and Google's rules forbid asking any question such as "Do you like the app?" before or while the card is shown.

Uptika team · Published: 2026-11-05 · Last updated: 2026-11-05 · https://uptika.app/en/guides/google-play-in-app-review-api

## What is the In-App Review API?

It is Google Play's official way to collect a rating without sending the user to the store. The user sees a Play card inside your app, picks 1 to 5 stars and can add a comment; the review is sent to the Play Store and appears there in due course. It is the Android counterpart of Apple's system prompt (see [asking for ratings on iOS](https://uptika.app/en/guides/ios-rating-prompt-requestreview)).

## What are the rules?

| Rule | Detail |
|---|---|
| Devices | Android 5.0 (API 21) or newer with the Google Play Store, including Google TV devices; ChromeOS devices with the Play Store |
| Library | Play In-App Review library (part of Play Core); Play Core 1.8.0 or newer if you use the older combined library |
| Timing | Only after the user has experienced enough of the app to give useful feedback |
| Frequency | Do not prompt excessively; a quota limits how often the card appears |
| Questions | None before or while showing the card: no "Do you like the app?", no "Would you rate us 5 stars?" |
| Card design | Show it as-is: no changes to size, opacity or shape, no overlay on or around it, never remove it in code |
| Buttons | Do not trigger the API from a call-to-action button; for a "Rate us" button, send users to the Play Store page instead |
| Errors | If the flow fails, do not tell the user and do not change the app's flow |
| Policy | No incentives for ratings, no fake reviews, no forced pop-ups (ratings, reviews and installs policy) |

## How does the quota work?

Google applies a **time-bound quota** per user. Its documentation says that calling the flow more than once during a short period (it gives "less than a month" as an example) might not show a dialog, and that the **exact value is an implementation detail that can change without notice**. Treat the call as a request, not a guarantee, and spend it on your best moment.

## Kotlin integration

Add the dependencies (versions as listed in Google's guide at the time of writing):

- `implementation("com.google.android.play:review:2.0.2")`
- `implementation("com.google.android.play:review-ktx:2.0.2")`

Then three steps:

1. Create the manager: `val manager = ReviewManagerFactory.create(context)`
2. Ahead of the moment, request the info: `val request = manager.requestReviewFlow()` and in `addOnCompleteListener` keep `task.result` as `reviewInfo` when `task.isSuccessful`.
3. At the moment: `manager.launchReviewFlow(activity, reviewInfo)` and continue your flow in its completion listener, whatever the result.

The ReviewInfo object is valid only for a limited time, so request it shortly before you plan to launch the flow, and only when you are sure you will.

## Unity integration

Google's Unity plugin (installable through the package manager or as a .unitypackage) exposes the same flow in the `Google.Play.Review` namespace:

1. `_reviewManager = new ReviewManager();`
2. In a coroutine: `var requestFlowOperation = _reviewManager.RequestReviewFlow();`, `yield return` it, check `Error == ReviewErrorCode.NoError`, keep `GetResult()`.
3. Then `var launchFlowOperation = _reviewManager.LaunchReviewFlow(_playReviewInfo);`, `yield return` it, and continue the game.

The request can take a couple of seconds, so make it before the player reaches the moment, for example while the level summary screen is shown.

## React Native and Flutter

Google does not publish official React Native or Flutter packages for this API. Community plugins call the same Android library underneath, so everything above still applies: same devices, same quota, same rules. Check that the plugin you use calls requestReviewFlow and launchReviewFlow and does not add its own dialog before the card.

## When should you call it?

1. After a clear success: a finished level, a completed workout, a delivered order, a saved document.
2. Not on first launch, not during onboarding, not after an error.
3. At a natural pause, not in the middle of a task.
4. With your own counter so you call it rarely (for example after the third success, at most once per version).

## How do you test it?

| Method | What happens |
|---|---|
| Internal test track | Works if the tester account is on the list, is the primary account in Play Store, has downloaded the app from Play, and has not reviewed it. Quota is not enforced here. |
| Internal app sharing | The card shows, but reviews cannot be submitted (the submit button is disabled). |
| FakeReviewManager | For unit and integration tests only; returns success without showing any UI. |

If the card never shows, check: the app is at least on the internal track, the account has the app in its Play library, the right account is selected in Play Store, the account is not an enterprise-protected one, and the user has not already reviewed (delete the review in Play Store to retest).

## After the review

New reviews are usually visible after about 24 hours, and you can answer each one publicly; see [replying to app reviews](https://uptika.app/en/guides/reply-to-app-reviews). If ratings drop despite good prompts, the diagnosis steps are in [negative reviews and rating drops](https://uptika.app/en/guides/negative-app-reviews), and the full list of allowed tactics is in [how to get more app reviews](https://uptika.app/en/guides/get-more-app-reviews).

To see whether a new prompt placement brings more reviews, Uptika's **Reviews** page charts weekly review volume and the average rating for both stores, filterable by version. The free [One-Star Reasons](https://uptika.app/en/tools/one-star-reasons) tool shows why any app's recent 1-2 star reviews were written.

## Questions

### How does the Google Play In-App Review API work?

Your app requests a ReviewInfo object from the ReviewManager, then launches the review flow with it. Google Play shows a card where the user picks 1 to 5 stars and can add a comment, without leaving the app. The review goes to the Play Store like any other.

### What is the in-app review quota?

Google enforces a time-bound quota on how often a user can see the card, and says the exact value is an implementation detail that can change without notice. Calling the flow more than once in a short period, for example less than a month, may show nothing.

### Can I ask 'Do you like the app?' before the review prompt?

No. Google's guidelines say the app should not ask any question before or while presenting the card, including opinion questions like 'Do you like the app?' or predictive ones like 'Would you rate this app 5 stars?'.

### Is there an in-app review API for Unity or React Native?

Google publishes official integrations for Kotlin and Java, native C++, Unity and Unreal Engine. There is no official Google package for React Native or Flutter; community plugins wrap the same Android library, so the same rules and quota apply.

### Does the API tell me whether the user left a review?

No. The flow's completion does not say whether the user reviewed or even whether the card was shown. Continue your app's normal flow either way.

## Sources

- [Google Play In-App Reviews API (Android Developers)](https://developer.android.com/guide/playcore/in-app-review)
- [Integrate in-app reviews (Kotlin or Java) (Android Developers)](https://developer.android.com/guide/playcore/in-app-review/kotlin-java)
- [Integrate in-app reviews (Unity) (Android Developers)](https://developer.android.com/guide/playcore/in-app-review/unity)
- [Test in-app reviews (Android Developers)](https://developer.android.com/guide/playcore/in-app-review/test)
- [Ratings, reviews and installs policy (Play Console Help)](https://support.google.com/googleplay/android-developer/answer/9898684)

---

Uptika is an ASO and store-intelligence tool for the App Store and Google Play. https://uptika.app/en
