Migration Guide
Migrating from v1 to v2
This guide covers the changes you need to make when upgrading from SteamApis API v1 to v2. v2 adds new categories (Account, Market Data), reorganizes Steam user and app endpoints, and introduces a standardized response envelope.
Authentication
v1 passed the API key as a query parameter, typically api_key or key:
GET /steam/profile/76561198038526790?api_key=YOUR_KEY
v2 passes the API key via the x-api-key request header (recommended) or the ?key= query parameter (still supported):
fetch('https://api.steamapis.com/v2/steam/users/76561198038526790', {
headers: { 'x-api-key': 'YOUR_KEY' }
})
Using the header is recommended because the key does not appear in server logs, browser history, or referrer headers.
Response envelope
v1 endpoints returned data directly at the top level:
{
"steamid": "76561198038526790",
"personaname": "PEPZ"
}
v2 wraps every response in a standard envelope. The exact shape depends on whether the endpoint returns a single resource or a paginated list:
{
"success": true,
"result": {
"steamID": "76561198038526790",
"nickname": "PEPZ",
...
}
}
To access the data, use data.result instead of data directly.
Errors use the same envelope with success: false:
{
"success": false,
"error": { "name": "NOT_FOUND", "message": "User not found", "meta": {} }
}
To access the data, use data.result (single resource) or data.results (list) instead of reading the top level directly.
response key instead of result. Treat those as drift — the authoritative envelope is { success, result } / { success, results, cursor, hasMore }.Steam user field renames
The v2 user endpoint returns the same underlying Steam data, but with camelCase field names and a nested avatar object. If you parse user responses, update your types:
| v1 field | v2 field | Notes |
|---|---|---|
GET /steam/profile/{SteamID64} | — | Profile endpoint removed, use the endpoint below for user data. |
GET /steam/profile/{SteamID64}/summary | GET /v2/steam/users/{steamid} | Renamed. Uses official Steam API data. |
| (Badges in summary response) | GET /v2/steam/users/{steamid}/badges | Badges split into dedicated endpoint. |
GET /steam/profile/{SteamID64}/games | GET /v2/steam/users/{steamid}/games | Path changed. |
GET /steam/profile/vanity/{VanityName} | GET /v2/steam/users/vanity/{vanityUrl} | Path changed. |
| — | GET /v2/steam/users/{steamid}/bans | New endpoint. |
GET /market/apps | GET /v2/steam/apps | Path changed, now includes all Steam apps found in the store. |
GET /market/app/{appId} | GET /v2/steam/apps/{appId} | Path changed, now includes more details about the app. |
| — | GET /v2/steam/apps/{appId}/changes | New app changelog endpoint. |
GET /market/items/{appId} | GET /v2/steam/items?appId= | Path changed, now paginated and using appId parameter is optional. |
GET /market/item/{appId}/{marketHashName} | GET /v2/steam/items/{appId}/{marketHashName} | Path changed. |
| — | GET /v2/steam/items/{itemId}/meta | New item metadata endpoint. |
| — | GET /v2/steam/items/{itemId}/histograms | New item histogram endpoint. |
| — | GET /v2/steam/items/{itemId}/prices | New item price history endpoint. |
| — | GET /v2/steam/items/{itemId}/changes | New item changelog endpoint. |
Steam ID parameter
In v1, user endpoints required a SteamID64 (17-digit numeric ID). In v2, the steamid parameter accepts multiple Steam ID formats — SteamID64, SteamID, SteamID3 — and the API resolves them automatically.
Endpoint mapping
The following tables map every v1 endpoint to its v2 equivalent, grouped by category. Entries marked "New in v2" have no v1 predecessor.
Account
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
| — | GET /v2/account | New in v2. Returns balance, overage config, and per-product subscription status with cycle-to-date usage. |
Steam users
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
GET /steam/profile/{SteamID64} | GET /v2/steam/users/{steamid} | Renamed. Field names also changed — see Steam user field renames. |
GET /steam/profile/{SteamID64}/summary | GET /v2/steam/users/{steamid} + GET /v2/steam/users/{steamid}/badges | Summary split. Core profile merges into the user endpoint; badges have their own endpoint. |
GET /steam/profile/{SteamID64}/games | GET /v2/steam/users/{steamid}/games | Path changed. |
GET /steam/profile/vanity/{VanityName} | GET /v2/steam/users/vanity/{vanityUrl} | Path changed. |
GET /steam/inventory/{SteamID64}/{AppId}/{ContextId} | GET /v2/steam/users/{steamid}/inventory/{appId}/{contextId} | Path changed (inventory endpoint remains in Steam users). |
| — | GET /v2/steam/users/{steamid}/bans | New in v2. Dedicated ban-status endpoint. |
| — | GET /v2/steam/users/{steamid}/recently-played | New in v2. Games played in the last two weeks with per-platform minutes. |
| — | GET /v2/steam/users/{steamid}/achievements/{appid} | New in v2. Per-game achievements with unlock timestamps. |
| — | GET /v2/steam/users/{steamid}/stats/{appid} | New in v2. Per-game stats + unlocked achievements. |
| — | GET /v2/steam/users/{steamid}/friends | New in v2. Friends list with friendship timestamps. |
| — | GET /v2/steam/users/{steamid}/groups | New in v2. Groups the user belongs to. |
Steam apps
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
GET /market/apps | GET /v2/steam/apps | Renamed & reshaped. Returns a paginated list of every tracked Steam app. Use cursor to paginate. |
GET /market/app/{AppID} | GET /v2/steam/apps/{appId} | Renamed. App details (name, type, last modified, etc.). |
GET /market/stats | — | No direct replacement. The closest equivalents are GET /v2/steam/apps/player-counts and GET /v2/steam/apps/store/rankings/{type}. |
| — | GET /v2/steam/apps/player-counts | New in v2. Current concurrent player counts per app, paginated. |
| — | GET /v2/steam/apps/{appId}/changes | New in v2. App changelog. |
| — | GET /v2/steam/apps/{appId}/global-achievements | New in v2. Global unlock percentage per achievement. |
| — | GET /v2/steam/apps/{appId}/news | New in v2. Aggregated community announcements and external press coverage. |
| — | GET /v2/steam/apps/{appId}/schema | New in v2. Full stats/achievements schema (display names, descriptions, icon URLs). |
| — | GET /v2/steam/apps/store/rankings/{type} | New in v2. Steam Store ranking lists (popularnew, topsellers, popularcomingsoon, specials, trendingfree, mostplayed). |
Steam items
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
GET /market/items/{AppID} | GET /v2/steam/items | Renamed & reshaped. Paginated list of every tracked item; filter by appId. |
GET /market/item/{AppID}/{MarketHashName} | GET /v2/steam/items/{appId}/{marketHashName} | Path changed. Single item with current price/volume. |
GET /market/items/{AppID}/histograms | GET /v2/steam/items/{itemId}/histograms | Path changed. Now keyed by internal itemId instead of appId. |
GET /market/items/{AppID}/descriptions | — | Dropped. Steam descriptions no longer exposed as a standalone endpoint. |
GET /market/items/cards | — | Dropped. No direct replacement. |
GET /market/items/{AppID}/assetinfos | — | Dropped. |
| — | GET /v2/steam/items/{itemId}/meta | New in v2. Item metadata (type, tags, description). |
| — | GET /v2/steam/items/{itemId}/prices | New in v2. Item price history time series. |
| — | GET /v2/steam/items/{itemId}/changes | New in v2. Item changelog. |
| — | GET /v2/steam/items/{appId}/list | New in v2. Pre-generated bulk price list for an entire app's market (302-redirects to a CDN file). |
Images
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
GET /image/item/{AppID}/{MarketHashName} | — | Dropped. Construct Steam CDN URLs directly from the item's hash fields. |
GET /image/items/{AppID} | — | Dropped. |
Market Data (third-party marketplaces)
Market Data is a new category in v2. It aggregates pricing, offers, sales, and order-book data from 26 third-party marketplaces — functionality that did not exist in v1.
https://marketplaceapi.steamapis.com/ — a different base URL than the main API (https://api.steamapis.com/).In addition to the REST endpoints below, v2 also exposes a real-time WebSocket offer stream:
| v1 Endpoint | v2 Endpoint | Protocol | Notes |
|---|---|---|---|
| — | wss://marketplaceapi.steamapis.com/ws/v2/offers | WebSocket | New in v2. Pushes individual marketplace listings as they're detected. |
| v1 Endpoint | v2 Endpoint | Notes |
|---|---|---|
| — | GET /v2/marketplaces | New in v2. List of supported marketplaces. |
| — | GET /v2/items | New in v2. Single item across marketplaces. |
| — | GET /v2/items/search | New in v2. Search items by name. |
| — | GET /v2/items/compare | New in v2. Compare an item across marketplaces. |
| — | GET /v2/buy-orders | New in v2. |
| — | GET /v2/price-history | New in v2. Price history time series. |
| — | GET /v2/sales | New in v2. Recent sales. |
Summary of breaking changes
- Authentication method changed — move API key from query parameter to
x-api-keyheader. - Response envelope — all data is now inside a
resultorresultsfield. - Endpoint paths changed — all Steam user endpoints now use
/v2/steam/users/prefix. - Summary endpoint split — profile data and badges are now separate endpoints.
- Error format changed — errors return
{ "success": false, "error": { "name": "...", "message": "...", "meta": ... } }.