API

Amazon.co.jp API:日本のストアの商品・価格・レビューを JSON に

amazon.co.jp で買い物客が目にしている情報を、そのまま JSON にして返す API です。検索結果の価格(円)、星の平均と評価数、「タイムセール」などの表示、ASIN ごとの商品ページ全体、同じ商品を売る出品者ごとの価格までを扱います。Amazon の公式 API である出品者向けの SP-API や、アソシエイト向けの Product Advertising API とは別物です。出品者アカウントもアソシエイト登録も要らない代わりに、注文や在庫の管理はできません。読み取り専用で、対象はサインインせずに見られる範囲の商品ページです。日本のストアを読むときは、すべてのリクエストに `"marketplace": "co.jp"` を付けてください。付け忘れると amazon.com が検索され、米ドルと英語の商品名が返ってきます。

エンドポイント

endpoint返ってくるもの必須
searchキーワード検索。ASIN、商品名、円建て価格、星の平均、評価数、画像、スポンサー表示、クーポン、「タイムセール」などのバッジ。価格帯(円)、最低評価、ブランドで絞り込み、おすすめ順・価格の安い順/高い順・レビュー順・新着順・売れ筋順に並べ替え。`max_results` で 1 つのキーワードにつき最大 336 件。query
product/detailASIN から商品ページ全体を取得:商品名、ブランド、価格と参考価格、割引率、在庫表示、商品の特徴(箇条書き)、画像、色やサイズのバリエーション、仕様の表、カテゴリ、カートを獲得している出品者と発送元、お届け予定、星の分布、UPC などのバーコード、ページに載っている上位 8 件のレビュー。asin
product/offers同じ ASIN のすべての出品:カートに入っている出品とそれ以外の出品、それぞれの価格、新品か中古か、発送元、お届け日、プライム対象かどうか。asin
product/reviewsレビューの星、タイトル、日付、本文、「Amazonで購入」の表示の有無、「役に立った」の数。Amazon がレビューを AI で要約している商品では、その要約と、観点ごとの言及数・好意的な割合も返します。`marketplaces` を使うと複数の国のストアのレビューを重複なくまとめられます。asin
product/related商品ページのおすすめ枠を、一緒に購入されている商品、この商品を見た人が見ている商品、関連商品といった関係ごとに分けて返します。各商品に ASIN、価格、星。asin
products_batch1 回の呼び出しで最大 40 個の ASIN をまとめて:商品名、現在の価格、星、評価数、画像、クーポンやセールのバッジ。検索結果のカードと同じ要約なので、仕様やレビューが必要なら product/detail を使います。Amazon が返さなかった ASIN は `not_found` に入ります。asins
gtin-to-asin商品のバーコード(JAN/EAN、UPC、ISBN)から ASIN を探します。`verify` を付けると、見つかった商品ページにそのバーコードが実際に載っているかも確かめます。すべて任意
category/browseカテゴリのノード ID を指定して、そのカテゴリの商品を 1 ページずつたどります。キーワードに合う商品ではなく、カテゴリの中身を丸ごと見たいとき向けです。node
bestsellers部門ごとの売れ筋ランキング、100 位まで。category
new-releases部門ごとの新着ランキング。返る形は売れ筋ランキングと同じです。category
dealsタイムセールのページに並んでいる商品:ASIN、商品名、価格、画像。すべて任意
autocomplete入力途中の文字列に対して、Amazon の検索窓が出す候補。query
seller/profile出品者の公開プロフィール:高い評価の割合、評価数、星。seller_id
seller/products出品者のストアに並んでいる商品を、ページ単位で。seller_id
seller/reviews購入者が出品者に付けた評価とコメントを、日付つきで。seller_id

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

動作する例

この電気ケトルは参考価格 6,428 円に対して 3,852 円(`discount_pct` 40)で、「タイムセール」の表示が付いていました。評価数 5,729 は検索結果のカードと商品ページで同じ値です。注意してほしいのは `bought_past_month` で、ページの表示は「過去1か月で 4000点以上購入されました」なのに、数値の欄は 1 になっています。文中で最初に出てくる「1か月」の 1 を拾ってしまう不具合で、直るまでは `bought_past_month_raw` の文字列から「点以上」の直前の数字を読んでください。

リクエスト
curl -X POST https://api.reefapi.com/amazon/v1/product/detail \
  -H "x-api-key: あなたのAPIキー" \
  -H "content-type: application/json" \
  -d '{"asin": "B0CG18ZM6J", "marketplace": "co.jp"}'
