Download & export monthly reports

Using the Play Console website, you can download monthly reports about individual apps to help you track and understand your app's performance.

Types of reports

Detailed reports

Detailed reports include data on individual events.

  • Reviews
  • Financial: earnings, estimated sales, and payouts
Aggregated reports

Aggregated reports include consolidated data (averages, daily totals, etc.) for app statistics.

  • Statistics: installs, ratings, crashes, Firebase Cloud Messaging (FCM), and subscriptions
  • User acquisition: Retained installers, Buyers (7 days after install)

Download reports

  1. Sign in to your Play Console.
  2. Click Download reports Reports.
  3. On the left menu, select a report.
  4. Under "Select an application," type and select your app's name.
  5. Select the year and month of the report you want to download.

Note: Financial reports include all apps in your account.

Download reports from Google Cloud Storage

Reports are available from Google Cloud Storage. Reports are generated daily and accumulated in monthly CSV files. They are stored in a private Google Cloud Storage bucket for your Google Play Developer account.

You can access reports using Google Cloud Storage on your browser or programmatically using gsutil. You can also use other tools to programmatically access your Cloud Storage bucket.

Tip: If you want to import your reports from Google Cloud Storage into BigQuery, you need to convert the CSV files from UTF-16 to UTF-8.

Find your Google Cloud Storage bucket ID

Your Google Cloud Storage bucket ID is listed near the bottom of your Reports pages.

Your bucket ID begins with pubsite_prod_rev (example: pubsite_prod_rev_01234567890987654321).

Download reports using a command line tool
  1. Install the gsutil tool.
    • Be sure to authenticate your account using an account with access to your Play Console.
    • During the setup process, if you're using gsutil for the first time and don't have any other projects configured in Google Cloud Storage, you can type your app's name when you're prompted for a project ID.
  2. Find your reporting bucket ID on one of your Download reports pages, near the bottom of the page.
    • Your bucket ID begins with: pubsite_prod_rev (Example: pubsite_prod_rev_01234567890987654321).
  3. Use the gsutil cp command to download reports.

Reports are organized in directories named after each type of report. CSV file names include the type of report, package name, time period, and the dimension (if applicable).

Download reports using a client library & service account

Step 1: Create a service account

  1. Sign in to the Google Developers Console (console.developers.google.com).
  2. If you already have a project, use the drop-down to select a project. If you don't have a project listed or want to create a new one, click Create project.
  3. Select the Menu icon Menu icon > Permissions > Service accounts > Create service account.
  4. Follow the on-screen instructions and select Create.
  5. Copy the email address listed.
    • Example: accountName@project.iam.gserviceaccount.com
 

Step 2: Add the service account on your Play Console

  1. Sign in to your Play Console.
  2. Select Settings Settings > User accounts & rights > Invite new user.
  3. Paste or type the email address associated with your service account.
  4. Based on the types of reports needed, select permissions.
    • For example, if you need access to financial reports, select “View financial reports.”
  5. Click Add user. Your service account will be added to your account.
 

Step 3: Fetch reports using an API call

  1. Install the API client library for your preferred code language.
  2. Configure the code performing the API call to use OAuth2 server-to-server authentication and to request permission to the OAuth2 scope (https://www.googleapis.com/auth/devstorage.read_only).
  3. Issue authenticated API calls to fetch reports.
See an example (Python)

If you used Python to fetch reports, here's a code example:

 

import json

from httplib2 import Http

from oauth2client.client import SignedJwtAssertionCredentials

from apiclient.discovery import build

# Change these variables to fit your case

client_email = 'your service account here'

json_file = 'path_to_json_file_obtained_when_creating_the_service_account'

cloud_storage_bucket = 'pubsite_prod_rev_…'

report_to_download = ‘earnings/earnings_….zip’

 

private_key = json.loads(open(json_file).read())['private_key']

credentials = SignedJwtAssertionCredentials(client_email, private_key,

   'https://www.googleapis.com/auth/devstorage.read_only')

storage = build('storage', 'v1', http=credentials.authorize(Http()))

print storage.objects().get(

   bucket=cloud_storage_bucket,

   object=report_to_download).execute()

Control access to Google Cloud Storage

Reports available on Google Cloud Storage use the same access restrictions that control data access on your Play Console. This means account users with access to areas of a Play Console account have access to the corresponding reports in Google Cloud Storage. 

Account owners can update permissions for individual users at any time.

  • To access bulk reports, your "View app information" permission must be set to "Global." 
  • To download financial reports, your "View financial data" permission must be set to "Global."

Commands & file formats for detailed reports

Crashes & ANRs

As of May 2018, you can no longer download detailed reports for crashes and ANRs.

Reviews

Reviews

Command

gs://[developer_bucket_id]/reviews/reviews_[package_name]_YYYYMM.csv

File format

Field Format Optional Examples & notes
Package Name String NO com.company.app
App Version Code integer YES Production APKs only
App Version Name String YES  
Reviewer Language String - ISO 639-1 two letter abbreviation YES en
Device String YES hammerhead
Review Submit Date and Time ISO_8601 including time, UTC timezone NO 2014-06-19T19:12:32Z
Review Submit Millis Since Epoch integer, milliseconds since epoch NO  
Review Last Update Date and Time ISO_8601 including time, UTC timezone YES 2014-06-19T19:12:32Z
Review Last Update Millis Since Epoch integer, milliseconds since epoch YES  
Star Rating integer (between 1 and 5) NO  
Review Title String, in the reviewer's local language (stripping newlines) YES  
Review Text String, in the reviewer's local language (stripping newlines) YES  
Developer Reply Date and Time ISO_8601 including time, UTC timezone YES 2014-06-19T19:12:32Z
Developer Reply Millis Since Epoch integer, milliseconds since epoch YES  
Developer Reply Text String (stripping newlines and compressing whitespace) YES  
Review Link String YES https://play.google.com/apps/publish/?dev_acc=<...>#ReviewPlace:id=<..>

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/reviews/reviews_com.example.app_2014* /your/local/directory

Financial reports

Estimated sales

About

You can use the estimated sales report to view low latency information about app, in-app product, or subscription sales. This report contains the amount paid by buyers and doesn't deduct taxes or Google fees from the totals.

You can use this report for analytics or trend analysis, but it's not recommended for accounting. Instead, see the Earnings report.

You may notice differences between this report and your earnings for a number of reasons. For example, the estimated sales report doesn't take into account withholding taxes or chargebacks. This report contains amounts paid by buyers in their local currency and doesn't contain converted amounts in your payout currency.

Command

gs://[developer_bucket_id]/sales/salesreport_YYYYMM.zip

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/sales/salesreport_2014* /your/local/directory

File format

Field Format Optional

Examples & notes

Order Number

String

No

GPA.1234-1234-1234-12345

Unique ID assigned to this order. Subscription order IDs include the renewal cycle number at the end.

Order Charged Date

String

No

2016-11-30

Date of this order based on the UTC time zone (in YYYY-MM-DD format).

Order Charged Timestamp

Integer

No

1480507200

The UNIX timestamp when the order was charged to the user. Measured in seconds since epoch.

Financial Status

String

No

charged, refund, partial refund, etc.

If you fully refund an order after issuing a partial refund:

  • The partial refund appears on a separate line
  • The full refund line shows the remaining balance

Device Model

String

No

mako, etc.

Android device model used to make the purchase. For subscription orders, this refers to the device used for the original purchase.

Product Title

String

No

coins, monthly subscription, etc.

Developer-specified name of the product. Displayed in the buyer's locale.

Product ID

String

No

com.example.app

Package name of the app where the product was sold.

Product Type

String

No

paidapp, subscription, inapp

SKU ID

String

No

treasure_chest_for_new_users

Developer-specified unique ID of the SKU.

Currency of Sale

String

No

USD, EUR, THB, etc.

Item Price

Integer

No

12,345.67

Shown in the buyer's local currency. With “,” as a thousands separator.

Taxes Collected

Integer

Yes

12,345.67

In the buyer's local currency. With “,” as a thousands separator.

Charged Amount

Integer

No

12,345.67

In the buyer's local currency. This is the sum of item price and taxes collected. With “,” as a thousands separator.

City of Buyer

String

Yes

Boston, Toronto, etc.

Only populated for sales where you are the merchant of record.

State of Buyer

String

Yes

MA, ON, etc.

Only populated for sales where you are the merchant of record.

Postcode of Buyer

String

Yes

02140, M5B 1L6, etc.

Only populated for sales where you are the merchant of record.

Country of Buyer

String

No

US, CA, etc.

Earnings

About

You can use the earnings report to understand your payout and transactions. Each line in the report represents a type of transaction, like when you charge a customer money or pay Google a fee, along with the original and converted amounts.

Earnings reports contain invoices raised in the prior month. You'll receive an invoice if you've met the minimum payment amount. You'll be paid for an invoice several weeks after the earnings report becomes available.

Note: Since Google is the merchant of record for products sold to users in the European Economic Area (EEA), you'll see one line per order for sales in the impacted countries (with "Charge" as the transaction type). Sales in other countries will also include a "Google fee" transaction type.

Command

gs://[developer_bucket_id]/earnings/earnings_YYYYMM.zip

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/earnings/earnings_2014* /your/local/directory

File format

Field Format Optional

Examples & notes

Description

String

No

GPA.1234-1234-1234-12345

Unique ID assigned to this order. Subscription order IDs include the renewal cycle number at the end.

Transaction Date

String

No

Nov 30, 2016

Date of this order based on the PDT time zone (in MMM DD, YYYY format).

Transaction Time 

String

No

12:00:00 PM PDT

Tax Type

String

Yes

Third-party tax

Blank for non-tax lines.

Transaction Type

String

No

Charge, Google fee, Tax, Charge refund, Google fee refund, etc.

Refund Type

String

Yes

Full, Partial

Refunds where the buyer was reimbursed their full spend will be marked as 'Full'. Refunds for part of a user’s payment amount will be marked as 'Partial'. 

Product Title

String

No

coins, monthly subscription, etc.

Developer-specified name of the product. Shown in the buyer's locale.

Product ID

String

No

com.example.app

Package name of the app where the product was sold.

Product Type

Integer

Yes

0,1

Used to identify the type of product sold. '0' represents the sale of a paid app, '1' represents the sale of an in-app product or subscription.

SKU ID

String

No

treasure_chest_for_new_users

Developer-specified unique ID of the SKU.

Hardware

String

No

mako, etc.

Android device model used to make the purchase. For subscription orders, this refers to the model used for the original purchase.

Buyer Country

String

No

US, CA, etc.

Buyer State

String

Yes

MA, ON, etc.

Only populated for sales where you are the merchant of record.

Buyer Postcode

String

Yes

02140, M5B 1L6, etc.

Only populated for sales where you are the merchant of record.

Buyer Currency

String

No

USD, EUR, THB, etc.

Amount (Buyer Currency)

Integer

No

12345.67

Total amount for this invoice line before currency conversion.

Currency Conversion Rate

Integer

No

0.56789

Exchange rate used when converting buyer amounts to payout amounts in merchant currency.

Merchant Currency String No

USD, EUR, THB, etc.

Currency to which the order was converted. This is the local currency you are paid in.

Amount (Merchant Currency) Integer No

12345.67

Total amount for this invoice line after currency conversion.

Korean Play balance funded

About

If you are a merchant that is required to issue cash receipts in South Korea under applicable rules and regulations, or if you voluntarily have registered to issue cash receipts, then you must issue cash receipts upon request by app purchasers for paid app or in-app product purchases made with Google Play Gift Cards in Korean Won (KRW).

The Korean Play balance funded report contains Play balance sales made in Korean Won, for the purpose of sending a cash receipt to the user.

Note: Users can add to Play balance from multiple sources, including promotional credit from Google or our partners. Before issuing a cash receipt, it's important to ensure that the user added to their balance using a cash equivalent (for example, a gift card).

Command

gs://[developer_bucket_id]/play_balance_krw/play_balance_krw_YYYYMM.zip

Example

If you want to download all reports generated in 2018 from the report bucket ID pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/play_balance_krw/play_balance_krw_2018* /your/local/directory

File format

Field

Format

Optional

Examples & notes

Order Number

Integer

No

GPA.1234-1234-1234-12345

Unique ID assigned to this order. Subscription order IDs include the renewal cycle number at the end.

Order Charged Date

String

No

2016-11-30

Date of this order based on the UTC time zone (in YYYY-MM-DD format).

Financial Status

String

No

Charged, Refund, etc.

Play Balance Funding Amount

String

No

12,345.67

Amount of the transaction.

Play Balance Currency

String

No

KRW

For Korean Play balance funded reports, this is always Korean Won (KRW).

Order Charged Timestamp

Integer

No

1480507200

The UNIX timestamp when the order was charged to the user. Measured in seconds since epoch.

Commands & file formats for aggregated reports

Statistics

Installs

Command

gs://[developer_bucket_id]/stats/installs/installs_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Example
Date YYYY-mm-dd NO 2014-06-19
Package Name String NO com.my.app
Device (or any other supported dimension) String YES hammerhead
Current Device Installs integer NO  
Installs on active devices integer NO  
Daily Device Installs integer NO  
Daily Device Uninstalls integer NO  
Daily Device Upgrades integer NO  
Current User Installs integer NO  
Total User Installs integer NO  
Daily User Installs integer NO  
Daily User Uninstalls integer NO  

Supported dimensions

Dimension File name
App Version Code ..._app_version.csv
Carrier ..._carrier.csv
Country ..._country.csv
Device ..._device.csv
Language ..._language.csv
Android OS Version ..._os_version.csv

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/stats/installs/installs_com.example.app_2014* /your/local/directory
Crashes

Note: As of January 2018, exports include data from the new data source and match the information on your app's Statistics page. Exports from before January 2018 are only available for data collected from the previous data source.

Command

gs://[developer_bucket_id]/stats/crashes/crashes_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Example
Date YYYY-mm-dd NO 2014-06-19
Package Name String NO com.my.app
Device (or any other supported dimension) String YES hammerhead
Daily Crashes integer NO  
Daily ANRs integer NO  

Supported dimensions

Dimension File name
App Version Code ..._app_version.csv
Device ..._device.csv
Android OS Version ..._os_version.csv

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/stats/crashes/crashes_com.example.app_2014* /your/local/directory
Ratings

Command

gs://[developer_bucket_id]/stats/ratings/ratings_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Example
Date YYYY-mm-dd NO 2014-06-19
Package Name String NO com.my.app
Device (or any other supported dimension) String YES hammerhead
Daily Average Rating %.2f YES  
Total Average Rating %.2f Yes 4.16

Supported dimensions

Dimension File name
App Version Code ..._app_version.csv
Carrier ..._carrier.csv
Country ..._country.csv
Device ..._device.csv
Language ..._language.csv
Android OS Version ..._os_version.csv

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/stats/ratings/ratings_com.example.app_2014* /your/local/directory
Firebase Cloud Messaging (FCM)

Command

gs://[developer_bucket_id]/stats/gcm/gcm_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Example
Date YYYY-mm-dd NO 2014-06-19
Package Name String NO  
Sender ID integer NO  
Device (or any other supported dimension) String YES hammerhead
FCM Messages integer NO  
FCM Registrations integer NO  

Note: If a Sender ID field displays -1 with an error code, this indicates an unknown or invalid sender ID. To help understand these messages, use the "Response code" dimension listed below.

Supported dimensions

Dimension File name
App Version Code ..._app_version.csv
Carrier ..._carrier.csv
Country ..._country.csv
Device ..._device.csv
Language ..._language.csv
Android OS Version ..._os_version.csv
FCM Message Status ..._message_status.csv
Response code ..._response_code.csv

Example

If you want to download all reports generated in 2014 from the report bucket id pubsite_prod_rev_0123456789 for your app with the package name com.example.app, the command is:

gsutil cp -r gs://pubsite_prod_rev_0123456789/stats/gcm/gcm_com.example.app_2014* /your/local/directory

Subscriptions

Command

gs://[developer_bucket_id]/financial-stats/subscriptions/subscriptions_[package_name]_[product_id]_yyyyMM_[dimension].csv

File format

Field Format Optional Example
Date YYYY-mm-dd NO 2016-03-28
Package Name String NO com.my.app
Product ID String NO monthly.subscription
Country or Device String NO Must include either country or device
New subscriptions Integer NO  
Canceled subscriptions Integer NO  
Active subscriptions Integer NO  

Note: For more information on new, canceled, and active subscription statistics, go to review your app's revenue & buyer data.

Supported dimensions

Dimension File name
Country ..._country.csv
Device ..._device.csv

 

User Acquisition

Learn more about Google Play acquisition sources and metrics.

Retained Installers

Command

gs://[developer_bucket_id]/acquisition/retained_installers/retained_installers_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Examples & Notes
Date YYYY-mm-dd NO

Date the user visited your store listing

Note: Adding unique Store Listing Visitors across several days will result in a higher number of Store Listing Visitors than what you see in weekly or monthly cohort views. Weekly and monthly cohort views count each visitor once, even if they visit multiple times.

Acquisition Channel String YES

Organic, AdWords, UTM-Tagged

Present for "Acquisition channel" dimension

Country String YES Present for "Country" and "Country (Play Store organic)" dimensions
UTM source/campaign String YES

Present for "Tracked channels (UTM)" dimension

Keyword String YES

e.g. "games"

Present for "Google Search (organic)" dimension

Store Listing Visitors Integer NO  
Installers Integer NO  
Visitor-to-Installer conversion rate Decimal NO  
Median Visitor to Installer conversion rate benchmark Decimal YES Present for "Acquisition channel" and "Country (Play Store organic)" dimensions
Installers retained for 1 day Integer NO  
Installer-to-1 day retention rate Decimal NO  
Installers retained for 7 days Integer NO  
Installer-to-7 days retention rate Decimal NO  
Installers retained for 15 days Integer NO  
Installer-to-15 days retention rate Decimal NO  
Installers retained for 30 days Integer NO  
Installer-to-30 days retention rate Decimal NO  

Supported dimensions

Dimension File name
Acquisition channel ..._channel.csv
Country ..._country.csv
Country (Play Store organic) ..._play_country.csv
Tracked channels (UTM) ..._utm_tagged.csv
Google Search (organic) ..._google.csv

 

Buyers (7 days after install)

Command

gs://[developer_bucket_id]/acquisition/buyers_7d/buyers_7d_[package_name]_yyyyMM_[dimension].csv

File format

Field Format Optional Examples & Notes
Date YYYY-mm-dd NO

Date the user visited your store listing

Note: Adding unique Store Listing Visitors across several days will result in a higher number of Store Listing Visitors than what you see in weekly or monthly cohort views. Weekly and monthly cohort views count each visitor once, even if they visit multiple times.

Acquisition Channel String YES

Organic, AdWords, UTM-Tagged

Present for "Acquisition channel" dimension

Country String YES Present for "Country" and "Country (Play Store organic)" dimensions
UTM source/campaign String YES Present for "Tracked channels (UTM)" dimension
Keyword String YES

e.g. "games"

Present for "Google Search (organic)" dimension

Store Listing Visitors Integer NO  
Installers Integer NO  
Visitor to Installer conversion rate Decimal NO  
Median Visitor to Installer conversion rate benchmark Decimal YES Present for "Acquisition channel" and "Country (Play Store organic)" dimensions
Buyers Integer NO  
Installer to Buyer conversion rate Decimal NO  
Repeat Buyers Integer NO  
Installer to Repeat Buyer conversion rate Decimal NO  
Buyer to Repeat Buyer conversion rate Integer NO  

Supported dimensions

Dimension File name
Acquisition Channel ..._channel.csv

Country

..._country.csv

Country (Play Store organic)

..._play_country.csv
Tracked channels (UTM) ..._utm_tagged.csv
Google Search (organic) ..._google.csv

 

Subscribers

Command

gs://[developer_bucket_id]/acquisition/subscribers/subscribers_[package_name]_[product_id]_yyyyMM_[dimension].csv

File format

Field Format Optional Examples & Notes
Date YYYY-mm-dd NO

Date the user visited your store listing

Note: Adding unique Store Listing Visitors across several days will result in a higher number of Store Listing Visitors than what you see in weekly or monthly cohort views. Weekly and monthly cohort views count each visitor once, even if they visit multiple times.

Product ID String NO  
Acquisition Channel String YES

Organic, AdWords, UTM-Tagged

Present for "Acquisition channel" dimension

Country String YES Present for "Country" and "Country (Play Store organic)" dimensions
UTM source/campaign String YES Present for "Tracked channels (UTM)" dimension
Keyword String YES

e.g. "games"

Present for "Google Search (organic)" dimension

Total Free Trialists

Integer NO Present when all subscribers in a cohort were offered a free trial.
Matured Free Trialists Integer NO

Present when all subscribers in a cohort were offered a free trial.

A matured free trialist has had a trial subscription long enough to be eligible for a first payment.  
Total First Payments Integer NO  
Free Trialist-to-First Payment conversion rate Decimal NO

Calculated as total first payments divided by the number of matured free trialists. A matured free trialist has had a trial subscription long enough to be eligible for a first payment.

Present when all subscribers in a cohort were offered a free trial
 
Matured First Payments Integer NO  
Total Second Payments Integer NO  
First Purchase-to-Second Payment conversion rate Decimal NO Calculated as total second payments divided by the number of matured first payments.

Supported dimensions

Dimension File name
Acquisition Channel ..._channel.csv

Country

..._country.csv

Country (Play Store organic)

..._play_country.csv
Tracked channels (UTM) ..._utm_tagged.csv
Google Search (organic) ..._google.csv

 

Was this article helpful?
How can we improve it?