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
gpapidependency), and automatic token management. Looking for v1.x? See themasterbranch.
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
- Authentication — Gets an anonymous token from Aurora Store's dispenser, rotating through device profiles for reliability
- Details — Fetches app metadata (version, size, splits) via Google Play's protobuf API
- Purchase — "Purchases" the free app to get download authorization
- Delivery — Gets download URLs for the base APK, split APKs, OBB files, and asset packs
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c0975c8c6b3776987d7a83918fbc011816c3087a4712d498384912a43f68c5c
|
|
| MD5 |
c00ec64a17931f77bfb19f274b96b499
|
|
| BLAKE2b-256 |
94041e3544d114935862602333d66200b7dffc00aa500ae5bdde6096c0ad4d31
|
Provenance
The following attestation bundles were made for gplaydl-2.1.5.tar.gz:
Publisher:
publish.yml on rehmatworks/gplaydl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gplaydl-2.1.5.tar.gz -
Subject digest:
9c0975c8c6b3776987d7a83918fbc011816c3087a4712d498384912a43f68c5c - Sigstore transparency entry: 1198421978
- Sigstore integration time:
-
Permalink:
rehmatworks/gplaydl@46d0b1fce9b70dabde02053340e27d162e88f334 -
Branch / Tag:
refs/tags/v2.1.5 - Owner: https://github.com/rehmatworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@46d0b1fce9b70dabde02053340e27d162e88f334 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69046186519c31e7246498ed69957b405fa18a7dfac998e4ff3a704b80d646e8
|
|
| MD5 |
38337767f95622d68886b4f664552ad7
|
|
| BLAKE2b-256 |
36b41e330c2ec98b1336b5051a26dd3c3466d749ea5e72aab95233456ec85410
|
Provenance
The following attestation bundles were made for gplaydl-2.1.5-py3-none-any.whl:
Publisher:
publish.yml on rehmatworks/gplaydl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gplaydl-2.1.5-py3-none-any.whl -
Subject digest:
69046186519c31e7246498ed69957b405fa18a7dfac998e4ff3a704b80d646e8 - Sigstore transparency entry: 1198422054
- Sigstore integration time:
-
Permalink:
rehmatworks/gplaydl@46d0b1fce9b70dabde02053340e27d162e88f334 -
Branch / Tag:
refs/tags/v2.1.5 - Owner: https://github.com/rehmatworks
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@46d0b1fce9b70dabde02053340e27d162e88f334 -
Trigger Event:
push
-
Statement type: