Calling this without an account: every endpoint on this page answers a plain GET, with no signup and no key of your own — https://api.reefapi.com/snkrdunk/v1/search?key=ak_live_jtEp58J7k4i6ov0VtjSQMPd0K0424IQY&src=t&query=pikachu — rate limited and free. How this lane works.

Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the SNKRDUNK API page →
E-commerce & Marketplaces

SNKRDUNK API & Scraper

The SNKRDUNK API turns snkrdunk.com, Japan's largest sneaker and trading-card marketplace, into clean JSON in ten actions.

10 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search takes a card name, set, character, sneaker model or product number and returns catalogue rows with the product id, the site code, the product URL, the name, the product number, the current floor price in US dollars, the live listing count, the offer count, the release date and the image; the sneaker matches come back too when include_sneakers is set. product/detail returns one product by numeric id, SW code or snkrdunk URL, with its brand, category, images and description, and can merge the floor price per grade and the other prints of the same card into the same call. product/listings is the order book: every live listing with listing_id, price_usd, price_display, currency, condition (PSA 10, A, B, C, D), the seller's condition note, size, is_sold and is_new. prices_by_condition returns the floor price for each grade of one card, which is the row a daily price tracker stores, and products/batch asks for up to 30 products in ONE call and reports back requested, returned and the ids that are missing. product/variations lists the other prints and variants of a card, browse walks the used card market by brand and category without a keyword, brand/products pages a whole brand catalogue per department (tradingCard, sneaker or streetwear), brand/detail returns the category ids that browse takes, and conditions returns the grade enum itself. What the source does not publish, this API does not invent: there are no sold prices, no price history, no offers and no rankings, so what you get is live listings and current floors. No SNKRDUNK account, no browser, one ReefAPI key and the standard { ok, data, meta, error } envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/snkrdunk/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "pikachu"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "snkrdunk",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1799.8,
    "record_count": 30,
    "bytes": 20341,
    "cache_hit": false,
    "stop_reason": "limit_reached",
    "total": 1209,
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "data": {
    "results": [
      {
        "product_id": "882279",
        "code": "SW---882279",
        "url": "https://snkrdunk.com/en/trading-cards/882279",
        "name": "Pikachu ex SAR [M6a 126/103](Expansion Pack \"30th CELEBRATION\")",
        "product_number": null,
        "is_trading_card": true,
        "min_price_usd": 56,
        "min_price_display": "US $56",
        "listing_count": 99,
        "all_listing_count": 99,
        "offer_count": 0,
        "count_is_lower_bound": true,
        "released_at": null,
        "is_new_release": false,
        "below_regular_price": false,
        "image": "https://cdn.snkrdunk.com/upload_bg_removed/6cce5089-c05a-47ab-8da2-02d22ab98861.webp?size=m"
      },
      {
        "product_id": "882280",
        "code": "SW---882280",
        "url": "https://snkrdunk.com/en/trading-cards/882280",
        "name": "Pikachu ex SAR [M6a 127/103](Expansion Pack \"30th CELEBRATION\")",
        "product_number": null,
        "is_trading_card": true,
        "min_price_usd": 67,
        "min_price_display": "US $67",
        "listing_count": 99,
        "all_listing_count": 99,
        "offer_count": 0,
        "count_is_lower_bound": true,
        "released_at": null,
        "is_new_release": false,
        "below_regular_price": false,
        "image": "https://cdn.snkrdunk.com/upload_bg_removed/a0163a22-6e45-41dc-8203-a5dd647af7ef.webp?size=m"
      },
      {
        "product_id": "618446",
        "code": "SW---618446",
        "url": "https://snkrdunk.com/en/trading-cards/618446",
        "name": "Hiroshima's Pikachu P [SV-P 261](Special Box \"Pokemon Center Hiroshima\")",
        "product_number": null,
        "is_trading_card": true,
        "min_price_usd": 66,
        "min_price_display": "US $66",
        "listing_count": 99,
        "all_listing_count": 99,
        "offer_count": 0,
        "count_is_lower_bound": true,
        "released_at": null,
        "is_new_release": false,
        "below_regular_price": false,
        "image": "https://cdn.snkrdunk.com/upload_bg_removed/03ca1006-0770-4d13-95c3-e33a838d5173.webp?size=m"
      }
    ],
    "total": 1209,
    "page": 1,
    "limit": 30,
    "query": "pikachu"
  }
}
Actions

What the SNKRDUNK API does

