Free Steam Game Data API Documentation

Access current and historical Steam game data, including concurrent players, store price history, top wishlist rankings, global top sellers, followers, and reviews.

Games Popularity is an independent, unofficial service and is not affiliated with Valve or Steam. The API covers games present in the Games-Popularity.com dataset.

Free API key

Quick start

Use a Steam App ID to request data for a game. The example below retrieves the newest concurrent-player observations for Steam App ID 730. You can try requests without a key or create a free API key for higher-capacity access.

cURL request

curl "https://games-popularity.com/swagger/api/game/players/730?apiKey=YOUR_API_KEY"

Example JSON response

{
  "steamId": "730",
  "history": [
    {
      "players": 123456,
      "added": "2026-07-16T12:00:00Z"
    }
  ],
  "nextCursor": null
}

JavaScript example

const response = await fetch(
  "https://games-popularity.com/swagger/api/game/players/730?apiKey=YOUR_API_KEY"
);

if (!response.ok) throw new Error(`API request failed: ${response.status}`);

const data = await response.json();
console.log(data.history);
Open interactive API explorer View OpenAPI JSON

Base URL and authentication

https://games-popularity.com/swagger/api

An API key is optional. Requests without a valid key are limited to 100 requests per day per IP address. Requests with a valid key use the authenticated API capacity, currently limited to 200 requests per second across authenticated traffic. A 429 Too Many Requests response means the relevant limit has been reached.

Pass the key as the apiKey query parameter:

https://games-popularity.com/swagger/api/top-sellers?apiKey=YOUR_API_KEY

Current Steam rankings

GET/top-wishlist

Returns the current Steam top wishlist ranking, ordered by position. The list is refreshed hourly and includes the game name and Steam App ID.

curl "https://games-popularity.com/swagger/api/top-wishlist?apiKey=YOUR_API_KEY"

GET/top-sellers

Returns the current Steam global top sellers ranking, ordered by position. This ranking is refreshed every two hours and includes the game name and Steam App ID.

curl "https://games-popularity.com/swagger/api/top-sellers?apiKey=YOUR_API_KEY"

Ranking response format

{
  "validTimeUtc": "2026-07-16T12:00:00Z",
  "data": [
    {
      "position": 1,
      "gameName": "Example Game",
      "steamId": "123456"
    }
  ]
}

Game lookup and latest statistics

GET/apps-list

Returns Steam applications in the Games Popularity dataset. Use this endpoint to map game names to Steam App IDs before requesting statistics. Results contain up to 1,000 apps.

  • cursor — optional Steam App ID returned as nextCursor.
curl "https://games-popularity.com/swagger/api/apps-list?cursor=730&apiKey=YOUR_API_KEY"
{
  "apps": [
    { "steamId": 730, "name": "Counter-Strike 2" }
  ],
  "nextCursor": 740
}

GET/game/latest/{steamId}

Returns the latest available player count, follower count, store price, global top-seller position, wishlist position, and all-language review totals for one game. A data object can be null when that metric has not been recorded for the requested game.

  • steamId — required numeric Steam App ID.
curl "https://games-popularity.com/swagger/api/game/latest/730?apiKey=YOUR_API_KEY"
{
  "steamId": "730",
  "players": { "players": 123456, "added": "2026-07-16T12:00:00Z" },
  "followers": { "followers": 4567890, "added": "2026-07-16T08:00:00Z" },
  "price": { "price": 0, "added": "2026-07-16T09:00:00Z" },
  "global": { "position": 4, "added": "2026-07-16T12:00:00Z" },
  "wishlist": null,
  "reviews": {
    "reviewsAll": 100000,
    "reviewsPositive": 90000,
    "reviewsNegative": 10000,
    "added": "2026-07-16T09:00:00Z"
  }
}

Historical Steam game data

All history endpoints require a numeric steamId. They return observations newest first, with up to 1,000 records per request. When nextCursor is present, pass it as the optional ISO 8601 cursor query parameter to retrieve the next page.

GET/game/top-wishlist/{steamId}

Historical positions for a game in Steam's public top wishlist ranking. This tracks ranking position, not the private number of users who added a game to their personal wishlist.

curl "https://games-popularity.com/swagger/api/game/top-wishlist/123456?apiKey=YOUR_API_KEY"

GET/game/top-sellers/{steamId}

Historical positions for a game in Steam's global top sellers ranking.

curl "https://games-popularity.com/swagger/api/game/top-sellers/730?apiKey=YOUR_API_KEY"

GET/game/players/{steamId}

Historical concurrent-player observations for a Steam game. Player data is collected hourly.

curl "https://games-popularity.com/swagger/api/game/players/730?apiKey=YOUR_API_KEY"

GET/game/followers/{steamId}

Historical Steam Community follower totals for a game. Follower updates run daily.

curl "https://games-popularity.com/swagger/api/game/followers/730?apiKey=YOUR_API_KEY"

GET/game/price/{steamId}

Historical Steam game store prices recorded by Games Popularity. This endpoint concerns game store prices, not Steam Community Market item prices. The response currently returns a numeric price without a separate currency field.

curl "https://games-popularity.com/swagger/api/game/price/730?apiKey=YOUR_API_KEY"

GET/game/reviews/{steamId}

Historical all-language Steam review totals, including total, positive, and negative review counts.

curl "https://games-popularity.com/swagger/api/game/reviews/730?apiKey=YOUR_API_KEY"

History response format

{
  "steamId": "730",
  "history": [
    {
      "position": 4,
      "added": "2026-07-16T12:00:00Z"
    }
  ],
  "nextCursor": "2026-01-01T00:00:00.0000000Z"
}

The metric inside each history item depends on the endpoint: position, players, followers, price, or the review-count fields.

Data freshness

Concurrent players Collected hourly.
Top wishlist ranking Refreshed hourly.
Global top sellers Refreshed every two hours.
Followers Updated daily.
Prices and reviews Updated according to Steam data availability. Check each record's added timestamp.

Pagination and HTTP responses

  • 200 OK — the request succeeded.
  • 404 Not Found — the Steam App ID is not present in the Games Popularity dataset.
  • 429 Too Many Requests — the applicable API rate limit was reached.
  • 5xx — a temporary server or upstream-data error occurred.

History is cursor-paginated rather than page-number-paginated. Reuse the returned nextCursor value exactly, URL-encoded, until the response returns null.

curl "https://games-popularity.com/swagger/api/game/players/730?cursor=2026-01-01T00%3A00%3A00Z&apiKey=YOUR_API_KEY"

Frequently asked questions

Is the Steam game data API free?
Yes. You can make up to 100 requests per day per IP address without a key. Creating an account gives you a free API key and access to the authenticated request capacity.
Is this Valve's official Steam Web API?
No. Games Popularity is an independent service. It organizes current and historical Steam game popularity and store data that is not presented as one unified dataset by the official Steam Web API.
Does the wishlist endpoint return a user's personal wishlist?
No. It returns Steam's public top wishlist ranking and the historical ranking position of games. It does not expose private user wishlist data or exact wishlist counts.
How do I find a game's Steam App ID?
Use the apps list endpoint, or copy the number from a Steam store URL such as store.steampowered.com/app/730/....