ScavioScavio
Pricing
Tools
Sign InsGet Startedg
Blog
Nintendo11 min readNov 15, 2026

How to Get Nintendo eShop Prices by Country With an API (Regular Price, Sale Price and Sale End Date for Switch and Switch 2 Games)

Find a Switch game's eShop id per region, then price up to 50 games per country with Scavio's prices endpoint: regular price, sale price, sale window, 1 credit.

Scavio Team

Nov 15, 2026

Try the Nintendo eShop API free
scavio
Eshop / Games
Nintendo

To get Nintendo eShop prices by country, find the game's item id for each eShop region with Scavio's search or product endpoint, then call POST /api/v1/nintendo/prices with up to 50 ids and one country. It returns each game's price now, regular price, sale price, discount and the sale's start and end dates in that country's currency, for 1 credit a call, in any of 46 eShop countries. 50 games in 43 countries is 43 credits, $0.043 on the Growth plan.

A Nintendo eShop price depends on three things: the game, the country and the day. Nintendo sells each game in dozens of country eShops with their own currency and sale windows, and it shows no price history, so anyone tracking prices has to read every country and keep the readings. Nintendo publishes no public API for this; the Nintendo Developer Portal is for making games. Every response below is a trimmed capture from Scavio's Nintendo eShop API on November 15, 2026, between 10:00 and 10:31 UTC. Prices are numbers in the country's currency: 99.99 with "currency": "CAD" is C$99.99. Images are cut from every sample.

Step 1: Find the game's id in Europe and Japan

eShop item ids, called nsuids, are per region. Europe's catalog search returns them directly:

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "zelda", "country": "gb", "page_size": 50}'

The UK eShop returned 10 games. Tears of the Kingdom:

JSON
{
  "query": "zelda",
  "sort": "relevance",
  "country": "gb",
  "language": "en",
  "currency": "GBP",
  "region": "europe",
  "count": 10,
  "total": 10,
  "page": 1,
  "page_size": 50,
  "total_pages": 1,
  "items": [
    {
      "nsuid": "70010000063715",
      "page_id": "1576884",
      "title": "The Legend of Zelda: Tears of the Kingdom",
      "url": "https://www.nintendo.com/en-gb/Games/Nintendo-Switch-games/The-Legend-of-Zelda-Tears-of-the-Kingdom-1576884.html",
      "platform": "switch",
      "release_date": "2023-05-12",
      "publisher": "Nintendo",
      "price": 59.99,
      "regular_price": 59.99,
      "sale_price": null,
      "discount_percent": null,
      "sale_start": null,
      "sale_end": null,
      "currency": "GBP",
      "is_free": false,
      "sales_status": "onsale",
      "type": "game",
      "age_rating": { "system": "PEGI", "rating": "12", "label": "PEGI 12" }
    }
  ]
}

The European id works in every country of the region: the EU and EFTA eShops, the UK, Australia, New Zealand, South Africa and Israel. Search takes page_size up to 50, six sorts in Europe (relevance, newest, price up or down, title, discount) and filters for platform (switch or switch_2), on_sale, price range, genre, players, publisher, has_demo and type. Japan works the same way, in Japanese: {"query": "ゼルダ", "country": "jp", "page_size": 50} returned 14 items, among them "ゼルダの伝説 ティアーズ オブ ザ キングダム" with "nsuid": "70010000063713", "price": 7900 and "currency": "JPY", age rating CERO B. 1 credit each.

Step 2: Find the game's id in the Americas

The Americas search returns Nintendo's store tiles, which carry a slug rather than an id:

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/search \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "mario", "country": "us"}'
JSON
{
  "query": "mario",
  "sort": "relevance",
  "country": "us",
  "currency": "USD",
  "region": "americas",
  "count": 40,
  "total": null,
  "page_size": 40,
  "has_more": true,
  "items": [
    {
      "nsuid": null,
      "slug": "mario-kart-world-switch-2",
      "title": "Mario Kart™ World",
      "platform": "switch_2",
      "release_date": "2025-06-05",
      "price": 79.99,
      "regular_price": 79.99,
      "sale_price": null,
      "currency": "USD",
      "badges": [],
      "type": "game",
      "category": "Games"
    }
  ]
}

