Python Steam depot downloader with single-session manifest fetching
Project description
depot-dl
Python Steam depot downloader built for single-session, many-manifest workflows. Unlike the official DepotDownloader, depot-dl logs in once and reuses the same authenticated session across every manifest request — no more getting rate-limited by Steam's login throttle when fetching historical builds.
Why depot-dl?
The official DepotDownloader is a
great tool, but each invocation performs a fresh Steam login. If you need to
fetch dozens or hundreds of historical manifests, you'll hit
RateLimitExceeded after a few dozen requests and get locked out for hours.
depot-dl's core design: one login, one session, N manifests. You can fetch hundreds of historical builds in a single run without tripping Steam's rate limiter, because only one login handshake ever happens.
Installation
pip install depot-dl
Or from source:
git clone https://github.com/bitalizer/depot-dl
cd depot-dl
pip install -e .
Quick start
Download a single manifest
depot-dl download --app 440 --depot 441 \
--manifest 3087768970110163342 --user YOUR_STEAM_LOGIN
Download many manifests in one session
# manifests.txt — one manifest ID per line
echo 3087768970110163342 > manifests.txt
echo 1619985635172051553 >> manifests.txt
depot-dl download --app 440 --depot 441 \
--manifest-file manifests.txt \
--user YOUR_STEAM_LOGIN
Only download specific files
depot-dl download --app 440 --depot 441 \
--manifest-file manifests.txt \
--file "*.cfg" \
--user YOUR_STEAM_LOGIN
Or use a filelist file (same format as DepotDownloader):
# filelist.txt
regex:.*\.cfg$
*.json
depot-dl download --app 440 --depot 441 \
--manifest-file manifests.txt \
--filelist filelist.txt \
--user YOUR_STEAM_LOGIN
Flat output with name templates
depot-dl download --app 440 --depot 441 \
--manifest-file manifests.txt \
--file "game.exe" \
--name-template "{file}_{date}_{manifest}" \
--user YOUR_STEAM_LOGIN
Template variables: {file}, {manifest}, {app}, {depot}, {date}
List files in a manifest
depot-dl list --app 440 --depot 441 --manifest 3087768970110163342 --user YOUR_STEAM_LOGIN
Get manifest info
depot-dl info --app 440 --depot 441 --manifest 3087768970110163342 --user YOUR_STEAM_LOGIN
Filelist format
depot-dl supports the same filelist format as DepotDownloader:
# comment lines start with #
game/steam.inf
regex:.*\.cfg$
*.swf
- Plain paths match exactly
regex:prefix enables regex matching- Anything with glob characters (
*,?,[) is treated as a glob - Case-insensitive matching by default
Authentication
Email/2FA code is required once per run. The session is then reused for all manifests in that run.
depot-dl login --user YOUR_STEAM_LOGIN # interactive login
depot-dl whoami # show cached user
depot-dl logout # clear cached credentials
Anonymous mode is supported for free-to-play apps:
depot-dl download --app <id> --depot <id> --manifest <id> --anonymous
Concurrency
Chunk downloads are parallelized per file via --max-chunks (default 8).
Manifests are processed sequentially within a single session.
Library usage
from depot_dl import DepotClient, DownloadRequest, FileFilter
client = DepotClient()
client.login(username="YOUR_STEAM_LOGIN")
request = DownloadRequest(
app_id=440,
depot_id=441,
manifest_id=3087768970110163342,
output_dir="./downloads",
file_filter=FileFilter.from_patterns(["*.cfg"]),
)
for progress in client.download(request):
print(f"{progress.file}: {progress.percent:.1f}%")
License
MIT — see LICENSE.
Credits
Built on top of ValvePython/steam for Steam protocol handling. Inspired by the SteamRE/DepotDownloader project.
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 depot_dl-1.0.0.tar.gz.
File metadata
- Download URL: depot_dl-1.0.0.tar.gz
- Upload date:
- Size: 15.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f00515a684e1f1837f63dd8abb4091d60ce2a609b7d3c5d81744fbd0a80cee2f
|
|
| MD5 |
7e2a715340829cf3ce00c1d3dcbf4852
|
|
| BLAKE2b-256 |
6cefdf0ff3a599ceff222033cf7a9331adf33637c9c181693b70947d946c3004
|
Provenance
The following attestation bundles were made for depot_dl-1.0.0.tar.gz:
Publisher:
release.yml on bitalizer/depot-dl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
depot_dl-1.0.0.tar.gz -
Subject digest:
f00515a684e1f1837f63dd8abb4091d60ce2a609b7d3c5d81744fbd0a80cee2f - Sigstore transparency entry: 1280514086
- Sigstore integration time:
-
Permalink:
bitalizer/depot-dl@40f4ddbaa59bd517d7a8bdbf3fee8db97c2c4819 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/bitalizer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@40f4ddbaa59bd517d7a8bdbf3fee8db97c2c4819 -
Trigger Event:
push
-
Statement type:
File details
Details for the file depot_dl-1.0.0-py3-none-any.whl.
File metadata
- Download URL: depot_dl-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2523a73954ad8183cae89e1dc2e6a8f6312149b13e65e728776b6d4568483228
|
|
| MD5 |
004711621f815a4f458beacf3d4a1f21
|
|
| BLAKE2b-256 |
1d823617cc5a90a0c88d4175e0c76b357ce5676e15557074d09f55474ae4e4f4
|
Provenance
The following attestation bundles were made for depot_dl-1.0.0-py3-none-any.whl:
Publisher:
release.yml on bitalizer/depot-dl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
depot_dl-1.0.0-py3-none-any.whl -
Subject digest:
2523a73954ad8183cae89e1dc2e6a8f6312149b13e65e728776b6d4568483228 - Sigstore transparency entry: 1280514095
- Sigstore integration time:
-
Permalink:
bitalizer/depot-dl@40f4ddbaa59bd517d7a8bdbf3fee8db97c2c4819 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/bitalizer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@40f4ddbaa59bd517d7a8bdbf3fee8db97c2c4819 -
Trigger Event:
push
-
Statement type: