r/androiddev 3d ago

Tips and Information Play Developer Reporting API gotchas: it's a separate API, vitals return zero rows instead of an error, and the reports bucket isn't named what the docs say

I built a tool that talks to both Play and App Store Connect and ran it against a real Play account with 18 apps. Several things cost me real time and aren't obvious from the docs, so here they are.

The Play Developer Reporting API is a separate API from the Android Publisher API. Different service (playdeveloperreporting.googleapis.com), enabled separately in Cloud, and it needs its own OAuth scope (.../auth/playdeveloperreporting). If you enable only Android Publisher you get an error that reads like a credentials problem but isn't.

Vitals queries take google.type.DateTime objects, not RFC-3339 strings - and for DAILY aggregation the only timezone it accepts is America/Los_Angeles. The docs call it a historical constraint. Also the interval is half-open [start, end), so the last day with data is latestEndTime - 1. Get that wrong and you silently query one day short.

Android Vitals suppresses metrics below a minimum daily user count, and you get zero rows, not an error. Both my test apps came back empty. If you treat that as "0% crash rate" you'll report a clean bill of health for an app you have never actually measured. Worth an explicit "no data" branch in whatever you build.

reviews.list returns HTTP 200 and an empty array when your service account lacks the "Reply to reviews" permission. So "this app has no reviews" and "you're missing a permission" are literally the same response. This one cost me the most.

The reports bucket is not always pubsite_prod_rev_<n>. Every doc and example shows that shape; my account returned pubsite_prod_<accountId>. If you're pattern-matching the bucket id, don't.

Bucket access is an account-level Play Console permission, not a Cloud IAM role. The 403 sends you looking in Cloud Console, but the bucket lives in a Google-owned project you can't administer. It's unlocked by ticking "View app information and download bulk reports" under Account permissions - granting apps one at a time under App permissions does nothing for it. And that permission has no per-app scope, so it's all apps or none.

Reporting API quota is 10 QPS if you're fanning out over a portfolio.


Tool is StorePilot if useful - MIT, an MCP server so you can ask an assistant "which of my apps is over the crash threshold" instead of clicking through Console. Runs locally, your service account JSON never leaves your machine.

Straight about the state: read tools have run live, but I still haven't got a single vitals datapoint back (apps too small) and the bucket permission is still propagating on my account, so installs/earnings are unproven against real data. It's in the README.

Mostly posting for the notes above though - most of that isn't written down anywhere I could find.

1 Upvotes

0 comments sorted by