API

楽天市場 API:商品・レビュー・SKU 価格を JSON で取得

楽天には公式の楽天ウェブサービス(楽天市場の商品検索 API など)があり、アプリ ID とアクセスキーを発行すれば使えます。キーワード検索やランキングだけが目的なら、そちらで足りる場合もあります。この API は、買い物客が見ている検索結果・商品ページ・レビューページを読み、JSON に整えて返します。アプリ ID の申請も楽天会員のログインも要りません。主な使いどころは二つで、レビューを最後のページまでたどれることと、1 つの商品ページにある容量・色・サイズ違いの価格を SKU ごとに分けて返すことです。RMS と連携して商品を登録したり受注を処理したりする、出店者向けの仕組みではありません。楽天市場への書き込みは一切行わず、ログインせずに見られるページの内容だけを扱います。

エンドポイント

endpoint返ってくるもの必須
searchキーワードまたはジャンル ID で検索。各行に商品名、価格(円)、ショップ名とショップコード、ポイント、送料、レビュー平均と件数、レビューページの URL、画像、売り切れかどうか。最低価格と最高価格(円)を指定でき、並び順は標準、安い順、高い順、レビュー評価順、新着順から選べます。1 ページはおよそ 45〜50 行で、次のページへは `next_page` の番号で進みます。すべて任意
item商品ページ 1 件:商品名、価格、ブランド、ショップ、レビュー平均と件数、画像ギャラリー、ジャンルのパンくず(名前と ID)、仕様欄、HTML を取り除いた商品説明、送料無料かどうか、SKU の数。商品 URL か、`shop_code` と `item_path` の組で指定します。すべて任意
reviews購入者レビューを 1 ページ 30 件ずつ、最後のページまで:星、本文、投稿日、注文日、「参考になった」の数、投稿者の表示名、そして総件数。すべて任意
variantsSKU の一覧。容量・色・サイズなどの組み合わせごとに価格、SKU ID、選択肢の表記を返します。すべて任意
shopショップコードを指定して、そのショップが販売している商品をページ単位で全件。shop_code
ranking楽天市場ランキング。総合またはジャンル別に、デイリー・週間・リアルタイム・月間。1 ページ 80 位まで。すべて任意
genresジャンルの階層。`genre_id` を省けば最上位の一覧、渡せばそのジャンルの配下が返ります。検索の `genre_id` に使う番号はここで調べます。すべて任意

呼び出しごとにクレジットを消費します。失敗した呼び出しとブロックされた呼び出しは無料です。

動作する例

同じ「得福米」でも、価格は見る場所によって違いました。検索結果の行では 2,280 円(5kg の価格)、`item` では 3,880 円(10kg の価格)です。容量ごとの価格がそろって出てくるのは `variants` だけで、5kg 2,280 円、10kg 3,880 円、20kg 7,280 円、30kg 10,380 円でした。お米のように容量で値段が変わる商品を比べるなら、SKU ごとに 1kg あたりの価格を出してから比べてください。

リクエスト
curl -X POST https://api.reefapi.com/rakuten/v1/variants \
  -H "x-api-key: あなたのAPIキー" \
  -H "content-type: application/json" \
  -d '{"url": "https://item.rakuten.co.jp/fukuteirice/tokutokumai/"}'
レスポンス(抜粋)
{
  "ok": true,
  "data": {
    "variants": [
      {
        "variant_id": "tokutokumai10",
        "selector_values": ["10kg(5kg×2袋)"],
        "item_price": 3880,
        "currency": "JPY",
        "merchant_sku_id": "tokufukumai10",
        ...
      },
      {
        "variant_id": "tokutokumai5",
        "selector_values": ["5kg(5kg×1袋)"],
        "item_price": 2280,
        "currency": "JPY",
        "merchant_sku_id": "tokufukumai5",
        ...
      },
      { "variant_id": "tokufukumai30", "selector_values": ["30kg(5kg×6袋)"], "item_price": 10380, "currency": "JPY", ... },
      { "variant_id": "tokufukumai20", "selector_values": ["20kg(5kg×4袋)"], "item_price": 7280, "currency": "JPY", ... }
    ],
    "selectors": [
      {
        "key": "Key0",
        "label": "得福米",
        "values": [
          { "value": "5kg(5kg×1袋)", "label": "5kg(5kg×1袋)" },
          ...
        ]
      }
    ],
    "item_url": "https://item.rakuten.co.jp/fukuteirice/tokutokumai/",
    "variant_count": 4
  },
  "meta": { "record_count": 4, "charged_credits": 1, "cache_hit": false, "mode": "live" }
}

