Public API

JSON endpoints over HTTPS. No API keys or accounts required. CORS supports GET, HEAD, POST, and OPTIONS. Standard rate limits apply at 120 requests per minute per IP address and 120 distinct titles per hour. JSON responses are cached for 30 seconds; the CSV export is updated as a 5-minute snapshot. Operated by Musical Pig LLC.

Over the rate limit the API returns HTTP 429. Title search q is at most 80 characters. Errors use JSON { "error": "…" } with the matching HTTP status. Use is subject to the Terms of Service. What we count, and what we do not store, is in the Privacy Policy.

Host

https://api.pcgdb.com

Send JSON here

www.pcgdb.com is the catalog site, not the API. A browser can open either. Scripts should call the API host.

curl https://api.pcgdb.com/api/v1/health
Open CSV in a new tab
Catalog9Health, lists, search, CSV
  • GET /api/v1/healthService health
    https://api.pcgdb.com/api/v1/health
    {
      "ok": true,
      "name": "pcgdb",
      "operator": "Musical Pig LLC",
      "operatorUrl": "https://musical-pig.com",
      "steam": {
        "exhausted": false
      },
      "slow": false,
      "catalog": {
        "titles": 2864,
        "limit": 15000,
        "priced": 2654
      },
      "notices": []
    }

    Public health has no volume or CPU numbers. steam.exhausted pauses live Steam polls.

  • GET /api/v1/pulseHomepage rails
    https://api.pcgdb.com/api/v1/pulse
    {
      "comingSoon": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "updated": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "mostPlayed": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "topRated": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "deals": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "gems": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "moving": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ],
      "week": [
        {
          "appid": 730,
          "name": "Counter-Strike 2",
          "type": "game",
          "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
          "developers": "Valve",
          "publishers": "Valve",
          "free": true,
          "mature": false,
          "requiredAge": 0,
          "tags": [
            "Action",
            "Free to Play",
            "Multiplayer"
          ],
          "currentPlayers": 499779,
          "peakAll": 1337437,
          "peak24h": 1337437,
          "delta24h": -58331,
          "reviewPositive": 8452479,
          "reviewNegative": 1387191,
          "releaseDate": "Aug 21, 2012",
          "comingSoon": false,
          "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
          "usCents": 0,
          "usInitialCents": 0,
          "usLowCents": 0,
          "steamDeck": "playable",
          "steamAi": false
        }
      ]
    }

    Homepage rails as slim AppCard arrays. comingSoon is New on the store. Live lists are longer.

  • GET /api/v1/catalogFull sampled catalog
    https://api.pcgdb.com/api/v1/catalog?cc=us
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false
      }
    ]

    AppCard[]. Optional cc selects the display price region (us, eu, gb, …).

  • GET /api/v1/catalog/liteSlim catalog cards for list pages
    https://api.pcgdb.com/api/v1/catalog/lite?cc=us
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false,
        "dlc": [],
        "editions": []
      }
    ]

    Same titles as /catalog without descriptions, DLC, or editions. spark24 stays so list cards can draw the 24h sparkline.

  • GET /api/v1/catalog/ccuSummed in-game count over time
    https://api.pcgdb.com/api/v1/catalog/ccu
    {
      "current": 4147266,
      "sampledAt": "2026-09-08T23:31:38Z",
      "series": [
        {
          "t": 1788660090,
          "v": 547351
        },
        {
          "t": 1788663690,
          "v": 612004
        }
      ]
    }

    Sum of sampled in-game counts. series is { t, v }[] with t in unix seconds. Default is all-time downsampled plus the last 7 days raw.

  • GET /api/v1/catalog/ccu?from=&to=Catalog in-game series, raw window (unix seconds, max 7 days)
    https://api.pcgdb.com/api/v1/catalog/ccu?from=1788660090&to=1789264890
    {
      "current": 4147266,
      "sampledAt": "2026-09-08T23:31:38Z",
      "series": [
        {
          "t": 1788660090,
          "v": 547351
        },
        {
          "t": 1788663690,
          "v": 612004
        }
      ]
    }

    from and to are unix seconds. Window is at most 7 days. series is raw samples in that window. Omit both for the default series. current is still the latest catalog total.

  • GET /api/v1/policyNo-edit statement
    https://api.pcgdb.com/api/v1/policy
    {
      "statement": "PCGDB does not hide, edit, or omit player counts or prices after ingest. Corrections are append-only.",
      "chartsEdited": false,
      "publisherOptOut": false,
      "operator": "Musical Pig LLC",
      "operatorUrl": "https://musical-pig.com",
      "recentIngests": [
        {
          "kind": "ingest",
          "count": 100,
          "fingerprint": "abc123",
          "note": "730",
          "at": "2026-09-08T00:00:00Z"
        }
      ]
    }
  • GET /api/v1/apps?q=Title search (max 80 characters)
    https://api.pcgdb.com/api/v1/apps?q=counter
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false
      }
    ]

    AppCard[]. q is at most 80 characters. Add local=1 to skip the Steam store fallback.

  • GET /api/v1/export/apps.csvCSV dump
    https://api.pcgdb.com/api/v1/export/apps.csv
    appid,name,currentPlayers,usCents
    730,Counter-Strike 2,499779,0
    

    text/csv snapshot, refreshed about every five minutes. Not JSON.