ActionDescriptionConcrete use caseKey params
searchSearch SNKRDUNK by keyword. Returns trading cards (and, when `include_sneakers` is on, sneakers) with the current floor price, the live listing count and the id you feed into every other action. `total` is the source's own match count, so you can page through a whole set.Pricing teams call search to search SNKRDUNK by keyword.query, page, limit, include_sneakers
product/detailOne product record by id, code or URL: name, product number, brand, the current floor price, how many listings are live and the images. Optionally merges the floor price per grade and the other prints of the same card in the SAME call.Marketplace operators call product/detail to get one product record by id, code or URL.product_id, include_prices, include_variations
product/listingsEvery live listing on one product: price in USD, grade (PSA 10, A, B, C, D), whether it is still for sale and an opaque listing id. This is the order book a pricing model reads, and the only place the source publishes individual asks.Catalog enrichment teams call product/listings to get every live listing on one product.product_id, page, limit, sort, only_on_sale
prices_by_conditionThe current floor price for each grade of one card (PSA 10, A, B, C, D and the rest). One small call per card, which is what a daily price tracker stores.Retail analysts call prices_by_condition to get the current floor price for each grade of one card (PSA 10, A, B, C, D and the rest).product_id
products/batchUp to 30 products in ONE call: name, floor price, listing count and image for each. This is how a catalogue of thousands is refreshed without spending a call per card. Ids that no longer exist are simply absent from the answer.Pricing teams call products/batch to get up to 30 products in ONE call.product_ids
product/variationsThe other prints and variants of the same card (or the other colourways of a sneaker), each with its own id and floor price.Marketplace operators call product/variations to get the other prints and variants of the same card (or the other colourways of a sneaker), each w….product_id
browseWalk the used trading-card market: every card with a live listing, filtered by brand and category, newest first or in the source's own order. Use it to build a catalogue without a keyword.Catalog enrichment teams call browse to get walk the used trading-card market.brand, category_id, page, limit, sort, ...
brand/productsOne brand's catalogue, paged: every product SNKRDUNK carries for that brand with its floor price and listing count. With `department=tradingCard` this is the route that builds a card database set by set.Retail analysts call brand/products to get one brand's catalogue, paged.brand, department, page, limit
brand/detailOne brand record and the category ids under it — the ids `browse` takes.Pricing teams call brand/detail to get one brand record and the category ids under it.brand
conditionsThe grade enum the marketplace uses (A, B, C, D and the PSA grades), with the id and key behind each label. The values `condition` fields come back as.Marketplace operators call conditions to get the grade enum the marketplace uses (A, B, C, D and the PSA grades), with the id and key behi….none
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/snkrdunk/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"pikachu"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.snkrdunk.search with {"query":"pikachu"}.
Use cases

Who uses this API and why

  • Trading-card price trackers store one row per card per day from prices_by_condition, which returns the floor price for PSA 10 and for each of the A to D grades.
  • Catalogue pipelines refresh thousands of cards with products/batch, up to 30 products per call, and read the missing list to retire ids the marketplace no longer carries.
  • Card shops and portfolio tools read product/listings to see every ask with its grade and its sold flag instead of pricing a card from one headline number.
  • Sneaker and streetwear resale analysts read the Japanese market with include_sneakers on search and department on brand/products.
FAQ

Questions developers ask before integrating

Which cards and games does the SNKRDUNK API cover?

Whatever the marketplace lists: Pokémon, Yu-Gi-Oh!, One Piece, Magic and the Japanese-only promos western marketplaces tend not to carry, plus the sneaker and streetwear half of the site. Brands are addressed by the slug in their snkrdunk URL, such as pokemon, one-piece, yu-gi-oh or nike, and brand/detail returns the category ids under a brand so browse can be narrowed to one of them.

What does the grade on a listing mean?

Every listing carries condition, which is the marketplace's own grade: PSA 10 for a graded slab, and A, B, C or D for raw cards. The conditions action returns the whole enum with the id, name and key behind each label, prices_by_condition returns the current floor for each grade of one card, and a listing can also carry the condition_note the seller typed.

Are prices in yen or in US dollars?

US dollars. This engine reads the English storefront, which prices in USD, so every listing comes back with price_usd as a number, price_display exactly as the storefront prints it, and currency. Nothing is converted here, so no exchange rate of ours sits between you and the asking price.

Can I get sales history or sold prices?

No, and the API does not pretend otherwise. SNKRDUNK does not publish sold prices, a price history, offers or rankings. What it publishes is live listings and current floors, and that is what comes back. A listing that has just sold is still visible with is_sold true, and only_on_sale true restricts a call to listings that are still for sale.

How do I track a few thousand cards without spending a call per card?

products/batch takes up to 30 product ids, codes or URLs in one call and returns the name, floor price, listing count and image for each, with requested, returned and missing so you can see which ids the marketplace no longer has. For the floor per grade you still call prices_by_condition per card, which is the smaller call.

How do I find a product id?

From search, browse, brand/products or product/variations: every row carries product_id, the SW code and the product URL. All three forms work as product_id on the other actions, so a pasted snkrdunk.com product URL is enough.

How far can I page, and can I sort by price?

Up to 100 rows per page, which is the source's own ceiling; asking for more is refused rather than silently trimmed. sort takes latest for newest first or default for the source's own order, and those are the only two orders the source actually applies. There is no sort by price, and this API does not fake one by re-ordering a single page.

What is the SNKRDUNK API?

SNKRDUNK API is a ReefAPI endpoint group for japan's sneaker and trading-card marketplace: live listings with grade and price in us dollars, floor price per grade. It returns live JSON through POST requests under /snkrdunk/v1.