レスポンス(抜粋)
{
  "ok": true,
  "data": {
    "product": {
      "asin": "B0CG18ZM6J",
      "title": "SSYFEI 電気ケトル 1.0L【1000W急速沸騰・デジタル表示】7段階温度調節 4時間保温 二重構造で熱くない メモリー機能付 電気ポット",
      "brand": "SSYFEI",
      "price": 3852.0,
      "price_str": "¥3,852",
      "currency": "¥",
      "currency_code": "JPY",
      "list_price": 6428.0,
      "discount_pct": 40,
      "campaign": "タイムセール",
      "coupon": null,
      "rating": 4.4,
      "rating_count": 5729,
      "rating_histogram": { "5": 72, "4": 14, "3": 7, "2": 2, "1": 5 },
      "in_stock": true,
      "categories": ["ホーム&キッチン", "家電", "キッチン家電", "電気ポット"],
      "fulfillment": "amazon",
      "bought_past_month_raw": "過去1か月で 4000点以上購入されました",
      "bought_past_month": 1,
      "upc": "716963913249",
      "tech_specs": {
        "品番・型番": "SF2094",
        "Amazon 売れ筋ランキング": "ホーム&キッチン - 123位 ( ホーム&キッチンの売れ筋ランキングを見る ) 電気ポット - 1位",
        ...
      },
      ...
    }
  },
  "meta": { "marketplace": "co.jp", "currency_code": "JPY", "record_count": 1, "charged_credits": 2, "cache_hit": false, "mode": "live" }
}

Amazon スクレイピング(Python)で評価数や購入数の桁がずれるところ

評価数は、同じ要素の中に読み上げ用と表示用の 2 回書かれています。数字以外の文字を全部消してから整数にすると、二つの数がつながります。この API でも実際に起きていて、利用者からの報告で、11,084 件のはずの評価数が 1108411084 として返っていたことが分かりました。いまは最初の数字のかたまりだけを読んでいます。

検索結果のカードでは、評価数が「198.6K」のような略記で出ることがあります。略記をそのまま数字だけで読むと桁が落ち、2026年8月27日の測定では、商品ページで 198,660 件の評価数が検索結果では 1986 になっていました。カードのリンクに付いている正確な数を先に読むように直してあります。今回の amazon.co.jp(「電気ケトル」20 件)では、検索結果と商品ページの評価数は調べた 3 商品とも一致しました。

日本語の表示にも同じ種類の落とし穴があります。「過去1か月で 4000点以上購入されました」には数字が二つあり、最初の数字を拾うと購入数は 1 になります。私たち自身のパーサーがまさにこの状態で、2026年10月26日に調べた 3 商品すべて(3000点・4000点・400点以上の表示)で `bought_past_month` が 1 でした。元の文字列は `bought_past_month_raw` に手を加えずに入れています。

どの場合もエラーは出ません。評価数が桁違いに膨らんでも、毎月何千個も売れている商品が月 1 個になっても、スクリプトは正常に終わります。数値の欄だけを保存せず、元の表示文字列も一緒に残しておくと、あとから計算し直せます。

制限と正直な注記

  • この API を作ったのは Amazon ではありません。アマゾンジャパンを含め、Amazon とは契約も提携もない第三者のサービスです。
  • 既知の不具合:日本のストアでは `bought_past_month` が正しくありません。2026年10月26日、表示が「過去1か月で 3000点以上」「4000点以上」「400点以上」だった 3 商品で、数値はどれも 1 でした。修正までは `bought_past_month_raw` を使ってください。
  • `marketplace` の既定値は `com` です。省略すると amazon.com の結果になり、価格は米ドル、商品名は英語です。`currency` は記号(¥)で、ISO コードは `currency_code`(JPY)に入ります。
  • 日本のストアの `product/reviews` は、商品ページに載っているレビューだけを返します。評価数 17,168 件の電気ケトルで返ったのは 8 件でした(`stop_reason: inline_cap`)。その代わり `review_insights` に Amazon の AI 要約と、観点ごとの言及数(たとえば「価格」は 1,705 件の言及のうち 93% が好意的)が入っていました。
  • 売れ筋ランキングの順位(「ホーム&キッチン - 123位」など)は `tech_specs` の文字列の中にしかなく、調べた商品では `attributes.bsr` は null でした。`rating_histogram` は件数ではなく割合(%)です。
  • 過去の価格は保存していません。返ってくるのは呼んだ瞬間の価格だけです。価格推移を追うなら、見たい ASIN を `products_batch`(1 回 40 件まで)で毎日決まった時刻に取り、自分のデータベースに積み上げてください。40 件を product/detail で 1 件ずつ取ると 80 クレジットですが、products_batch なら 10 クレジットです。
  • `min_rating`、`deals`、`prime` の絞り込みは amazon.co.jp では測定していません。`prime` は Amazon 側に確実な絞り込みがないため、もともと目安です。バーコード検索は UPC で 1 件確認しました(JAN では未確認)。
  • クレジット:search は Amazon から取得した検索結果ページ 1 枚ごとに 1 です。1 ページの件数はキーワードによって 16〜48 件ほどと変わるので、今回の「電気ケトル」20 件は 1 ページで済みましたが、336 件を頼むと最大 7 ページ分になります。product/detail と product/offers は 2、product/reviews と seller/reviews はレビュー 25 件ごとに 1(最低 1)、products_batch は 10、売れ筋と新着はランキングのページ(約 30 件)ごとに 1、そのほかは 1 回 1 です。