Skip to main content

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 limit
  • X-RateLimit-Remaining - requests left
  • X-RateLimit-Reset - window reset time (ISO 8601)
AccountRate LimitPrice
Every account10,000 requests / 24 hoursFree

Quick Start

curl -H "X-API-Key: YOUR_API_KEY" \
  "https://cheapgamesfinder.com/api/v1/games?search=elden+ring"

Endpoints

GET/api/v1/games

List games with optional search and pagination.

Parameters

NameInRequiredDescription
searchqueryNoFilter games by title (case-insensitive partial match).
pagequeryNoPage number (default: 1).
per_pagequeryNoResults 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/:slug

Get detailed information about a single game.

Parameters

NameInRequiredDescription
slugpathYesURL-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/prices

Get the latest price for a game across all tracked stores.

Parameters

NameInRequiredDescription
slugpathYesGame 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-history

Get historical price data for a game.

Parameters

NameInRequiredDescription
slugpathYesGame slug.
fromqueryNoStart date in ISO 8601 format (default: 90 days ago).
toqueryNoEnd date in ISO 8601 format (default: now).
storequeryNoFilter 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/deals

List current deals across all games.

Parameters

NameInRequiredDescription
storequeryNoFilter by store (e.g., "steam").
min_discountqueryNoMinimum discount percentage (e.g., 25).
pagequeryNoPage number (default: 1).
per_pagequeryNoResults 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/stores

List 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."
  }
]