Nintendo eShop Price & Sale Scraper (US, Canada, Japan) avatar

Nintendo eShop Price & Sale Scraper (US, Canada, Japan)

Pricing

from $1.04 / 1,000 game scrapeds

Go to Apify Store
Nintendo eShop Price & Sale Scraper (US, Canada, Japan)

Nintendo eShop Price & Sale Scraper (US, Canada, Japan)

Nintendo eShop scraper for sale and price-drop alerts: Switch and Switch 2 games, DLC and bundles from the US, Canada and Japan stores, one row per item with price now, regular price, sale price, percent off, sale end date, platform, publisher and store link.

Pricing

from $1.04 / 1,000 game scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Get the Nintendo eShop sale list for the United States, Canada and Japan as one flat table: every Switch and Switch 2 game, DLC and bundle that is on sale right now, with the price now, regular price, sale price, percent off and the date the sale ends, plus platform, publisher, release date and the store link. Run it on a schedule and diff the dataset for eShop sale and price-drop alerts: which games just went on sale, how deep the cut is, and how the same sale compares across USD, CAD and JPY.

No account, no API key, no login, no browser. It reads the same search services nintendo.com and nintendo.com/jp query from your browser.

Input

FieldNotes
regionsUS, CA, JP, any mix. All three by default. Each region is read on its own.
onSaleOnlytrue by default: only items the store has reduced right now (the US/Canada Deals list, Japan's sale flag). Set false for the full price list.
searchQueryOptional title or word (zelda, mario kart, ゼルダ). Japan matches romaji and Japanese alike. Empty = the whole list.
maxItemsItems to return per region (default 100, up to 50,000).
proxyConfigurationApify datacenter proxy by default.

Example input:

{
"regions": ["US", "CA", "JP"],
"onSaleOnly": true,
"maxItems": 5000
}

That returns every item on sale in all three regions: on 2026-10-18 it returned 12,304 rows (US 4,118, Canada 4,088, Japan 4,098) in about 35 seconds.

Output

One row per item and region. Prices are numbers in the region's currency: dollars and cents for USD/CAD, whole yen for JPY.

FieldNotes
region, currencyUS/USD, CA/CAD, JP/JPY.
query, positionYour search query (null without one) and the item's place in the order it was read for that region (1 is first).
nsuid, skuNintendo's eShop id for the item in that region, and the US/Canada SKU (null for Japan, which sends none). The same game has a different nsuid in each region.
title, url, image_urlAs the store shows them. url is the www.nintendo.com product page for US/Canada and the store-jp.nintendo.com page for Japan, built from the nsuid the way nintendo.com/jp builds it.
platformNintendo Switch or Nintendo Switch 2 (the US/Canada list has a handful of iOS/Android items too).
product_typegame, dlc (an add-on) or bundle.
publisher, developerAs sent. developer exists only in the US/Canada data and is often empty there.
release_dateYYYY-MM-DD as the store sends it. A far-future date such as 2027-12-31 is the store's own placeholder for "not announced".
genresGenre labels as printed (Japanese for Japan). Empty list when none.
priceThe price now, sale or not. 0.0 for a free item. Null for an item with no price yet.
regular_priceThe undiscounted price.
on_sale, sale_price, amount_off, percent_offWhether the item is reduced, its sale price, how much comes off and the store's percent (two decimals: 34.02; Japan's unrounded 19.999999999999996 becomes 20.0). All null when not on sale, never 0.
sale_start, sale_endThe sale window, ISO 8601 with offset: UTC for US/Canada (2026-10-29T23:59:59Z), Japan time for Japan (2026-12-02T23:59:59+09:00). Null when not on sale.
preorderTrue for an item that can be pre-ordered and is not out yet.

Example row (real values, 2026-10-18):

{
"region": "CA",
"currency": "CAD",
"query": null,
"position": 1,
"nsuid": "70010000009921",
"sku": "7100009921",
"title": "Undertale",
"url": "https://www.nintendo.com/en-ca/store/products/undertale-switch/",
"image_url": "https://assets.nintendo.com/image/fetch/q_auto/f_auto/https://atum-img-lp1.cdn.nintendo.net/i/c/0ef5d86e09a843aeb8ef19f1b3d11051_1024",
"platform": "Nintendo Switch",
"product_type": "game",
"publisher": "8-4",
"developer": "8-4, Ltd.",
"release_date": "2018-09-18",
"genres": ["Role playing"],
"price": 12.53,
"regular_price": 18.99,
"on_sale": true,
"sale_price": 12.53,
"amount_off": 6.46,
"percent_off": 34.02,
"sale_start": "2026-10-10T16:00:00Z",
"sale_end": "2026-11-01T15:59:59Z",
"preorder": false
}

Honest nulls

A field a region does not send is null, never 0 or "": Japan has no SKU and no developer; an item that is not on sale has null sale price, percent off and sale window; a coming-soon item has a null price. 0.0 in price means free, because the store says so.

Pricing

Pay per event:

  • $0.002 per run (actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing.
  • $0.00104 per item row written (game-scraped), i.e. $1.04 per 1,000 rows. A row that is not written is not charged.

A full daily sale list of all three regions (about 12,300 rows) costs about $12.80.

How it fetches, and its limits

US and Canada come from the Algolia index behind the nintendo.com store search, using the public search-only key nintendo.com ships to every visitor. Japan comes from search.nintendo.jp, the search behind nintendo.com/jp/software. A refusal (403, 429, 5xx), a 200 that is not the service's answer, or a dropped connection is treated as the address being blocked: the actor rotates to a fresh one and retries.

Things worth knowing, all measured on 2026-10-18:

  • Up to 1,000 items per region come in the store's own order (most popular first in the US and Canada). The US/Canada index serves at most 1,000 hits per query, so a larger maxItems reads the list in price slices of at most 1,000 each, cheapest first, until every item is read. A slice of one single price that still holds more than 1,000 items is split by platform, age rating, DLC flags and publisher; the run log reports any items that could still not be reached.
  • Items with no price are not part of a sweep. About 1,055 US items have no price yet (coming-soon games, add-ons not sold on their own). A price slice can never select them, so a full-list sweep with onSaleOnly off leaves them out and says how many in the log. A search that matches 1,000 items or fewer returns them. None of them is ever on sale.
  • Japan covers Switch and Switch 2 only, like the US and Canada lists. Its search also lists 3DS, Wii U and amiibo items; those are left out. Japanese entries without an eShop id (accessories, Nintendo Switch Online classics, retired listings) are skipped and counted.
  • The Japanese store page can show a waiting room. store-jp.nintendo.com sometimes queues visitors when it is busy; the link is still the item's page.
  • A few US/Canada deals carry no sale window. The store marks them reduced but sends no start or end date (7 of 2,780 US deals under $5 on 2026-10-18); their sale_start and sale_end are null.
  • Japan lists a few items twice (a Switch 2 game card next to its download, same nsuid and price: 3 of 4,101 sale entries). Each is returned once.
  • "On sale" is the store's own rule. In the US and Canada it is the Deals list; in Japan the sale flag, and only when the price now differs from the regular price, which is how nintendo.com/jp decides it.
  • The key is public but can rotate. If nintendo.com changes it, the US and Canada stop answering with HTTP 403 "Invalid Application-ID or API key"; the run says so plainly in its log and status, does not retry it, and still reads Japan.

Use it from the API

curl -X POST "https://api.apify.com/v2/acts/<your-username>~nintendo-eshop-prices/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"regions": ["US", "JP"], "searchQuery": "zelda", "onSaleOnly": false, "maxItems": 50}'