logo
JP

楽天APIの使い方|申請・料金からPython・JavaScriptでの商品検索まで

楽天APIの使い方を、申請・登録からPythonとJavaScriptの商品検索まで解説。それに、楽天のデータをまとめて収集する代替方法についても詳しく紹介します。

約9分で読めます

楽天APIは、楽天市場の商品情報などをプログラムから取得するためのインターフェースです。商品検索を始める基本の流れは、アプリ登録、App ID・Access Keyの取得、リクエスト送信、JSONの処理の4段階です。本記事ではRakuten Web Serviceの楽天市場商品検索APIを中心に、PythonとJavaScriptによる使い方を説明します。

「申請後にどの値をコードへ入れればよいのか」「古いサンプルを試しても動かない」「商品名と価格を表にしたいだけなのに、APIから勉強する必要があるのか」。楽天APIの使い方で迷うポイントは、読者の目的によって違います。まず1回の検索を理解し、その後で継続運用やコードを書かない取得方法を選びましょう。

やりたいことまず選ぶ方法理由
公式の商品データをアプリで検索・表示したい楽天市場商品検索API取得フィールドと利用条件が要件に合えば、公式の構造化データを利用できる
コードを書かず、商品情報を表にしたいOctoparseのテンプレート/AI アシスタントURLや必要な項目をもとに収集タスクを準備できる
構築済みのWeb収集タスクを自社システムから動かしたいOctoparse OpenAPIテンプレートや既存タスクの実行・結果取得を連携できる
自店舗の注文・在庫・商品登録を管理したいRMS WEB SERVICE店舗運営用の権限・機能が必要。公開ページ収集とは別の用途

楽天APIでできることは?主なAPI一覧とRMSとの違い

「楽天API」は単一の製品名ではありません。公開の商品情報を探すRakuten Web Serviceと、出店者が店舗業務に使うRMS WEB SERVICEでは、申請先もアクセス条件も異なります。この記事のPython・JavaScript例は、公開商品検索向けです。

種類主な用途想定する利用者
楽天市場商品検索APIキーワード・ジャンル・ショップなどの条件で商品を検索商品検索アプリの開発者、商品紹介サイトの運営者
楽天市場ランキングAPIランキング情報を取得ランキング表示や商品調査を行う開発者
楽天市場ジャンル検索APIジャンル情報を確認検索条件やカテゴリ表示を設計する開発者
楽天ブックス系・楽天トラベル系API本・旅行など対象サービスの情報を取得各サービスを使ったサイト・アプリの開発者
RMS WEB SERVICE自店舗の商品・在庫・注文などを管理楽天市場の出店者、対応する業務システムの開発者

楽天API一覧から利用するインターフェースを選ぶ際は、サービスごとの仕様を確認してください。商品検索とランキングでもバージョンは必ずしも同じではありません。決済など他事業のAPIも、本記事の申請方法や無料条件をそのまま適用できません。対象はRakuten Web Service公式サイトで確認できます。

商品検索APIでは、どんな項目を取得できる?

商品名、価格、ショップ情報、レビュー件数、平均評価などをJSONで扱えます。画面から1項目ずつコピーせずに、アプリで処理できることが利点です。ただし、利用できるフィールドと、取得後に許される使い方は別々に確認します。

代表フィールド意味読み取り時の注意
itemName / itemCode商品名/商品コード比較や重複確認では名前だけに依存しない
itemPrice / itemUrl商品価格/商品URL価格だけで送料やユーザー別特典まで確定しない
shopName / shopCodeショップ名/ショップコード同じ商品の別店舗販売を区別する
reviewCount / reviewAverageレビュー件数/平均評価レビュー本文を返すフィールドとは異なる
postageFlag / pointRate送料区分/商品ごとのポイント倍率入力条件と出力値の定義、ポイントの対象範囲を確認する

楽天APIの料金は?無料で使える範囲と利用条件

Rakuten Web Serviceの公式FAQでは、提供するAPIは現在無料と案内されています。ただし、無料であることは、無制限のリクエストや用途を問わないデータ利用を意味しません。RMSなど別サービスの契約条件とも区別しましょう。

呼び出し頻度と開発・運用コストを分けて考える