Americas pages hold 40 tiles, games, hardware and merchandise together, sorted by relevance or newest, with has_more instead of a total. It took 9 to 18 seconds per page in our run, so set a long timeout. Pass the slug to product to get the id:

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/product \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug": "mario-kart-world-switch-2", "country": "us"}'
JSON
{
  "product": {
    "nsuid": "70010000095431",
    "sku": "7100095431",
    "title": "Mario Kart™ World",
    "slug": "mario-kart-world-switch-2",
    "platform": "switch_2",
    "type": "game",
    "release_date": "2025-06-05",
    "publisher": "Nintendo",
    "developer": "Nintendo",
    "genres": ["Party", "Racing"],
    "players": { "system": { "min": 1, "max": 4, "label": "4+" }, "online": { "min": 2, "max": 24, "label": "4+" } },
    "file_size_bytes": 23845666816,
    "age_rating": { "system": "ESRB", "rating": "Everyone", "code": "e", "descriptors": ["Mild Fantasy Violence", "Users Interact"] },
    "price": 79.99,
    "regular_price": 79.99,
    "sale_price": null,
    "currency": "USD",
    "sale_start": null,
    "sale_end": null,
    "sales_status": "onsale",
    "has_demo": false,
    "nintendo_switch_online": { "required": false, "features": ["Online Play", "Save Data Cloud"] },
    "play_modes": ["TV mode", "Tabletop mode", "Handheld mode"]
  },
  "country": "us",
  "currency": "USD",
  "region": "americas"
}

Product also takes an nsuid or a nintendo.com url, and returns languages (18 for Mario Kart World), features, editions and, on the Americas store, the game's DLC. An id or slug the region does not know answers 404, which is charged. 1 credit. For our 50-game set, every Americas game took one product call, and Europe and Japan took 23 searches each. We did not find 5 of the 50 in Japan's catalog, so they have no Japanese price in our data.

The same game, three ids:

GameAmericasEurope, AU, NZ, ZA, ILJapan
The Legend of Zelda: Tears of the Kingdom700100000637147001000006371570010000063713
Mario Kart World700100000954317001000009680270010000092842
Donkey Kong Bananza700100000968097001000009681070010000096306

Step 3: Price up to 50 games in one country

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/prices \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids": ["70010000095431", "70010000063714", "70010000006442"], "country": "ca"}'

Mario Kart World, Tears of the Kingdom and Celeste in the Canadian eShop:

JSON
{
  "prices": [
    {
      "nsuid": "70010000095431",
      "sales_status": "onsale",
      "price": 109.99,
      "regular_price": 109.99,
      "sale_price": null,
      "discount_percent": null,
      "sale_start": null,
      "sale_end": null,
      "currency": "CAD",
      "is_free": false
    },
    {
      "nsuid": "70010000063714",
      "sales_status": "onsale",
      "price": 99.99,
      "regular_price": 99.99,
      "sale_price": null,
      "discount_percent": null,
      "sale_start": null,
      "sale_end": null,
      "currency": "CAD",
      "is_free": false
    },
    {
      "nsuid": "70010000006442",
      "sales_status": "onsale",
      "price": 6.12,
      "regular_price": 24.51,
      "sale_price": 6.12,
      "discount_percent": 75,
      "sale_start": "2026-11-09T00:00:00Z",
      "sale_end": "2026-11-30T23:59:59Z",
      "currency": "CAD",
      "is_free": false
    }
  ],
  "not_found": [],
  "count": 3,
  "country": "ca",
  "language": "en",
  "currency": "CAD",
  "region": "americas"
}

ids takes 1 to 50 ids as a list or a comma-separated string; more than 50 answers 400. Each call prices one country, in that country's currency. Ids the eShop does not sell come back in not_found, and sales_status reads onsale, preorder, unreleased or not_found; a free game is 0 with is_free: true. The call answered in 2.4 seconds. 1 credit, whether you send 1 id or 50.

Step 4: Read the sale price and the sale end date

Celeste above is the sale case: price is what it costs now (C$6.12), regular_price what it costs outside the sale (C$24.51), discount_percent 75, and sale_start / sale_end the eShop's own window in UTC, November 9 to November 30, 2026. The US answer for the same id was $4.99 from $19.99 with the same dates. When nothing is discounted, the sale fields are null and price equals regular_price.

Store regular_price and sale_price separately. A tracker that keeps only price cannot tell a sale from a price change, and Nintendo shows no price history or historical low, so your stored readings are the history.

Step 5: Price the game in every country of its region

One call per country, with the region's id:

Python
import requests

