API ドキュメント

買取X Open API v1 リファレンス

NEW
バッチ取得 API をリリースしました — 1リクエストで最大 10件 の JAN/ASIN をまとめて取得できます(Unlimited プラン限定)。 ↓ 詳細を見る

認証

Open API を利用するには認証が必要です。2つの方法があります:

1. API Key (プログラム向け)

マイページでAPI Keyを取得し、リクエストに含めます。

Authorization: Bearer ktx_your_api_key_here

またはクエリパラメータ:

GET /open/api/product/4549995649284?key=ktx_your_api_key_here

2. ブラウザセッション (Web向け)

kaitorix.app にGoogleログイン済みの場合、Cookieで自動認証されます。

料金プラン・レート制限

プラン月額(税込)日次リクエスト取得方法
Free無料30回/日Google ログインで自動付与
Premium1,480円500回/日サブスクリプションページから申込
Unlimited4,980円無制限 + バッチ取得(1リクエストで最大10件)サブスクリプションページから申込
Enterpriseお問い合わせカスタム商務・機能カスタマイズ対応 — お問い合わせ

※全プラン共通:1リクエスト/秒(TPS=1)。日次リクエストは日本時間(JST)0:00 にリセット。
※上限超過時は HTTP 429 を返却します。
※プランの解約・アップグレードはいつでもサブスクリプションページから可能です。

レスポンスヘッダー

ヘッダー説明
X-RateLimit-Limit日次上限
X-RateLimit-Remaining残りリクエスト数
X-RateLimit-Resetリセット時刻 (UNIX timestamp, JST 00:00)

エンドポイント

GET /open/api/product/{jan_or_asin}

JAN コードまたは ASIN で買取価格を検索します。31店舗の買取価格を返却。

パラメータ説明
jan_or_asinstringJAN (7-14桁) または ASIN (B で始まる10桁)
curl
Python
JavaScript
curl -H "Authorization: Bearer ktx_YOUR_KEY" \
  "https://kaitorix.app/open/api/product/4549995649284"
import requests

headers = {"Authorization": "Bearer ktx_YOUR_KEY"}
r = requests.get("https://kaitorix.app/open/api/product/4549995649284", headers=headers)
data = r.json()
print(f"最高買取: {data['max_price']:,}円 ({data['name']})")
const r = await fetch("https://kaitorix.app/open/api/product/4549995649284", {
  headers: { "Authorization": "Bearer ktx_YOUR_KEY" }
});
const data = await r.json();
console.log(`最高買取: ${data.max_price}円`);

レスポンス例

JAN で検索した場合は jan、ASIN で検索した場合は asin のみが返却されます。

{
  "jan": "4549995649284",
  "name": "iPhone 17 Pro Max 256GB シルバー MFY84J/A 未開封 SIMフリー",
  "max_price": 220000,
  "prices": [
    {"store": "買取一丁目", "price": 220000, "url": "https://...", "updated": "8分前"},
    {"store": "買取商店", "price": 220000, "url": "https://...", "updated": "13分前"},
    ...
  ]
}
POST /open/api/product/batch Unlimited 専用

最大 10 件の JAN/ASIN を 1 リクエストで一括取得します(Unlimited プラン限定)。レート制限は 1 リクエスト = 1 カウント、TPS=1 は他エンドポイント共通。

パラメータ説明
jansstring[]JAN (7-14桁) または ASIN (10桁) の配列。最大 10 件
curl
Python
JavaScript
curl -X POST -H "Authorization: Bearer ktx_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jans":["4549995649284","B0DSDB9TKM","4902370553963"]}' \
  "https://kaitorix.app/open/api/product/batch"
import requests

headers = {"Authorization": "Bearer ktx_YOUR_KEY"}
payload = {"jans": ["4549995649284", "B0DSDB9TKM", "4902370553963"]}
r = requests.post("https://kaitorix.app/open/api/product/batch",
                  json=payload, headers=headers)
for item in r.json()["results"]:
    if "error" in item:
        print(f"NG {item.get('jan') or item.get('asin')}: {item['error']}")
    else:
        print(f"{item['name']}: 最高 {item['max_price']:,}円")
const r = await fetch("https://kaitorix.app/open/api/product/batch", {
  method: "POST",
  headers: {
    "Authorization": "Bearer ktx_YOUR_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ jans: ["4549995649284", "B0DSDB9TKM"] })
});
const { results } = await r.json();
results.forEach(item => console.log(item.jan, item.max_price ?? item.error));

レスポンス例

存在しない JAN/ASIN は error フィールド付きで返却され、レスポンス全体は 200 で返ります。

{
  "count": 3,
  "results": [
    {
      "jan": "4549995649284",
      "name": "iPhone 17 Pro Max 256GB シルバー MFY84J/A 未開封 SIMフリー",
      "max_price": 220000,
      "prices": [ { "store": "買取一丁目", "price": 220000, ... }, ... ]
    },
    {
      "asin": "B0DSDB9TKM",
      "jan": "4902370553963",
      "name": "トモダチコレクション わくわく生活 -Switch",
      "max_price": 6150,
      "prices": [ ... ]
    },
    { "jan": "4902370553963", "error": "not_found" }
  ]
}

エラー条件

HTTP条件
400JSON ボディなし / jans 配列でない / 11 件以上 / 要素が文字列でない
403Unlimited 以外のプラン
429TPS 超過(1リクエスト/秒)
GET /open/api/apple-stock

全モデルの Apple Store 在庫状況 + 買取価格を返却。

curl
Python
curl -H "Authorization: Bearer ktx_YOUR_KEY" \
  "https://kaitorix.app/open/api/apple-stock"
r = requests.get("https://kaitorix.app/open/api/apple-stock", headers=headers)
for p in r.json()["products"]:
    in_stock = [s for s, v in p["stock"].items() if v]
    print(f"{p['model']} {p['color']}: {len(in_stock)}店舗在庫あり")
GET /open/api/apple-stock/{part}

特定パーツ番号の在庫を取得。パーツ番号は下記参照表を参照。

GET /open/api/usage

今日の API 使用状況(使用回数、残り回数、7日間履歴)を取得。

GET /open/api/me

現在のユーザー情報、API Key、プランを表示。

POST /open/api/activate

アクティベーションコードでプレミアムプランにアップグレード。

POST /open/api/activate
Content-Type: application/json

{"code": "YOUR_ACTIVATION_CODE"}
POST /open/api/reset-key

API Key を再生成(古いキーは無効化されます)。

エラーコード

200 OK
正常なレスポンス
400 Bad Request
無効なパラメータ(JAN/ASIN 形式エラー等)
401 Unauthorized
認証が必要(ログインまたは API Key 指定)
404 Not Found
商品またはパーツ番号が見つかりません
429 Too Many Requests
日次リクエスト上限超過
500 Internal Server Error
サーバーエラー

Apple パーツ番号参照表

/open/api/apple-stock/{part} で使用するパーツ番号一覧です。

読み込み中...