Is the SNKRDUNK API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. SNKRDUNK calls use the same shared credit balance as every other ReefAPI engine.

Do I need a SNKRDUNK login or account?

No login to SNKRDUNK is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the SNKRDUNK data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the SNKRDUNK API use?

SNKRDUNK actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call SNKRDUNK from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call snkrdunk actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the SNKRDUNK API a SNKRDUNK scraper?

It is the managed alternative to a DIY SNKRDUNK scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same japan's sneaker and trading-card marketplace: live listings with grade and price in us dollars, floor price per grade back as clean JSON.

docs / snkrdunk

SNKRDUNK

Japan's sneaker and trading-card marketplace: live listings with grade and price in US dollars, floor price per grade.

base /snkrdunk/v110 endpoints
post/snkrdunk/v1/product/detail1 credit

One product record by id, code or URL: name, product number, brand, the current floor price, how many listings are live and the images. Optionally merges the floor price per grade and the other prints of the same card in the SAME call.

ParameterAllowed / rangeDescription
product_idoptional—The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.
include_prices = falseoptional—Also return the floor price per grade (one extra upstream call).
include_variations = falseoptional—Also return the other prints/variants of this card.
Try in playground →
post/snkrdunk/v1/product/listings1 credit

Every live listing on one product: price in USD, grade (PSA 10, A, B, C, D), whether it is still for sale and an opaque listing id. This is the order book a pricing model reads, and the only place the source publishes individual asks.

ParameterAllowed / rangeDescription
product_idoptional—The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.
page = 1optional1–1-based page number.
limit = 30optional1–100Rows per page (1-100). The source refuses more than 100.
sort = defaultoptionallatest · default`latest` for newest first, anything else for the source's own order. Measured: these are the only two orders the source actually applies.
only_on_sale = falseoptional—Only listings that are still for sale. Default false, which also returns recently sold ones (each carries `is_sold`).
Try in playground →
post/snkrdunk/v1/prices_by_condition1 credit

The current floor price for each grade of one card (PSA 10, A, B, C, D and the rest). One small call per card, which is what a daily price tracker stores.

ParameterAllowed / rangeDescription
product_idoptional—The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.
Try in playground →
post/snkrdunk/v1/products/batch1 credit

Up to 30 products in ONE call: name, floor price, listing count and image for each. This is how a catalogue of thousands is refreshed without spending a call per card. Ids that no longer exist are simply absent from the answer.

ParameterAllowed / rangeDescription
product_idsrequired–30Up to 30 product ids, codes or URLs. Accepts a JSON array or a comma-separated string.
Try in playground →
post/snkrdunk/v1/product/variations1 credit

The other prints and variants of the same card (or the other colourways of a sneaker), each with its own id and floor price.

ParameterAllowed / rangeDescription
product_idoptional—The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.
Try in playground →
post/snkrdunk/v1/browse1 credit

Walk the used trading-card market: every card with a live listing, filtered by brand and category, newest first or in the source's own order. Use it to build a catalogue without a keyword.

ParameterAllowed / rangeDescription
brandoptional—Brand slug ('pokemon', 'one-piece', 'yu-gi-oh'). Omit for all.
category_idoptional—Category id from brand/detail. Omit for all categories.
page = 1optional1–1-based page number.
limit = 30optional1–100Rows per page (1-100). The source refuses more than 100.
sort = defaultoptionallatest · default`latest` for newest first, anything else for the source's own order. Measured: these are the only two orders the source actually applies.
only_on_sale = falseoptional—Only listings that are still for sale. Default false, which also returns recently sold ones (each carries `is_sold`).
Try in playground →
post/snkrdunk/v1/brand/products1 credit

One brand's catalogue, paged: every product SNKRDUNK carries for that brand with its floor price and listing count. With `department=tradingCard` this is the route that builds a card database set by set.

ParameterAllowed / rangeDescription
brandrequired—Brand slug exactly as it appears in a snkrdunk URL. Trading cards: pokemon, yu-gi-oh, onepiece, dragonball, mtg. Sneakers and apparel use their own slugs ('nike', 'supreme', 'air-jordan', 'newbalance').
department = tradingCardoptionaltradingCard · sneaker · streetwearWhich half of the marketplace to read.
page = 1optional1–1-based page number.
limit = 30optional1–100Rows per page (1-100). The source refuses more than 100.
Try in playground →
post/snkrdunk/v1/brand/detail1 credit

One brand record and the category ids under it — the ids `browse` takes.

ParameterAllowed / rangeDescription
brandrequired—Brand slug exactly as it appears in a snkrdunk URL. Trading cards: pokemon, yu-gi-oh, onepiece, dragonball, mtg. Sneakers and apparel use their own slugs ('nike', 'supreme', 'air-jordan', 'newbalance').
Try in playground →
post/snkrdunk/v1/conditionsfree

The grade enum the marketplace uses (A, B, C, D and the PSA grades), with the id and key behind each label. The values `condition` fields come back as.

Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.