楽天市場のレビューと商品データを自前でスクレイピングすると

レビューページの URL は、組み立てに使う番号を一つ間違えると HTTP 400 になります。私たちも最初は別の番号で URL を作っていたため、レビューページを開けず、商品ページに埋め込まれた最初の 3 件ほどしか返せていませんでした。正しくはショップ ID と商品 ID(どちらも数字)の組み合わせで、2026年6月22日にこれに直してから、30 件ずつ最後のページまでたどれるようになっています。

もう一つ厄介なのが、レビューがあるのに中身のないページが返ってくることです。662 件のレビューがある同じ商品で測ったところ、およそ 3 割のリクエストで件数 0 の not-found ページが返りました。本当にレビューがない商品は、正規のレビューページに 0 件と書かれて返ってくるので見分けられます。この API は前者を「レビュー 0 件」として返さず、再試行できるエラーにしています。

検索結果の行にも注意が要ります。今回の「米 5kg」の 1 ページ目は 50 行でしたが、同じ商品が 2 回出ていて、実際には 49 商品でした。さらに `item_code` はショップの中でしか一意ではなく、同じ 50 行の中で 4 つの番号が別々のショップの商品に使われていました。保存するときのキーは `shop_code` と `item_code` の組か、`item_url` にしてください。

相場を出すときにいちばん混ざりやすいのは、商品名の中の金額です。「5kg×2袋が3,880円!」「10kg3,680円 5kg2,180円」のように、楽天の商品名にはセット価格やクーポン後の金額がよく書き込まれています。商品名から正規表現で値段を拾うと、ほぼ確実にこれを拾います。価格は `item_price` か `variants` から取ってください。

制限と正直な注記

  • 運営しているのは楽天グループとは無関係の第三者です。楽天が提供・承認したものでも、提携や契約に基づくものでもなく、公式の楽天ウェブサービスとも別のサービスです。
  • ランキングで商品名と価格まで入るのは上位 3 件だけです。2026年10月26日、白米ジャンル(201184)の週間ランキング 80 件のうち 77 件は、商品として読める情報が `rank` と `item_url` だけでした。この 77 件にも `availability: "in_stock"` が付いていますが、名前も価格もない行に付いている値なので、在庫の判断には使えません。名前と価格が必要なら、その `item_url` を `item` に渡してください。
  • 検索やショップ一覧の行の価格は、複数ある SKU のうち 1 つの価格です(得福米では 5kg の 2,280 円)。`item` の価格(3,880 円)とは一致しないことがあるので、容量や色の違いまで比べるなら `variants` を使ってください。
  • 検索結果には自治体のふるさと納税の返礼品も混ざります(「米 5kg」では 50 行中 2 行)。返礼品の行の価格は商品代金ではなく寄附の金額なので、普通の販売価格と一緒に平均を取ると相場がずれます。
  • 検索のページ番号は 100 が上限です。レビューは楽天のレビューページの既定の並び順で返り、投稿日順ではありません(今回の 1 ページ目は 2026年1月から5月の投稿が混在していました)。
  • 検索候補(サジェスト)と、「この商品を見た人は」のような関連商品は、取得できる公開ページが見つからず提供していません。
  • どのエンドポイントも 1 回の呼び出しで 1 クレジットです。レビューは 30 件ごとに 1 回の呼び出しになるため、954 件を全部取るなら 32 回です。