Steam API endpoint
Returns third-party ownership, concurrent-user, playtime, and review estimates for an app from SteamSpy. These are SteamSpy estimates, not official Steam figures.
/steam/steamspyQuery parameters:
appid (required) — numeric Steam app id (e.g. 570).Returns appid, name, developer, publisher, owners (an estimated range), ccu, average_forever, average_2weeks, median_forever, median_2weeks, positive, negative, userscore, price, initialprice, discount, languages, genre, tags (a {tag: votes} map), source (steamspy), and source_url. An app SteamSpy has no data for returns 404.
| Field | In the sample | Value in the sample |
|---|---|---|
| appid | Has a value | |
| name | Has a value | “Dota 2” |
| developer | Has a value | “Valve” |
| publisher | Has a value | “Valve” |
| owners | Has a value | “100,000,000 .. 200,000,000” |
| ccu | Has a value | 623,941 |
| average_forever | Has a value | 0 |
| average_2weeks | Has a value | 0 |
| median_forever | Has a value | 0 |
| median_2weeks | Has a value | 0 |
| positive | Has a value | 2,037,143 |
| negative | Has a value | 461,826 |
| userscore | Has a value | 0 |
| price | Has a value | 0 |
| initialprice | Has a value | 0 |
| discount | Has a value | 0 |
| languages | Has a value | 322 characters |
| genre | Has a value | “Action, Strategy, Free To Play” |
| tags | Has a value | |
| source | Has a value | “steamspy” |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| appid | string | Yes | Numeric Steam app id | 570 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/steam/steamspy?appid=570" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"appid": 570,
"name": "Dota 2",
"developer": "Valve",
"publisher": "Valve",
"owners": "100,000,000 .. 200,000,000",
"ccu": 612345,
"average_forever": 25000,
"positive": 1600000,
"negative": 300000,
"price": "0",
"genre": "Action, Free to Play, Strategy",
"tags": {
"Free to Play": 9000,
"MOBA": 8000
},
"source": "steamspy",
"source_url": "https://steamspy.com/api.php?request=appdetails&appid=570"
}
}Request schema
No body schema
Response schema
#/definitions/steam.steamspyResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | steam.SteamSpyResponse | No | ||||
| data.appid | integer | No | Steam app id. | |||
| data.average_2weeks | integer | No | Average playtime over the last two weeks, in minutes, as SteamSpy estimates it. | |||
| data.average_forever | integer | No | Average total playtime, in minutes, as SteamSpy estimates it. | |||
| data.ccu | integer | No | Concurrent users, as SteamSpy estimates it. | |||
| data.developer | string | No | Name of the developer, as SteamSpy lists it. | |||
| data.discount | string | No | Current discount, as SteamSpy reports it. | |||
| data.genre | string | No | Genres of the app, as a comma-separated list such as `Action, Free to Play, Strategy`. | |||
| data.initialprice | string | No | Price before any discount, as SteamSpy reports it. | |||
| data.languages | string | No | Languages the app supports, as SteamSpy lists them. | |||
| data.median_2weeks | integer | No | Median playtime over the last two weeks, in minutes, as SteamSpy estimates it. | |||
| data.median_forever | integer | No | Median total playtime, in minutes, as SteamSpy estimates it. | |||
| data.name | string | No | Name of the app, as SteamSpy lists it. | |||
| data.negative | integer | No | Number of negative reviews, as SteamSpy counts them. | |||
| data.owners | string | No | Estimated range of owners, such as `100,000,000 .. 200,000,000`. | |||
| data.positive | integer | No | Number of positive reviews, as SteamSpy counts them. | |||
| data.price | string | No | Current price, as SteamSpy reports it. | |||
| data.publisher | string | No | Name of the publisher, as SteamSpy lists it. | |||
| data.source | string | No | Name of the data source, always `steamspy`. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.tags | object | No | Map of tag name to the number of votes the tag received. | |||
| data.userscore | integer | No | User score of the app, as SteamSpy reports it. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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/steamspy?appid=570" \
-H "x-api-key: $CRAWLORA_API_KEY"