Xbox game
A game (or several) in any market: title, developer, publisher, description, release date, categories, platforms, capabilities (multiplayer, 4K, cross-save ...), Xbox Series and Play Anywhere flags, age ratings, user ratings (all time, 30 and 7 days), price, list price, sale end, editions, images and trailers. Each game also has system_requirements (PC minimum and recommended processor, graphics and hardware codes) where the store lists them. Opt-in include (one id only): reviews adds rating_breakdown (average, total and 5..1 star counts) and the top 10 user reviews (rating, title, text, date, gamertag, device, helpful votes, publisher response); gamepass adds game_pass (whether the console, PC, EA Play and cloud Game Pass catalogues carry the game in this market).
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
id | string | Store product id (12 characters, in the xbox.com link), or up to 20 separated by commas. Example: 9PP5G1F0C2B6 |
url | string | Instead of id: an xbox.com store link. |
market | string | Store country, two letters (default US). Example: US |
language | string | Language of the texts, e.g. en-US, de-DE, ja-JP (default en-<market>). |
include | string | Comma separated extras for one game: reviews, gamepass. |
review_sort | helpful | newest | With include=reviews: helpful (default) or newest. |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/xbox/v1/game?id=9PP5G1F0C2B6" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/xbox/v1/game",
params={"id": "9PP5G1F0C2B6"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/xbox/v1/game");
url.searchParams.set("id", "9PP5G1F0C2B6");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).