XBXprices
Deals All Regions Blog

Microsoft Store API

Already have a key? Your (sign in first) dashboard shows live monthly usage, a 30-day request history, your plan & expiry, and self-service region picking. Prefer no account at all? The same self-service works purely by API key: GET /api/v2/account, GET /api/v2/account/usage and PUT /api/v2/account/regions — see the v2 reference. Apply for API access →
This is the XBXprices REST API (v2). Header auth, filtering, pagination, price history and unified game cards — clean JSON across 47 Microsoft Store regions. Every endpoint, parameter, field and error code is documented in the → full v2 reference.

The XBXprices Microsoft Store API gives developers programmatic access to Xbox game data in clean, easy-to-use JSON: current Xbox Series X|S and Xbox One prices, full price history, live sales and discounts, and detailed achievement information – across 47 Microsoft Store regions. It returns exactly the same data shown throughout XBXprices, so it is always kept up to date.

  • Microsoft Store API
  • Xbox Series X|S & Xbox One prices
  • Price history
  • Sales & discounts
  • Achievement & Gamerscore data
  • 47 regions
  • JSON

What the Microsoft Store API provides

Achievement dataUnique

Achievement counts, Gamerscore, a difficulty rating, estimated hours to complete and links to popular achievement guides – data general price APIs don’t have.

Live & historical pricing

Base, sale and Game Pass prices with DiscPerc, in raw cents and a formatted string, plus when a title was last discounted.

Sales & discounts

Pull everything discounted in the last 48 hours, list every active store sale, or fetch a single sale’s full line-up.

47 regions

Add &region=GB (any ISO 2-letter code) for that country’s pricing and release date. The regions your key can query follow your plan — pick them on your dashboard or via PUT /api/v2/account/regions.

Rich metadata

Genres, audio/subtitle languages, ratings, download sizes, screenshots and the OpenCriticID for review data.

Flexible lookups

Fetch a game by its XBXprices id (/games/{ppid}), by its Xbox Store bigId (/games/by-psnid/{bigId}), or by fuzzy name (/games/search?q=).

Plans & Pricing

Start free with 1,000 requests a month – no card required. Upgrade any time as your usage grows; limits are counted per calendar month (UTC), and every response includes your live quota in the X-RateLimit-Remaining header and meta.rate_limit. List endpoints (/games, /deals) return up to your plan’s page size per request — 25 on Free, up to 200 on Business — so a single request can fetch many titles at once.

Free

$0 forever
1,000 req / mo

For evaluating the API and hobby projects.

  • Live prices & current sales
  • Achievement data (difficulty, time-to-100%)
  • 2 regions
  • 1,000 requests / month
  • Up to 25 games per list request
  • Clean JSON — no card required
  • Non-commercial use only
Get free key

Indie

$19/mo
20,000 req / mo

For indie devs and small sites.

  • Everything in Free
  • Commercial use allowed
  • Price history (last 3 months)
  • 5 regions
  • 20,000 requests / month
  • Up to 50 games per list request
  • Email support
Subscribe

Business

$149/mo
500,000 req / mo

For high-volume and commercial use.

  • Everything in Pro
  • Deep price history (12 months)
  • All 47 regions
  • 500,000 requests / month
  • Up to 200 games per list request
  • Priority support
Subscribe

Need more than 500,000 requests a month, a full multi-region mirror, or a custom price-history export? Talk to us – we’re happy to tailor a plan. After subscribing, your API key is emailed to you – see the welcome note for how to claim it.

API Terms of Use. Use the API in your apps, sites, dashboards, analytics and user-facing alerts. Commercial use requires a paid plan — the Free plan is for evaluation and non-commercial projects only. You may not use the API to build a directly competing price-tracking service, resell or redistribute the raw data, bulk-archive data beyond your plan’s limits and history window, or scrape platprices.com to get around those limits. Plans where attribution is required must show “Powered by XBXprices” with a link wherever the data is displayed publicly. Keys that violate these terms may be throttled or revoked. Questions about a use case? Just ask.

Quick Start

1. Apply for a key  ·  2. Send it in the X-API-Key header  ·  3. Read JSON. That’s it – no SDK required.

# A game's price & achievement data (US store)
curl -H "X-API-Key: $PP_KEY" "/api/v2/games/7704?region=us"

# Everything discounted in the UK in the last 48 hours, biggest first
curl -H "X-API-Key: $PP_KEY" "/api/v2/deals?region=gb&sort=discount&order=desc"

No key yet? Open the keyless /api/v2/demo straight in your browser to see the exact data shape. To get a key, fill in the short request form – tell us about your project and which data you need, and we’ll set you up (usually within 1–2 business days).

The full v2 reference documents every endpoint, query parameter, response field and error code, with copy-paste examples in curl, JavaScript, Python and PHP. → Read the v2 reference.

Core Endpoints

The v2 API is REST + JSON. The base URL is /api/v2, and every request carries your key in the X-API-Key header. These are the endpoints most integrations start with — the full reference documents every parameter and field for each.

