Steampowered APIstore.steampowered.com ↗
Access Steam store data via 4 endpoints: search products, fetch app details, read user reviews, and get featured/trending games with pricing and platform info.
What is the Steampowered API?
The Steam Store API gives developers access to 4 endpoints covering game listings, app metadata, user reviews, and featured categories from store.steampowered.com. The search_products endpoint alone exposes over a dozen filterable parameters including OS, tags, price sort order, and language, returning structured results with appid, review scores, and platform availability across Windows, Mac, and Linux.
curl -X GET 'https://api.parse.bot/scraper/f331f9c3-0690-47f8-8d77-1bae152f6251/search_products?os=win&tags=3959&term=portal&count=5&start=0&sort_by=relevance&category=games&language=english&specials=false&max_price=60' \ -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 store-steampowered-com-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: Steam Store SDK — search games, get details, read reviews, browse featured."""
from parse_apis.steam_store_api import Steam, Sort, ProductCategory, FeaturedCategory, ReviewFilter, AppNotFound
client = Steam()
# Search for discounted games sorted by price
for game in client.appsummaries.search(term="roguelike", sort_by=Sort.PRICE_ASC, category=ProductCategory.GAMES, limit=5):
print(game.title, game.price_final, game.review_score_label)
# Get detailed info for a specific app by ID
app = client.apps.get(appid="570")
print(app.name, app.is_free, app.release_date.date)
print("Genres:", [g.description for g in app.genres])
print("Platforms:", app.platforms.windows, app.platforms.mac, app.platforms.linux)
# Browse recent reviews for that app
for review in app.reviews.list(filter=ReviewFilter.RECENT, limit=3):
sentiment = "positive" if review.voted_up else "negative"
print(review.author.playtime_forever, sentiment, review.review[:60])
# Get the store front featured sections
store = client.storefronts.get(category=FeaturedCategory.TOP_SELLERS)
if store.top_sellers:
for item in store.top_sellers.items[:3]:
print(item.name, item.final_price, item.discount_percent)
# Handle not-found errors gracefully
try:
client.apps.get(appid="9999999999")
except AppNotFound as exc:
print(f"App not found: {exc.appid}")
print("exercised: appsummaries.search / apps.get / app.reviews.list / storefronts.get / AppNotFound")
Search and list Steam products with filters for category, tags, price, platform, and more. Returns paginated results with pricing, review scores, and platform availability. Offset-based: caller controls start/count for manual paging.
| Param | Type | Description |
|---|---|---|
| os | string | OS platform filter |
| tags | string | Tag IDs for genre filtering (comma-separated, e.g. '3959' for roguelike) |
| term | string | Search keyword |
| count | integer | Number of results per page (max 100) |
| start | integer | Pagination offset (number of results to skip) |
| sort_by | string | Sort order for results |
| category | string | Product type filter |
| language | string | Supported language filter |
| specials | boolean | Only show discounted products |
| max_price | string | Max price filter ('free' or numeric value in dollars) |
{
"type": "object",
"fields": {
"count": "integer number of results returned in this page",
"start": "integer pagination offset",
"results": "array of product summary objects with appid, title, url, release_date, review info, pricing, platforms, and tag_ids",
"total_count": "integer total number of matching results"
}
}About the Steampowered API
Search and Browse Products
The search_products endpoint accepts keyword terms, tag IDs, OS filters (win, mac, linux), and a category param that accepts either named types (games, dlc, software, demos, soundtracks) or raw numeric category IDs. Results are paginated via start and count (up to 100 per page), and total_count tells you how many matching records exist across all pages. Each result object includes appid, title, url, release_date, review score fields, pricing data, supported platforms, and tag_ids.
App Details and System Requirements
get_app_details takes a Steam appid and an optional country code for localized pricing. The response includes structured fields for genres, categories, developers, publishers, platforms, is_free, metacritic score and URL, and a screenshots array with both thumbnail and full-size paths. System requirements are parsed into individual fields (OS, Processor, Memory, Graphics) rather than returned as a raw HTML blob.
User Reviews
get_app_reviews uses cursor-based pagination — pass * as the cursor to start, then use the returned cursor value for subsequent pages. Filters include language, review_type (positive, negative, all), purchase_type (steam vs. non-Steam), day_range, and filter (recent, updated, all). Each review object contains the full review text, voted_up, votes_up, votes_funny, author metadata, and timestamps. The query_summary field on each response gives aggregate counts: total_positive, total_negative, total_reviews, and a review_score_desc.
Featured and Trending Games
get_featured returns products grouped into four named collections: specials (discounted), top_sellers, new_releases, and coming_soon. Each collection includes a total_count and an items array with pricing and discount data. Pass a category param to retrieve only one collection at a time, and a country code to get region-specific pricing.
The Steampowered API is a managed, monitored endpoint for store.steampowered.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when store.steampowered.com 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 store.steampowered.com 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?+
- Build a game discovery tool that filters Steam titles by tag ID, OS support, and sort order using
search_products - Track price changes and discount windows across regions by polling
get_app_detailsandget_featuredwith differentcountrycodes - Aggregate user sentiment by pulling
total_positiveandtotal_negativecounts fromget_app_reviewsquery summaries - Populate a game database with structured metadata — genres, developers, publishers, Metacritic scores — from
get_app_details - Monitor the
specialscollection fromget_featuredto alert users when specific games go on sale - Build a review explorer that paginates through all reviews for a given appid using the cursor-based
get_app_reviewsendpoint - Compare platform availability across a game catalog using the
platformsboolean fields returned byget_app_details
| 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 Steam have an official developer API?+
How does pagination work for `get_app_reviews`?+
cursor=* on the first request. Each response includes a new cursor string; pass that value in the next request to retrieve the following page. num_per_page controls how many reviews come back per call, up to a maximum of 100.Can I retrieve Steam Workshop items or community market listings?+
Is player count or achievement data available through these endpoints?+
What does the `category` param on `search_products` accept, and how does it differ from `tags`?+
category param filters by product type — accepted named values are games, dlc, software, demos, and soundtracks, or you can pass a numeric Steam category ID. The tags param is separate and accepts comma-separated tag IDs (for example, 3959 for roguelikes) that map to genre and gameplay descriptors rather than product types.