Cross-store pricing for a single game — Steam, Epic, GOG and Microsoft Store side by side
Cross-store pricing for a single game — Steam, Epic, GOG and Microsoft Store side by side — with the lowest price ever observed, the date it was observed, and how far above that low the current price sits. Storefronts publish today's price and no history, so the low exists only for whoever recorded it; ours runs from 2012. Every response resolves the game's family so a base game is never compared against a season pass.
10000 (raw units)
price
3
calls / 30d
2
unique payers
2026-08-26
updated
Provider
soren.com · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0xaDc3A47EFbD82Ed724a0E9A3D08D5A1A8e6586fd",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 120
},
{
"scheme": "exact",
"network": "base",
"payTo": "0xaDc3A47EFbD82Ed724a0E9A3D08D5A1A8e6586fd",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "10000",
"maxTimeoutSeconds": 120
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"game": "forza-horizon-5",
"q": "the witcher 3",
"region": "GB",
"steam": "1551360"
},
"type": "http"
},
"output": {
"example": {
"coverage": [
{
"from": "<date>",
"store": "<store>",
"to": "<date or null>"
}
],
"demand": {
"average_target_price": "<major units>",
"waiting": "<int>"
},
"family": {
"count": "<int>",
"members": [
{
"id": "<int>",
"slug": "<slug>",
"title": "<title>",
"type": "<type>"
}
],
"root_id": "<int>"
},
"game": {
"id": "<int>",
"released_at": "<ISO-8601 date or null>",
"slug": "<stable public identifier>",
"title": "<game title>",
"type": "main_game | dlc | expansion | edition"
},
"prices": [
{
"currency": "<ISO-4217>",
"lowest_observed": "<major units or null>",
"pct_above_lowest_observed": "<number or null>",
"price": "<major units or null>",
"region": "US | GB | DE | BR",
"status": "ok | free_promo | free_to_play | not_sold_here | unreleased",
"store": "steam | epic | gog | microsoft"
}
],
"region": "US",
"subscriptions": [
{
"available": "<bool>",
"service": "Game Pass | EA Play"
}
]
},
"type": "json"
}
},
"routeTemplate": "/v1/game",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"game": {
"description": "Soren slug, from /v1/lookup.",
"examples": [
"forza-horizon-5"
],
"type": "string"
},
"q": {
"description": "Free-text game name. Use /v1/lookup first for an exact slug.",
"examples": [
"the witcher 3"
],
"type": "string"
},
"region": {
"description": "Pricing region: US, GB, DE or BR. Defaults to US.",
"examples": [
"GB"
],
"type": "string"
},
"steam": {
"description": "Steam appid.",
"examples": [
"1551360"
],
"type": "string"
}
},
"required": [],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
}
}
}
}
}Use it
curl
curl "https://soren.com/v1/game" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://soren.com/v1/game");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://soren.com/v1/game")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/9069.json, and this resource appears in /discovery/resources and /discovery/search.