Skip to main content

gplaydl

Help wanted: share a spare Google account Takes about two minutes dispenser.gplaydl.com

The pool needs accounts. gplaydl still borrows its anonymous tokens from Aurora Store, and it will keep doing that until enough people have shared a spare Google account with our own dispenser. If you have a throwaway account going unused, here is how to add it. This banner comes down when we make the switch.

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.7.tar.gz (56.9 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.7-py3-none-any.whl (111.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: gplaydl-2.1.7.tar.gz
  • Upload date:
  • Size: 56.9 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.7.tar.gz
Algorithm Hash digest
SHA256 3b09e2649aaed5860a7de9c047d3a9ac9e5e50cd4bb09fc3e39de7deafb96dc0
MD5 053dec58cc754873aa3d9ec03262c88c
BLAKE2b-256 34872e5a358d2416379d749073e1c34a858e4f8859fb27db6bc3b62af86f7593

See more details on using hashes here.

Provenance

The following attestation bundles were made for gplaydl-2.1.7.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.7-py3-none-any.whl.

File metadata

  • Download URL: gplaydl-2.1.7-py3-none-any.whl
  • Upload date:
  • Size: 111.7 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.7-py3-none-any.whl
Algorithm Hash digest
SHA256 ec3868f48c484e206025ef6aaefee3012e240710c07b8100ec06f84572a9acbb
MD5 d43fdcfc20af342b518a3405c0a988d8
BLAKE2b-256 07b66cd6888f82d81c99c1efaf9cfe85cbef8d21400caae33dac494367d138b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for gplaydl-2.1.7-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

This release

2.1.7 This release

2 files

2.1.6

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