Microsoft Store API
GET /api/v2/account, GET /api/v2/account/usage and PUT /api/v2/account/regions — see the v2 reference.
Apply for API access → 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 ®ion=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
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
Indie
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
Pro
For production apps and growing traffic.
- Everything in Indie
- 20 regions
- 100,000 requests / month
- Up to 100 games per list request
- Priority email support
Business
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
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.
| Endpoint | What it returns |
|---|---|
| GET /games | Filterable, 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/search | Search games by name — ?q=Resident+Evil+4. |
| GET /games/batch | Fetch many games at once by id (?ppids= / ?psnids=) — refresh a whole wishlist or cart in one request. |
| GET /games/{ppid}/price-historypaid | Full price history for a game (last 3 months on Indie/Pro, 12 on Business). |
| GET /deals | Recently-discounted games, with the full /games filter set layered on a tunable “dropped recently” window. |
| GET /sales | Every active sale campaign (e.g. “Spring Sale”) for a region. |
| GET /sales/{id} | All games & DLC inside one sale campaign. |
| GET /regions, /genres, /platforms | Discover 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?
Where can I see my usage and manage my key?
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?
How are requests counted?
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?
Do I need to credit XBXprices?
Does the API include achievement guides and review scores?
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.

