Public API Documentation
Access game pricing data programmatically. All endpoints are served under /api/v1 and require a valid API key.
Authentication
Every request must include your API key in one of two ways:
- Header (recommended):
X-API-Key: YOUR_API_KEY - Query parameter:
?api_key=YOUR_API_KEY
Generate an API key from your Settings → API Keys page.
Rate Limits
Rate limits use a sliding 24-hour window. Every response includes these headers:
X-RateLimit-Limit- your daily limitX-RateLimit-Remaining- requests leftX-RateLimit-Reset- window reset time (ISO 8601)
| Account | Rate Limit | Price |
|---|---|---|
| Every account | 10,000 requests / 24 hours | Free |
Quick Start
curl -H "X-API-Key: YOUR_API_KEY" \ "https://cheapgamesfinder.com/api/v1/games?search=elden+ring"
Endpoints
GET
/api/v1/gamesList games with optional search and pagination.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| search | query | No | Filter games by title (case-insensitive partial match). |
| page | query | No | Page number (default: 1). |
| per_page | query | No | Results per page, max 100 (default: 20). |
Response Example
{
"data": [
{
"id": 1,
"slug": "elden-ring",
"title": "Elden Ring",
"description": "...",
"releaseDate": "2022-02-25",
"metascore": 96
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8
}
}GET
/api/v1/games/:slugGet detailed information about a single game.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| slug | path | Yes | URL-friendly identifier for the game. |
Response Example
{
"data": {
"id": 1,
"slug": "elden-ring",
"title": "Elden Ring",
"description": "...",
"releaseDate": "2022-02-25",
"metascore": 96
}
}GET
/api/v1/games/:slug/pricesGet the latest price for a game across all tracked stores.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| slug | path | Yes | Game slug. |
Response Example
{
"data": [
{
"store": "steam",
"region": "US",
"currency": "USD",
"price": "39.99",
"isDiscount": true,
"discountPct": "33.00",
"recordedAt": "2025-03-15T12:00:00Z"
},
{
"store": "epic",
"region": "US",
"currency": "USD",
"price": "59.99",
"isDiscount": false,
"discountPct": "0.00",
"recordedAt": "2025-03-15T12:00:00Z"
}
]
}GET
/api/v1/games/:slug/price-historyGet historical price data for a game.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| slug | path | Yes | Game slug. |
| from | query | No | Start date in ISO 8601 format (default: 90 days ago). |
| to | query | No | End date in ISO 8601 format (default: now). |
| store | query | No | Filter to a specific store (e.g., "steam"). |
Response Example
{
"data": [
{
"store": "steam",
"region": "US",
"currency": "USD",
"price": "59.99",
"isDiscount": false,
"discountPct": "0.00",
"recordedAt": "2025-01-01T00:00:00Z"
},
{
"store": "steam",
"region": "US",
"currency": "USD",
"price": "39.99",
"isDiscount": true,
"discountPct": "33.00",
"recordedAt": "2025-03-15T00:00:00Z"
}
],
"meta": {
"from": "2025-01-01T00:00:00.000Z",
"to": "2025-03-16T00:00:00.000Z"
}
}GET
/api/v1/dealsList current deals across all games.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| store | query | No | Filter by store (e.g., "steam"). |
| min_discount | query | No | Minimum discount percentage (e.g., 25). |
| page | query | No | Page number (default: 1). |
| per_page | query | No | Results per page, max 100 (default: 20). |
Response Example
{
"data": [
{
"game": {
"id": 1,
"slug": "elden-ring",
"title": "Elden Ring"
},
"store": "steam",
"region": "US",
"currency": "USD",
"price": "39.99",
"discountPct": "33.00",
"recordedAt": "2025-03-15T12:00:00Z"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 45,
"total_pages": 3
}
}GET
/api/v1/storesList all tracked stores.
Response Example
{
"data": [
{
"slug": "steam",
"name": "Steam",
"url": "https://store.steampowered.com"
},
{
"slug": "epic",
"name": "Epic Games Store",
"url": "https://store.epicgames.com"
}
]
}Error Responses
All errors return a JSON object with error and message fields.
[
{
"status": 401,
"error": "UNAUTHORIZED",
"message": "Invalid or expired API key."
},
{
"status": 404,
"error": "NOT_FOUND",
"message": "Game \"unknown-slug\" not found."
},
{
"status": 429,
"error": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit of 100 requests per 24 hours exceeded."
}
]