Yuyu-tei API & Scraper
The Yuyu-tei API turns 遊々亭 (yuyu-tei.jp), a Japanese card shop that sells and buys singles for 24 games, into JSON in five actions.
🤖 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 lists what the shop sells: by card name, by set (one or several set codes), by rarity or by card type, with in-stock, on-sale and damaged-copy filters, 600 products a page. Every row is one product with its price in yen, the exact web-shop stock, the struck-through regular price when it is on sale, the rarity, the set code and the card number printed on the card. card returns one product in full: the set name, the card's attribute table as the shop prints it (type, HP, level, attack, effect text …), the kana reading of the name and the large image. buy_prices and buy_card return the other side of the counter: what Yuyu-tei pays for a card (買取), with the earlier buying price when the shop has just raised it. The sell and buy rows share one card_id, so the spread for a card is two lookups. sets lists a game's sets with the codes the other actions take. Games include Pokémon, Yu-Gi-Oh! (OCG and Rush Duel), One Piece, Duel Masters, Weiß Schwarz, Vanguard, Digimon, Union Arena, Gundam, hololive OCG and Shadowverse EVOLVE. One ReefAPI key, the standard { ok, data, meta, error } envelope, no Yuyu-tei account.
What the shop prints, and the field it becomes
Yuyu-tei prints stock as a count only up to 10 and a circle above that. The API returns the exact count and keeps what the page shows next to it.
| on the page | field | value |
|---|---|---|
| 在庫 : 3 点 | stock_qty, stock_display, in_stock | 3, "3 点", true |
| 在庫 : ◯ | stock_qty, stock_display | the exact count (11 or more), "◯" |
| 在庫 : × (sold out, price still shown) | stock_qty, in_stock, price_jpy | 0, false, the last price |
| 500 円 with ~~680 円~~ (sale) | price_jpy, regular_price_jpy, on_sale | 500, 680, true |
| 買取 6,000 円, PRICE UP, ~~3,000 円~~ | buy_price_jpy, price_up, previous_buy_price_jpy | 6000, true, 3000 |
| 傷 (damaged copy) | damaged, product_id | true, "sv08a/10481/damage" |
| 236/187 · UR · [SV8a] | card_number, rarity, set_code | "236/187", "UR", "sv08a" |
Prices are yen as the shop prints them, with a thousands comma (5,980 円 = 5980). A buying price is never returned as price_jpy. Rarity '-' (no rarity) comes back as rarity null with rarity_raw '-'.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/yuyu-tei/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "ピカチュウ",
"rarity": "SAR"
}
}{
"ok": true,
"meta": {
"api": "yuyu-tei",
"endpoint": "search",
"mode": "live",
"latency_ms": 2038.3,
"record_count": 4,
"bytes": 337572,
"cache_hit": false,
"game": "pokemon",
"game_code": "poc",
"side": "sell",
"page": 1,
"page_size": 600,
"last_page": 1,
"has_more": false,
"past_last_page": false,
"total": 4,
"total_is_exact": true,
"filters_applied": {
"query": "ピカチュウ",
"rarity": "SAR"
},
"rarities_on_page": [
"SAR"
],
"currency": "JPY",
"upstream_requests": 1,
"warnings": [],
"charged_credits": 3,
"version": "1.0.0",
"request_id": "2a4774691e654e84",
"queue_ms": 1.6,
"fetched_at": "2026-10-15T17:03:02.778Z"
},
"data": {
"rows": [
{
"product_id": "m06a/10126",
"card_id": "m06a/10126",
"game": "pokemon",
"set_code": "m06a",
"card_number": "126/103",
"rarity": "SAR",
"rarity_raw": "SAR",
"name": "ピカチュウex",
"url": "https://yuyu-tei.jp/sell/poc/card/m06a/10126",
"image": "https://card.yuyu-tei.jp/poc/100_140/m06a/10126.jpg",
"price_jpy": 7980,
"on_sale": false,
"regular_price_jpy": null,
"damaged": false,
"in_stock": true,
"stock_qty": 14,
"stock_display": "◯"
},
{
"product_id": "m06a/10127",
"card_id": "m06a/10127",
"game": "pokemon",
"set_code": "m06a",
"card_number": "127/103",
"rarity": "SAR",
"rarity_raw": "SAR",
"name": "ピカチュウex",
"url": "https://yuyu-tei.jp/sell/poc/card/m06a/10127",
"image": "https://card.yuyu-tei.jp/poc/100_140/m06a/10127.jpg",
"price_jpy": 9980,
"on_sale": false,
"regular_price_jpy": null,
"damaged": false,
"in_stock": true,
"stock_qty": 13,
"stock_display": "◯"
},
{
"product_id": "m02a/10470",
"card_id": "m02a/10470",
"game": "pokemon",
"set_code": "m02a",
"card_number": "234/193",
"rarity": "SAR",
"rarity_raw": "SAR",
"name": "ピカチュウex",
"url": "https://yuyu-tei.jp/sell/poc/card/m02a/10470",
"image": "https://card.yuyu-tei.jp/poc/100_140/m02a/10470.jpg",
"price_jpy": 24800,
"on_sale": false,
"regular_price_jpy": null,
"damaged": false,
"in_stock": true,
"stock_qty": 5,
"stock_display": "5 点"
}
]
}
}What the Yuyu-tei API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Search what yuyu-tei SELLS in one game. Each row is one product (one card printing; damaged copies are their own products) with its price, stock, rarity, set and card number. Give query, set, rarity or card_type. Up to 600 rows a page. | Pricing teams call search to search what yuyu-tei SELLS in one game. | game, query, set, rarity, card_type, ... |
| card | One product yuyu-tei sells, in full: price, stock, set name, the card's attribute table (type, HP, colour, effect text … as the shop prints it) and the large image. | Marketplace operators call card to get one product yuyu-tei sells, in full. | product_id, game |
| buy_prices | yuyu-tei's buying-price list (買取): what the shop PAYS for a card, in JPY — never the sale price. Same filters and ids as `search`; the row's card_id is the same card on the sell side. | Catalog enrichment teams call buy_prices to get yuyu-tei's buying-price list (買取). | game, query, set, rarity, card_type, ... |
| buy_card | One card's buying price (買取) in full: buy price, PRICE UP flag with the earlier price, set name and the card's attribute table. | Retail analysts call buy_card to get one card's buying price (買取) in full. | product_id, game |
| sets | The set list (収録弾) for one game, in the shop's own order, with the codes `search` and `buy_prices` take as `set`. | Pricing teams call sets to get the set list (収録弾) for one game, in the shop's own order, with the codes `search` and `buy_pr…. | game |
Call search from your stack
curl -X POST https://api.reefapi.com/yuyu-tei/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"ピカチュウ","rarity":"SAR"}'import requests
r = requests.post(
"https://api.reefapi.com/yuyu-tei/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "ピカチュウ",
"rarity": "SAR"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/yuyu-tei/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "ピカチュウ",
"rarity": "SAR"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.yuyu-tei.search with {"query":"ピカチュウ","rarity":"SAR"}.Who uses this API and why
- Price a Japanese collection across games: search each card and read price and exact stock.
- Buy/sell spread: buy_prices for a set, then card on each card_id for the shop's sale price.
- Watch buying-price jumps: buy_prices rows flagged price_up carry the earlier buying price.
- Track a new set: search with its set code every day and follow stock_qty.
- Find cheaper copies: damaged=true for the shop's scratched copies of the same card.
Questions developers ask before integrating
Which games does it cover?
24: Pokémon (default), Yu-Gi-Oh! OCG, Yu-Gi-Oh! Rush Duel, One Piece, Duel Masters, Weiß Schwarz, Weiß Schwarz Rose, Vanguard, Digimon, Union Arena, Battle Spirits, Gundam Card Game, hololive OCG, Shadowverse EVOLVE, WIXOSS, Z/X, Precious Memories, ChaosTCG, Rebirth for you, Lycee Overture, Fire Emblem Cipher, Xross Stars, Gundam Arsenal Base and Eiketsu Taisen. Magic: The Gathering is not sold by Yuyu-tei. The shop's own path codes (poc, ygo, opc, ws …) are accepted as game too; pm is Precious Memories, not Pokémon.
Is the buying price the price I pay?
No. buy_prices and buy_card return buy_price_jpy, what Yuyu-tei pays when you sell a card to the shop (買取). The sale price is price_jpy on search and card. Both sides carry the same card_id (for example sv08a/10481), so card and buy_card on one id give the spread.
How exact is the stock?
The page prints a count only up to 10 and a circle (◯) above that. stock_qty is the exact count the shop's cart works with; it matched the printed count on every product where a count is printed (83 of 83 in one measured list). stock_display keeps what the page shows. A sold-out product keeps its last price with stock_qty 0.
What are damaged copies?
Yuyu-tei sells scratched or worn copies (傷有り) as separate products at a lower price. damaged=true lists them; their product_id ends in /damage and card reads them. For example a UR Pikachu ex listed at 9,980 yen clean was 6,980 yen as a damaged copy on 2026-10-15. Damaged copies can be filtered by set, rarity and stock; the shop has no sale or card-type filter on that list.
How do I list one set?
sets returns every set of a game with its code (294 Pokémon sets, 463 Yu-Gi-Oh! sets on 2026-10-15). Pass the code as set to search or buy_prices, alone or with a name; several codes separated by commas work in one call. An unknown code, rarity or card type returns INVALID_PARAM with the valid values, not an empty list.
How far can I page?
The shop pages lists by 600 products. meta.last_page says how many pages the result has and has_more whether another follows; meta.total is exact on the last page (1,558 products for 'ex' on Pokémon on 2026-10-15, three pages). A page past the end returns no rows with past_last_page true.
Does the price depend on where I call from?
No. The same card, buying price and list were identical from four different countries in the same minute on 2026-10-15. Prices are yen.
What is the Yuyu-tei API?
Yuyu-tei API is a ReefAPI endpoint group for 遊々亭 (yuyu-tei.jp) trading-card prices as json: what one of japan's big multi-game card shops sells a card for and how many it has, what it pays for the same card (買取), and every set, for 24 games. It returns live JSON through POST requests under /yuyu-tei/v1.
Is the Yuyu-tei API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Yuyu-tei calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Yuyu-tei login or account?
No login to Yuyu-tei 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 Yuyu-tei 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 Yuyu-tei API use?
Yuyu-tei actions currently cost 3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Yuyu-tei from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call yuyu-tei actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Yuyu-tei API a Yuyu-tei scraper?
It is the managed alternative to a DIY Yuyu-tei 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 遊々亭 (yuyu-tei.jp) trading-card prices as json: what one of japan's big multi-game card shops sells a card for and how many it has, what it pays for the same card (買取), and every set, for 24 games back as clean JSON.