node package manager


playup Build Status Coverage Status npm js-standard-style

Upload APKs to Google Play

This package offers a streamlined way to publish packages in the Google Play Store


npm install -g playup


Use the CLI

playup \
  --auth api.json \
  --recent-changes "en-US='lorem ipsum dolor'" \
  /path/to/Package.apk \
  /path/to/Expansion.obb \  # optional
  /path/to/Expansion2.obb   # optional

or the JavaScript API

var publisher = require('playup')({
  client_email: '',
  private_key: '',
publisher.upload('/path/to/apk', {
  obbs: [  // optional expansion files (max 2) 
  recentChanges: {
    'en-US': 'lorem ipsum dolor'
}).then(function (data) {
  console.log(' > %s version %d is up!', data.packageName, data.versionCode)


First you have to create a Google Play API Access. To do that go to the Google Play Developer Console and then with the account owner go to Settings -> API access and create a Google Play Android Developer project.

After that follow the instructions to create a Service Account. When you click Create Client ID, choose Service Account. You will get a JSON file with a public key and the service email.

gulp support

The upload method returns a Promise so this package can be used in conjunction with gulp with no extra plugins needed

gulp.task(upload, function () {
  return publisher.upload(apk, params)


playup --auth auth --recent-changes "recent changes" APK [[OBB], OBB]

#### auth

Required Type: File

a JSON file with the Authentication information

#### recent-changes Required Type: string

A string with the format lang=changes where lang is the language code and changes the string that specifies the changes of this

#### track Type: string

Specify track for this release. Can be alpha, beta, production or rollout. Default: alpha

#### APK

The path to the APK

#### OBB

The path to 1 or more expansion files


Playup = require('playup')

Playup is a constructor that can be called with or without new

publisher = new Playup(auth)

The instance of Playup has the auth option


Required Type: object

The object with Authentication information. This object will have the following keys

  • client_email
  • private_key

publisher.upload(apk[, params[, callback]])

Upload specified APK. If no callback is specified, returns a Promise


Required Type: string

The path to the APK to upload


Optional Type: object

The params object will add aditional information to this release. Currently, it can have these keys


Type: string Default: 'alpha'

Specify track for this release. Can be alpha, beta, production or rollout.


Type: object Default: {}

An object that specifies changes in this version. Has the language code as key and the changes as value.


Type: Array Default: []

An array that specifies the paths to the expansion files (OBBs) for this release


A function to be called when the process finishes. It receives two params:


The error if the upload was not succesful


An object with the following properties

  • packageName
  • versionCode