Nintendo API: List eShop deals
Lists discounted Nintendo Switch and Switch 2 games, sorted by biggest discount, lowest price or ending soonest. Covers the US, Canada and Latin American stores and excludes downloadable add-ons.
Unofficial. Not affiliated with or endorsed by Nintendo.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Sort optional
sort Deal order, for example lowest_price. Defaults to biggest_discount.
biggest_discount (default)
One of
biggest_discount,lowest_price,ending_soon.- Country optional
country Store country name or two-letter code, for example Canada. Defaults to United States.
United States (default)
- Platform optional
platform Console to show, for example switch_2. Defaults to all.
all (default)
One of
all,switch,switch_2.- Max Results optional
max_results Maximum games to return, for example 50. Defaults to 50.
50 (default)
Whole number from 1 to 200.
Input as JSON
{}Output
{ "deals": [ { "title": "Hentai Photo Collection 8 in 1", "currency": "USD", "platform": "Nintendo Switch", "sale_price": 3.99, "nintendo_link": "https://www.nintendo.com/us/store/products/hentai-photo-collection-8-in-1-switch/" , "sale_end_date": "2026-11-11", "original_price": 199.99, "discount_percent": 98 }, { "title": "AAA Games Ultimate Collection", "currency": "USD", "platform": "Nintendo Switch", "sale_price": 1.99, "nintendo_link": "https://www.nintendo.com/us/store/products/aaa-games-ultimate-collection-switch/" , "sale_end_date": "2026-10-31", "original_price": 79.99, "discount_percent": 98 }, { "title": "31 Full Games for Everyone", "currency": "USD", "platform": "Nintendo Switch", "sale_price": 2.99, "nintendo_link": "https://www.nintendo.com/us/store/products/31-full-games-for-everyone-switch/" , "sale_end_date": "2026-11-22", "original_price": 99.99, "discount_percent": 97 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nintendo.com/list_deals","input":{}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "nintendo.com/list_deals" , "input": {}})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "nintendo.com/list_deals" , "input": {} }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run nintendo.com/list_deals# with {}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "sort": { "enum": [ "biggest_discount", "lowest_price", "ending_soon" ], "type": "string", "default": "biggest_discount", "description": "Deal order, for example lowest_price. Defaults to biggest_discount." }, "country": { "type": "string", "default": "United States", "description": "Store country name or two-letter code, for example Canada. Defaults to United States." }, "platform": { "enum": [ "all", "switch", "switch_2" ], "type": "string", "default": "all", "description": "Console to show, for example switch_2. Defaults to all." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum games to return, for example 50. Defaults to 50." } }}Output schema
{ "type": "object", "required": [ "deals" ], "properties": { "deals": { "type": "array", "items": { "type": "object", "properties": { "title": { "type": "string" }, "currency": { "type": "string" }, "platform": { "type": "string" }, "sale_price": { "type": "number" }, "nintendo_link": { "type": "string" }, "sale_end_date": { "type": [ "string", "null" ] }, "original_price": { "type": "number" }, "discount_percent": { "type": "number" } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nintendo.com/list_deals- Returns
- title, platform, original and sale price, currency, discount percent, sale end date, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method nintendo.com/list_deals with the inputs above.
Ask your agent
- Show me the Switch 2 games on sale in Canada sorted by lowest price
- Which Nintendo Switch titles have the biggest discounts in the US store right now?
- List the deals ending soonest on Switch in Brazil, 25 results max
- Find discounted Switch 2 games in Mexico with the highest percent off
- What Switch games are on sale in the Canadian eShop, cheapest first, up to 100 results?
See more
All Nintendo methodsLooks up a Nintendo Switch or Switch 2 game by name or Nintendo link and returns its eShop price, sale, release date, publisher, rating, players, size and genres for the chosen country (US, Canada, UK, Mexico, Brazil, Argentina, Chile, Colombia or Peru).
nintendo.com/get_gameLists Xbox games currently on sale in a country, biggest discount first, with original and sale prices, sale end dates and Game Pass inclusion; console covers Xbox One and Xbox Series X|S. Reads the store's whole deals list and ranks it by discount.
xbox.com/list_dealsLists PlayStation Store games and game editions currently on sale in a country, with prices and sale end dates. Add-ons and subscription-only offers are excluded.
store.playstation.com/list_dealsFinds current official-store prices, the all-time low and live bundles for a PC game in the selected country.
isthereanydeal.com/get_best_priceLists Steam's top-selling, discounted, or new and trending games in store order, with prices for a chosen country, review summaries and release dates.
store.steampowered.com/list_top_sellersLists current public Today's Deals in page order for an Amazon store country, optionally for one deal category and a minimum discount, with deal and original prices, discount, deal type, time left, share claimed, rating and links.
amazon.com/list_dealsSearches community-posted Slickdeals deals by product or keyword, optionally limited to a store and hiding expired deals, ordered by relevance, newest or most popular.
slickdeals.net/search_dealsLists current and upcoming free games on the Epic Games Store for a country, with giveaway dates, usual price, publisher, cover image and store link.
store.epicgames.com/list_free_games