Charts8Most played, gems, movers, sales
  • GET /api/v1/charts/playersMost played (top 100)
    https://api.pcgdb.com/api/v1/charts/players
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false
      }
    ]

    AppCard[] — top 100 by current players.

  • GET /api/v1/charts/gemsHidden gems filter
    https://api.pcgdb.com/api/v1/charts/gems
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false
      }
    ]

    AppCard[] after the hidden-gems filter.

  • GET /api/v1/charts/lookupsMost opened titles (hashed unique-ish views)
    https://api.pcgdb.com/api/v1/charts/lookups
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "hits": 16,
        "firstAt": "2026-09-06T21:00:00Z",
        "lastAt": "2026-09-08T23:00:00Z",
        "hours": 11,
        "peakHourHits": 3
      }
    ]

    Unique-ish game-page opens. Query text and IPs are not stored.

  • GET /api/v1/charts/searchesTitles that appeared in search (query text is not stored)
    https://api.pcgdb.com/api/v1/charts/searches
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "hits": 4,
        "firstAt": "2026-09-07T18:00:00Z",
        "lastAt": "2026-09-08T22:00:00Z",
        "hours": 3,
        "peakHourHits": 2
      }
    ]

    Titles that appeared in search. The search string is not stored.

  • GET /api/v1/charts/moversUnusual in-game counts versus that title's typical hour of week
    https://api.pcgdb.com/api/v1/charts/movers
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "currentPlayers": 900000,
        "expected": 620000,
        "residualPct": 45,
        "delta24h": 12000,
        "steamDeck": "playable",
        "mature": false,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "reviewDelta": 420
      }
    ]

    Ranked by residual after that title's typical hour of week, not raw percent. Titles below about 150 in-game stay out. No extra Steam calls.

  • GET /api/v1/salesSale calendar
    https://api.pcgdb.com/api/v1/sales
    [
      {
        "name": "Steam Autumn Sale 2026",
        "kind": "seasonal",
        "starts": "2026-10-01T00:00:00Z",
        "ends": "2026-10-08T00:00:00Z",
        "source": "https://partner.steamgames.com/doc/marketing/upcoming_events"
      }
    ]
  • GET /api/v1/deals?cc=usCurrent discounts for a region
    https://api.pcgdb.com/api/v1/deals?cc=us
    [
      {
        "appid": 570,
        "name": "Dota 2",
        "cc": "us",
        "currency": "USD",
        "cents": 0,
        "initialCents": 0,
        "discount": 0
      }
    ]

    cc is a store region. cents are the current price in the smallest currency unit.

  • GET /api/v1/updatesRecent depot build IDs
    https://api.pcgdb.com/api/v1/updates
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "buildId": 20458890,
        "branch": "public",
        "at": "2026-08-24T23:39:20Z"
      }
    ]

    Recent depot build IDs PCGDB has sampled.

