Google Play Store
Source App Stores

Google Play Store

Installs, ratings and Android vitals for every app, in one place that keeps its own history.

Google Play splits its data across Console report exports, a native BigQuery transfer and the Play Developer Reporting API — and no single route carries everything. Insightlytics ingests them together: installs, uninstalls, updates, ratings, financial reports and Android vitals, reconciled into data models where every metric has one named definition. You get the tables and the full report archive as history; we run the transfer, the bucket reads, the API pulls and the monitoring. Everything is written to a database you own — BigQuery today, with more warehouses on the roadmap.

What we ingest

Play’s routes complement each other rather than compete, and each one carries reports the others do not. We land the raw reports first and model on top.

  • Statistics reports Play transfer

    Installs, uninstalls and active devices by day, with the dimensional breakdowns Play publishes — country, device and Android version.

  • Reviews and financial reports Play transfer

    Ratings and review text, plus the earnings and sales reports, landed on the same schedule as the statistics.

  • Reporting bucket CSVs Direct read

    The same archive at source, including the open month that keeps growing and changing in place — which is why it is re-read rather than loaded once.

  • Android vitals API only

    Crash and ANR rates come from the Play Developer Reporting API and nowhere else. If stability reporting matters to you, this route is not optional.

Most setups need more than one of these. Which combination fits is covered further down, in how we work with Google Play data.

The problems we solve

Play’s data is complete only in pieces — split across exports, screens and APIs that each define metrics their own way. These are the problems every Android team hits, and the ones this pipeline is built around.

Why isn’t Google Play data in one place?

Because Google splits it: statistics, reviews and financial reports live in Console exports and the native transfer; Android vitals — crash rate and ANR rate — exist only in the Play Developer Reporting API; and the reporting bucket’s CSVs have their own mechanics, with the open month growing in place. No single route carries everything.

A complete Play dataset is an assembly job by design. We run the routes together and reconcile them into one set of data models, so on your side it’s one database, not three sources.

Why do install numbers differ between Play Console screens?

Because the screens use different definitions — devices versus users, different windows, different filters — and the CSV exports use their own. None of them is wrong; they’re answering different questions with the same word.

The data models end the ambiguity by carrying one named definition per column, documented where every analyst can read it.

Why are the last few days of Play data always incomplete?

Play’s reporting lag means recent daily rows keep filling in for days. Dashboards drawn straight from the exports show a permanent dip at the right edge, and every stakeholder asks about it once a month.

The pipeline re-reads trailing days until they stop changing, and the data models mark the still-filling range — so the dip is labelled instead of alarming.

Why don’t the country files sum to the overview?

Because the dimensional CSVs are independent views, not partitions of one table — timing differences and per-file definitions mean country rows won’t reliably sum to the overview number. Treating files as addends is the classic Play data mistake.

The pipeline reconciles the views into consistent data models at documented grain, so a country split and a total can appear in the same chart without contradicting each other.

How do you join Android crashes to releases?

Android vitals arrive by app version with per-metric freshness — crash and ANR series aren’t equally current — while your release history lives elsewhere. Without a version-to-release mapping, a crash spike is just a number.

With it, it’s release 4.12 on the day it hit 10% of devices. The pipeline maintains that mapping and respects each metric’s own lag, so stability questions get answered with release names.

How we work with Google Play data

Play’s routes aren’t rivals — they’re complements, and most setups need more than one.

The native Play transfer lands statistics, reviews, financial and acquisition reports into BigQuery on schedule, with a refresh window that re-lands recent days as Play’s late rows fill in — but Android vitals are not part of it. Direct reads of your reporting bucket reach the same CSV archive, including the open month that grows and changes in place. And the Play Developer Reporting API is the only source of crash and ANR rates on any setup. Which combination fits depends on the metrics you need — and whether stability reporting matters to you.

We settle that together on the discovery call. Access is read-only on every route — the transfer is enabled in your own project, and nothing in your Play Console changes. From there, running the pipeline is our job: re-reading the open month, reconciling the dimensional files, tracking per-metric vitals freshness.

Delivered to a database you own

Every table — raw and modeled — is written to your own database, under your billing and your access controls. Our access is read-only, and if we part ways, everything stays with you.

  • BigQuery BigQuery Your data models are built in your own BigQuery project — our access is read-only, and the tables are always yours.

BigQuery is the supported database today. If you run a different warehouse, tell us — the roadmap is driven by requests.

How current the data stays

Data models rebuild every day. Where a platform restates recent numbers after the fact, we re-read those days rather than freezing the first version we saw.

Refresh

Daily. The native transfer’s refresh window re-lands recent days; direct reads re-read the open month’s CSVs — either way, rows keep converging until Google stops restating them.

Backfill

The full report archive in your reporting bucket — typically the app’s whole exported history — loads on either route, and everything accumulates forward from there.

Monitoring

Every sync is checked for freshness, volume and schema drift. New columns in Google’s exports land as new model columns; format changes are absorbed in the pipeline before they reach your data models.

What lands in your database

Not raw API responses — data models: named, documented tables at a stated grain, rebuilt every day and ready to query. Each one has its own page.

The shipped data models are the starting point, not the ceiling. When your questions need a different shape — another grain, another split, a join against another source — we build additional models for your stack as part of the engagement.

One place for installs, ratings and vitals.

Tell us which apps and which markets matter. We’ll map which route carries each report, and where the two have to be used together.

Free discovery call · No commitment — leave with a starting point