公式の共通FAQは、1つのApplication IDにつきリクエストを1秒に1回以下にするよう案内しています。複数のバッチやアプリが同じIDを使う場合は、処理ごとではなく全体で頻度を管理します。APIごとの個別仕様やアカウントへの案内も優先して確認してください。

APIの利用料とは別に、定期実行の環境、認証情報の管理、失敗時の再処理、結果の保存にも工数がかかります。一方、少量の商品検索だけなら、第三者サービスの契約を増やさず公式APIを利用する方が合理的な場合があります。

アフィリエイト・商用利用・保存のルールは?

楽天APIでアフィリエイトを行う場合は、Affiliate IDやリンクの作り方に加え、楽天アフィリエイトの規約も確認します。APIの登録が完了しただけで、商品情報の長期保存、再配布、有償サービスへの組み込み、社内限定利用などが一律に許可されるわけではありません。

利用目的・公開範囲・保存期間・更新頻度を整理し、Rakuten Web Service利用規約と個別ルールを確認してください。公式サイトの英語版は参考訳で、日本語原文が適用される旨が明記されています。不明な用途は運営元に確認します。また、アプリには公式指定のクレジット表示が必要です。設置方法はクレジット表示ガイドを参照してください。

楽天APIの申請・登録方法|App IDとAccess Keyを取得する

楽天APIの申請・登録は、楽天アカウントでアプリを登録するところから始めます。2026年7月1日版の商品検索APIでは、App IDだけでなくAccess Keyも必要です。App IDしか登場しない過去の記事とは、この点が異なります。

  1. 公式の開発ガイドを開き、楽天アカウントでログインする。
  2. アプリ名、アプリURL、アプリ種別、利用目的、許可するWebサイトなど、登録フォームの必須事項を入力する。
  3. 発行されたApp IDとAccess Keyを確認し、安全な場所に保存する。
  4. 商品検索APIのバージョンと必須パラメータを確認し、少量の検索から始める。

登録内容は実際の実行環境と一致させます。Webサイトや送信元の設定でエラーが出る場合は、管理画面と公式の案内を確認してください。他のサイトのURLを借りたり、送信元を偽ったりして解決する方法は採りません。

値役割実装上のポイント
App ID(applicationId)登録したアプリの識別検索リクエストのパラメータに指定する
Access Key(accessKey)App IDと組み合わせる認証情報同じアプリの組み合わせを使う。ヘッダーまたはクエリで指定
Affiliate ID(affiliateId)アフィリエイトリンクなどに使う識別子商品検索の認証情報の代わりにはならない。必要な用途で指定

認証情報はソースコードへ直接書かず、環境変数やシークレット管理から読み込みます。エラーログへリクエストURL全体を残すと、App IDなどが含まれることがあるため、ログの扱いにも注意しましょう。

楽天APIの使い方をPythonで解説|商品情報を取得する

ここでは「コーヒー」を検索し、商品名・価格・ショップ名を表示します。まず1ページだけ取得し、レスポンスを理解してから処理を増やします。参照仕様は楽天市場商品検索API 2026-07-01版です。

1.環境を準備し、認証情報を設定する

Pythonとrequestsを用意します。環境変数RAKUTEN_APP_IDとRAKUTEN_ACCESS_KEYには、自分で登録した同一アプリの値を設定してください。次のYOUR_から始まる文字列は説明用で、利用可能な認証情報ではありません。

python -m pip install requests

# macOS / Linux の設定例
export RAKUTEN_APP_ID="YOUR_APP_ID"
export RAKUTEN_ACCESS_KEY="YOUR_ACCESS_KEY"

2.検索リクエストを送り、JSONを処理する

import os
import requests

ENDPOINT = "https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260701"