One title12Card, players, prices, news
  • GET /api/v1/apps/{id}App card
    https://api.pcgdb.com/api/v1/apps/730
    {
      "appid": 730,
      "name": "Counter-Strike 2",
      "type": "game",
      "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
      "developers": "Valve",
      "publishers": "Valve",
      "free": true,
      "mature": false,
      "requiredAge": 0,
      "tags": [
        "Action",
        "Free to Play",
        "Multiplayer"
      ],
      "currentPlayers": 499779,
      "peakAll": 1337437,
      "peak24h": 1337437,
      "delta24h": -58331,
      "reviewPositive": 8452479,
      "reviewNegative": 1387191,
      "releaseDate": "Aug 21, 2012",
      "comingSoon": false,
      "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
      "usCents": 0,
      "usInitialCents": 0,
      "usLowCents": 0,
      "steamDeck": "playable",
      "steamAi": false
    }

    Optional ?cc=us for regional price fields. Live objects may also include dlc, editions, and spark24.

  • GET /api/v1/apps/{id}/similarSame tags, similar review volume
    https://api.pcgdb.com/api/v1/apps/730/similar
    [
      {
        "appid": 730,
        "name": "Counter-Strike 2",
        "type": "game",
        "headerImage": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/730/header.jpg",
        "developers": "Valve",
        "publishers": "Valve",
        "free": true,
        "mature": false,
        "requiredAge": 0,
        "tags": [
          "Action",
          "Free to Play",
          "Multiplayer"
        ],
        "currentPlayers": 499779,
        "peakAll": 1337437,
        "peak24h": 1337437,
        "delta24h": -58331,
        "reviewPositive": 8452479,
        "reviewNegative": 1387191,
        "releaseDate": "Aug 21, 2012",
        "comingSoon": false,
        "shortDescription": "For over two decades, Counter-Strike has offered an elite competitive experience…",
        "usCents": 0,
        "usInitialCents": 0,
        "usLowCents": 0,
        "steamDeck": "playable",
        "steamAi": false
      }
    ]

    Slim AppCard[]. Shares at least one of this title's first three store tags and the same review-count band. A mechanical overlap, not a recommendation.

  • GET /api/v1/apps/{id}/playersPlayer series
    https://api.pcgdb.com/api/v1/apps/730/players
    {
      "appid": 730,
      "current": 492943,
      "peak24h": 1337437,
      "peakAll": 1337437,
      "intervalMs": 60000,
      "sampledAt": "2026-09-08T23:31:00Z",
      "steam": {
        "exhausted": false
      },
      "gapFill": {
        "active": false,
        "since": null,
        "series": []
      },
      "series": [
        {
          "t": 1788660090,
          "v": 547351
        },
        {
          "t": 1788663690,
          "v": 612004
        }
      ]
    }

    series is { t, v }[] (t unix seconds, v in-game count). Default is all-time downsampled to about 2000 min/max points plus the last 7 days at full poll cadence. gapFill.active is true only when catalog-wide Steam samples are stale; the fill series is an hour-of-week guess, not a live count and not a maintenance zero.

  • GET /api/v1/apps/{id}/players?from=&to=Player series, raw window (unix seconds, max 7 days)
    https://api.pcgdb.com/api/v1/apps/730/players?from=1788660090&to=1789264890
    {
      "appid": 730,
      "current": 492943,
      "peak24h": 1337437,
      "peakAll": 1337437,
      "intervalMs": 60000,
      "sampledAt": "2026-09-08T23:31:00Z",
      "steam": {
        "exhausted": false
      },
      "series": [
        {
          "t": 1788660090,
          "v": 547351
        },
        {
          "t": 1788663690,
          "v": 612004
        }
      ]
    }

    from and to are unix seconds. Window is at most 7 days. series is raw samples in that window. Omit both for the default series. Same JSON shape as /players.

  • GET /api/v1/apps/{id}/forecast?horizon=7dPlayer estimates (24h, 7d, 14d, 21d, 30d)
    https://api.pcgdb.com/api/v1/apps/730/forecast?horizon=24h
    {
      "ok": true,
      "horizonHours": 24,
      "lines": {
        "fit": [
          {
            "t": 1788660090,
            "v": 547351
          },
          {
            "t": 1788663690,
            "v": 612004
          }
        ],
        "low": [
          {
            "t": 1788660090,
            "v": 547351
          },
          {
            "t": 1788663690,
            "v": 612004
          }
        ],
        "likely": [
          {
            "t": 1788660090,
            "v": 547351
          },
          {
            "t": 1788663690,
            "v": 612004
          }
        ],
        "high": [
          {
            "t": 1788660090,
            "v": 547351
          },
          {
            "t": 1788663690,
            "v": 612004
          }
        ],
        "tags": [
          {
            "t": 1788660090,
            "v": 547351
          },
          {
            "t": 1788663690,
            "v": 612004
          }
        ]
      },
      "mapePct": 14,
      "missPct": 18,
      "trajectory": "steady",
      "peak": {
        "t": 1788746490,
        "v": 512000
      },
      "model": {
        "now": 499779,
        "daily": 0.012,
        "sigma": 0.14,
        "mapePct": 14,
        "season": "title",
        "trajectory": "steady",
        "kind": "steady"
      }
    }

    horizon is 24h, 7d, 14d, 21d, or 30d. ok is false with reason short_history when too few samples exist (horizonHours is still set). tags is omitted without a tag cohort. fit is the same model drawn on hours already sampled. trajectory is launch, sale, growth, or steady. model.kind is fade (launch and post-discount: also floor and halfLifeHours), growth (climbing weeks: also ceiling), or steady. mapePct is the hour-of-week residual as a percent, used for the low/high band. missPct is a 48-hour walk-forward miss on titles with enough history, not an accuracy badge. peak is the highest likely point in the chosen window. These lines are guesses, not Valve forecasts.

  • GET /api/v1/apps/{id}/pricesRegional prices
    https://api.pcgdb.com/api/v1/apps/730/prices
    [
      {
        "cc": "us",
        "currency": "USD",
        "cents": 0,
        "initialCents": 0,
        "discount": 0,
        "sampledAt": "2026-09-06T02:03:08Z"
      }
    ]

    One row per sampled store region. cents are in the smallest currency unit.

  • GET /api/v1/apps/{id}/prices/history?cc=usPrice history + historical low
    https://api.pcgdb.com/api/v1/apps/730/prices/history?cc=us
    {
      "appid": 730,
      "cc": "us",
      "lowCents": 0,
      "lowAt": "2026-09-05T22:01:00Z",
      "series": [
        {
          "t": 1788660090,
          "v": 0
        },
        {
          "t": 1788746490,
          "v": 0
        }
      ]
    }

    cc is required. series v is cents. lowCents is the lowest sampled price in that region. Default series is all-time downsampled plus the last 7 days raw.

  • GET /api/v1/apps/{id}/prices/history?cc=us&from=&to=Price history, raw window (unix seconds, max 7 days)
    https://api.pcgdb.com/api/v1/apps/730/prices/history?cc=us&from=1788660090&to=1789264890
    {
      "appid": 730,
      "cc": "us",
      "lowCents": 0,
      "lowAt": "2026-09-05T22:01:00Z",
      "series": [
        {
          "t": 1788660090,
          "v": 0
        },
        {
          "t": 1788746490,
          "v": 0
        }
      ]
    }

    from and to are unix seconds. Window is at most 7 days. series is raw samples in that window. Omit both for the default series. cc is still required. lowCents stays the all-time sampled low.

  • GET /api/v1/apps/{id}/buildsDepot build history
    https://api.pcgdb.com/api/v1/apps/730/builds
    [
      {
        "buildId": 20458890,
        "branch": "public",
        "description": "",
        "timeUpdated": "2026-08-24T23:39:20Z"
      }
    ]
  • GET /api/v1/apps/{id}/newsPublic Steam news
    https://api.pcgdb.com/api/v1/apps/730/news
    [
      {
        "gid": "1841579228676851",
        "title": "Counter-Strike 2 Update",
        "url": "https://steamcommunity.com/games/730/announcements",
        "at": "2026-08-24T23:39:20Z",
        "feed": "Community Announcements"
      }
    ]
  • GET /api/v1/apps/{id}/reviews?lang=englishReview summary
    https://api.pcgdb.com/api/v1/apps/730/reviews?lang=english
    {
      "recent": {
        "desc": "Very Positive",
        "total": 9845359,
        "positive": 8456710,
        "negative": 1388649
      },
      "language": {
        "desc": "Very Positive",
        "total": 2610407,
        "positive": 2245824,
        "negative": 364583
      },
      "languageCode": "english",
      "languageLabel": "English reviews"
    }

    lang is a Steam review language code, default english.

  • GET /api/v1/apps/{id}/regionsRegion-locked SKUs
    https://api.pcgdb.com/api/v1/apps/730/regions
    [
      {
        "cc": "us",
        "available": true,
        "reason": ""
      }
    ]

    Region-locked SKU flags PCGDB has sampled.