Export your full Steam game library to a CSV file with rich metadata from four APIs.
Project description
Steam Library Exporter
Export your full Steam game library to a CSV file with rich metadata from four APIs.
Why?
Steam shows you your library — it doesn't let you query it. This tool pulls playtime, genres, prices, reviews, Metacritic scores, community tags, and estimated ownership data into a single flat CSV you can open in Excel, pandas, Google Sheets, Tableau, or any BI tool.
Features
| Feature | Description |
|---|---|
| 24 metadata columns | appid, name, playtime, genres, developers, publishers, release date, Metacritic score, prices, review counts, SteamSpy tags, and more |
| Four API sources | Steam Web API, Steam Store API, Steam Reviews API, SteamSpy |
| Sorted output | Games ordered by your playtime (most played first) |
| Optional SteamSpy | Skip with --no-steamspy to cut export time by ~25% |
| Partial export | Use --limit N to test with a small batch before running the full library |
| Custom output path | Override the default steam_library.csv filename with --output |
| Cross-platform | Runs on Windows, macOS, and Linux wherever Python 3.10+ is installed |
Quick Start
1. Install
git clone https://github.com/davidmalko87/steam-library-exporter.git
cd steam-library-exporter
pip install -r requirements.txt
2. Configure
You need two things:
| Item | How to get it |
|---|---|
| Steam Web API key | steamcommunity.com/dev/apikey (free) |
| Steam64 ID | steamid.io — 17-digit number |
Set both Profile and Game details to Public in Steam → Settings → Privacy.
3. Run
# Quick test — top 5 games by playtime
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID --limit 5
# Full library export
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID
# Faster — skip SteamSpy data
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID --no-steamspy
# Custom output filename
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID --output my_games.csv
Configuration Reference
| Flag | Required | Default | Description |
|---|---|---|---|
--key KEY |
Yes | — | Steam Web API key |
--steamid STEAMID |
Yes | — | Steam64 ID (17-digit number) |
--output OUTPUT |
No | steam_library.csv |
Output CSV file path |
--no-steamspy |
No | off | Skip SteamSpy API calls (faster export) |
--limit N |
No | 0 (all) |
Export only the top N games by playtime |
Output Columns
appid, name, playtime_hours, playtime_2weeks_hours, type, developers, publishers, genres, categories, release_date, metacritic_score, price_current, price_initial, is_free, short_description, header_image, total_positive, total_negative, review_score_desc, total_reviews, estimated_owners, avg_playtime_global, median_playtime_global, steamspy_tags
Sample rows
appid,name,playtime_hours,metacritic_score,genres,price_current,review_score_desc,estimated_owners
570,Dota 2,1842.3,90,Action;Free to Play,0.0,Overwhelmingly Positive,100000000-200000000
730,Counter-Strike 2,634.1,83,Action,0.0,Very Positive,50000000-100000000
1091500,Cyberpunk 2077,112.7,86,Action;RPG,29.99,Very Positive,10000000-20000000
Project Structure
steam-library-exporter/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.yml
│ │ └── feature_request.yml
│ ├── workflows/
│ │ └── ci.yml
│ └── PULL_REQUEST_TEMPLATE.md
├── steam_export.py # CLI entry point and all logic
├── requirements.txt # Python dependencies
├── CHANGELOG.md # Version history
├── CONTRIBUTING.md # Development and versioning guide
├── LICENSE # MIT
└── README.md
Known Limitations
- Rate limits: Steam Store API requires ~1.5 s between requests. A 200-game library takes roughly 13 minutes.
- Private profiles: The tool cannot read libraries set to Private in Steam Privacy Settings.
- Free-to-play games: Some F2P titles may lack price data in the Store API response.
- SteamSpy accuracy: Estimated ownership ranges are approximate (SteamSpy infers data, Steam does not publish it).
- No incremental export: The script always fetches and writes the full library from scratch.
Security
Never commit your API key. The
.gitignoreexcludes common credential files (.env,*.key), but always verify before pushing.
Your Steam Web API key is read-only and scoped to public data, but treat it like any credential.
License
MIT © 2026 David Malko
Links
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 steam_library_exporter-1.0.0.tar.gz.
File metadata
- Download URL: steam_library_exporter-1.0.0.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd8b3ddbe661716e1fb470408c99ec333e593ded87f797e6d5fb6ae23e2ec257
|
|
| MD5 |
f3f26b20266b78224425201689d15981
|
|
| BLAKE2b-256 |
0eb6c3ca30b15e77771105d009578ad4e2d19c3b1e2ef15304a1ac89245f8fdb
|
File details
Details for the file steam_library_exporter-1.0.0-py3-none-any.whl.
File metadata
- Download URL: steam_library_exporter-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9838066760c2ae7c15e9b04741d08cb06cb3dd819825e9fc62394d367a07d3b
|
|
| MD5 |
efb5f38db0f054e69bf42480127c2029
|
|
| BLAKE2b-256 |
b37c94dd06d52f57964afa54f96064157f9ef7e5f050ac88476a67459f746d7a
|