Introduction to Metric Sets

The Google Play Developer Reporting API lets you access metrics, reports, and timeline information about your apps. To make API usage as simple as possible, metric sets standardize metric access. A metric set is a logical grouping of related metrics that share common attributes (such as freshness and granularity) and can be queried together. A metric set also contains a number of dimensions that you can use to filter or produce breakdowns. Unless otherwise specified, all metrics can be broken down or filtered by all available dimensions.

Freshness

Each metric set resource offers a standard GET method to retrieve the date and time of the latest available datapoint, known as freshness. Since a metric set can support multiple granularities (daily, hourly), the operation returns one freshness value per supported granularity.

You can use the freshness value directly as the endpoint in a query time range.

Data queries

To access the data in a metric set, you should use the custom QUERY method to issue queries. Each query has to specify a granularity and a time range. Together with the metrics you wish to access, you should specify the dimensions that should be used to break down the aggregations.

Care should be taken when requesting timelines to request date ranges, so that the size of the time range is inversely proportional to the size of your app and the number of breakdowns. For example, a large app should select fewer days in a single query request to avoid query timeouts caused by reading too much data.

Available metric sets

The index below lists all the endpoints and associated data you can request.

Metric set Description Supported metrics
vitals.anrrate Contains ANRs data combined with usage data to produce a normalized metric independent of user counts. anrRate (google.type.Decimal): Percentage of distinct users in the aggregation period that experienced at least one ANR.
anrRate7dUserWeighted (google.type.Decimal): The user-weighted average of the anrRate metric in the 7 days up to and including the date.
anrRate28dUserWeighted (google.type.Decimal): The user-weighted average of the anrRate metric in the 28 days up to and including the date.
userPerceivedAnrRate (google.type.Decimal): Percentage of distinct users in the aggregation period that experienced at least one user-perceived ANR. Currently ony ANRs of 'Input dispatching' are counted.
userPerceivedAnrRate7dUserWeighted (google.type.Decimal): The user-weighted average of the userPerceivedAnrRate metric in the 7 days up to and including the date.
userPerceivedAnrRate28dUserWeighted (google.type.Decimal): The user-weighted average of the userPerceivedAnrRate metric in the 28 days up to and including the date.
distinctUsers (google.type.Decimal): The approximate number of users for which data was available on the aggregation period.
vitals.crashrate Contains crash data combined with usage data to produce a normalized metric independent of user counts. crashRate (google.type.Decimal): Percentage of distinct users in the aggregation period that experienced at least one crash.
crashRate7dUserWeighted (google.type.Decimal): The user-weighted average of the crashRate metric in the 7 days up to and including the date.
crashRate28dUserWeighted (google.type.Decimal): The user-weighted average of the crashRate metric in the 28 days up to and including the date.
userPerceivedCrashRate (google.type.Decimal): Percentage of distinct users in the aggregation period that experienced at least one crash while the app was in active use.
userPerceivedCrashRate7dUserWeighted (google.type.Decimal): The user-weighted average of the userPerceivedCrashRate metric in the 7 days up to and including the date.
userPerceivedCrashRate28dUserWeighted (google.type.Decimal): The user-weighted average of the userPerceivedCrashRate metric in the 28 days up to and including the date.
distinctUsers (google.type.Decimal): The approximate number of users for which data was available on the aggregation period.
vitals.excessivewakeuprate Contains AlarmManager wakeup counts data combined with process state data to produce a normalized metric independent of user counts. excessiveWakeupRate (google.type.Decimal): Percentage of distinct users in the aggregation period that had more than 10 wakeups per hour. excessiveWakeupRate7dUserWeighted (google.type.Decimal): The user-weighted average of the excessiveWakeupRate metric in the 7 days up to and including the date.
excessiveWakeupRate28dUserWeighted (google.type.Decimal): The user-weighted average of the excessiveWakeupRate metric in the 28 days up to and including the date.
distinctUsers (google.type.Decimal): The approximate number of users for which data was available on the aggregation period.
vitals.stuckbackgroundwakelockrate Contains PowerManager wakelock duration data combined with process state data to produce a normalized metric independent of user counts. stuckBgWakelockRate (google.type.Decimal): Percentage of distinct users in the aggregation period that had a wakelock held in the background for longer than 1 hour. stuckBgWakelockRate7dUserWeighted (google.type.Decimal): The user-weighted average of the stuckBgWakelockRate metric in the 7 days up to and including the date.
stuckBgWakelockRate28dUserWeighted (google.type.Decimal): The user-weighted average of the stuckBgWakelockRate metric in the 28 days up to and including the date.
distinctUsers (google.type.Decimal): The approximate number of users for which data was available on the aggregation period.
vitals.slowstartuprate Contains slow app startup data broken down by type of app start (cold, warm, hot). slowStartRate (google.type.Decimal): Percentage of distinct users in the aggregation period that had a slow start event. slowStartRate7dUserWeighted (google.type.Decimal): The user-weighted average of the slowStartRate metric in the 7 days up to and including the date.
slowStartRate28dUserWeighted (google.type.Decimal): The user-weighted average of the slowStartRate metric in the 28 days up to and including the date.
distinctUsers (google.type.Decimal): The approximate number of users for which data was available on the aggregation period.
vitals.errors.counts Contains unnormalized error report counts. Please note: this resource is for now only available in the v1 alpha version of the API.
errorReportCount (google.type.Decimal): Absolute count of individual error reports that have been received for an app.

Dimensions

Each metric set supports a distinct set of dimensions for filtering and breakdowns. Take a look at the dimension index below for a list of dimensions available in the API.

Dimension Description
versionCode The version code of the app that was running on the user's device at the time data was captured. The string value of this dimension can be parsed as an integer. See here for additional details about how app versioning works on Android.
countryCode Identifier of the user's country or region based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US for the United States).

Device Dimensions

These are the dimensions specific to the device and its software and hardware characteristics.

Dimension Description
apiLevel The API level of Android that was running on the user's device at the time data was captured. The string value of this dimension can be parsed as an integer. See here for the list of Android releases and how they map to API levels.
deviceModel Identifier of a particular device model, as defined by the Play Console device catalog.
deviceType Identifier of a particular device form factor, as used by the Play Console device catalog.
deviceRamBucket RAM of the device, in MB, in buckets (3GB, 4GB, etc.).
deviceSocMake The make of the device's primary system-on-chip, e.g., Samsung. See here.
deviceSocModel The model name of the device's primary system-on-chip, e.g., "Exynos 2100". See here.
deviceCpuMake Make of the device's CPU, e.g., Qualcomm.
deviceCpuModel Model of the device's CPU, e.g., "Kryo 240".
deviceGpuMake Make of the device's GPU, e.g., ARM.
deviceGpuModel Model of the device's GPU, e.g., Mali.
deviceGpuVersion Version of the device's GPU, e.g., T750.
deviceVulkanVersion Vulkan version of the device, e.g., "4198400".
deviceGlEsVersion OpenGL ES version of the device, e.g., "196610".
deviceScreenSize Screen size of the device, e.g., NORMAL, LARGE.
deviceScreenDpi Screen density of the device, e.g., mdpi, hdpi.