> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appeeky.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Play Console API Reference

> Full endpoint reference for owned-app Google Play reviews, vitals, releases, listings, monetization products, and report exports

Google Play Console endpoints are for **apps you own**. They complement the public Google Play ASO endpoints (`platform=google`) that work for any public app.

For setup and usage guides, start with [Google Play Connect Overview](/docs/google-play-connect).

## Authentication

Google Play Console uses a **Google Cloud service account JSON key**, not a
regular browser/API key.

1. In Google Cloud Console, create or choose a project.
2. Enable **Google Play Android Developer API** and **Google Play Developer Reporting API**.
3. Go to **IAM & Admin -> Service Accounts**, create a service account, then create a **JSON** key.
4. In Play Console, open **Users and permissions**, invite the service account email, and grant the app/global permissions needed for reviews, vitals, report exports, products, releases, and store listing metadata.

Connect once:

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl -X POST "https://api.appeeky.com/v1/connect/google-play/credentials" \
  -H "X-API-Key: YOUR_APEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceAccountJson": { "...": "..." },
    "defaultPackageName": "com.example.app",
    "reportsBucket": "pubsite_prod_rev_0123456789"
  }'
```

Or pass credentials per request:

| Header                      | Description                     |
| --------------------------- | ------------------------------- |
| `X-GP-Service-Account-Json` | Full service account JSON       |
| `X-GP-Client-Email`         | Service account `client_email`  |
| `X-GP-Private-Key`          | Service account private key PEM |
| `X-GP-Private-Key-B64`      | Base64 private key alternative  |
| `X-GP-Project-Id`           | Optional project ID             |
| `X-GP-Client-Id`            | Optional client ID              |

The service account must be invited in Play Console with the permissions needed for the data you want to read or mutate.

## Owned App Data

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /v1/connect/google-play/apps
GET /v1/connect/google-play/apps/:packageName/reviews
GET /v1/connect/google-play/apps/:packageName/reviews/:reviewId
POST /v1/connect/google-play/apps/:packageName/reviews/:reviewId/reply
GET /v1/connect/google-play/apps/:packageName/vitals/crashRate
POST /v1/connect/google-play/apps/:packageName/vitals/crashRate/query
GET /v1/connect/google-play/apps/:packageName/anomalies
```

Review replies use Google's official `reviews.reply` endpoint and must be 350
characters or fewer.

Supported vitals metric sets:

`anrRate`, `crashRate`, `errorCount`, `excessiveWakeupRate`, `lmkRate`, `slowRenderingRate`, `slowStartRate`, `stuckBackgroundWakelockRate`.

## Publishing Metadata

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /v1/connect/google-play/apps/:packageName/tracks
GET /v1/connect/google-play/apps/:packageName/tracks/:track/releases
PATCH /v1/connect/google-play/apps/:packageName/tracks/:track?validateOnly=true

GET /v1/connect/google-play/apps/:packageName/listings
GET /v1/connect/google-play/apps/:packageName/listings/:language
PATCH /v1/connect/google-play/apps/:packageName/listings/:language?validateOnly=true
```

Listing patches accept `title`, `shortDescription`, `fullDescription`, and `video`. Track patches accept Google Play Track schema fields, usually `releases`.

## Monetization

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /v1/connect/google-play/apps/:packageName/subscriptions
GET /v1/connect/google-play/apps/:packageName/one-time-products
```

## Report Exports

Google Play sales, earnings, reviews, statistics, acquisition/search-term, and store listing conversion exports live in a private Google Cloud Storage bucket whose name usually starts with `pubsite_prod_`.

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /v1/connect/google-play/reports/objects?prefix=stats/store_performance/
GET /v1/connect/google-play/reports/object?objectName=stats/store_performance/store_performance_com.example.app_202601_country.csv
GET /v1/connect/google-play/reports/download?objectName=sales/salesreport_202601.zip
```

Use `reportsBucket` in saved credentials, or pass `bucket=pubsite_prod_...` on each report request.

Reports are captured daily, published into monthly CSV files, and can lag Play
Console by several days. The service account must be added in Play Console with
account-level access to download bulk reports; otherwise GCS object listing will
return `storage.objects.list` permission errors.

## Store Analytics

Import monthly statistics CSVs from the Play Console GCS export:

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
POST /v1/connect/google-play/analytics/import-report
POST /v1/connect/google-play/analytics/import-reports
POST /v1/connect/google-play/apps/:packageName/analytics/vitals-sync
```

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "objectName": "stats/store_performance/store_performance_com.example.app_202601_traffic_source.csv"
}
```

Supported import prefixes:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
stats/installs/
stats/crashes/
stats/ratings/
stats/store_performance/
```

After import, read Apple-analytics-style rollups:

```http theme={"theme":{"light":"github-light","dark":"github-dark"}}
GET /v1/connect/google-play/analytics?from=2026-01-01&to=2026-01-31
GET /v1/connect/google-play/apps/:packageName/analytics?from=2026-01-01&to=2026-01-31
GET /v1/connect/google-play/apps/:packageName/analytics/sources?from=2026-01-01&to=2026-01-31
GET /v1/connect/google-play/apps/:packageName/analytics/search-terms?from=2026-01-01&to=2026-01-31
```

The analytics response includes installs/device acquisitions, first opens, MAU,
ratings, crash/ANR rates, `store_listing_visitors`,
`store_listing_acquisitions`, and `store_listing_conversion_rate`. Search-term
rows are populated from the `traffic_source` store performance report when
Google includes the `Search term` column. Dashboard reads should use these
synced analytics endpoints; GCS imports run as background sync jobs.
