Datasets API endpoint
Searches enriched public Steam catalog records stored in a search index. price_tier enum: `free`, `under5`, `5to15`, `15to30`, `30to60`, `over60`. review_tier enum: `overwhelmingly_positive`, `very_positive`, `positive`, `mostly_positive`, `mixed`, `mostly_negative`, `negative`, `very_negative`, `overwhelmingly_negative`, `insufficient`. Sort enum: `relevance`, `owners_desc`, `reviews_desc`, `review_score_desc`, `ccu_desc`, `metacritic_desc`, `price_asc`, `price_desc`, `release_desc`, `release_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).
/datasets/steam-games/searchSearches enriched public Steam catalog records stored in a search index. Each record combines storefront metadata (developer, publisher, genres, categories, price, platforms, Metacritic, release) with SteamSpy public owner estimates, review counts and peak concurrent-user figures.
Dataset id enum:
steam-gamesQuery parameters:
q: optional full-text query over name, developer and publisher, max 256 characters.type: optional exact storefront type filter (e.g. game, dlc, demo), max 128 characters.developer: optional exact developer filter, max 128 characters.publisher: optional exact publisher filter, max 128 characters.genre: optional exact genre filter (e.g. Action, Indie), max 128 characters.category: optional exact store category filter (e.g. Single-player, Multi-player), max 128 characters.tag: optional exact community-tag filter (e.g. Roguelike, Metroidvania, Cozy), max 128 characters. Tags are the crowd-sourced taxonomy added by the tag-enrichment pass; facet on tags to discover values.price_tier: optional price-tier filter. Allowed values: free, under5, 5to15, 15to30, 30to60, over60.review_tier: optional review-tier filter. Allowed values: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient.owners_bucket: optional exact SteamSpy owners-range bucket filter (e.g. 1,000,000 .. 2,000,000), max 128 characters.run_id: optional exact crawl run-id filter, max 128 characters.is_free: optional free-to-play filter.windows: optional Windows-support filter.mac: optional macOS-support filter.linux: optional Linux-support filter.on_sale: optional filter for titles currently discounted (discount_pct greater than 0).min_price_cents: optional minimum current price in cents.max_price_cents: optional maximum current price in cents.min_owners: optional minimum estimated owners (SteamSpy owners midpoint).min_positive: optional minimum positive review count.min_total_reviews: optional minimum total review count.min_review_score: optional minimum positive-review ratio, from 0 through 1.min_metacritic: optional minimum Metacritic score, from 0 through 100.min_ccu: optional minimum peak concurrent users yesterday.min_release_year: optional minimum release year.max_release_year: optional maximum release year.sort: optional sort enum: relevance, owners_desc, reviews_desc, review_score_desc, ccu_desc, metacritic_desc, price_asc, price_desc, release_desc, release_asc.page: optional page number, defaults to 1.page_size: optional page size, defaults to 20 and maxes at 100.Response behavior:
owners_min / owners_max / owners_midpoint; min_owners filters on the midpoint.review_score is the positive-review ratio (0 through 1); review_tier applies Steam's bands with a minimum-volume floor.is_free is set when the storefront marks the title free or the price is 0.relevance sort when q is supplied, otherwise owners_desc.min_price_cents must not exceed max_price_cents; min_release_year must not exceed max_release_year.10000; page * page_size must not exceed 10000.items array (not an error) when the dataset has no matches yet.1 credit per record returned, minimum 2. A search that returns 20 records costs 20 credits, a full page of 100 costs 100, and an empty or one-record result costs 2. You are charged for what comes back, not for the page_size you ask for, but your balance must cover the requested page_size for the call to be accepted. The response header x-credit-cost shows what a call was charged.
| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| appid | 20 | |
| name | 20 | |
| developer | 20 | |
| publisher | 20 | |
| type | 20 | |
| available | 20 | true in 20 of 20 |
| is_free | 20 | true in 7 of 20 |
| price_cents | 20 | 0 to 5,999, median 999 |
| initial_price_cents | 20 | 0 to 5,999, median 999 |
| discount_pct | 20 | 0 to 30, median 0 |
| price_tier | 20 | |
| owners_min | 20 | 20,000,000 to 100,000,000, median 50,000,000 |
| owners_max | 20 | 50,000,000 to 200,000,000, median 100,000,000 |
| owners_midpoint | 20 | 35,000,000 to 150,000,000, median 75,000,000 |
| owners_bucket | 20 | |
| has_owner_estimate | 20 | true in 20 of 20 |
| ccu | 20 | 5,583 to 1,013,936, median 25,122 |
| positive | 20 | 143,481 to 7,642,084, median 876,898 |
| negative | 20 | 13,811 to 1,173,003, median 58,540 |
| total_reviews | 20 | 202,021 to 8,815,087, median 994,979 |
| review_score | 20 | 0.59 to 0.98, median 0.9 |
| review_tier | 20 | |
| average_forever_min | 20 | 0 |
| median_forever_min | 20 | 0 |
| average_2weeks_min | 20 | 0 |
| median_2weeks_min | 20 | 0 |
| genres | 20 | median 3 entries |
| categories | 20 | median 17 entries |
| tags | 20 | median 20 entries |
| tag_ids | 20 | |
| primary_tag | 20 | |
| tag_schema_version | 20 | |
| tags_enriched_at | 20 | 2026-07-11 to 2026-07-12 |
| recommendations | 20 | 1,582 to 5,167,853, median 830,949 |
| required_age | 20 | 0 to 17, median 0 |
| release_date | 20 | 2006-11-29 to 2026-07-09 |
| release_year | 20 | 2,006 to 2,026, median 2,017 |
| coming_soon | 20 | true in 0 of 20 |
| platform_windows | 20 | true in 20 of 20 |
| platform_mac | 20 | true in 6 of 20 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | No | Full-text query over name, developer and publisher, max 256 characters | ||
| type | string | No | Exact storefront type filter (e.g. game, dlc, demo), max 128 characters | ||
| developer | string | No | Exact developer filter, max 128 characters | ||
| publisher | string | No | Exact publisher filter, max 128 characters | ||
| genre | string | No | Exact genre filter (e.g. Action, Indie), max 128 characters | ||
| category | string | No | Exact store category filter (e.g. Single-player), max 128 characters | ||
| tag | string | No | Exact community-tag filter (e.g. Roguelike, Metroidvania, Cozy), max 128 characters | ||
| price_tier | string | No | Price-tier enum: free, under5, 5to15, 15to30, 30to60, over60 Allowed values: free, under5, 5to15, 15to30, 30to60, over60. | ||
| review_tier | string | No | Review-tier enum: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient Allowed values: overwhelmingly_positive, very_positive, positive, mostly_positive, mixed, mostly_negative, negative, very_negative, overwhelmingly_negative, insufficient. | ||
| owners_bucket | string | No | Exact SteamSpy owners-range bucket filter, max 128 characters | ||
| run_id | string | No | Exact crawl run-id filter, max 128 characters | ||
| is_free | boolean | No | Filter by free-to-play flag | ||
| windows | boolean | No | Filter by Windows support | ||
| mac | boolean | No | Filter by macOS support | ||
| linux | boolean | No | Filter by Linux support | ||
| on_sale | boolean | No | Filter by titles currently discounted (discount_pct > 0) | ||
| min_price_cents | integer | No | Minimum current price in cents | ||
| max_price_cents | integer | No | Maximum current price in cents | ||
| min_owners | integer | No | Minimum estimated owners (SteamSpy owners midpoint) | ||
| min_positive | integer | No | Minimum positive review count | ||
| min_total_reviews | integer | No | Minimum total review count | ||
| min_review_score | number | No | Minimum positive-review ratio, 0 through 1 | ||
| min_metacritic | integer | No | Minimum Metacritic score, 0 through 100 | ||
| min_ccu | integer | No | Minimum peak concurrent users yesterday | ||
| min_release_year | integer | No | Minimum release year | ||
| max_release_year | integer | No | Maximum release year | ||
| sort | string | No | Sort enum: relevance, owners_desc, reviews_desc, review_score_desc, ccu_desc, metacritic_desc, price_asc, price_desc, release_desc, release_asc Allowed values: relevance, owners_desc, reviews_desc, review_score_desc, ccu_desc, metacritic_desc, price_asc, price_desc, release_desc, release_asc. | ||
| page | integer | No | 1 | Page number, defaults to 1 | |
| page_size | integer | No | 20 and maxes at 100 | Page size, defaults to 20 and maxes at 100; page * page_size must be <= 10000 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/steam-games/search?q=coffee&price_tier=free&review_tier=overwhelmingly_positive&is_free=true&windows=true&mac=true&linux=true&on_sale=true&sort=relevance&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"dataset": "steam-games",
"items": [
{
"appid": 570,
"name": "Dota 2",
"developer": "Valve",
"publisher": "Valve",
"type": "game",
"is_free": true,
"price_cents": 0,
"price_tier": "free",
"owners_midpoint": 150000000,
"owners_bucket": "100,000,000 .. 200,000,000",
"ccu": 600000,
"total_reviews": 1750000,
"review_score": 0.9714,
"review_tier": "overwhelmingly_positive",
"genres": [
"Action",
"Free to Play"
],
"metacritic": 90,
"release_year": 2013,
"platform_windows": true,
"platform_mac": true,
"platform_linux": true
}
],
"page": 1,
"page_size": 20,
"total": 1,
"sort": "owners_desc"
}
}Request schema
No body schema
Response schema
#/definitions/datasets.steamGamesSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | datasets.SteamSearchResponse | No | ||||
| data.dataset | string | No | ||||
| data.items | array | No | SteamGameRecord record, 61 fields: achievements_count, appid, available, average_2weeks_min, average_forever_min, background, categories, ccu, coming_soon, content_descriptor_ids, controller_support, crawled_at and 49 more. Described under Steam games dataset item API. | |||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.sort | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/steam-games/search?q=coffee&price_tier=free&review_tier=overwhelmingly_positive&is_free=true&windows=true&mac=true&linux=true&on_sale=true&sort=relevance&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"