Google is committed to advancing racial equity for Black communities. See how.

Note: As of December 1, 2019, the Google Play Developer API is available only for version 3 and higher. If you're using a lower version of the API, you must migrate to version 3 by this date. For more information on migrating to version 3, see Changes to the Google Play Developer API.

The Google Play Developer API is a REST-based web service that allows you to perform publishing and app-management tasks. You can use this API to integrate your publishing operations with your release-management process.

Not all developers will need to use these APIs—in most cases you will continue to manage your apps directly using the Google Play Console. However, if you have a large number of APKs to manage, or have to track user purchases and subscriptions, you may find this API very useful.

Using the Google Play Developer API, you can automate a variety of app-management tasks, including:

Uploading and releasing new versions of your app

Editing your app Google Play Store listings, including localized text and graphics

Managing your in-app product catalog, your products purchase status and your app subscriptions

The Google Play Developer API lets you focus on designing and developing your app, while spending less time and effort managing your releases, even as you grow to new markets.

The Google Play Developer API includes two components:

The Publishing API lets you upload and publish apps, and perform other publishing-related tasks.

The Subscriptions and In-App Purchases API lets you manage in-app purchases and subscriptions. (This was previously known as the "Purchase Status API".)

Publishing API

The Google Play Developer Publishing API allows you to automate frequent tasks having to do with app distribution. This provides functions similar to those available to a developer through the Play Console, such as:

Uploading new versions of an app

Releasing apps, by assigning APKs to various Tracks (alpha, beta, staged rollout, or production)

Creating and modifying Google Play Store listings, including localized text and graphics and multi-device screenshots

Those tasks are performed using the edits functionality, which takes a transactional approach to making changes — you bundle several changes into a single draft edit, then commit the changes all at once. (None of the changes take effect until the edit is committed.)

Note: Not all developers will need to use this API. All the functionality provided by the API is also available through the Google Play Console. However, this API lets you integrate your app and listing update process with your existing tools, which will be very useful for some developers. In particular, if you have a large number of APKs to manage, or localized listings in many different locales, you may find this API invaluable.

Subscriptions and In-App Purchases API

The API allows you to manage your app's catalog of in-app products and subscriptions. In addition, with the Subscriptions and In-App Purchases API you can quickly retrieve the details of any purchase using a standard GET request. In the request you supply information about the purchase — app package name, purchase or subscription ID, and the purchase token. The server responds with a JSON object describing the associated purchase details, order status, developer payload, and other information.

You can use the Purchase Status API in several ways, such as for reporting and reconciliation of individual orders and for verifying purchases and subscription expirations. You can also use the API to learn about cancelled orders and confirm whether in-app products have been consumed, including whether they were consumed before being cancelled.

Note: The Subscriptions and In-App Purchases API does not use the new, transactional "edits" functionality used by the Publishing API. Methods for the Inappproducts, Purchases.products, and Purchases.subscriptions resources take effect immediately. Each resource's API reference page notes specifically whether the methods for that resource use the "edits" model.

The Purchase Status API is part of the Google Play Developer API v. 2.0, available through the Google Developers Console.

Using the API

To start making API calls, you’ll set up and manage the Google Play Developer API directly from the Google Play Console. The API can only be managed by the owner of your Google Play Developer account.

To access the API, you'll need to:

Set up a new or existing API project Set up one or more authorized clients, which can be either: OAuth clients

service account

For full details, see the Google Play Developer API Getting Started page.

Staged Edits

The Google Play Developer Publishing API Edits methods allow you to prepare and commit changes to your Google Play apps. Once your update is ready to go, you can deploy it with a single operation. The changes you can make include:

Uploading one or more APKs

Assigning different APKs to different “tracks”: alpha, beta, staged rollout, and production

Creating and modifying localized store listings for the app

Uploading screenshots and other images for the app’s store listings

Once all the desired changes have been staged, they are all committed with a single operation.

For full details on staged edits, see the Google Play Developer API Edits page.

Note: The new, transactional "edits" functionality is only used by the Publishing API. Methods for the Subscriptions and In-App Purchases API take effect immediately. Each resource's API reference page notes specifically whether the methods for that resource use the "edits" model.

Using the API Efficiently

Access to the Google Play Developer API is regulated to help ensure a high-performance environment for all applications that use it (as described in Quota). While you can request a higher daily quota for your application, we highly recommend that you minimize your access using these techniques:

Publishing

Limit the number of app updates — Do not publish alpha or beta updates more frequently than once a day. (Production apps should be updated even less frequently than that.) Every update costs your users time and possibly money. If you update too frequently, users will start ignoring updates, or even uninstall the product. (Of course, if there's a major problem with your app, go ahead and fix it.)

One-time purchases

Query the Purchase Status API for new purchases only — At purchase, your app can pass the purchase token and other details to your backend servers, which can use the Purchase Status API to verify the purchase.

Cache purchase details on your servers — To the extent possible, cache the purchase details for in-app products and subscriptions on your backend servers. If your app contacts your backend servers at runtime to verify purchase validity, your server can verify the purchase based on the cached details, to minimize use of the Purchase Status API and to provide the fastest possible response (and best experience) for the user.

Subscriptions

Store subscription information on your server to avoid making unnecessary API calls. When your app needs to verify a subscription, you should rely on the cached information on your server instead of repeating the API call to Google.

There are two scenarios in which your secure server should use the Google Play Developer API to get subscription information: Your server receives a new purchase token that has not been seen before. Your server receives a real-time developer notification (RTDN), which indicates that you need to use the purchase token to get the new subscription information. Also note the following: Do not poll the API for subscription status on a regular basis. For example, do not call the API daily to check each subscription. Since you receive an RTDN when the subscription expires or renews, you do not need to schedule an API call based on the scheduled expiry time.



By following those general guidelines, your implementation will offer the best possible performance for users.

Quota

Applications using the Google Play Developer API are limited to an initial courtesy usage quota of 200,000 requests per day (per application). This should provide enough access for publishing activities and normal subscription-validation needs.

If you need to request a higher limit for your application, use the "Request more" link on the Quotas pane of the Google Developers Console.