SteamDB APIsteamdb.info ↗
Access SteamDB data via API: trending games, most played, top rated, current sales, free promotions, and full game details including price history.
What is the SteamDB API?
The SteamDB API exposes 7 endpoints covering trending games, current sales, free promotions, player counts, and per-game details from SteamDB.info. Use get_game_details to pull price history across currencies and third-party owner estimations for any Steam app ID, or use get_free_promotions to list active and upcoming free-to-keep titles with start and end times.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/9d2dd578-17d8-42f1-9cf5-171bd44847cb/get_free_promotions' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace steamdb-info-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: SteamDB SDK — discover trending games, check sales, and drill into details."""
from parse_apis.steamdb_api import SteamDB, GameNotFound
client = SteamDB()
# Browse currently trending games on Steam
for game in client.trendinggames.list(limit=5):
print(game.name, game.value)
# Check the most played games right now
top_played = client.mostplayedgames.list(limit=1).first()
if top_played:
print(top_played.name, top_played.current_players, top_played.peak_24h)
# Search for a game and get its full details
result = client.games.search(query="portal", limit=1).first()
if result:
detail = result.details()
print(detail.name, detail.app_id)
for price in detail.price_history_summary[:3]:
print(price.currency, price.current_price, price.lowest_recorded)
# List current sales — find discounted games
for sale in client.sales.list(limit=3):
print(sale.name, sale.discount, sale.price)
# Typed error handling: search then try to drill into details
try:
maybe = client.games.search(query="xyznonexist999", limit=1).first()
if maybe:
detail = maybe.details()
print(detail.name)
except GameNotFound as exc:
print(f"Game not found: {exc.appid}")
# Check free promotions available right now
for promo in client.promotions.list(limit=3):
print(promo.name, promo.promotion_type, promo.status)
print("exercised: trendinggames.list / mostplayedgames.list / games.search / details / sales.list / promotions.list")
Retrieve currently active and upcoming free game promotions on Steam. Active promotions include full details (image, store link, time range). Upcoming promotions include estimated dates only. Returns a flat list mixing both statuses.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of promotion objects with name, app_id, image_url, store_link, promotion_type, start_time, end_time, status"
},
"sample": {
"data": {
"items": [
{
"name": "Marathon",
"app_id": "3065800",
"status": "active",
"end_time": "2026-06-11T17:00:00+00:00",
"image_url": "https://shared.fastly.steamstatic.com/store_item_assets/steam/apps/3065800/header.jpg",
"start_time": "2026-06-02T19:00:00+00:00",
"store_link": "https://store.steampowered.com/app/3065800/",
"promotion_type": "Play For Free"
},
{
"name": "Overcome Your Fears - Caretaker",
"app_id": null,
"status": "upcoming",
"end_time": null,
"image_url": null,
"start_time": "Jun 2026",
"store_link": null,
"promotion_type": "Upcoming"
}
]
},
"status": "success"
}
}About the SteamDB API
What the API Covers
The SteamDB API surfaces data from SteamDB.info across seven endpoints. Discovery endpoints — get_trending_games, get_most_played_games, and get_top_rated_games — return ranked lists with fields like current_players, peak_24h, all_time_peak, rating_percentage, and reviews_count. The get_current_sales endpoint returns active discounts with discount (e.g. -25%), price, rating, and ends date per game. All list endpoints include app_id, which you can pass downstream to get_game_details.
Game Details and Price History
get_game_details accepts a single appid parameter (e.g. 730 for Counter-Strike 2, 570 for Dota 2) and returns price_history_summary — an array of objects with currency, current_price, and lowest_recorded — plus owner_estimations from multiple third-party providers. This makes it useful for tracking historical pricing across regions or estimating install base from independent sources.
Promotions and Search
get_free_promotions returns both active and upcoming promotions, including start_time, end_time, promotion_type (e.g. Free to Keep), and a direct store_link. The search_games endpoint accepts a query string and returns matching titles with their app_id and type, useful for resolving a game name to its Steam application ID before calling get_game_details.
The SteamDB API is a managed, monitored endpoint for steamdb.info — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when steamdb.info changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official steamdb.info API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor free-to-keep Steam promotions and alert users before the
end_timeexpires - Build a Steam sale tracker that surfaces discounts above a threshold using the
discountfield fromget_current_sales - Compare current and lowest-ever prices across currencies using
price_history_summaryfromget_game_details - Display a live 'most played' leaderboard using
current_playersandpeak_24hfromget_most_played_games - Estimate Steam game ownership across providers using the
owner_estimationsarray inget_game_details - Resolve game titles to Steam app IDs programmatically using
search_gamesbefore fetching full details - Track trending title momentum by polling
get_trending_gamesfollower counts over time
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does SteamDB have an official developer API?+
What does `get_game_details` return that the other endpoints don't?+
get_game_details is the only endpoint that returns price_history_summary — lowest recorded and current prices per currency — and owner_estimations from named third-party providers. The other endpoints return current snapshot data (rankings, player counts, discount percentages) but no historical pricing or ownership figures.Does `get_free_promotions` distinguish between games that are permanently free and time-limited promotions?+
promotion_type field indicates the nature of each promotion (e.g. Free to Keep, Upcoming), and the status field is either active or upcoming. Active promotions include an end_time in ISO datetime format; upcoming ones include a start_time which may be a rough date string rather than a precise timestamp.Does the API cover DLC, software, or non-game Steam apps?+
search_games does return a type field that can surface non-game app types, and get_game_details works for any valid appid. Dedicated endpoints for DLC-only catalogs, Steam software titles, or bundles are not currently included. You can fork this API on Parse and revise it to add endpoints targeting those app categories.