Answering that needs one thing storefronts do not publish: what the game has cost before. Steam and GOG return a current price and nothing else — no history endpoint, no series, no past values. The record of what a game used to cost exists only for whoever wrote it down.
Soren has been writing it down. 7.8 million price observations across 145,931 games, the earliest from March 2012, priced across four storefronts and four regions, returned in one call.
Cross-store spread is larger and more common than most buyers expect. A live example from the catalogue:
| Game | GOG | Steam | Microsoft |
|---|---|---|---|
| Dex | $0.89 | $1.99 | $19.99 |
| A Plague Tale: Requiem | $14.99 | $49.99 | $59.99 |
Finding that without Soren means four lookups against four APIs, having already resolved four different product ids for the same game. That resolution is the part nobody publishes: we hold 207,181 store mappings across 371,448 games.
observed_since, an observation count, and a
coverage block stating exactly when we were — and were not
— watching.
# free: resolve a name to a slug before you pay curl "https://soren.com/v1/lookup?q=forza+horizon" # paid: the answer, by slug or by any id you already hold curl -H "X-PAYMENT: <x402 proof>" \ "https://soren.com/v1/game?game=forza-horizon-5" /v1/game?steam=1551360 /v1/game?q=fallout+new+vegas®ion=GB
{
"game": { "slug": "forza-horizon-5", "title": "Forza Horizon 5",
"type": "main_game", "released_at": "2021-11-09" },
"prices": [
{ "store": "steam", "region": "US", "status": "ok",
"currency": "USD", "price": 59.99, "regular_price": 59.99,
"discount_pct": 0,
"lowest_observed": 29.99, "lowest_observed_at": "2023-06-06",
"pct_above_lowest_observed": 100,
"observed_since": "2021-08-24", "observations": 89 }
],
"subscriptions": [
{ "service": "Game Pass", "available": true, "leaving_at": null },
{ "service": "EA Play", "available": false }
],
"demand": { "waiting": 13493, "buy_at_any_price": 9758 },
"coverage": [ { "store": "steam", "from": "2012-03-29", "to": null } ],
"region": "US"
}
Related editions, expansions and DLC come back in family, whole
and never truncated. Mods and updates are excluded unless you ask for them
with ?include=mods.
It gives no buy-or-wait verdict. “Batman: Arkham Asylum is 3,898% above the lowest price we have observed, across 243 observations since November 2012” is a fact we can defend. “Wait for the summer sale” is a prediction we cannot. The numbers are sourced; the judgement is yours.
Non-US regions return a price but no observed low, and say why: the observation series is USD-only, and comparing a Brazilian real price against a US dollar low would be meaningless rather than merely imprecise.
Unevenly, on purpose — and every price says so itself. Each entry
carries checked_at (when we last looked) and
changed_at (when it last moved), kept separate so a price
that has been stable for a month is distinguishable from a collector that
stopped running.
| What | Refreshed |
|---|---|
| The games people actually ask about | every 4 hours |
| Epic and GOG, full catalogue | daily |
| The Steam tail (173,290 products) | rotating, a few days end to end |
We do not claim a single freshness figure across 207,181 store mappings, because it would not be true of all of them. The timestamp on each row is the honest version, and it is in every response whether you ask for it or not.
$0.01 per lookup, paid per request over HTTP 402 using x402 with USDC on Base. No signup, no API key, no account — an agent with a wallet can call it directly. Full contract at openapi.json, and llms.txt describes it for models.