# Card Rush API — Japanese trading-card prices from Card Rush (カードラッシュ): what the shop sells a card for (JPY, tax included) with its condition (状態 A-/B/C), PSA grade and web-shop stock, and what it buys a card for (買取 price list). Ten games: Pokémon, One Piece, Yu-Gi-Oh!, Magic: The Gathering, Duel Masters, Battle Spirits, Digimon, Vanguard, Dragon Ball Fusion World, Shadowverse: Evolve. No login, no key.

> Search one Card Rush shop. Each row is one product (one card in one condition / grade) with its price, stock and the parts of its title (condition, PSA grade, rarity, card number). Give `query`, or `group` (a set / feature listing), or `category`. With a query, group and category narrow it.
> ReefAPI engine `cardrush` · 3 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/cardrush/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/cardrush/v1/search — 3 credits
Search one Card Rush shop. Each row is one product (one card in one condition / grade) with its price, stock and the parts of its title (condition, PSA grade, rarity, card number). Give `query`, or `group` (a set / feature listing), or `category`. With a query, group and category narrow it.

**Parameters:**
- `game` (enum, optional, default "pokemon") — Which Card Rush shop: pokemon (cardrush-pokemon.jp, default), onepiece, yugioh (cardrush.jp), mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball, shadowverse_evolve. Same fields on every shop. [one of: pokemon, onepiece, yugioh, mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball, shadowverse_evolve]
- `query` (string, optional) — Card or product name as the shop writes it (Japanese; MTG also English), a set code or a card number (e.g. 'ピカチュウ', 'リザードン SAR', '025/165', 'PSA10'). Give query, group or category.
- `group` (string, optional) — A shop feature / set listing id (特集), e.g. 594 = 拡張パック「30th CELEBRATION」 on the Pokémon shop. The ids and counts come back in meta.facets.groups.
- `category` (string, optional) — A shop category id (カテゴリ), e.g. 4 = 雷 (Lightning) on the Pokémon shop. The ids and counts come back in meta.facets.categories.
- `in_stock_only` (boolean, optional, default false) — Only products the web shop has in stock (在庫あり).
- `sort` (enum, optional, default "relevance") — Order. With a keyword the default relevance order reshuffles tied rows between requests; for paging through many pages use price_asc, price_desc or featured. [one of: relevance, featured, price_asc, price_desc]
- `per_page` (enum, optional, default 100) — Rows per page: 10, 20, 30, 50 or 100 (the shop's default). [one of: 10, 20, 30, 50, 100]
- `page` (integer, optional, default 1) — Page number. A page past the last one answers no rows and meta.past_last_page=true (the shop itself would repeat page 1).

**Returns:** rows[]: id / product_id (give it to `card`), game, url, name (the shop's full title), card_name, condition (状態 S, A-, B, C …; MTG NM/EX+/EX/VG), graded, grader (PSA …), grade, on_sale, sealed, rarity, card_number, attribute (the 《》 type or civilisation tag), language (MTG), set_code (Pokémon: the shop's set code; MTG: the 【】 set), model_number (the shop's raw field), price_jpy (tax included), price_includes_tax, in_stock, stock_qty (web-shop stock; 0 when sold out), stock_unit (枚/点/個), image. meta: total (the shop's own count), page, per_page, last_page, has_more, past_last_page, listing (keyword / group / category), facets{categories[], groups[]} ({id, name, count} — the shop's own filter lists for this result), warnings.

**Example request body:**
```json
{
  "query": "ピカチュウ",
  "per_page": 20
}
```

### POST https://api.reefapi.com/cardrush/v1/card — 2 credits
One Card Rush product in full: price, stock, the most one order can take, category, the shop's note and the large image.

**Parameters:**
- `product_id` (string, required) — A search row's `product_id` (or a buying-price row's `shop_product_id`), or a Card Rush product URL such as https://www.cardrush-pokemon.jp/product/1130.
- `game` (enum, optional, default "pokemon") — Which Card Rush shop: pokemon (cardrush-pokemon.jp, default), onepiece, yugioh (cardrush.jp), mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball, shadowverse_evolve. Same fields on every shop. [one of: pokemon, onepiece, yugioh, mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball, shadowverse_evolve]

**Returns:** card{id / product_id (give it to `card`), game, url, name (the shop's full title), card_name, condition (状態 S, A-, B, C …; MTG NM/EX+/EX/VG), graded, grader (PSA …), grade, on_sale, sealed, rarity, card_number, attribute (the 《》 type or civilisation tag), language (MTG), set_code (Pokémon: the shop's set code; MTG: the 【】 set), model_number (the shop's raw field), price_jpy (tax included), price_includes_tax, in_stock, stock_qty (web-shop stock; 0 when sold out), stock_unit (枚/点/個), image, max_order_qty (the quantity menu's top: the stock, or the per-customer limit on sale items), category{id, name}, categories[], description, price_mismatch (the page's printed price vs its own product:price meta)}

**Example request body:**
```json
{
  "product_id": "1130"
}
```

### POST https://api.reefapi.com/cardrush/v1/buying_prices — 2 credits
Card Rush's buying-price list (買取表): what the shop pays for a card, in JPY. This is a BUY price — never the sale price. Each row links to the shop product it refers to.

**Parameters:**
- `game` (enum, optional, default "pokemon") — Which game's buying-price list: pokemon (default), onepiece, yugioh, mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball. Shadowverse: Evolve has no published list. [one of: pokemon, onepiece, yugioh, mtg, duel_masters, battle_spirits, digimon, vanguard, dragon_ball]
- `query` (string, optional) — Card or product name, partial match (Japanese).
- `card_number` (string, optional) — The card number printed on the card (型番), e.g. 025/165, OP13-118, QCCP-JP004.
- `rarity` (string, optional) — Rarity as the list writes it (SAR, SR, AR, UR, SEC, シークレット, …).
- `pack_code` (string, optional) — Set / pack code (パック記号), e.g. M2a, SV-P. Pokémon and Dragon Ball lists.
- `category` (string, optional) — One of the list's own sections for that game. pokemon: 最新弾, スタンダード, エクストラ, 旧裏, サプライ, パック · onepiece: 最新弾, 通常弾, サプライ, パック · yugioh: 最新弾, 通常弾, アジアシク, コレクター向け(初期系), ラッシュデュエル, サプライ, パック · mtg: 高額系, foil系, スタンダード, スタンダード最新弾, パイオニア以下, モダン以下最新弾 · duel_masters: 最新弾, 通常弾, 初期系, 高額系, サプライ, 未開封BOX · battle_spirits / digimon: 最新弾, 通常弾, サプライ · vanguard: 最新弾, Dスタン, Vスタン・Pスタン, サプライ · dragon_ball: 最新弾, 通常弾, 未開封BOX, サプライ. Default = the page's default (the single-card sections).
- `hot_only` (boolean, optional, default false) — Only cards the shop flags as 只今の買取額UP (buying price raised now).
- `sort` (enum, optional, default "price_desc") — Order by buying price. [one of: price_desc, price_asc]
- `per_page` (integer, optional, default 100) — Rows per page, 1-100 (default 100).
- `page` (integer, optional, default 1) — Page number; meta.last_page says how many there are.

**Returns:** rows[]: id, game, name, variant (1ED, アンリミ, 未開封, パラレル …), buy_price_jpy, is_hot, rarity, model_number (the card number), pack_code, pack_name, element, regulation, product_category, display_category, updated_at, shop_product_id (give it to `card` as product_id), shop_url, image; MTG rows also condition, language, name_with_condition. meta: page, per_page, last_page, has_more, list_updated (the page's own 'as of' label, JST), filters_applied, warnings.

**Example request body:**
```json
{
  "query": "ピカチュウ"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=cardrush
- Human docs page: https://reefapi.com/docs/cardrush
- Overview page: https://reefapi.com/cardrush-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
