Description
n8n-nodes-google-play
n8n community nodes for Google Play, via the Android Publisher API v3:
- Google Play — fetch and reply to reviews, and download signed universal APKs.
- Google Play Trigger — polls one or several apps for new reviews or new production releases.
Looking for the Apple App Store? See @maximiliana/n8n-nodes-app-store.
Installation
Follow the community nodes installation guide and install:
@maximiliana/n8n-nodes-google-play
Credentials
Authentication uses a Google Cloud service account. The credential signs an RS256 JWT with the service account key and exchanges it for a short-lived OAuth2 access token (https://www.googleapis.com/auth/androidpublisher scope). Tokens are refreshed automatically when they expire.
1. In Google Cloud Console, create (or reuse) a project and create a service account (no roles needed).
2. Create a JSON key for it and download the file.
3. In Google Play Console → Users and permissions, invite the service account email and grant it at least View app information and Reply to reviews on the relevant app(s). The release trigger and the APK download additionally need release read access (creating read-only edits and listing generated APKs): granting the Release manager permission group on the app covers everything.
4. Optional, for the app pickers: in Google Cloud Console → APIs & Services, also enable the Google Play Developer Reporting API (the Android Publisher API has no endpoint to list apps, so the pickers use apps.search). Without it, apps can still be set by package name through expressions.
5. In n8n, create a Google Play API credential with:
– Service Account Email: the client_email field of the JSON key.
– Private Key: the private_key field of the JSON key (escaped n and pasted formatting are handled automatically).
Operations
| Resource | Operation | Description |
| — | — | — |
| Review | Get | Retrieve a single review by ID |
| Review | Get Many | List recent reviews of an app |
| Review | Reply | Post or update the developer reply to a review (max 350 characters) |
| APK | Download Universal | Download the signed universal APK generated by Google Play for a version |
Notes from the underlying API:
Download Universal APK
Downloads the signed universal APK that Google Play generates for apps published as App Bundles with Play App Signing — the same artifact offered under App bundle explorer → Downloads in the console. Pick a specific version code or use Latest Production Release to resolve the highest version code currently rolled out on the production track. The file is emitted as a binary item (application/vnd.android.package-archive), with packageName, versionCode, fileName, fileSize and the signing key’s certificateSha256Hash in the JSON output.
Trigger
The trigger watches one or several apps (multi-select picker, or package names via expression), uses n8n polling (configure the schedule in the node’s Poll Times), and supports two events: New Review and New Production Release. Every app keeps its own polling state: a temporary failure in one app never affects the others. For both events the first poll only establishes the baseline and emits nothing (history is not replayed), and executing the trigger manually returns the current data (releases are previewed through the same Emit When filter as a real poll) so you can inspect the output shape.
New Production Release
Each poll reads the production track of every selected app (through a temporary read-only edit that is deleted afterwards, never committed) and deduplicates releases by a fingerprint (SHA-256 of the package name plus the release’s version codes), so each release fires each event at most once. Staged rollouts are handled explicitly with Emit When:
rolloutCompleted event.Each event includes release metadata:
{
"event": "rolloutStarted",
"packageName": "com.example.app",
"appName": "Example App",
"track": "production",
"releaseName": "2.1.0",
"status": "inProgress",
"versionCodes": [210],
"versionCode": 210,
"rolloutPercentage": 20,
"releaseNotes": [{ "language": "es-ES", "text": "…" }]
}
New Review
On each poll the trigger fetches, per app, the reviews newer than the previous poll and emits the ones not seen before, each tagged with its packageName and appName. Options:
#### Simplified output
{
"packageName": "com.example.app",
"reviewId": "gp:AOqpTOE…",
"authorName": "Jane",
"rating": 5,
"text": "Great app",
"lastModifiedDate": "2026-08-12T12:00:00.000Z",
"appVersionName": "2.1.0",
"device": "a54x",
"developerReplyText": "Thanks!",
"developerReplyDate": "2026-08-12T13:00:00.000Z"
}
Rate limits
The Google Play Developer API allows 200 review-read requests per hour per app. A review poll normally costs a single request per app, so even polling every minute stays within the quota — but the quota is shared by every workflow that reads reviews of the same app. A release poll costs three requests per app (create edit, read track, delete edit) against the general API quota (200,000 requests/day), which is negligible at any reasonable polling interval.
Troubleshooting
“Class could not be found. Please check if the class is named correctly.” while installing. n8n installs community packages into ~/.n8n/nodes with a shared node_modules; if another community package left an old n8n-workflow 1.x hoisted there, npm reuses it (any version satisfies the * peer range that n8n verification mandates) and older releases of this package failed to load against it. Since 0.3.0 the nodes tolerate old copies, but if you still hit loading issues, refresh the hoisted copy and retry the install:
cd ~/.n8n/nodes && npm install n8n-workflow@latest
Security notes
password-type fields) and never leave the instance: tokens are generated locally and only sent to the official Google endpoints over HTTPS.About
This package is built and maintained by Maximiliana (BUKIT APP, SL), where we use it in production for our own apps. It is offered as-is, on a best-effort basis, with no warranty or support commitment — but it’s here, it works, and we intend to keep it that way.
Issues and pull requests are welcome on GitHub. For anything else, reach out at pedro@maximiliana.es.
Google Play and the Google Play logo are trademarks of Google LLC. This project is not affiliated with, endorsed or sponsored by Google; the name and logo are used solely to identify the service the nodes integrate with.
License
MIT