Skip to main content

gplaydl

Download APKs from Google Play right from your terminal. One command gets you the base APK, split APKs (App Bundles), OBB expansion files and Play Asset Delivery packs, and you never need a Google account.

  • Anonymous authentication through a token dispenser
  • Base APK, splits, OBB files and asset packs downloaded together by default
  • 23 device profiles, rotated automatically so authentication keeps working
  • Pure-Python protobuf decoding, no gpapi dependency
  • Live progress bars, plus search, info and list-splits for browsing

Help build the community pool

gplaydl has always borrowed anonymous tokens from Aurora Store's dispenser. That works, but it is not fair to lean on someone else's service forever, so gplaydl now runs its own dispenser (source). It is stocked entirely with accounts that people have shared.

If you have a throwaway Google account to spare, you can help. It takes about two minutes:

  1. Install the gplaydl Authenticator app on any Android device (source).
  2. Sign in with a spare Google account. Please do not use your personal one.
  3. Choose "Share with community".

Your password and 2FA codes never leave your phone. The app uploads only the resulting Play token and the account's email address. If you change your mind, you can make an account private again or delete it from the app at any time.

Once the pool is big enough to depend on, gplaydl will use it by default and stop calling Aurora's. Until then Aurora stays the default and ours is opt-in:

gplaydl auth -d https://dispenser.gplaydl.com/api/auth
gplaydl download com.whatsapp -d https://dispenser.gplaydl.com/api/auth

Pass -d on whichever command you run, so token refreshes keep using the pool too. Any dispenser that speaks the same API works, including one you host yourself. Every account shared brings the switch closer.

gplaydl mentions this once a week after a download. If you would rather it did not, set GPLAYDL_NO_BANNER=1.

Installation

Requires Python 3.9 or newer.

pip install gplaydl

Or from source:

git clone https://github.com/rehmatworks/gplaydl.git && cd gplaydl
pip install .                             # or skip this and run it in place:
python -m gplaydl download com.whatsapp

Quick start

gplaydl auth                    # get an anonymous token
gplaydl download com.whatsapp   # base APK + splits + OBB/asset packs

Commands

Every command takes -d/--dispenser to pick a dispenser and --arch for the device architecture.

auth

Gets an anonymous token and caches it.

gplaydl auth                              # default (arm64)
gplaydl auth --arch armv7                 # older 32-bit devices
gplaydl auth --clear                      # forget all cached tokens

Tokens live in ~/.config/gplaydl/auth-{arch}.json. The other commands reuse them and refresh them automatically before they expire.

download

Fetches the base APK, every split APK, and any extra files unless you opt out.

gplaydl download com.whatsapp                # everything
gplaydl download com.whatsapp -o ./apks      # custom output directory
gplaydl download com.whatsapp -a armv7       # ARMv7 build
gplaydl download com.whatsapp -v 231205015   # specific version code
gplaydl download com.whatsapp --no-splits    # skip split APKs
gplaydl download com.whatsapp --no-extras    # skip OBB / asset packs
Type Naming Example
Base APK {package}-{vc}.apk com.whatsapp-231205015.apk
Split APK {package}-{vc}-{split}.apk com.whatsapp-231205015-config.arm64_v8a.apk
OBB (main/patch) {type}.{vc}.{package}.obb main.20925.com.tencent.ig.obb
Asset pack {package}-{vc}-asset.apk com.tencent.ig-20925-asset.apk

Install a split build on a device with adb install-multiple *.apk.

info, search and list-splits

gplaydl info com.whatsapp                 # version, developer, rating, downloads
gplaydl search "file manager" --limit 5   # find apps by name
gplaydl list-splits com.whatsapp          # see splits without downloading

Architecture support

Flag ABI Devices
arm64 (default) arm64-v8a Modern phones (2017+)
armv7 armeabi-v7a Older 32-bit phones

How it works

  1. Authenticate. The dispenser hands back an anonymous Play token, trying device profiles in turn until one is accepted.
  2. Look up. App metadata (version, size, split list) comes from Google Play's protobuf API.
  3. Purchase. Free apps are "purchased" to authorise the download.
  4. Download. Base APK, splits, OBB files and asset packs stream in parallel from Google's CDN.

License

MIT. See LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gplaydl-2.1.6.tar.gz (56.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gplaydl-2.1.6-py3-none-any.whl (111.4 kB view details)

Uploaded Python 3

File details

Details for the file gplaydl-2.1.6.tar.gz.

File metadata

  • Download URL: gplaydl-2.1.6.tar.gz
  • Upload date:
  • Size: 56.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for gplaydl-2.1.6.tar.gz
Algorithm Hash digest
SHA256 dd446e80e5814e575a2ee8b2772df8a130849865124b7ab4d953c34f84cba3d7
MD5 25bd6abddee5979ab9a796b284f6454a
BLAKE2b-256 01e12a060b9a9d5f0bfc1655d68016df643419c27deaeb8cf512b3f96a31e3f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for gplaydl-2.1.6.tar.gz:

Publisher: publish.yml on rehmatworks/gplaydl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gplaydl-2.1.6-py3-none-any.whl.

File metadata

  • Download URL: gplaydl-2.1.6-py3-none-any.whl
  • Upload date:
  • Size: 111.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for gplaydl-2.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 a59c51f3b5c9287b5577d6531cef4ff6006cb52a35efcd6012f418ce492c8efa
MD5 1fcb8577011301743fd9be1522b27131
BLAKE2b-256 982b9f0afd5952dac89f4b27546af852bef5f361762b7ce073bb75cf83f5b8dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for gplaydl-2.1.6-py3-none-any.whl:

Publisher: publish.yml on rehmatworks/gplaydl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

4.2.1

2 files

4.2.0

2 files

4.1.0

2 files

4.0.2

2 files

4.0.1

2 files

4.0.0

2 files

3.0.1

2 files

3.0.0

2 files

2.1.7

2 files

This release

2.1.6 This release

2 files

2.1.5

2 files

2.1.4

2 files

2.1.3

2 files

2.1.2

2 files

2.1.0

2 files

1.3.5

1 file

1.3.4

2 files

1.3.3

2 files

1.3.2

2 files

1.3.1

2 files

1.3.0

2 files

1.2.0

1 file

1.0.3

2 files

1.0.2

1 file

1.0.1

1 file

1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page