eShop Game Price API
GET /api/v2/account, GET /api/v2/account/usage and PUT /api/v2/account/regions — see the v2 reference.
Open developer dashboard →
/api.php), which is now deprecated. It will be retired on 1 December 2026 — you have a 6-month window to migrate. It still works today, but all new integrations should use the modern v2 REST API — header auth, filtering, pagination, price history and unified game cards. → Go to the v2 reference.
The NTPrices eShop API gives developers programmatic access to eShop game data in clean, easy-to-use JSON: current Switch & Switch 2 prices, full price history, and live sales and discounts – across 50 eShop regions. It returns exactly the same data shown throughout NTPrices, so it is always kept up to date.
- eShop price API
- Switch & Switch 2 prices
- Price history
- Sales & discounts
- Release dates
- 50 regions
- JSON
What the eShop API provides
Full price historyUnique
Every price change we’ve recorded for a title – track the lowest-ever price and spot genuine deals, data general price APIs don’t expose.
Live & historical pricing
Base and sale 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.
50 regions
Add ®ion=GB (any ISO 2-letter code) for that country’s pricing and release date.
Rich metadata
Genres, audio/subtitle languages, ratings, download sizes, screenshots and the OpenCriticID for review data.
Flexible lookups
Find a product by ppid, official nsuid (eShop NSUID; legacy psnid still accepted), or fuzzy name search.
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 current apiLimit and apiUsage. 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
- Switch & Switch 2 game data
- 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 50 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 ntprices.com to get around those limits. Plans where attribution is required must show “Powered by NTPrices” 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. Email us for a key · 2. Make a GET request · 3. Read JSON. That’s it – no SDK required.
To get your key, send us a short note about your project at [email protected]. The full reference for every endpoint and field is below.
# A game's price & metadata (US store) curl "https://ntprices.com/api.php?key=$PP_KEY&ppid=7704®ion=us" # Everything discounted in the UK in the last 48 hours curl "https://ntprices.com/api.php?key=$PP_KEY&discount=1®ion=GB"
API v2 (REST) is the recommended interface — header auth, filtering, pagination, price history and unified game cards. → Read the v2 reference. The v1 endpoint documented below is deprecated and will be retired on 1 December 2026.
How do I get Information About a Single Game or Product?
The API is accessed simply via a GET request (i.e., a standard web request), and the data is returned in JSON format. For example, accessing the URL https://ntprices.com/api.php?key=<API key>&ppid=7704, where <API key> is your API key, gives information like the following:
Example response — ppid=7704 (single game)
{
"PPID":"7704",
"NSUID":"70010000012345",
"GameID":"HAC_AABCD",
"NTPricesURL":"https://ntprices.com/en-us/game/7704-hollow-knight",
"ProductName":"Hollow Knight",
"GameName":"Hollow Knight",
"Publisher":"Team Cherry",
"Developer":"Team Cherry",
"ReleaseDate":"2018-06-12",
"Desc":"Forge your own path in Hollow Knight! An epic action adventure through a vast ruined kingdom of insects and heroes. Explore twisting caverns, battle tainted creatures and befriend bizarre bugs, all in a classic, hand-drawn 2D style.",
"IsSwitch":"1",
"IsSwitch2":"0",
"IsDLC":"0",
"IsDemoOrSoundtrack":"0",
"SwitchSize":"924000000",
"Switch2Size":"0",
"OnlinePlay":"0",
"OfflinePlayers":"1",
"OnlinePlayers":"0",
"VoiceLang":"",
"SubtitleLang":"",
"Rating":"ESRB Everyone 10+",
"RatingDesc":"[\"Fantasy Violence\",\"Mild Blood\"]",
"OpenCriticID":"3190",
"MetacriticURL":"",
"Img":"https://imgcdn.platprices.com/prod_img/7704_340.webp",
"CoverArt":"https://imgcdn.platprices.com/gametiles/HAC_AABCD_512.webp",
"LogoImg":"",
"Screenshot1":"",
"PreviewVideo":"",
"GenreAction":"1",
"GenreAdventure":"1",
"GenreArcade":"0",
"GenreFighting":"0",
"GenreFPS":"0",
"GenreHorror":"0",
"GenreIntStory":"0",
"GenreMMO":"0",
"GenreMusic":"0",
"GenrePlatformer":"1",
"GenrePuzzle":"0",
"GenreRacing":"0",
"GenreRPG":"0",
"GenreSimulation":"0",
"GenreSports":"0",
"GenreStrategy":"0",
"GenreTPS":"0",
"Region":"US",
"BasePrice":"1499",
"SalePrice":"749",
"formattedBasePrice":"$14.99",
"formattedSalePrice":"$7.49",
"DiscPerc":"50",
"LastDiscounted":"2021-02-10 09:11:04",
"DiscountedUntil":"2021-02-25 07:59:00",
"apiLimit":"100",
"apiUsage":"15",
"error":0,
"errorDesc":""
}
How do I specify which product or game I want information for?
To tell the API which game or product you would like information about, specify exactly one of the following three parameters in the URL querystring:
ppid: The "NTPrices ID" of the product. This ID number can be found in the URL of every product page on NTPrices. For example, since the NTPrices page for Hollow Knight is https://ntprices.com/en-us/game/7704-hollow-knight, we see that itsppidis 7704, which is why we specifiedppid=7704in our first example above.nsuid: The eShop product ID (NSUID) of the product — the per-region store SKU. For example, accessing the API urlhttps://ntprices.com/api.php?key=<API key>&nsuid=70010000012345returns the exact same information as our first example above. (The legacypsnidparameter still works as a deprecated alias.)name: The name of the game or product. If this is provided, the API will return information about the most relevant product that it finds in the database. For example, the API URLhttps://ntprices.com/api.php?key=<API key>&name=Hollow Knightwill return information about Hollow Knight. The game/product name does not need to be an exact match, but the lookup algorithm is also not perfect, so better-formatted names are more likely to return the product you are actually interested in. An error will be returned if no product with a similar name can be found.
region parameter, which takes a 2-letter country code. By default the region is "US", but if you specify another region then pricing information and the release date will be returned for that region. For example, the url https://ntprices.com/api.php?key=<API key>&name=Hollow Knight®ion=GB returns the same data as in our first example above, but with the release date and pricing information corresponding to the United Kingdom instead of the United States.
What do the values returned by the API mean?
For the most part, the values returned by the API should be self-explanatory. However, we clarify some of them here:
IsVR: "0" means VR not supported, "1" means VR is optional, "2" means VR is requiredSwitchSizeandSwitch2Size: the download size, in bytes, of the productOnlinePlay: "0" means the game is offline-only, "1" means online and offline modes are supported, "2" means the game is online-onlyVoiceLang: a JSON array like["en","es"]of language codes specifying the supported voice languages in the gameSubtitleLang: a JSON array like["en","es"]of language codes specifying the supported subtitle languages in the gameOpenCriticID: the numeric ID of this game on OpenCritic, which can be used to look up game and review information from the (also free) OpenCritic API via URLs likehttps://api.opencritic.com/api/game/1520MetacriticURL: the Metacritic URL of this game, which is only provided if the game does not have an OpenCritic entryDiscPerc: the current discount percentageLastDiscounted: the last time (in UTC) that we noticed this product go on sale – this might not be the exact time that it actually went on saleerror: 0 if successfully returned product information, a bigger-than-zero number if an error was encountered
How Can I Get a List of Games That Recently Went on Sale?
There are a couple of different ways to do this. The simplest is to specify discount=1 in the URL querystring (instead of the other parameters discussed above), which returns a list of all games that had new discounts applied within the past 48 hours. For example, accessing the URL https://ntprices.com/api.php?key=<API key>&discount=1, where <API key> is your API key, gives a list of products in the following format:
Example response — discount=1 (recent discounts)
{
"discounts":[
{
"PPID":"35552",
"Name":"Hollow Knight",
"NTPricesURL":"https://ntprices.com/en-us/game/35552-hollow-knight",
"LastDiscounted":"2021-02-15 08:10:05",
"DiscountedUntil":"2021-02-24 07:59:00",
"BasePrice":"1499",
"SalePrice":"749",
"formattedBasePrice":"$14.99",
"formattedSalePrice":"$7.49",
"IsSwitch":"1",
"IsSwitch2":"0"
},
{
"PPID":"35551",
"Name":"Celeste",
"NTPricesURL":"https://ntprices.com/en-us/game/35551-celeste",
"LastDiscounted":"2021-02-15 08:10:05",
"DiscountedUntil":"2021-02-24 07:59:00",
"BasePrice":"1999",
"SalePrice":"999",
"formattedBasePrice":"$19.99",
"formattedSalePrice":"$9.99",
"IsSwitch":"1",
"IsSwitch2":"0"
},
{
"PPID":"35550",
"Name":"Stardew Valley",
"NTPricesURL":"https://ntprices.com/en-us/game/35550-stardew-valley",
"LastDiscounted":"2021-02-15 08:10:04",
"DiscountedUntil":"2021-02-24 07:59:00",
"BasePrice":"1499",
"SalePrice":"1049",
"formattedBasePrice":"$14.99",
"formattedSalePrice":"$10.49",
"IsSwitch":"1",
"IsSwitch2":"0"
}
],
"error":0,
"errorDesc":"",
"apiLimit":"100",
"apiUsage":"13"
}
Each game's PPID is provided so that additional information about it can be obtained via another API query, if desired.
Optionally, you may also specify a region parameter, which takes a 2-letter country code. By default the region is "US", but if you specify another region then pricing and discount information will be returned for that region. For example, the url https://ntprices.com/api.php?key=<API key>&discount=1®ion=GB returns the discounts that went live in the United Kingdom region of the eShop in the last 48 hours.
How Can I Get Information About All Active Sales?
You can get a list of all active sales (i.e., the sales marked "Active" on this page) by specifying sales=1 in the URL querystring (instead of the other parameters discussed above). This will return information like the following:
Example response —
sales=1 (active sales)
{
"sales":[
{
"ID":"441",
"SaleTime":"2021-02-17 08:11:44",
"SaleEnd":"2021-03-04 07:59:00",
"NumGames":"437",
"ImgURL":"https://imgcdn.platprices.com/sales/441.jpg",
"SaleName":"Double Discounts sale"
},
{
"ID":"398",
"SaleTime":"2021-02-10 02:29:07",
"SaleEnd":"2021-02-25 07:59:00",
"NumGames":"212",
"ImgURL":"https://imgcdn.platprices.com/sales/398.jpg",
"SaleName":"Big in Japan Sale"
}
],
"error":0,
"errorDesc":"",
"apiLimit":"100",
"apiUsage":"1"
}
As with all of the API calls, the times returned here are in UTC. Also, the region parameter can be specified here as well to learn about sales in countries other than the US. The sales are always returned in order from newest to oldest. The sale IDs that are returned here can be used to look up all games that were discounted as part of that sale (see below).
How Can I Get A List of Games That Were Part of a Particular Sale?
After getting a sale's ID (either from the API call above with sales=1, or by looking at the URL of its sale table page, you can get a list of games and DLC packages that were part of that sale by specifying sale=<sale_id>. For example, the API URL https://ntprices.com/api.php?key=<API key>&sale=441 will return information like the following:
Example response —
sale=441 (games & DLC in one sale)
{
"SaleName":"Double Discounts sale",
"SaleTime":"2021-02-17 08:11:44",
"SaleEnd":"2021-03-04 07:59:00",
"ImgURL":"https://imgcdn.platprices.com/sales/441.jpg",
"Region":"US",
"game_discounts":[
{
"PPID":"4081",
"Name":"2064: Read Only Memories",
"IsSwitch":"1",
"IsSwitch2":"0",
"LastDiscounted":"2021-02-17 08:11:05",
"DiscountedUntil":"2021-03-04 07:59:00",
"BasePrice":"1999",
"SalePrice":"399",
"formattedBasePrice":"$19.99",
"formattedSalePrice":"$3.99",
"NTPricesURL":"https://ntprices.com/en-us/game/4081-2064-read-only-memories"
},
{
"PPID":"6326",
"Name":"A Fisherman's Tale",
"IsSwitch":"1",
"IsSwitch2":"0",
"LastDiscounted":"2021-02-17 08:10:40",
"DiscountedUntil":"2021-03-04 07:59:00",
"BasePrice":"1499",
"SalePrice":"749",
"formattedBasePrice":"$14.99",
"formattedSalePrice":"$7.49",
"NTPricesURL":"https://ntprices.com/en-us/game/6326-a-fishermans-tale"
},
{
"PPID":"33870",
"Name":"A Fisherman's Tale - Deluxe Edition",
"IsSwitch":"1",
"IsSwitch2":"0",
"LastDiscounted":"2021-02-17 08:10:09",
"DiscountedUntil":"2021-03-04 07:59:00",
"BasePrice":"1999",
"SalePrice":"999",
"formattedBasePrice":"$19.99",
"formattedSalePrice":"$9.99",
"NTPricesURL":"https://ntprices.com/en-us/game/33870-a-fishermans-tale-deluxe-edition"
},
{
"PPID":"4690",
"Name":"Aces of the Luftwaffe - Squadron",
"IsSwitch":"1",
"IsSwitch2":"0",
"LastDiscounted":"2021-02-17 08:10:49",
"DiscountedUntil":"2021-03-04 07:59:00",
"BasePrice":"1499",
"SalePrice":"749",
"formattedBasePrice":"$14.99",
"formattedSalePrice":"$7.49",
"NTPricesURL":"https://ntprices.com/en-us/game/4690-aces-of-the-luftwaffe-squadron"
},
...
],
"dlc_discounts":[
{
"PPID":"27379",
"Name":"3on3 FreeStyle - 270 Fs Points",
"BasePrice":"2499",
"SalePrice":"2374",
"ParentGame":"3on3 Freestyle",
"formattedBasePrice":"$24.99",
"formattedSalePrice":"$23.74",
"NTPricesURL":"https://ntprices.com/en-us/game/27379-3on3-freestyle-270-fs-points"
},
{
"PPID":"27374",
"Name":"3on3 FreeStyle - 550 Fs Points",
"BasePrice":"4999",
"SalePrice":"4499",
"ParentGame":"3on3 Freestyle",
"formattedBasePrice":"$49.99",
"formattedSalePrice":"$44.99",
"NTPricesURL":"https://ntprices.com/en-us/game/27374-3on3-freestyle-550-fs-points"
},
...
"error":0,
"errorDesc":"",
"apiLimit":"100",
"apiUsage":"10"
}
Note that the region parameter is not needed here (even for regions other than the US), since sales in different regions have different sale IDs.
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?
apiUsage on every response (with your cap in apiLimit). The same monthly counter is shared across the v1 and v2 APIs.Can I use a competing service’s data, or build a price-alert site?
Do I need to credit NTPrices?
Does the API include 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.