EndpointWhat it returns
GET /gamesFilterable, paginated list of games with prices, discounts and achievement data. Filter by region, platform, genre, discount, price, release date, publisher and more.
GET /games/{ppid}A single game by its XBXprices ID (the number in every product-page URL). Add include_related=1 for its editions & DLC.
GET /games/by-psnid/{bigId}A single game by its Xbox Store bigId.
GET /games/searchSearch games by name — ?q=Resident+Evil+4.
GET /games/batchFetch many games at once by id (?ppids= / ?psnids=) — refresh a whole wishlist or cart in one request.
GET /games/{ppid}/price-historyFull price history for a game (last 3 months on Indie/Pro, 12 on Business).
GET /dealsRecently-discounted games, with the full /games filter set layered on a tunable “dropped recently” window.
GET /salesEvery active sale campaign (e.g. “Spring Sale”) for a region.
GET /sales/{id}All games & DLC inside one sale campaign.
GET /regions, /genres, /platformsDiscover the valid values for the region, genre and platform filters. Free (no quota).
GET /status, /account, /account/usage
PUT /account/regions
Manage your key by key alone — plan, quota, expiry, daily request history, and which store regions your key serves. Free (never consume a request).

What a response looks like

Every response uses the same envelope — a success flag, the data payload, a meta block (region, pagination, live quota) and an error object. A single game from GET /api/v2/games/7704?region=us looks like this (trimmed):

{
  "success": true,
  "data": {
    "PPID": 7704,
    "XboxAccountID": "9NKX70BBCDRN",
    "ProductName": "Forza Horizon 5 - Premium Edition",
    "region": "US",
    "IsXboxSeriesXS": 1,
    "IsXboxOne": 1,
    "IsDLC": 0,
    "BasePrice": 9999,
    "SalePrice": 4999,
    "GamePassPrice": 4999,
    "DiscPerc": 50,
    "formattedBasePrice": "$99.99",
    "formattedSalePrice": "$49.99",
    "formattedGamePassPrice": "$49.99",
    "LowestEverPrice": 4499,
    "Bronze": 24, "Silver": 12, "Gold": 3, "Platinum": 1,
    "Difficulty": 5,
    "HoursLow": 30, "HoursHigh": 60,
    "OpenCriticID": 11423,
    "XBXpricesURL": "/en-us/game/7704-forza-horizon-5-premium-edition"
  },
  "meta": {
    "region": "US",
    "rate_limit": { "limit": 20000, "used": 12, "remaining": 19988 },
    "response_ms": 9
  },
  "error": null
}

Prices are integers in the region’s minor units — pair each with its matching formatted… string for display. List endpoints return an array of these objects in data, with meta.pagination. See the full game-object reference for every field, and the error reference for the error.code values to branch on.

Developer FAQ

How do I get an API key?
Fill in the request form — tell us about your project, the site or app where the data will be used, and the plan you want. We review every request by hand and reply with your key, usually within 1–2 business days. Tip: fill in your developer profile first — it makes the request quicker.
Where can I see my usage and manage my key?
Two ways — pick whichever suits you. Via the API itself, by key alone (no website account needed): GET /api/v2/account returns your plan, quota, expiry and regions; GET /api/v2/account/usage the daily request history with a per-endpoint breakdown; and PUT /api/v2/account/regions changes which store regions your key serves (up to your plan’s limit, once per day). None of these consume a request, and every API response carries X-RateLimit-Remaining / X-RateLimit-Reset headers. Or in a UI: your developer dashboard shows the same data with a 30-day chart and a region picker.
What does the free plan include?
All endpoints, all achievement and pricing data, and 2 regions, with 1,000 requests a month and up to 25 results per list request. The paid plans add commercial-use rights, price history (last 3 months on Indie/Pro, 12 months on Business), more regions, larger page sizes, a higher monthly quota and support – see the table above.
How are requests counted?
Every successful API call counts as one request, no matter how many titles it returns. Your usage resets to zero on the 1st of each calendar month at 00:00 UTC. Every response carries your live usage in the X-RateLimit-Remaining header and meta.rate_limit; GET /api/v2/status and GET /api/v2/account report it for free (they never consume a request). The free self-service endpoints (/status, /account, /account/usage, /regions, /genres, /platforms) don’t count against your quota.
Can I use a competing service’s data, or build a price-alert site?
The API may not be used to power services that duplicate XBXprices’ core offering (for example, Xbox wishlist sale-alert sites). If you’re not sure whether your project qualifies, just ask – we’re friendly.
Do I need to credit XBXprices?
On the Free and Indie plans, please link back to XBXprices wherever the data is shown. The Pro and Business plans have no attribution requirement. On every plan, please cache results in your own database rather than re-requesting the same data.
Does the API include achievement guides and review scores?
Yes. Responses include achievement counts, Gamerscore, a difficulty rating, estimated hours to complete, links to achievement guides, and the OpenCriticID you can use with the free OpenCritic API for review data.

Still have a question? Email [email protected] and we’ll be glad to help.

We value your privacy. We use strictly-necessary cookies to run the site (sign-in, security). With your permission we also use analytics and advertising cookies to measure traffic and fund the site. You can accept all, reject non-essential, or choose per category. We use cookies for analytics & ads to measure traffic and fund the site; choose per category via Manage. See our Cookie & Privacy Policy.