API = "https://api.scavio.dev/api/v1/nintendo"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
REGIONS = {
    "americas": ("70010000063714", ["us", "ca", "mx", "br", "ar", "cl", "co", "pe"]),
    "europe": ("70010000063715", ["gb", "ie", "de", "at", "ch", "fr", "be", "nl", "lu", "it",
                                  "es", "pt", "au", "nz", "za", "pl", "cz", "se", "no", "dk",
                                  "fi", "sk", "hu", "ro", "bg", "gr", "hr", "si", "ee", "lv",
                                  "lt", "mt", "cy", "il"]),
    "japan": ("70010000063713", ["jp"]),
}
for region, (nsuid, countries) in REGIONS.items():
    for c in countries:  # one request at a time, 1 credit each
        d = requests.post(f"{API}/prices", headers=HEADERS, timeout=120,
                          json={"ids": [nsuid], "country": c}).json()["data"]
        for p in d["prices"]:
            print(region, c, p["currency"], p["regular_price"], p["sale_price"], p["sale_end"])

That is 43 credits for one game, and still 43 for 50 games, because each call takes 50 ids. Tears of the Kingdom on November 15, with US dollars at the ECB rates of November 13:

eShopRegular priceIn USD
Japan¥7,900$49.38
New ZealandNZ$99.95$55.29
AustraliaA$89.95$61.03
BrazilR$389.90$68.84
United States$69.99$69.99
CanadaC$99.99$70.13
Poland289.80 zł$72.61
Germany and the other euro eShops€69.99$77.35
MexicoMX$1,449$77.93
South AfricaR1,329$78.34
United Kingdom£59.99$79.35
Norway769 kr$80.41
SwitzerlandCHF 69.90$83.37

Korea, Hong Kong and Taiwan are prices-only countries with their own ids, which the search endpoints do not return; if you have those ids, the same call prices them in KRW, HKD and TWD.

Step 6: Convert with one dated exchange rate

The API never converts. To compare countries, pick one dated reference rate and say which: we used the ECB euro reference rates of November 13, 2026, the latest on November 15:

Python
import re, urllib.request

xml = urllib.request.urlopen("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml").read().decode()
date = re.search(r"time='([\d-]+)'", xml).group(1)
per_eur = {c: float(r) for c, r in re.findall(r"currency='(\w+)' rate='([\d.]+)'", xml)}
per_eur["EUR"] = 1.0

def to_usd(amount, currency):
    return amount / per_eur[currency] * per_eur["USD"]

print(date, round(to_usd(99.99, "CAD"), 2))  # 2026-11-13 70.13

The ECB publishes no rate for the Argentine, Chilean, Colombian or Peruvian peso or sol, so leave those four eShops out of a dollar comparison or take their rates from another dated source. Prices are as each eShop lists them: European, UK and Australian prices include VAT or GST, US and Canadian prices exclude sales tax.

Step 7: List the games on sale

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/deals \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"country": "gb", "page_size": 5, "sort": "discount", "platform": "switch_2"}'

In Europe and Japan, deals is every discounted game in that eShop: 95 Switch 2 games in the UK, led by:

JSON
{
  "nsuid": "70010000112478",
  "page_id": "3016562",
  "title": "FINAL FANTASY VII REBIRTH",
  "platform": "switch_2",
  "release_date": "2026-06-03",
  "publisher": "SQUARE ENIX",
  "price": 7.49,
  "regular_price": 49.99,
  "sale_price": 7.49,
  "discount_percent": 85,
  "sale_start": "2026-11-02T14:00:00Z",
  "sale_end": "2026-11-16T23:59:59Z",
  "currency": "GBP",
  "sales_status": "onsale",
  "on_sale": true
}

In the Americas, deals is Nintendo's featured sale pages, not every discounted game. {"country": "us", "page_size": 5} returned 103 games across the sale pages listed in sales (Best sellers, Aksys Games, Lost Pilgrims, Square Enix, Top Hat Studios), each item with the sale it belongs to; pass a sale's slug as sale to read one page, sorted by featured, discount, price_asc, newest or ending_soon. The first, Q Collection, was $20.99 instead of $29.99 until 2026-11-19T07:59:59Z. To know whether a particular game is discounted, check its id with prices. 1 credit.

Step 8: Read a game's DLC and new releases

Bash
curl -s https://api.scavio.dev/api/v1/nintendo/dlc \
  -H "Authorization: Bearer $SCAVIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug": "donkey-kong-bananza-switch-2", "country": "us"}'