def fetch_items(keyword, page=1):
    response = requests.get(
        ENDPOINT,
        headers={"accessKey": os.environ["RAKUTEN_ACCESS_KEY"]},
        params={
            "applicationId": os.environ["RAKUTEN_APP_ID"],
            "keyword": keyword,
            "format": "json",
            "formatVersion": 2,
            "hits": 10,
            "page": page,
        },
        timeout=30,
    )
    response.raise_for_status()
    data = response.json()
    if "error" in data or "errors" in data:
        raise RuntimeError("APIエラー。公式のエラー仕様を確認してください。")

    # 返却キーの表記を確認する。想定外の構造を空の結果と扱わない。
    raw_items = data.get("Items", data.get("items"))
    if not isinstance(raw_items, list):
        raise ValueError("商品配列が見つかりません。レスポンス構造を確認してください。")
    items = []
    for entry in raw_items:
        if not isinstance(entry, dict):
            raise ValueError("商品データの形式が想定と異なります。")
        item = entry.get("Item", entry.get("item", entry))
        if not isinstance(item, dict):
            raise ValueError("商品オブジェクトを確認してください。")
        items.append(item)
    return data, items

if __name__ == "__main__":
    data, items = fetch_items("コーヒー")
    for item in items:
        print(item.get("itemName"), item.get("itemPrice"), item.get("shopName"))

この例をrakuten_search.pyとして保存し、python rakuten_search.pyで実行します。requestsにparamsを渡すことで、日本語の検索語をURLへ手作業で連結せずに扱えます。Access Keyはヘッダーに、App IDはクエリに指定しています。

3.返却フィールドとデータの意味を確認する

formatVersionは日付付きのAPIバージョンとは別です。JSON内の商品ラッパーの有無に関係するため、サンプルコードと実際の返却構造を合わせます。上記例は大文字・小文字のキー表記とラッパーを確認する処理を含みますが、運用時は確認済みのレスポンスに合わせてテストを固定しましょう。

初回は価格の型、欠損、URL、ショップ情報を確認します。結果を保存する場合も、取得できたことだけを根拠に無期限で蓄積せず、利用規約の範囲に合わせて保存・更新・削除を設計してください。認証済みの成功レスポンスや実在商品を使った出力例は、本記事では掲載していません。

楽天APIをJavaScriptから使うには?Node.jsの実装例

JavaScriptでも、基本は同じHTTPリクエストです。ここでは標準のfetchが使えるNode.js環境で、サーバー側から呼び出す例を紹介します。先ほどと同じ2つの環境変数を設定し、次のコードをrakuten-search.mjsとして保存します。

const endpoint = "https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260701";
const { RAKUTEN_APP_ID, RAKUTEN_ACCESS_KEY } = process.env;
if (!RAKUTEN_APP_ID || !RAKUTEN_ACCESS_KEY) {
  throw new Error("環境変数にApp IDとAccess Keyを設定してください。");
}
const url = new URL(endpoint);
url.search = new URLSearchParams({
  applicationId: RAKUTEN_APP_ID,
  keyword: "コーヒー",
  format: "json",
  formatVersion: "2",
  hits: "10",
  page: "1",
}).toString();

try {
  const response = await fetch(url, {
    headers: { accessKey: RAKUTEN_ACCESS_KEY },
    signal: AbortSignal.timeout(30000),
  });
  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  const data = await response.json();
  if (data.error || data.errors) throw new Error("APIエラーを確認してください。");
  const entries = data.Items ?? data.items;
  if (!Array.isArray(entries)) throw new Error("商品配列を確認してください。");
  const rows = entries.map((entry) => {
    const item = entry.Item ?? entry.item ?? entry;
    return {
      itemName: item.itemName,
      itemPrice: item.itemPrice,
      shopName: item.shopName,
    };
  });
  console.table(rows);
} catch (error) {
  console.error(error.message);
  process.exitCode = 1;
}

node rakuten-search.mjsで実行します。フロントエンドのJavaScriptへAccess Keyを埋め込むと、配信コードや通信から見える可能性があります。Webサイトで使う場合は、適用される公式条件に沿ってバックエンドから呼び出し、必要な結果だけを画面へ返す構成を検討します。CORSなどブラウザの制約とAPIの認証を混同しないようにしましょう。

楽天APIで取得できない・エラーになるときの確認ポイント

ページ分割・並び替えはどう設定する?

商品検索APIのhitsは1〜30、pageは1〜100です。検索に該当する件数が多くても、単純なページ送りで全商品を取得できるとは限りません。取得範囲を定義し、終了条件と呼び出し頻度を管理します。条件を細分化しても、全件性が保証されるわけではありません。

