Skip to main content

Steam Library Exporter

CI Version Python License Platform Last Commit Open Issues

Export your full Steam game library to CSV or JSON 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
Interactive mode Run without arguments for a guided step-by-step setup — no flags to memorize
24 metadata columns appid, name, playtime, genres, developers, publishers, release date, Metacritic score, prices, review counts, SteamSpy tags, and more
CSV & JSON export --format csv (default) or --format json for structured data
Four API sources Steam Web API, Steam Store API, Steam Reviews API, SteamSpy
Sort options --sort playtime|name|metacritic|reviews
Filter unplayed --min-playtime N to skip games under N hours
Environment variables Set STEAM_API_KEY and STEAM_ID once — never retype credentials
Progress with ETA Shows elapsed time and estimated time remaining per game
Export summary Prints total playtime, played/unplayed counts, top genres, and avg Metacritic
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 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

# Interactive mode — guided step-by-step (no flags needed)
python steam_export.py

# 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

# Use environment variables (set once, run without --key / --steamid)
export STEAM_API_KEY=YOUR_API_KEY
export STEAM_ID=YOUR_STEAM64_ID
python steam_export.py

# Export to JSON
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID --format json

# Sort by name, skip unplayed games
python steam_export.py --key YOUR_API_KEY --steamid YOUR_STEAM64_ID --sort name --min-playtime 1

# 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.<format> Output file path
--format FORMAT No csv Export format: csv or json
--sort FIELD No playtime Sort by: playtime, name, metacritic, or reviews
--min-playtime N No 0 (all) Minimum playtime in hours to include a game
--no-steamspy No off Skip SteamSpy API calls (faster export)
--limit N No 0 (all) Export only the top N games by playtime
--version No — Print version and exit

* Not required if the corresponding environment variable is set.

Environment Variables

Variable Replaces
STEAM_API_KEY --key
STEAM_ID --steamid

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 .gitignore excludes 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

Metadata

Release files for steam-library-exporter 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for steam-library-exporter 1.1.0
File Size Uploaded
steam_library_exporter-1.1.0.tar.gz 13.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for steam-library-exporter 1.1.0
File Interpreter ABI Platform
steam_library_exporter-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.3 kB

Release files / steam_library_exporter-1.1.0.tar.gz

Download URL steam_library_exporter-1.1.0.tar.gz
Size 13.1 kB
Tags Source
SHA-256 checksum
How to use checksums
22eb995f81e8bafb44059a59c7f1319f36672345c26c6b906a967efd7a0e67a0
BLAKE2b-256 checksum
How to use checksums
1b92b4e8c0906f32492e0c18832065f095b58cc00b971b0a729b425fe58334cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release files / steam_library_exporter-1.1.0-py3-none-any.whl

Download URL steam_library_exporter-1.1.0-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
927731af87cdcbc06ab99d9f1639dfd5437f0195a88309c908ee9b934ad26fc5
BLAKE2b-256 checksum
How to use checksums
308c25ec8bd38c0a2ecc7d005dfd2cf1ab72c30ed2f78f8bff47a76d865cfb90
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page