この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:8
ページ更新者:guest
更新日時:2026-06-11 07:12:00

タイトル: PA-APIの使い方 リクエストの構造とパラメータの指定
SEOタイトル: Amazon PA-API 5.0 リクエスト構造(SearchItems / GetItems /

この記事の要点
  • PA-API 5.0 は JSON-RPC 風、エンドポイントは POST https://webservices.amazon.co.jp/paapi5/<operation>
  • 主要 3 オペレーション: SearchItems(キーワード検索)、GetItems(ASIN 直接取得)、GetVariations(親 ASIN 配下のバリエーション)
  • 必須 body フィールド: PartnerTag / PartnerType: "Associates" / Marketplace
  • Resources 配列で取得したい項目を明示指定(ItemInfo.Title, Offers.Listings.Price, Images.Primary.Medium ...)
  • 認証は AWS V4 署名(Authorization ヘッダ)、IAM ではなくアソシエイト発行のキー
  • レート制限は売上連動: 初期 1 req/sec, 8640 req/day。429 は指数バックオフで再試行

PA-API 5.0 リクエストの全体像

PA-API 5.0 は HTTP POST + JSON body + AWS V4 署名の API です。URL のパスがオペレーション名と対応します:

POST https://webservices.amazon.co.jp/paapi5/searchitems     ← キーワード検索
POST https://webservices.amazon.co.jp/paapi5/getitems        ← ASIN 直接取得(最大 10)
POST https://webservices.amazon.co.jp/paapi5/getvariations   ← 親 ASIN のバリエーション
POST https://webservices.amazon.co.jp/paapi5/getbrowsenodes  ← カテゴリ(BrowseNode)情報

SearchItems: キーワード検索

{
  &quot;Keywords&quot;: &quot;ルアー&quot;,
  &quot;SearchIndex&quot;: &quot;SportingGoods&quot;,
  &quot;ItemCount&quot;: 10,
  &quot;ItemPage&quot;: 1,
  &quot;MinPrice&quot;: 50000,
  &quot;MaxPrice&quot;: 500000,
  &quot;SortBy&quot;: &quot;Featured&quot;,
  &quot;PartnerTag&quot;: &quot;myassoc-22&quot;,
  &quot;PartnerType&quot;: &quot;Associates&quot;,
  &quot;Marketplace&quot;: &quot;www.amazon.co.jp&quot;,
  &quot;Resources&quot;: [
    &quot;Images.Primary.Large&quot;,
    &quot;ItemInfo.Title&quot;,
    &quot;ItemInfo.Features&quot;,
    &quot;Offers.Listings.Price&quot;,
    &quot;Offers.Listings.DeliveryInfo.IsPrimeEligible&quot;
  ]
}
パラメータ意味
Keywords検索キーワード"ノートPC"
SearchIndexカテゴリ(All / Books / Electronics 等)"All"
ItemCount1 ページ件数(最大 10)10
ItemPageページ番号(最大 10)1~10
MinPrice / MaxPrice価格範囲(最小単位、円なら銭まで)50000 = ¥500
SortByFeatured, NewestArrivals, Price:LowToHigh"Price:LowToHigh"
Brandブランド名フィルタ"Sony"
BrowseNodeIdカテゴリ ID(数値)"3210981"

GetItems: ASIN 直接取得

{
  &quot;ItemIds&quot;: [&quot;B08XXXXX1&quot;, &quot;B09YYYYY2&quot;, &quot;B0AZZZZZ3&quot;],
  &quot;ItemIdType&quot;: &quot;ASIN&quot;,
  &quot;PartnerTag&quot;: &quot;myassoc-22&quot;,
  &quot;PartnerType&quot;: &quot;Associates&quot;,
  &quot;Marketplace&quot;: &quot;www.amazon.co.jp&quot;,
  &quot;Resources&quot;: [
    &quot;ItemInfo.Title&quot;,
    &quot;ItemInfo.ByLineInfo&quot;,
    &quot;Offers.Listings.Price&quot;,
    &quot;Offers.Listings.Availability.Message&quot;,
    &quot;CustomerReviews.StarRating&quot;,
    &quot;CustomerReviews.Count&quot;
  ]
}

ItemIds は最大 10 個まで。商品詳細ページ表示用に最適。

GetVariations: 親 ASIN のバリエーション

1 つの商品(例: Tシャツ)の色・サイズ違い ASIN を一括取得:

{
  &quot;ASIN&quot;: &quot;B0PARENT001&quot;,
  &quot;VariationCount&quot;: 10,
  &quot;VariationPage&quot;: 1,
  &quot;PartnerTag&quot;: &quot;myassoc-22&quot;,
  &quot;PartnerType&quot;: &quot;Associates&quot;,
  &quot;Marketplace&quot;: &quot;www.amazon.co.jp&quot;,
  &quot;Resources&quot;: [
    &quot;ItemInfo.Title&quot;,
    &quot;VariationSummary.Price.HighestPrice&quot;,
    &quot;VariationSummary.Price.LowestPrice&quot;,
    &quot;VariationSummary.VariationDimension&quot;,
    &quot;Offers.Listings.Price&quot;
  ]
}

Resources の指定(主要なもの)

Resources欲しい情報をドット記法で明示列挙します。指定しないとレスポンスに含まれません。

カテゴリ主要 Resources
商品情報ItemInfo.Title, ItemInfo.ByLineInfo, ItemInfo.Features, ItemInfo.ProductInfo, ItemInfo.TechnicalInfo
画像Images.Primary.Small / Medium / Large, Images.Variants.*
価格Offers.Listings.Price, Offers.Listings.SavingBasis, Offers.Summaries.LowestPrice
在庫Offers.Listings.Availability.Message, Offers.Listings.Availability.Type
配送Offers.Listings.DeliveryInfo.IsPrimeEligible, ...IsFreeShippingEligible
レビューCustomerReviews.StarRating, CustomerReviews.Count
BrowseNodeBrowseNodeInfo.BrowseNodes, BrowseNodeInfo.WebsiteSalesRank
親子関係ParentASIN, VariationSummary.*

レスポンスの構造

{
  &quot;SearchResult&quot;: {
    &quot;TotalResultCount&quot;: 1234,
    &quot;SearchURL&quot;: &quot;https://www.amazon.co.jp/s?k=...&amp;tag=myassoc-22&quot;,
    &quot;Items&quot;: [
      {
        &quot;ASIN&quot;: &quot;B08XXXXX&quot;,
        &quot;DetailPageURL&quot;: &quot;https://www.amazon.co.jp/dp/B08XXXXX?tag=myassoc-22&quot;,
        &quot;Images&quot;: {
          &quot;Primary&quot;: {
            &quot;Large&quot;:  { &quot;URL&quot;: &quot;https://m.media-amazon.com/.../L.jpg&quot;, &quot;Width&quot;: 500, &quot;Height&quot;: 500 }
          }
        },
        &quot;ItemInfo&quot;: {
          &quot;Title&quot;: { &quot;DisplayValue&quot;: &quot;...&quot;, &quot;Locale&quot;: &quot;ja_JP&quot; },
          &quot;Features&quot;: { &quot;DisplayValues&quot;: [&quot;...&quot;, &quot;...&quot;] }
        },
        &quot;Offers&quot;: {
          &quot;Listings&quot;: [
            {
              &quot;Id&quot;: &quot;abc123...&quot;,
              &quot;Price&quot;:   { &quot;Amount&quot;: 1980, &quot;Currency&quot;: &quot;JPY&quot;, &quot;DisplayAmount&quot;: &quot;¥1,980&quot; },
              &quot;DeliveryInfo&quot;: { &quot;IsPrimeEligible&quot;: true }
            }
          ]
        }
      }
    ]
  }
}

認証フロー

  1. Amazon アソシエイトに登録 → 売上発生
  2. 「ツール」→「Product Advertising API」→ Access Key / Secret Key 発行
  3. Partner Tag(アソシエイト ID)は登録時に決定
  4. 各リクエストの Authorization ヘッダに AWS V4 署名を載せる

署名生成の詳細は 署名認証の方法(PHPサンプル ItemSearch) 記事を参照。

レート制限とエラーハンドリング

初期 TPS1 日当たり増枠条件
1 req/sec8,640 req/day過去 30 日の売上 1 件 = +1 TPS

HTTP 429 / TooManyRequests エラーは指数バックオフ:

<?php
function callWithBackoff(callable $fn, int $maxRetry = 5) {
    $delay = 1.0;
    for ($i = 0; $i < $maxRetry; $i++) {
        try {
            return $fn();
        } catch (Throwable $e) {
            $msg = $e->getMessage();
            if (strpos($msg, 'TooManyRequests') !== false || strpos($msg, '429') !== false) {
                usleep((int)($delay * 1_000_000));
                $delay *= 2;
                continue;
            }
            throw $e;
        }
    }
    throw new RuntimeException('Max retry exceeded');
}

FAQ

Q: 1 リクエストで 100 件取りたい
A: できません。ItemCount 最大 10、ItemPage 最大 10、合計 100 件が上限です。

Q: 価格が null になる
A: Marketplace 出品なし / 売り切れOffers.Listings 配列が空のことがあるので、コード側で null チェック必須。

Q: 海外マーケットへのアクセス
A: マーケットごとに キーが別webservices.amazon.com (US), webservices.amazon.co.uk (UK), etc. それぞれアソシエイトに登録要。