Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


npm Build Status GitHub Issues GitHub Pull Requests semantic-release

Publish APKs to Google Play directly from the terminal

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

A fork of playup.

πŸ“ Table of Contents

🏁 Getting Started

Getting started with apkup is pretty easy and straight forward.

Install the apkup package globally or locally:

npm i -g apkup
apkup --help

# or if you just want to use the CLI locally
npx apkup --help

# or install the library into your project
npm i -D apkup


Then use the CLI:

apkup \
  --key api.json \
  --apk /path/to/Package.apk \
  --deobfuscation /path/to/mapping.txt \ # optional
  --release-notes "en-US=lorem ipsum dolor" \
  --obbs /path/to/Expansion.obb \  # optional
  --obbs /path/to/Expansion2.obb   # optional

You can also specify each parameter via environment variables prefixed with APKUP_ (e.g. APKUP_KEY or APKUP_APK).


Or use the JavaScript library!

// typescript / modulejs
import { Apkup } = from 'apkup';
// or commonjs
const { Apkup } = require('apkup');

const apkup = new Apkup({
  client_email: '',
  private_key: ''

  .upload('/path/to/apk', {
    obbs: [
      // optional expansion files (max 2)
    releaseNotes: [
        language: 'en-US',
        text: 'Minor bug fixes...'
  .then(data => {
    console.log(` > ${data.packageName} version ${data.versionCode} is up!`);

πŸ”’ Authentication

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.

The created Service Account needs the following role:

  • Release manager

🎈 Usage

See the full docs here.

✍️ Authors

See also the list of contributors who participated in this project.

πŸŽ‰ Acknowledgements

  • The original project, playup!
  • Hat tip to anyone whose code was used