JSON
{
  "game": { "nsuid": "70010000096809", "title": "Donkey Kong™ Bananza" },
  "dlc": [
    {
      "nsuid": "70050000062442",
      "title": "Donkey Kong™ Bananza: DK Island & Emerald Rush",
      "type": "dlc",
      "release_date": "2025-09-12",
      "price": 19.99,
      "regular_price": 19.99,
      "sale_price": null,
      "currency": "USD",
      "sale_start": null,
      "sale_end": null,
      "sales_status": "onsale"
    }
  ],
  "count": 1,
  "country": "us",
  "region": "americas"
}

DLC returns a game's add-ons, bundles and upgrade packs (type dlc, bundle or upgrade) with their own ids, so you can price them in other countries of the region with prices. POST /api/v1/nintendo/releases lists new games newest first or, with "type": "upcoming", upcoming games soonest first; {"country": "gb", "type": "upcoming", "platform": "switch_2", "page_size": 5} returned 40 upcoming Switch 2 games, some already discounted as pre-orders. 1 credit each.

Step 9: Poll daily through the Black Friday sale

Nintendo of America's sale on select digital games runs from November 19 to December 2, 2026, at 11:59 p.m. PT. To know what was discounted, by how much and for how long in each country, store one row per game, country and day:

Python
import requests, datetime, json

API = "https://api.scavio.dev/api/v1/nintendo"
HEADERS = {"Authorization": "Bearer YOUR_SCAVIO_API_KEY"}
WATCH = {  # region: (ids, up to 50 per call; countries)
    "americas": (["70010000095431", "70010000063714", "70010000096809"], ["us", "ca", "mx", "br"]),
    "europe": (["70010000096802", "70010000063715", "70010000096810"], ["gb", "de", "fr", "au"]),
    "japan": (["70010000092842", "70010000063713", "70010000096306"], ["jp"]),
}

captured_at = datetime.datetime.now(datetime.timezone.utc).isoformat()
rows = []
for region, (ids, countries) in WATCH.items():
    for c in countries:
        for chunk in (ids[i:i + 50] for i in range(0, len(ids), 50)):
            d = requests.post(f"{API}/prices", headers=HEADERS, timeout=120,
                              json={"ids": chunk, "country": c}).json()["data"]
            for p in d["prices"]:
                rows.append({"game_id": p["nsuid"], "region": region, "country": c,
                             "currency": p["currency"], "captured_at": captured_at,
                             "regular_price": p["regular_price"], "sale_price": p["sale_price"],
                             "sale_start": p["sale_start"], "sale_end": p["sale_end"]})

with open(f"eshop-prices-{captured_at[:10]}.json", "w") as f:
    json.dump(rows, f, ensure_ascii=False)

The cost is calls, not games: each country costs 1 credit per 50 ids. 1,000 games in one country is 20 credits a day; in all 43 eShops of the Americas, Europe and Japan it is 860 credits a day, $0.86 at the Growth rate of $1 per 1,000 credits, and 12,040 credits for the 14 days of the US sale. The 50 games in our cross-country comparison in all 43 eShops are 43 credits a day. Retry a 502 or 503 after a pause; failed calls are not charged, and an id an eShop does not sell costs nothing extra, because it rides in the same call.

Every Nintendo eShop endpoint

EndpointWhat it returnsCreditsCost per 1,000 calls on Growth
/api/v1/nintendo/pricesUp to 50 ids in one of 46 countries: price, regular, sale, discount, sale start and end1$1.00
/api/v1/nintendo/searchThe catalog of 42 markets: ids (slugs in the Americas), titles, prices, sorts and filters1$1.00
/api/v1/nintendo/productOne game by id, link or slug: details, age rating, price and sale window1$1.00
/api/v1/nintendo/dealsGames on sale: all of them in Europe and Japan, featured sale pages in the Americas1$1.00
/api/v1/nintendo/releasesNew or upcoming games, by Switch or Switch 21$1.00
/api/v1/nintendo/dlcA game's DLC, bundles and upgrade packs with prices1$1.00

Failed upstream calls are not charged; a not-found product is charged. A country outside an endpoint's list answers 400 before anything is charged: Korea, Hong Kong, Taiwan and Israel are prices-only, and the Philippines and Russia are not served.

What about an official Nintendo eShop API?

There is none to sign up for. The Nintendo Developer Portal says "Let us help you make your next great game!" and lets registered developers self-publish on the eShop "with the price and release date entirely up to you"; it offers no store data. Nintendo's own sites show prices to shoppers, the free trackers (Deku Deals, eShop-Prices) show them to people, and the open-source wrappers depend on endpoints Nintendo does not document. The best Nintendo eShop regional price APIs compares the seven data options with prices checked on November 15, 2026.