並び替えにはsortを使います。例えば価格の昇順に用いる+itemPriceは、URLを手組みすると「+」の解釈を誤る場合があります。PythonのparamsやJavaScriptのURLSearchParamsで値をエンコードしてください。複数のページを取得する際は、各要求の間隔を確保し、同じApp IDを使う他処理も含めて制限を守ります。

症状・ステータス最初に確認すること対処の考え方
必須項目不足・400App ID、Access Key、検索条件、パラメータの型仕様と送信値を照合する。変更せずに連続再試行しない
429同じApp IDを使うすべての処理の頻度間隔を空け、再試行は回数と待ち時間を管理する
500・503など一時的なサーバー側障害か上限付きの再試行と失敗記録を設ける
結果が空・想定と違う検索語、ショップ、ジャンル、ページ、レスポンス構造正常な0件と解析失敗を区別する
認証・アクセス設定のエラー同一アプリの認証情報、登録環境、エラー本文公式案内を確認する。実行元の偽装で対応しない

レビュー本文・送料・ポイントはどこまで分かる?

reviewCountとreviewAverageは件数と平均評価です。商品検索APIのレスポンスに、それらがあることと、個々のレビュー本文をすべて取得できることは違います。文章の分析が必要なら、別の許可された取得方法が必要かを確認します。

postageFlagは入力時のフィルター値と出力時の区分を取り違えやすい項目です。また、pointRateは商品単位の倍率に関する情報で、ユーザーごとのSPUやキャンペーンをすべて加えた最終還元率ではありません。画面で見る値との差を、直ちにAPIの不具合と判断しないことが大切です。

楽天公式API・AIアシスタント・Octoparse OpenAPIはどう選ぶ?

比較項目楽天公式APIOctoparse AI AssistantOctoparse OpenAPI
主な役割公式の商品情報を取得必要なデータを説明し、収集方法やタスク作成を支援テンプレート・既存タスクの実行や結果取得をシステムから利用
適する人商品検索・表示機能を実装する開発者EC運営者、調査・分析担当者開発者、データチーム、SaaS開発者
最初の作業アプリ登録、認証、リクエスト実装URLと項目を指定し、方法・結果を確認認証、テンプレート/タスク選定、入力・状態処理の実装
対象データ公式スキーマ内の情報対象ページと選択した方法・タスクによる呼び出すテンプレート/タスクによる
継続運用自社側で呼び出し・保存などを設計モードとプランに応じて再利用・クラウド実行クラウド実行と結果取得をシステムへ接続
出力JSONなどを自社コードで処理対応する表形式へエクスポートAPI・対応するエクスポート経路で取得
費用・制限無料の案内あり。頻度・ページ・利用条件ありプランの行数・実行条件などを確認プラン、共有行数枠、タスク消費、追加機能の費用を確認
代替できない用途RMSなど別サービスの機能注文処理・在庫更新などのRMS管理RMS管理、公式アフィリエイト機能そのものの代替

楽天公式APIで必要なデータを取得できる場合は、公式APIを利用するのが合理的です。一方、APIの申請やプログラミングをせずに商品情報をまとめたい場合や、Webページ上の情報を独自の項目で収集したい場合は、Octoparse(オクトパース)も選択肢になります。

Octoparseは、Webサイトから必要な情報を自動収集し、表形式のデータに整理できるスクレイピングツールです。600種類以上の既成テンプレートに加え、AIアシスタントを使えば、欲しいデータを日本語で伝えるだけで、収集方法の提案からタスクの作成・実行までAIに任せられます。

AIアシスタントで楽天の商品情報をコード不要で収集

例えば、楽天市場で競合商品の価格調査を行う場合、商品名や価格、送料、ポイント、ショップ名、評価などを一つずつコピーするのは手間がかかります。

OctoparseのAIアシスタントなら、対象ページのURLと取得したい項目を伝えるだけで、AIが目的に合った収集方法を提案します。

例えば、次のように日本語で依頼できます。

楽天市場の検索結果ページから、商品名、価格、送料、ポイント、ショップ名、評価、レビュー件数、商品URLを収集し、比較できる表にまとめてください。

