Documentation menu
Filtering
All filters live on GET /games, as query parameters. This page
explains how they work together; the reference lists every single one.
The basic rules
- Filters stack. Every filter you add narrows the results further.
- Lists are comma-separated.
genres=accion,aventura,ids=730,570. - Ranges use
min_/max_.min_price_us=5&max_price_us=20. Either end is optional. - Booleans accept
true/false(also1/0). - Typos are caught. An unknown parameter returns a
422with a suggestion:
{
"error": "Validation Error",
"message": "Some parameters are invalid",
"errors": {
"develper": ["The parameter 'develper' does not exist. Did you mean 'developer'?"]
}
}
Tags, categories and genres
These are the most powerful filters, so they have a few extra options.
| You want games that… | Use |
|---|---|
| have all of these tags | tags=Rol,Mundo abierto |
| have at least one of these tags | some_tags=Terror,Supervivencia |
| have none of these tags | exclude_tags=VR |
The same three flavours exist for categories: categories, some_categories and exclude_categories.
Tag ranking
Steam orders every game's tags by how many players applied them — the first tag is the one that
defines the game most. Add :N (exact position) or :N-M (range) to a tag to only match games
where that tag ranks high:
GET /games?tags=Rol:1-3
means "Rol is one of this game's top 3 tags". That's how you tell a real RPG apart from a shooter
with some RPG elements. Ranking works in tags, some_tags and exclude_tags.
Groups of tags
some_tags can also match whole groups. Wrap each group in parentheses:
GET /games?some_tags=(Rol:1-3,Buena trama),(Acción:1-2)
means "(an RPG with a good story) or (an action game)".
Names are in Spanish
Tag, category and genre names are stored as they appear in the Spanish Steam store
(Mundo abierto, Un jugador, Rol). Matching ignores case and accents, so accion finds
Acción.
Not sure of the exact name? Tags & categories lists every one of them, with how many games have it.
Prices
Prices are available for two Steam stores: Argentina (_ar) and the United States (_us).
- Price always means the current price, with any active discount applied:
min_price_us,max_price_us. - Initial price is the price before the discount:
min_initial_price_us,max_initial_price_us. - Discount is the current discount, in %:
min_discount_us=50.
Reviews
Review data comes in three time windows, so you can tell an all-time classic from a game that's having a good (or bad) moment:
| Window | Prefix | Covers |
|---|---|---|
| All time | none (or historical_) | Every review ever written |
| Last month | last_month_ | Reviews from the last month |
| Release window | release_window_ | Reviews from around the game's launch |
Each window has the same filters: min_score / max_score, min_reviews / max_reviews, and the
same for positive and negative reviews — for example last_month_min_reviews=1000 or
release_window_min_score=90.
The score is the percentage of positive reviews (0–100). Pair a minimum score with a minimum number of reviews, or you'll get games with 100% from 3 reviews:
GET /games?min_score=85&min_total_reviews=500
Picking or hiding specific games
| You want to… | Use |
|---|---|
| Get exactly these games | ids=292030,1245620 |
| Always include these games, even if they don't match the filters | include_appids=292030 |
| Never return these games (e.g. ones the user already owns) | exclude_appids=292030 |