Steam API endpoint
Browses the store by the community-tag taxonomy (Roguelike, Metroidvania, Cozy...) and the store filter facets, with no free-text term. Filter by one or more tag ids, a store category id, platform (os), a maximum price, specials-only, and hide-free-to-play; sort and page the browse-rank rows. Each row includes its community tag ids (resolve names via /steam/tags/list). Pagination runs the full result set (total is the real, fully-pageable match count); paging past total returns an empty page.
/steam/tagsBrowses the Steam store by the community-tag taxonomy (Roguelike, Metroidvania, Cozy...) and the store filter facets, with no free-text term. It works like /steam/search/results but filters by tag ids, store category, platform, and price instead of a query. Each result row also carries the app's community tag ids.
Query parameters:
tags (optional, comma-separated tag ids) — all listed community tags must match (e.g. 492,4136). Resolve names to ids with /steam/tags/list. At least one filter is required (see note below).untags (optional, comma-separated tag ids) — exclude titles carrying any of these community tags (e.g. 4136).category1 (optional, numeric) — a Steam store category id (e.g. 998 games, 21 dlc).category2, category3 (optional, numeric) — additional store category (feature) ids to also require.os (optional) — platform filter, a comma-separated subset of win, mac, linux.maxprice (optional) — maximum price as a whole number of cents in the cc currency, or the literal free.specials (optional, bool, default false) — only discounted titles.hidef2p (optional, bool, default false) — hide free-to-play titles.deck_compatibility (optional) — Steam Deck compatibility filter: 1 unsupported, 2 playable, 3 verified.vrsupport (optional, comma-separated ids) — VR-support filter (e.g. 401 seated, 402 standing, 403 roomscale).filter (optional) — a curated preset applied within the other facets. Allowed values: globaltopsellers, topsellers, popularnew, comingsoon.supportedlang (optional) — only titles supporting this Steam language name (e.g. english).At least one of tags, category1/category2/category3, filter, deck_compatibility or vrsupport must be supplied.
sort_by (optional, default Relevance) — sort order. Allowed values: Relevance, Released_DESC, Name_ASC, Price_ASC, Price_DESC, Reviews_DESC.start (optional, int, default 0) — result offset for pagination.count (optional, int, default 25) — results per page (max 100).cc (optional, default us) — store country code (ISO); selects the price currency.l (optional, default en) — language code.Returns total, start, count, results[] (each: appid, name, url, release_date, review_summary, price, discount_pct, tag_ids (the app's community tag ids), platforms), and source_url.
Pagination: total is the real, fully-pageable match count for the filter — Steam paginates the whole set (there is no separate ~10,000-result browse ceiling on this path). Paging past the last result (start >= total) returns an empty results list; a positive total with zero parsed rows on an in-range page is treated as an upstream error (503), not an empty result. Note total shrinks under sort_by=Reviews_DESC, which restricts to titles that have enough reviews to rank.
| Field | Filled in, of 25 checked | Values in the sample |
|---|---|---|
| appid | 25 | |
| name | 25 | “Risk of Rain 2” and 24 other values |
| url | 25 | store.steampowered.com |
| release_date | 25 | “Aug 11, 2020” and 21 other values |
| review_summary | 25 | Overwhelmingly Positive (14), Very Positive (10), Mostly Positive (1) |
| price | 25 | “$8.24” and 15 other values |
| discount_pct | 9 | “-67%” and 6 other values |
| tag_ids | 25 | |
| platforms | 25 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| tags | string | No | Comma-separated numeric community tag ids (all must match); resolve ids via /steam/tags/list | 492,4136 | |
| untags | string | No | Comma-separated numeric community tag ids to EXCLUDE | 4136 | |
| category1 | string | No | Numeric Steam store category id (e.g. 998 games, 21 dlc) | 998 | |
| category2 | string | No | Additional numeric store category id (feature) | 29 | |
| category3 | string | No | Additional numeric store category id (feature) | 3 | |
| os | string | No | Comma-separated platform filter subset of: win, mac, linux | win,linux | |
| maxprice | string | No | Maximum price as whole cents in the cc currency, or the literal 'free' | 2000 | |
| specials | boolean | No | Only discounted titles | ||
| hidef2p | boolean | No | Hide free-to-play titles | ||
| deck_compatibility | string | No | Steam Deck compatibility filter: 1 unsupported, 2 playable, 3 verified Allowed values: 1, 2, 3. | ||
| vrsupport | string | No | Comma-separated VR-support filter ids (e.g. 401 seated, 402 standing, 403 roomscale) | 401 | |
| filter | string | No | Curated preset applied within the other facets Allowed values: globaltopsellers, topsellers, popularnew, comingsoon. | ||
| supportedlang | string | No | Only titles supporting this Steam language name | english | |
| sort_by | string | No | Sort order Allowed values: Relevance, Released_DESC, Name_ASC, Price_ASC, Price_DESC, Reviews_DESC. | ||
| start | integer | No | Result offset for pagination | ||
| count | integer | No | Results per page (max 100) | ||
| cc | string | No | Store country code (ISO, selects currency) | ||
| l | string | No | Language code | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/steam/tags?specials=true&hidef2p=true&deck_compatibility=1&filter=globaltopsellers&sort_by=Relevance&count=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total": 43065,
"start": 0,
"count": 1,
"results": [
{
"appid": "1794680",
"name": "Vampire Survivors",
"url": "https://store.steampowered.com/app/1794680/Vampire_Survivors",
"release_date": "20 Oct, 2022",
"review_summary": "Overwhelmingly Positive",
"price": "$4.99",
"tag_ids": [
492,
1774,
3964,
4136,
4085
],
"platforms": {
"windows": true,
"mac": true,
"linux": true
}
}
],
"source_url": "https://store.steampowered.com/search/results/?query=&infinite=1&start=0&count=25&sort_by=Reviews_DESC&tags=492&cc=us&l=en"
}
}Request schema
No body schema
Response schema
#/definitions/steam.searchResultsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | steam.SearchResultsResponse | No | ||||
| data.count | integer | No | Number of rows returned. | |||
| data.results | array | No | Rows of the store search results on this page. SearchResultRow record, 14 fields: appid, bundleid, discount_pct, name, packageid, platforms, price, release_date, review_summary, tag_ids, url. Described under Steam Faceted Store Search API. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.start | integer | No | Offset of the first row returned. | |||
| data.term | string | No | Search term that was used. | |||
| data.total | integer | No | Total number of matches Steam reports for the term. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/steam/tags?specials=true&hidef2p=true&deck_compatibility=1&filter=globaltopsellers&sort_by=Relevance&count=10" \
-H "x-api-key: $CRAWLORA_API_KEY"