対象URL:https://search.rakuten.co.jp/search/mall/SKII/

AIアシスタントは依頼内容を整理し、利用可能な方法を提案します。収集方法は主に次の4つです。

  • テンプレート: 条件に合った既存のテンプレートがあれば、AIが優先的に提案します。例えば、楽天の商品を検索・収集する際は、対応するテンプレートを利用できます。設定の手間を抑えて、すぐに収集を始めたい方に適しています。
  • Browser Use(ベータ版): AIがブラウザを操作してWebページを探索し、データを取得します。ログイン後に表示される情報を収集したい場合や、特定のレース結果を一度だけ取得したい場合に適しています。自分のパソコン上で実行され、スケジュール実行には対応していません。
  • Cloud Agent(ベータ版): AIが収集条件に合わせて専用のスクレイパーを自動的に作成し、Octoparse Cloudで実行します。独自の取得項目やフィルターを指定でき、複数レースの大量データ収集や継続的なデータ収集におすすめです。スタンダードプラン以上では、スケジュール実行にも対応しています。
  • 自動検出(Desktop app): 対象ページのURLからデータの構造を自動検出し、Octoparse Desktop用のタスクを生成します。

ユーザーは提案された方法から適したものを選び、取得結果を確認できます。収集した商品情報はCSVやExcelなどに整理でき、価格比較、競合調査、市場分析に活用できます。

次はOctoparseのAIアシスタントを通じてテンプレートで楽天の商品を収集する方法について詳しく紹介します。

楽天の商品を収集

Step1:AIアシスタントを開く

octoparse.jp/console/task/agenticにアクセスするか、Octoparseのホームページにあるチャット欄にリクエストを入力します。

チャット欄にリクエストを入力

Step2:取得したいデータを伝える

対象サイト、必要なフィールド、フィルターを、好きな言語で普段どおりに伝えます。URLを貼り付けても構いません。ここでは、「このページから商品名、価格、送料、ポイント、ショップ名、評価、レビュー件数、商品URLを20件収集し、比較できる表にまとめてください。」を入力した。

欲しいデータを入力

Step3:AIアシスタントが理解した内容を確認する

AIアシスタントは 「理解した要件」に、サイト、目的、制約条件としてリクエストをまとめます。内容が違う場合は、「編集」 を選択して修正し、「保存」 を選択します。

また、AIがユーザーのニーズに応じて利用できる収集方法を提案します。ここでは、テンプレート、Browser Use、自動検出などいずれも利用できるので、例としてテンプレートを選択した。

テンプレートを選択

Step4:提案したテンプレートにフィールドを入力

ここでは、「楽天商品情報」テンプレートを選択した。テンプレートにページのURLを入力してから、「実行」をクリックします。

「楽天商品情報」テンプレートを選択
テンプレートにフィールドを入力

Step5:取得したデータをエクスポート

タスクが完了したら、データを確認し、もし問題がなければデータをエクスポートします。

データをエクスポート

関連記事:

楽天市場の商品情報をスクレイピングする方法

開発者がOctoparse OpenAPIを検討する理由は?

楽天公式APIで必要なデータを取得できる場合は、そのまま利用するのが合理的です。一方、独自の項目でWebデータを収集したい、複数のECサイトの情報をまとめたい、スクレイピングの開発・保守負担を減らしたい場合は、Octoparse OpenAPIも選択肢になります。

Octoparseの強みは、既成テンプレートや自作スクレイパーをAPI経由で利用できることです。開発者は収集処理を一から構築する手間を減らし、データ分析や自社アプリケーションの開発に集中できます。

既成テンプレートをAPIから呼び出し、自社システムに連携

Octoparseには、商品名、価格、送料、評価、ショップ名などを取得できる楽天市場専用テンプレートが用意されています。

対応するテンプレートは、AgentTools APIから検索・実行し、取得結果をJSONやCSV形式で自社のデータベースや分析ツールに連携できます。 既成テンプレートで対応できない場合は、AIアシスタントやOctoparse Desktopで独自の収集タスクを構築し、APIから再利用することも可能です。

クラウド実行で、開発・運用コストを削減

