Skip to main content

Download APKs from Google Play Store with anonymous authentication

Project description

gplaydl

Download APKs from Google Play Store using anonymous authentication. Downloads base APKs, split APKs (App Bundles), OBB expansion files, and Play Asset Delivery packs — all by default.

v2.0 — Complete Rewrite. Ground-up rewrite with a new CLI, pure-Python protobuf decoding (no gpapi dependency), and automatic token management. Looking for v1.x? See the master branch.

Features

  • Anonymous authentication via Aurora Store's token dispenser (no Google account needed)
  • 23 device profiles with automatic rotation for reliable token acquisition
  • Downloads base APK, split APKs, OBB files, and asset packs in one go
  • Streaming gzip decompression for Play Asset Delivery packs
  • Beautiful terminal UI with real-time download progress bars
  • Architecture support: ARM64 (modern phones) and ARMv7 (older phones)
  • Custom token dispenser URL support
  • Search and browse app details from the command line

Installation

Requirements: Python 3.9+

pip install gplaydl

Install from source

git clone https://github.com/rehmatworks/gplaydl.git
cd gplaydl
pip install .

Quick Start

# 1. Get an auth token (automatic, anonymous)
gplaydl auth

# 2. Download an app (base APK + splits + OBB/asset packs)
gplaydl download com.whatsapp

Commands

auth — Acquire an authentication token

gplaydl auth                          # Default (arm64)
gplaydl auth --arch armv7             # Token for older ARM devices
gplaydl auth -d https://my-server/api # Use a custom dispenser
gplaydl auth --clear                  # Remove all cached tokens

Tokens are cached at ~/.config/gplaydl/auth-{arch}.json and reused automatically by other commands.

download — Download APKs

By default, download fetches the base APK, all split APKs, and any additional files (OBB expansion files, Play Asset Delivery packs).

gplaydl download com.whatsapp                  # Everything (base + splits + extras)
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
gplaydl download com.whatsapp -d https://...    # Use custom dispenser

Output files:

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

Split APKs can be installed to a device with:

adb install-multiple *.apk

info — Show app details

gplaydl info com.whatsapp

Displays app name, version, developer, rating, download count, and Play Store URL.

search — Search for apps

gplaydl search "whatsapp"
gplaydl search "file manager" --limit 5

list-splits — List available split APKs

gplaydl list-splits com.whatsapp

Shows all split APK names (config splits, language splits, etc.) without downloading.

Running without installing

python -m gplaydl auth
python -m gplaydl download com.whatsapp

How It Works

  1. Authentication — Gets an anonymous token from Aurora Store's dispenser, rotating through device profiles for reliability
  2. Details — Fetches app metadata (version, size, splits) via Google Play's protobuf API
  3. Purchase — "Purchases" the free app to get download authorization
  4. Delivery — Gets download URLs for the base APK, split APKs, OBB files, and asset packs
  5. Download — Streams all files in parallel from Google Play CDN with progress tracking

Token Dispenser

The tool uses Aurora Store's public token dispenser by default (https://auroraoss.com/api/auth). This service provides anonymous Google Play authentication tokens — no personal Google account required.

You can point to a custom/self-hosted dispenser with the --dispenser / -d flag on any command:

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

Device Profiles

The tool includes 23 device profiles from Aurora Store, used to authenticate with Google Play's token dispenser. Profiles are rotated automatically during token acquisition to maximize compatibility.

Profiles are stored as .properties files in the gplaydl/profiles/ directory.

Architecture Support

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

License

MIT — see LICENSE for details.

Project details


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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for gplaydl-2.1.5.tar.gz
Algorithm Hash digest
SHA256 9c0975c8c6b3776987d7a83918fbc011816c3087a4712d498384912a43f68c5c
MD5 c00ec64a17931f77bfb19f274b96b499
BLAKE2b-256 94041e3544d114935862602333d66200b7dffc00aa500ae5bdde6096c0ad4d31

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for gplaydl-2.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 69046186519c31e7246498ed69957b405fa18a7dfac998e4ff3a704b80d646e8
MD5 38337767f95622d68886b4f664552ad7
BLAKE2b-256 36b41e330c2ec98b1336b5051a26dd3c3466d749ea5e72aab95233456ec85410

See more details on using hashes here.

Provenance

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

Supported by

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