Datasets API endpoint
Returns one Steam game from the `steam-games` dataset by numeric appid: name, developers and publishers, genres and categories, price and discount, supported platforms, positive and negative review counts, owner estimates, average and median playtime, concurrent players, Metacritic score and language count. It reads the stored dataset and does not trigger a live scrape; an appid that is not in the dataset returns `404`.
/datasets/steam-games/items/{appid}Returns one enriched Steam catalog record by appid.
Dataset id enum:
steam-gamesPath parameters:
appid: required numeric Steam app id (the document _id).Response behavior:
404 when the appid is not present in the stored dataset.appid is empty or non-numeric.| Field | In the sample | Value in the sample |
|---|---|---|
| appid | Has a value | |
| name | Has a value | |
| developer | Has a value | |
| publisher | Has a value | |
| type | Has a value | |
| available | Has a value | true |
| is_free | Has a value | true |
| price_cents | Has a value | 0 |
| initial_price_cents | Has a value | 0 |
| discount_pct | Has a value | 0 |
| price_tier | Has a value | |
| owners_min | Has a value | 100,000,000 |
| owners_max | Has a value | 200,000,000 |
| owners_midpoint | Has a value | 150,000,000 |
| owners_bucket | Has a value | |
| has_owner_estimate | Has a value | true |
| ccu | Has a value | 1,013,936 |
| positive | Has a value | 7,642,084 |
| negative | Has a value | 1,173,003 |
| total_reviews | Has a value | 8,815,087 |
| review_score | Has a value | 0.87 |
| review_tier | Has a value | |
| average_forever_min | Has a value | 0 |
| median_forever_min | Has a value | 0 |
| average_2weeks_min | Has a value | 0 |
| median_2weeks_min | Has a value | 0 |
| genres | Has a value | 2 entries |
| categories | Has a value | 18 entries |
| tags | Has a value | 20 entries |
| tag_ids | Has a value | |
| primary_tag | Has a value | |
| tag_schema_version | Has a value | |
| tags_enriched_at | Has a value | 2026-07-11 |
| recommendations | Has a value | 5,167,853 |
| required_age | Has a value | 0 |
| release_date | Has a value | 2012-08-21 |
| release_year | Has a value | 2,012 |
| coming_soon | Has a value | false |
| platform_windows | Has a value | true |
| platform_mac | Has a value | false |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| appid (path) | integer | Yes | Steam app id | 620 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/steam-games/items/620" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"appid": 620,
"name": "Portal 2",
"developer": "Valve",
"publisher": "Valve",
"type": "game",
"is_free": false,
"price_cents": 999,
"initial_price_cents": 1999,
"discount_pct": 50,
"price_tier": "5to15",
"owners_min": 10000000,
"owners_max": 20000000,
"owners_midpoint": 15000000,
"owners_bucket": "10,000,000 .. 20,000,000",
"ccu": 12000,
"positive": 100,
"negative": 10,
"total_reviews": 110,
"review_score": 0.9091,
"review_tier": "very_positive",
"genres": [
"Action",
"Adventure"
],
"categories": [
"Single-player",
"Co-op"
],
"metacritic": 95,
"release_date": "2011-04-19",
"release_year": 2011,
"platform_windows": true,
"platform_mac": true,
"platform_linux": true,
"language_count": 22,
"schema_version": 1
}
}Request schema
No body schema
Response schema
#/definitions/datasets.steamGameResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | es.SteamGameRecord | No | ||||
| data.achievements_count | integer | No | Number of achievements the game has on Steam. | |||
| data.appid | integer | No | Steam application ID of the game. | |||
| data.available | boolean | No | Available is false when the storefront returned no appdetails on the most recent crawl (delisted, region-locked, or a fetch miss). The record is kept regardless. | |||
| data.average_2weeks_min | integer | No | Average playtime per owner over the last two weeks, in minutes. | |||
| data.average_forever_min | integer | No | Average total playtime per owner, in minutes. | |||
| data.background | string | No | URL of the background image on the game's store page. | |||
| data.categories | array | No | Store categories the game is listed under, such as `Single-player`. | |||
| data.ccu | integer | No | Peak number of concurrent players on the previous day. | |||
| data.coming_soon | boolean | No | Whether the game is not yet released. | |||
| data.content_descriptor_ids | array | No | Steam content descriptor IDs that flag mature content on the game. | |||
| data.controller_support | string | No | Level of controller support Steam lists for the game. | |||
| data.crawled_at | string | No | Time the record was last collected, in UTC (RFC 3339). | |||
| data.developer | string | No | Main developer of the game. | |||
| data.developers | array | No | All developers credited on the store page. | |||
| data.discount_pct | integer | No | Current discount as a percentage, 0 when not on sale. | |||
| data.dlc_count | integer | No | Number of DLC items listed for the game. | |||
| data.genres | array | No | Genres the game is listed under, such as `Action` or `Indie`. | |||
| data.has_owner_estimate | boolean | No | HasOwnerEstimate is false for the floor bucket ("0 .. 20,000") / no SteamSpy estimate — i.e. the deep tail past the owner-differentiated head. Callers must not treat floor-bucket owners as a real count. | |||
| data.header_image | string | No | URL of the header image on the game's store page. | |||
| data.initial_price_cents | integer | No | Price before any discount, in cents. | |||
| data.is_free | boolean | No | Whether the game is free to play or has a price of 0. | |||
| data.language_count | integer | No | Number of languages the game supports. | |||
| data.languages | array | No | Languages the game supports. | |||
| data.median_2weeks_min | integer | No | Median playtime per owner over the last two weeks, in minutes. | |||
| data.median_forever_min | integer | No | Median total playtime per owner, in minutes. | |||
| data.metacritic | integer | No | Metacritic score of the game, from 0 to 100. | |||
| data.movie_count | integer | No | Number of trailers and videos on the store page. | |||
| data.name | string | No | Game title as shown on Steam. | |||
| data.negative | integer | No | Number of negative user reviews. | |||
| data.owners_bucket | string | No | Estimated range of owners as a text label, such as `1,000,000 .. 2,000,000`. | |||
| data.owners_max | integer | No | Upper end of the estimated owner range. | |||
| data.owners_midpoint | integer | No | Middle of the estimated owner range. | |||
| data.owners_min | integer | No | Lower end of the estimated owner range. | |||
| data.package_count | integer | No | Number of store packages the game is sold in. | |||
| data.platform_linux | boolean | No | Whether the game supports Linux. | |||
| data.platform_mac | boolean | No | Whether the game supports macOS. | |||
| data.platform_windows | boolean | No | Whether the game supports Windows. | |||
| data.positive | integer | No | Number of positive user reviews. | |||
| data.price_cents | integer | No | Current price, in cents. | |||
| data.price_tier | string | No | Price band: `free`, `under5`, `5to15`, `15to30`, `30to60` or `over60`. | |||
| data.primary_tag | string | No | Most heavily weighted community tag of the game. | |||
| data.publisher | string | No | Main publisher of the game. | |||
| data.publishers | array | No | All publishers credited on the store page. | |||
| data.recommendations | integer | No | Number of user recommendations Steam reports for the game. | |||
| data.release_date | string | No | Release date in YYYY-MM-DD format. Empty when Steam gives only a year or quarter. | |||
| data.release_year | integer | No | Year the game was or will be released. | |||
| data.required_age | integer | No | Minimum age set on the store page. | |||
| data.review_score | number | No | Share of reviews that are positive, from 0 to 1. | |||
| data.review_tier | string | No | Review band such as `very_positive`, `mixed` or `insufficient`, following Steam's rating labels. | |||
| data.run_id | string | No | Identifier of the collection run that produced this record. | |||
| data.schema_version | integer | No | Version of the record format. | |||
| data.screenshot_count | integer | No | Number of screenshots on the store page. | |||
| data.seed_rank | integer | No | Popularity rank when the game was collected, where 0 is the most popular. Games outside the popularity list carry values of 1,000,000 or more. | |||
| data.short_description | string | No | v3 richer-record fields (expanded appFilters). Descriptions/creators/media counts/languages/content flags from the full storefront appdetails set. | |||
| data.tag_ids | array | No | Steam IDs of the community tags, in the same order as the tags. | |||
| data.tag_schema_version | integer | No | Version of the community-tag data on this record. | |||
| data.tags | array | No | Tags is the weighted community-tag taxonomy (Roguelike/Metroidvania/Cozy...), ordered most-weighted first — the crowd tags appdetails genres omit. Populated by a separate tag-enrichment pass, not the main crawl. TagIDs is the parallel raw id list; PrimaryTag is Tags[0]. | |||
| data.tags_enriched_at | string | No | Time the community tags were last added to this record. | |||
| data.total_reviews | integer | No | Total number of user reviews, positive plus negative. | |||
| data.type | string | No | Store item type, such as `game`, `dlc` or `demo`. | |||
| data.website | string | No | URL of the game's own website. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/items/620" \
-H "x-api-key: $CRAWLORA_API_KEY"