Amazon PA-API v5について気づいたことメモ

この記事は約4分で読めます。

AmazonのProduct Advertising API(PA-API)のバージョンが上がり、v5へ移行することが発表されました。

アソシエイト・セントラル

現行のPA-APIは2019/11/302020/2/11までとなり、以降はPA-API v5しか使えなくなるそう(※延長されました)。なので独自にPA-APIを利用している人は、プログラムのv5対応が必要になります。

筆者も個人的にPA-APIを利用して、Kindle電子書籍の新刊情報などを取得しています。本記事では前バージョンとの違いなど、その過程で気づいたことをメモがてら残しておきます。

なお筆者はノンプログラマーなので、その前提でお読みください(予防線)。

PA-API全般

レスポンスはJSON

PA-API v5移行ガイド」にも記載されていますが、リクエストのレスポンスが従来のXMLではなくJSONで返ってきます。構造も若干変わっているので、受け取った後の処理を変更する必要があります。

テストツールは4種類

記事作成現在、PA-API v5の実行テスト用ツールとしてScratchpadが用意されています。その中で動作を確認できるのは

  • GetBrowseNodes
  • GetVariations
  • GetItems
  • SearchItems

の4種類です。以前のテスト用ページにあったカート系のツールは用意されていないようです。

パラメータは空にできない

検索オプションとして、各種パラメータを設定することがあると思います。例えば商品検索で新着や安い/高い順に商品を並べ替えたい時。

これまでなら、ItemSearchのSortを設定してリクエストを送ります。その際、パラメータに「Sort」と項目を設定して、かつその値を空にしても、リクエストが通っていました。

一方PA-API v5では、設定したパラメータには必ず何らかの値を入れないと、エラーとなるようです。例えばSearchItemsの「SortBy」というパラメータをリクエストに含めるならば、必ず「NewestArrivals」のような値を含める必要があります。

なおプログラムの都合上、どうしても空のパラメータを設定する必要がある場合、筆者は「*(アスタリスク)」を入れています。一応これで動いているようです。

ノードだけでSearchItemsできない

ノード(BrowseNode)でSearchをかけて、そこにぶら下がっている商品データを引っ張ってくる、という使い方を良くします。PA-API v5ではSearchItemsでそれを行いますが、ノードだけで検索をかけるとエラーとなります。

具体的には下記のようなエラーが返ってきます。

Error! MissingParameter
At least one of Actor, Artist, Author, Brand, Keywords, Title should be provided.

Actor, Artist, Author, Brand, Keywords, Titleのうち、最低1つは値を入れてね、ということのようです。ノードだけでデータを引っ張りたいのですが、これは困った…。検索に一工夫が必要となります。

日付がUTC形式で返ってくる

「PublishDate」や「ReleaseDate」のような日付が、「2019-00-00T00:00:00.000Z」のようなUTC形式で返ってくるようになりました。

例えば現在時刻を取得して日付比較を行う、といったようなプログラムの場合は、誤差が発生する可能性があるので注意が必要です。

MaxPrice/MinPriceは桁数変更が必要

「桁数変更」という書き方が適切かどうかはわかりまえんが、PA-API v5では価格を指定する時の桁数に注意が必要です(これでハマった…)。

例えばMaxPriceやMinPriceで上限価格・下限価格を指定する時。「100円」を指定したい時は、「10000」とゼロを末尾に2つ、余分に付ける必要があるようです。思うように検索結果が取得できない、という場合は、価格指定を確認してみてください。

BrowseNodeIdに複数の値を指定できない?

SearchItemsでBrowseNodeIdを元に商品データを取得する時。前のバージョンではBrowseNodeIdに複数の値をカンマ区切りで入力すると、さらにデータの絞り込みができました。(例えば「マンガ」から「少年マンガ」のデータを取得する。)

しかしPA-API v5では、カンマ区切りで複数のBrowseNodeIdを指定することができなくなっているようです。書式が変わっているのかもしれませんが、スクラッチパッドでBrowseNodeIdに20桁以上の数字が指定できない(2つ以上のIdを入れられない)ところを見ると、機能がカットされているのか…?

ひょっとすると他に実現できる方法があるかもしれないので、判明したら追記します。

まとめ

以上、Amazon PA-API v5について気づいたことメモ、でした。また気づいたことがあれば、随時追記します。

コメント

  1. 名前なし より:

    Product Advertising API(PA-API)V5では SearchItems において アダルト商品が検索結果に表示されないように思います。

    こちらについて何か対策をご存知でしたらご教示いただけないでしょうか。

    • コータ_ より:

      PA-API V5のScrachPadでアダルト系のノード(本・Kindle・DVDなど)で検索をかけてみましたが、特に問題なく表示されるようです。ただ自分はアダルト関連の検索をしないため、V5とそれ以前で検索結果に差異があるかどうか、というのはわかりません。

  2. 佐藤達哉 より:

    コータ_様 
    こんには。
    PA-API5.0について調べていてこちらのサイトを拝見しました。
    少々困っており、質問させてください。
    コミック、書籍等で「商品の説明」・内容紹介はコータ_様では上手く取得出来てますでしょうか。もし出来ているとしたらどのあたりを工夫されてますでしょうか。

    • コータ_ より:

      はじめまして。こんにちは。

      ご質問の件ですが、私はPA-APIで書籍の商品説明文を取得していません。
      という前提でお読みいただきたいのですが、試しにPA-API V5のScratch Padで、GetItemsでResourcesを「All Selected(57)」に設定し、適当なASINで検索をかけてみました。

      すると書籍以外、例えばKindle端末などでは、Features>DisplayValuesで説明文が帰ってきましたが、書籍(電子書籍含む)では商品説明文がレスポンスに表示されませんでした。

      おそらく旧PA-APIではEditorialReviewとして書籍説明文が表示されていた部分のことを仰っているかと思いますが、PA-API V5では書籍に関するレスポンスに該当部分が含まれない仕様になったのでは、と推察します。すでにお調べになっている範囲のことかもしれませんが、ご参考になれば幸いです。

  3. 佐藤達哉 より:

    コータ_ 様

    お返事ありがとうございます。
    やはりそうですよね。
    確認ご一緒に出来て良かったです。

タイトルとURLをコピーしました