Skip to main content
Google Play Connect uses a service account JSON key from Google Cloud. The same service account must be invited as a user in Play Console before it can access owned-app data.
Do not create or share a normal Google API key for this integration. The credential is the service account JSON file.

Required Google APIs

Enable these APIs in the Google Cloud project that will own the service account:
APIRequired for
Google Play Android Developer APIReviews, review replies, releases, listings, subscriptions, one-time products
Google Play Developer Reporting APIAndroid vitals, crash rate, ANR rate, app quality metrics
Cloud Storage APIPlay Console bulk CSV reports in the gs://pubsite_prod_... bucket
Official references:

Android Publisher API

Service account setup for Google Play Developer API.

Developer Reporting API

Android vitals and quality reporting setup.

Create the Service Account JSON

  1. Open Google Cloud Console > IAM & Admin > Service Accounts.
  2. Choose the Google Cloud project connected to Play Console, or create a new project.
  3. Create a service account.
  4. Open the service account.
  5. Go to Keys.
  6. Create a new key.
  7. Select JSON.
  8. Download the JSON file.
You do not need to grant broad IAM roles inside Google Cloud for Play Console access. The important access control happens in Play Console after the service account is invited there.
If Google Cloud asks for a project IAM role during service account creation, a minimal viewer-style role is enough for creation flow. Play Console permissions decide which app data the API can access.

Invite the Service Account in Play Console

Open Play Console > Users and permissions, then invite the service account email from the JSON file. The email looks like:
appeeky@your-project.iam.gserviceaccount.com
Grant permissions based on the features the customer wants:
FeaturePlay Console permission guidance
App listApp information read access
Bulk reportsGlobal View app information and download bulk reports
Store performance, installs, ratings, crashes reportsSame global bulk report permission
Financial reportsGlobal View financial data
Review listingReview read access
Review repliesReview reply/manage access
Android vitalsApp quality / Android vitals access
Release tracksRelease read or release management access
Release updatesRelease management access
Store listing metadataStore listing management access
Subscriptions and one-time productsMonetization product access
For analytics dashboards, start with:
Global: View app information and download bulk reports
App: Android vitals / app quality access
Add write permissions only when the customer wants Appeeky to reply to reviews or update releases/listings.

Connect Credentials

curl
curl -X POST "https://api.appeeky.com/v1/connect/google-play/credentials" \
  -H "X-API-Key: YOUR_APPEEKY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceAccountJson": {
      "type": "service_account",
      "project_id": "your-google-project",
      "private_key_id": "...",
      "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
      "client_email": "appeeky@your-project.iam.gserviceaccount.com",
      "client_id": "..."
    },
    "defaultPackageName": "com.example.app",
    "reportsBucket": "pubsite_prod_8701287375724464057"
  }'
FieldRequiredDescription
serviceAccountJsonYesFull JSON key downloaded from Google Cloud
defaultPackageNameNoDefault app package for dashboards and tools
reportsBucketNoRequired for report imports and analytics dashboards
The API verifies credentials before saving. A successful response means Google accepted the service account and the account can access at least basic Play Console app data.

Per-Request Credentials

Saved credentials are recommended. For testing, you can also pass credentials per request:
HeaderDescription
X-GP-Service-Account-JsonFull service account JSON
X-GP-Client-EmailService account client_email
X-GP-Private-KeyService account private key PEM
X-GP-Private-Key-B64Base64 private key alternative
X-GP-Project-IdOptional project ID
X-GP-Client-IdOptional client ID
Use saved credentials for production customers so background sync jobs can run without asking for headers on every request.

Check Status

curl
curl "https://api.appeeky.com/v1/connect/google-play/credentials/status" \
  -H "X-API-Key: YOUR_APPEEKY_KEY"
Example response:
{
  "data": {
    "connected": true,
    "serviceAccountEmail": "appee...@your-project.iam.gserviceaccount.com",
    "projectId": "your-google-project",
    "defaultPackageName": "com.example.app",
    "reportsBucket": "pubsite_prod_8701287375724464057",
    "analyticsSyncStatus": "pending",
    "lastSyncedAnalyticsDate": null
  }
}

Delete Credentials

curl
curl -X DELETE "https://api.appeeky.com/v1/connect/google-play/credentials" \
  -H "X-API-Key: YOUR_APPEEKY_KEY"
This removes the saved connection and deletes the encrypted credential from Appeeky.

Troubleshooting

ErrorMeaningFix
GOOGLE_PLAY_CREDENTIALS_REQUIREDMissing service account JSON or private key fieldsSend serviceAccountJson, or clientEmail + private key
Google OAuth errorThe JSON key is malformed, revoked, or from the wrong projectCreate a new JSON key and retry
App list is emptyService account is authenticated but has no Play Console app accessInvite the service account in Play Console and grant app permissions
Report listing failsBasic Play API access works, but GCS bulk report access is missingSee Report Exports
Permission changes in Play Console can take time to propagate. If setup looks correct, wait a few minutes and retry.