The same data the site uses. Free.
Real checkout prices across 13 stores, 4 subscription catalogs and price history for the top 1,000 Steam games. REST and MCP, one key, 1,000 requests a day, CC BY 4.0. Build a Discord bot, a price-tracking agent, or a competitor; all fine.
- 1,000 req / day
- 60 req / min
- 15 min price cache
- CC BY 4.0 license
REST
curl "https://api.fairly.gg/v1/games/1245620?region=us¤cy=USD" \
-H "X-Api-Key: fk_…"
{
"data": {
"game": { "title": "Elden Ring", "steam_app_id": 1245620, "slug": "elden-ring-1245620" },
"offers": [{
"store_name": "Fanatical", "store_kind": "authorized",
"real_price": { "amount": 29.99, "currency": "USD" },
"list_price": { "amount": 34.99, "currency": "USD" },
"url": "https://fairly.gg/go/48213?src=api"
}],
"cheapest_way": { "winner": { … }, "sentence": "…" },
"subscriptions": [ … ],
"lows": { … }
},
"region": "us", "currency": "USD",
"fetched_at": "2026-10-08T15:48:02Z", "data_age_seconds": 712
}MCP
claude mcp add --transport http fairly https://mcp.fairly.gg --header "X-Api-Key: fk_…"
// claude_desktop_config.json / any MCP client
{
"mcpServers": {
"fairly": {
"url": "https://mcp.fairly.gg",
"headers": { "X-Api-Key": "fk_…" }
}
}
}
// tools exposed
search_games(query)
get_cheapest_way_to_play(game_id, region, currency)
get_offers(game_id, region, currency)
is_on_subscription(game_id, region)
list_deals(kind, region, currency, limit)Endpoints
| Method | Path | Cache |
|---|---|---|
| GET | /v1/games?q=Title search, top 20cache 5 min | 5 min |
| GET | /v1/games/{id}Offers, real prices, subscriptions, cheapest way, historical lowcache 15 min | 15 min |
| GET | /v1/games/{id}/history?days=90Daily minimum across authorized storescache 1 h | 1 h |
| GET | /v1/discover/under/{3|5|10}Super cheap list, sorted by hours per dollarcache 15 min | 15 min |
| GET | /v1/discover/historical-lowsGames at their all-time low todaycache 15 min | 15 min |
| GET | /v1/discover/leaving/{game-pass|ps-plus}Leaving a catalog within 30 dayscache 1 h | 1 h |
| GET | /v1/subscriptions/{code}/catalogFull catalog by regioncache 1 h | 1 h |
| GET | /v1/storesStores and their kindscache 1 day | 1 day |
| GET | /v1/meta/statusLast successful fetch per sourcecache 1 min | 1 min |
Full OpenAPI 3.1 at api.fairly.gg/openapi.json · interactive docs at api.fairly.gg/docs · every response carries fetched_at and data_age_seconds.
License and attribution
API output is licensed CC BY 4.0: use it freely, with a link back to fairly.gg. The url fields are Fairly /go/ links; some carry an affiliate tag, and the price you see never changes. Append ?raw=1 for the plain store link. Ranking is by price, never by commission. Abuse gets a key revoked; keys are limited to 3 per IP per day.