カードラッシュ API:販売価格と買取価格を JSON で
カードラッシュの各タイトルの Web ショップと買取表を、ログインせずに見られる範囲で読み取り、JSON にして返します。同じカードについて「店がいくらで売っているか」(`price_jpy`、税込)と「店がいくらで買い取るか」(`buy_price_jpy`)を別のエンドポイント、別のフィールドで返すので、ポケカの相場をまとめるときに両者が混ざることはありません。カードラッシュの店舗運営や在庫管理とつながる業務用の連携ではなく、お店が Web 上に公開している価格を読むだけのものです。
エンドポイント
| endpoint | 返ってくるもの | 必須 |
|---|---|---|
| search | ショップ内の検索。1 行が「1 枚のカード × 1 つの状態」で、税込価格、Web 在庫数、商品名から分解した状態ランク(状態A-・B など)、鑑定品の鑑定会社とグレード、レアリティ、型番を持ちます。キーワード、特集(`group`、例: 594 =「30th CELEBRATION」)、カテゴリ(`category`、例: 4 = 雷)のいずれかを指定します。在庫ありのみ、価格順・おすすめ順、1 ページ 10/20/30/50/100 件。対象はポケモン、ワンピース、遊戯王、MTG、デュエル・マスターズ、バトスピ、デジモン、ヴァンガード、ドラゴンボール フュージョンワールド、シャドウバース エボルヴ。 | すべて任意 |
| card | 1 商品の詳細:価格、在庫、1 回の注文で買える上限数、カテゴリ、ショップの説明文、大きい画像。検索結果の `product_id`、買取表の `shop_product_id`、または商品 URL のどれでも受け付けます。 | product_id |
| buying_prices | 買取表。カードラッシュが支払う買取価格を `buy_price_jpy` で返し、各行に対応するショップ商品の id が付きます。カード名、型番(025/165、OP13-118 など)、レアリティ、パック記号、タイトルごとの区分(最新弾・スタンダード・旧裏など)、「只今の買取額UP」の商品だけ、で絞り込めます。シャドウバース エボルヴは買取表が公開されていません。 | すべて任意 |
呼び出しごとにクレジットを消費します。失敗した呼び出しとブロックされた呼び出しは無料です。
動作する例
メガリザードンXex【SAR】{110/080} は、同じ時刻のショップ検索で販売価格 89,800 円(在庫 76 枚)、買取表では 50,000 円でした。買取行の `shop_product_id`(71713)をそのまま `card` に渡すと販売側の同じ商品にたどり着くので、販売価格と買取価格の差をカード 1 枚ごとに出せます。リザードンex【SAR】{201/165} も同様に、販売 59,800 円に対して買取 35,000 円です。
curl -X POST https://api.reefapi.com/cardrush/v1/buying_prices \
-H "x-api-key: 取得したAPIキー" \
-H "content-type: application/json" \
-d '{"game": "pokemon", "query": "リザードン", "rarity": "SAR", "per_page": 20}'{
"ok": true,
"data": {
"rows": [
{
"id": "1240825339",
"game": "pokemon",
"name": "メガリザードンXex",
"variant": null,
"buy_price_jpy": 50000,
"is_hot": false,
"rarity": "SAR",
"model_number": "110/080",
"pack_code": "M2",
"element": "炎",
"regulation": "スタンダード",
"display_category": "スタンダード",
"updated_at": "2026-10-25T21:30:54.788+09:00",
"shop_product_id": "71713",
"shop_url": "https://www.cardrush-pokemon.jp/product/71713"
},
{
"id": "1240829512",
"game": "pokemon",
"name": "リザードンex",
"buy_price_jpy": 35000,
"rarity": "SAR",
"model_number": "201/165",
"pack_code": "SV2a",
"display_category": "エクストラ",
"shop_product_id": "43860",
...
},
...
]
},
"meta": {
"record_count": 6,
"page": 1,
"last_page": 1,
"has_more": false,
"list_updated": "10/25 21:30",
"list_updated_tz": "Asia/Tokyo",
"currency": "JPY",
"price_basis": "buy_price_jpy is what Card Rush pays (買取価格), not its sale price",
"cache_hit": false,
"mode": "live"
}
}カードラッシュのページを自前で解析すると起きること
最終ページを過ぎたページ番号を指定すると、ショップはエラーを返さず 1 ページ目をもう一度表示します(38 ページしかない検索で 39 ページ目や 500 ページ目を要求したとき)。ページ番号を増やし続ける収集スクリプトは、気づかないまま先頭の商品を何度も保存することになります。この API では最終ページより後は 0 件と `past_last_page: true` を返します。
絞り込みも黙って効かなくなります。キーワードなしで特集やカテゴリだけを検索ページに付けると、ショップは条件を無視して全商品(測定時 75,090 件)を返しました。存在しない並び順や 1 ページの件数を渡したときも、同じように無視されます。この API では入力の組み合わせに応じて取得するページを切り替え、効かない組み合わせは INVALID_PARAM で止めています。
状態ランク、鑑定、レアリティ、型番は独立した項目ではなく、「〔状態A-〕メガリザードンXex【SAR】{110/080}」のように商品名の中に書かれています。売り切れの商品は価格を残したまま「×」が表示され、セール品は数量メニューの上限が 1 になる(お一人様 1 点)ので、メニューの最大値を在庫数と読むと数字が狂います。在庫は数量メニューではなく、ページの在庫表示から読んでいます。
販売価格と買取価格の差を追う用途では、こうした読み違いがそのまま数字に出ます。売り切れの「×」を見落とせば買えない商品の価格が相場に残り、セール品の上限 1 を在庫と読めば、在庫が一晩で急に減ったように見えます。
制限と正直な注記
- この API はカードラッシュ公式のものではなく、カードラッシュから許可や提携を受けたものでもありません。
- 価格推移のグラフや過去の買取額は、カードラッシュ自身が公開していません。推移が必要なら、毎日決まった時刻に buying_prices を呼んで `buy_price_jpy` を貯めてください。`list_updated` に買取表そのものの更新時刻(日本時間)が入るので、記録のキーに使えます。
- 買取表はカード 1 種につき 1 つの金額を載せており、状態ランク別の買取額は返せません。
- 鑑定品の判定は商品名の表記に頼っています。2026年10月25日の「リザードン SAR」価格の高い順(20 件)では、「〔PCG10鑑定済〕」「〔CGC10黒鑑定済〕」「〔※状態難/BGS9.5鑑定済〕」の表記の 5 件が `graded: false` のままで、`card_name` にも接頭辞が残りました。同じ結果の PSA(4 件)と ARS(2 件)は正しく分解されています。
- `language` が入るのは MTG だけです。ポケモンの中国語版などは、商品名の「(中国語版)」でしか区別できません。
- 在庫数は Web ショップの在庫で、実店舗の在庫は含みません。
- キーワード検索の既定の並び(関連度順)は、同じ順位の商品がリクエストごとに入れ替わることがあります。複数ページをたどるときは price_asc、price_desc、featured のどれかを指定してください。