楽天商品検索 API(2026-07-01 版)に移るときの対処:アクセスキーと Referer が必須、エラーの形式もドキュメントと違う

楽天商品検索 API(2026-07-01 版)に移るときの対処:アクセスキーと Referer が必須、エラーの形式もドキュメントと違う

楽天商品検索 API の 2026-07-01 版では、アプリ ID に加えてアクセスキーが必須です。私の環境では、Referer ヘッダーがないとエラーになりました。 エラーの応答も、ドキュメントに書かれた形とは違う形で返ってきたので、両方に対応しておかないと「該当商品なし」に化けます。

目次

解決方法

  • エンドポイントは openapi.rakuten.co.jp に移っています
https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260701
  • applicationId と accessKey の両方を送る。accessKey は、ドキュメントではヘッダーでもクエリでもよいとされています。URL やアクセスのログに残さないよう、私はヘッダーで送っています
  • Referer ヘッダーを付ける(WordPress から呼ぶなら、サイトの URL)
  • エラーは、ドキュメントの形(error と error_description)と、実際に返ってきた形(errors の中の errorCode と errorMessage)の両方を見る

WordPress から呼ぶなら、次のような形です。

$response = wp_remote_get(
    add_query_arg(
        array(
            'applicationId' => $application_id,
            'keyword'       => $keyword,
            'format'        => 'json',
        ),
        'https://openapi.rakuten.co.jp/ichibams/api/IchibaItem/Search/20260701'
    ),
    array(
        'headers' => array(
            'accessKey' => $access_key, // URL に残さないようヘッダーで送る
            'Referer'   => home_url(),
        ),
        'timeout' => 15,
    )
);

$body = json_decode( wp_remote_retrieve_body( $response ), true );
// エラーは2つの形のどちらでも返ってくる
$error = $body['errors']['errorMessage'] ?? $body['error_description'] ?? $body['error'] ?? null;
if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) >= 400 || $error ) {
    // 「該当商品なし」にせず、エラーとして画面に出す
}

起きたこと

WordPress のプラグインから楽天の商品検索 API を呼んで、商品のリンクと画像を入れる機能を作っていました。2026-07-01 版に移ると、次の順番でつまずきました。

  1. アクセスキーが必須になっていた:アプリ ID だけでは通らなくなっていました
  2. Referer ヘッダーもないと通らなかった:REQUEST_CONTEXT_BODY_HTTP_REFERRER_MISSING というエラーで気づきました。公式のドキュメントには、Referer についての記載は見つかりませんでした
  3. エラーが「該当商品なし」に化けていた:ドキュメントにある error の形しか見ていなかったので、errors の形で返ってきたキーの誤りなどが素通りして、「該当する商品が見つかりませんでした」と表示されていました

アプリの登録と送信元の IP

楽天ウェブサービスのアプリを「API/バックエンドサービス」として登録したときは、API を呼ぶ側の IP アドレスの登録を求められました。

共有のレンタルサーバーでは、サイトを配信している IP と、外に API を呼びに行くときの IP が違うことがあります。そこで、プラグインの設定画面に、サーバーから外部の IP の確認サービスに問い合わせて、実際の送信元 IP を表示するボタンを付けました。

アプリの種類ごとの違い(「Web アプリケーション」との違いなど)は、公式のドキュメントでは見つけられませんでした。登録するときの画面の案内に従ってください。

エラーを握りつぶさない

楽天でも Amazon の API でも、同じ失敗をしていました。HTTP のエラーを「結果が空」として扱うと、「該当商品なし」に化けて、原因が追えなくなります。エラーはエラーとして、コードとメッセージをそのまま画面に出すように直しました。

確かめた環境

  • 2026-08-24 に、WordPress のプラグインから呼んで確認
  • 楽天商品検索 API 2026-07-01 版
  • 楽天の仕様は変わることがあるので、最新の公式ドキュメントもあわせて確かめてください

参考

あわせて読みたい

楽天商品検索 API(2026-07-01 版)に移るときの対処:アクセスキーと Referer が必須、エラーの形式もドキュメントと違う

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。Claude Code / Codex / MCP / BigQuery / 自動化 / ガジェット / 3Dプリンター / スマートホーム。楽して生きたい。ゲーム / イヤホン / キーボード / プログラミング / AI

目次