Getting started

  1. Create a Scavio account: 50 free credits, no card, enough to price 50 games in every eShop of the Americas, Europe and Japan once.
  2. Find each game's id per region with search (Europe, Japan) or product (the Americas).
  3. Price them with one prices call per country, up to 50 ids each.
  4. Store regular_price, sale_price, sale_start and sale_end with the date of each reading.
  5. Try any call first in the playground.

Reference: Nintendo eShop API overview · prices docs · search docs · product docs · deals docs · DLC docs · the best Nintendo eShop regional price APIs · are Switch games more expensive in Canada? · how to get IKEA prices by country · how to get TCGplayer price history

Frequently asked questions

Does Nintendo have a public eShop API?

No. Nintendo publishes no public API for eShop prices or catalog data; the Nintendo Developer Portal is for building and publishing games. Scavio's Nintendo eShop API returns prices by country with sale dates, search, game pages, deals, releases and DLC as JSON, 1 credit a call.

Is a Nintendo eShop item id the same in every country?

No. Item ids (nsuids) are per eShop region: one for the Americas, one for Europe (which also covers Australia, New Zealand, South Africa and Israel), one for Japan, and others for Korea and for Hong Kong and Taiwan. The Legend of Zelda: Tears of the Kingdom is 70010000063714 in the Americas, 70010000063715 in Europe and 70010000063713 in Japan. An id from one region comes back as not_found in another.

Which Nintendo eShop is cheapest?

Of the 39 eShops we compared in US dollars on November 15, 2026, at the ECB rates of November 13, Japan was the cheapest for 35 of 50 games and Switzerland the dearest for 40. Tears of the Kingdom cost ¥7,900 ($49.38) in Japan, $69.99 in the US and CHF 69.90 ($83.37) in Switzerland. Nintendo's account terms tie purchases to the account's country, so treat this as price research.

When does the Nintendo eShop Black Friday sale end in 2026?

Nintendo of America's sale on select digital games runs from November 19 through December 2, 2026, ending at 11:59 p.m. PT. Each discounted game's own window is in the eShop's sale_start and sale_end fields, per country, so read those rather than assuming one date for every game.

Do Nintendo's terms allow automated price collection?

Nintendo of America's website terms ask users not to use robots, crawlers, scrapers or other automated means to access its websites to copy or extract data, and to get written consent before building third-party apps that interact with its services. This is not legal advice; read the current terms for your use case.

Nintendo eShop prices by country

  • Up to 50 games per country in one call
  • Sale price, discount, sale start and sale end
  • Search, game pages, deals, releases and DLC, 1 credit each
Try the Nintendo eShop API free

50 free credits, no credit card

On this page

  1. Step 1: Find the game's id in Europe and Japan
  2. Step 2: Find the game's id in the Americas
  3. Step 3: Price up to 50 games in one country
  4. Step 4: Read the sale price and the sale end date

Related articles

View all
  • scavio
    Eshop / Games
    Nintendo
    Are Switch Games More Expensive in Canada? Not After the Exchange Rate: We Priced 50 Games, and 33 of 34 Nintendo Titles Matched the US Price Within 1%
  • scavio
    Eshop / Games
    Nintendo
    7 Best Nintendo eShop Regional Price APIs in 2026: Scavio Priced 50 Switch Games in 39 eShops, and the Median Game Cost 73% More in Its Dearest eShop Than Its Cheapest
ScavioScavio

One scraper API for every social, search, e-commerce and real estate platform. Built for AI agents.

Product

  • Features
  • Pricing
  • Dashboard
  • Affiliates

Developers

  • Documentation
  • API Reference
  • Quickstart
  • MCP Integration
  • Python SDK

Alternatives

  • Tavily Alternative
  • SerpAPI Alternative
  • Firecrawl Alternative
  • Exa Alternative
  • Serper Alternative
  • Tavily vs Scavio
  • SerpAPI vs Scavio
  • All alternatives
  • Compare Scavio vs alternatives

Search APIs

  • Google Search API
  • Amazon Product API
  • YouTube API
  • Reddit API
  • Walmart Product API
  • TikTok API
  • Instagram API

Tools

  • All Tools

Ask AI about Scavio

© 2026 Scavio. All rights reserved.

Featured on TAAFT
Terms of ServicePrivacy Policy