Octoparse Cloudを利用すれば、自社でスクレイピング用サーバーを構築・管理する負担を軽減できます。 Standard以上のプランでは、対応するタスクの定期実行や並列処理にも対応しています。

例えば、楽天市場や他のECサイトの商品価格を定期収集し、自社の価格分析システムへ自動連携する運用が可能です。データ収集はOctoparseに任せ、開発者は価格変動の分析や通知機能など、自社サービスの開発に集中できます。

導入前に費用・操作性・統合性をどう評価する?

開発者の懸念評価するときのポイント
総コスト契約費だけでなく、必要行数、実行頻度、追加機能、保守時間を含めて試算する
設定の操作性既成テンプレートで要件を満たすか。独自項目はAI Assistant/Desktopで構築・調整できるか
システム統合認証、タスクID管理、非同期状態、出力形式が既存構成に合うか
クラウド実行利用するプランとタスクで、必要な予約実行・同時実行が可能か
データ品質必要な列、欠損、重複、型、更新タイミングを少量で確認できるか
変更への対応テンプレートの適用範囲と自社担当分を決め、変更時の検証を用意できるか

楽天APIの使い方に関するよくある質問

Q1.楽天APIは無料で使えますか?

Rakuten Web Serviceの公式FAQでは現在無料と案内されています。ただし、リクエスト制限や利用規約があります。RMSなど別サービスの料金・契約条件と混同しないでください。

Q2.App ID・Access Key・Affiliate IDの違いは何ですか?

App IDは登録アプリを識別し、Access Keyは対応するApp IDと組み合わせて使います。Affiliate IDはアフィリエイト用途の識別子です。商品検索APIの認証をAffiliate IDだけで行うことはできません。

Q3.楽天APIはPythonとJavaScriptのどちらで使えますか?

どちらでもHTTPリクエストを送れます。本記事ではPythonのrequestsとNode.jsのfetchを使いました。ブラウザへ秘密情報を公開しない構成と、実行環境の登録条件を確認してください。

Q4.楽天商品検索APIでレビュー本文も取得できますか?

商品検索APIにはレビュー件数と平均評価の項目がありますが、個々のレビュー本文を取得することとは異なります。本文が必要なら、利用条件を確認し、適切な別の取得方法を評価します。

Q5.APIを使わずに商品情報を表にまとめられますか?

対象ページと利用条件が適合すれば、Octoparseの既成テンプレート、AI アシスタント、Desktopによる収集を検討できます。必要な項目が取れるか、少量の結果を確認して判断します。

Q6.Octoparseで注文管理や在庫更新もできますか?

本記事で紹介する商品データ収集やOpenAPIは、楽天の店舗管理用RMS APIの代替ではありません。注文処理、商品登録、在庫変更が目的なら、権限と対応機能を備えた公式のRMS WEB SERVICEを確認してください。

まずは公式APIで必要な情報と利用条件を満たせるかを確認し、最初の1ページを取得しましょう。コードを書かずに表を作るならテンプレートやAI Assistant、収集タスクを自社システムへ組み込むならOpenAPIが検討先です。必要なデータと担当する運用範囲を決めると、選択が明確になります。

まとめ

楽天APIの使い方は、アプリを登録し、App IDとAccess Keyを取得して、商品検索APIへリクエストを送るのが基本です。PythonやJavaScriptで商品名・価格・ショップ情報などを取得できますが、実装前に料金、呼び出し制限、取得項目、データの利用条件を確認しましょう。必要な情報と用途を満たせるなら、公式APIが有力な選択肢です。

一方、コードを書かずに商品データを表にまとめたい場合は、Octoparseの既成テンプレートやAI アシスタントを検討できます。開発者が収集処理を自社システムへ組み込みたい場合は、OpenAPIを通じてテンプレートや構築済みタスクを利用することで、収集基盤の開発・運用を分担できます。

関連記事:楽天向けクローリングツールの比較/楽天市場の商品情報を収集する方法

今日はどんなデータを集めたいですか?
欲しいデータを伝えるだけで、AI Assistant がスクレイパーを自動的に作成します。
クレジットカード不要

今すぐOctoparseを始めて、業務効率化を実現しましょう。

ダウンロード

関連記事