Amazon Product Advertising APIのテスト実行ツールを使ってみる

PA-API Test Tool response
AmazonランキングのRSSフィードが404エラーで取得できなくなっています。ランキングページを見てもRSSへのリンクが消えています。このまま無くなってしまうのでしょうか?
さらにAmazon Product Advertising API(PA-API)の利用規約が2019年1月16日にポリシー変更され、PA-API経由での売り上げが無いと利用回数制限されるそうです。

アフィリエイトブログをやっている人に大きな影響を与える年末年始です。


私のブログではAmazonランキングの情報をページの上の方と下の方に掲載していました。ランキングのRSSフィードが提供されていたのでフィードを加工して表示していました。しかし、12月下旬ごろからランキングが更新されなくなりました。
ランキングのRSSフィードをリクエストすると404エラーが返ってきます。一時的なメンテナンスかな?と思い様子を見ていたのですが、アマゾンのランキングページからRSSへのリンクが消えていました。

そして、Amazon Product Advertising API(PA-API)の利用規約が2019年1月16日にポリシー変更されます。PA-API経由で売り上げを上げないと利用回数制限が厳しくなるようです。どうやら商品の売り上げデータだけを抜き取ってアマゾンと関係ない商売をしている人たちを排除したいようです。
この流れを考えるとランキングのRSSも終了したと考えられます。

Amazonアソシエイトプログラムの申請も時が経つほど厳しくなり通りにくくなっています。私はPA-APIを使っていませんでしたが、AmazonランキングのRSSフィードの代替としてPA-APIを使ってみようと思いました。
PA-APIへのアクセス回数制限があるとなるとPA-APIを使うプログラムを書くにもデバッグがまともにできなくなる可能性があります。これは早めにやっておかないと・・・

Amazon Product Advertising APIとは?

Amazon Product Advertising API(PA-API)を使うとアマゾンの商品情報(出品者、価格やセールスランクなど)が取得できます。PA-APIはREST APIとなっていますのでhttpのリクエストを送りレスポンスとして結果が返ってきます。

PA-APIを使うにはAmazonアソシエイトプログラムに参加している必要があります。そして、PA-APIに必要な認証キーを発行してもらいます。
これらの手順はここでは説明しません。他のサイト様にお任せです。

PA-APIを使う方法

PA-APIを使うにはPA-API用のプログラムを動かすインターネットに公開されているコンピュータを別途用意しなくてはなりません。ブログにスクリプトを書いて使う事はやめましょう。何故なら認証キーの秘密鍵を世界に公開する事になるからです。自宅サーバーで動かすかホスティングサービスを利用する事になります。PA-APIの敷居が高い理由の一つです。

PA-APIの認証キーを取得したらいよいよPA-APIを使うプログラムを書かなくてはなりません。
PA-APIはREST APIなのでインターネットブラウザでURLを指定してページが表示されるのと同じように動かします。PA-APIへのパラメータを書いたURLを作りブラウザで表示するのと同じようにリクエストを送ります。リクエストが正しければ結果がXMLで帰ってきます。パラメータを書いたURLさえできればブラウザでそのまま結果を見る事もできます。
しかしPA-APIを使う時に一番難しいのは、そのURLを作る事なのです。

PA-APIのリクエストを作る

それではリクエストを作ってみます。とは言え、何がどうなってるかわからない状態で作るのは大変です。ブラウザ上でPA-APIを試せる"APIテスト実行ツール"がありますのでいじってみましょう。

 APIテスト実行ツール

 APIテスト実行ツールはAmazonアソシエイトのホームページから辿って行きます。Amazonアソシエイトのホームページを表示し、ツールの"Product Advertising API"をクリックします。するとPA-APIのページが表示されます。このページの下の方に参考資料のリンクがあります。そこの" APIテスト実行ツール(日本語ガイドあり)"をクリックするとテスト実行ツールの画面が表示されます。(注:この記事公開時点での辿り方)
記事公開時のURLは
https://webservices.amazon.com/scratchpad/index.html
となっています。

このページの左側に使えるコマンドが表示されています。大きく3つ、SEARCH, LOOKUP, CARTに分かれています。CARTは買い物かごに関するコマンドなので必要ないでしょう。SEARCHは商品の検索ですね。LOOKUPは特定の商品の情報を得る場合です。
SEARCHのItemSearchをクリックしてみましょう。

pa-api test tool
こんな画面が表示されます。"Common parameters"というのを埋めていきます。
"Marketplace"は日本を選びます。"Associate Tag"はあなたのアソシエイトタグです。"Access Key ID"はPA-APIのAccess Keyです。"Secret Access Key"はPA-APIのSecret Keyです。

PA-API Test Tool
ItemSearchのパラメータを埋めてみます。
"SearchIndex"は商品カテゴリーです。適当の選びます。"ResponseGrooup"はレスポンスに必要な情報を選択します。このままで良いでしょう。
"Add a new parameter"は追加のパラメータを増やせます。このままでは何を表示させるのか指定があいまいです。デフォルトでKeywordsとなっていますが、タイトル名や著者などで検索できるようですね。ここではKeywordsで検索してみるのでこのまま"+"アイコンをクリックします。

PA-API Test Tool
すると"Keywords"が追加されました。
何か検索したい言葉を入れておきましょう。ここでは"大掃除"と入れてみました。

PA-API Test Tool
それでは"Run request"を押します。

PA-API Test Tool response
リクエストが正しければResponseに結果が表示されます。リクエストが間違っていると何が間違えているか簡単な説明が表示されます。
これが正しく表示されればあなたの認証鍵が有効である事もわかります。

ここで勘違いしてしまいそうですが、このRendered responseで表示されているものがすぐにPA-APIで利用できるわけではありません。この表示はPA-APIのレスポンスを加工して表示する時の一例です。実際にPA-APIのレスポンスで帰ってくるのはXML responseで表示されるものです。あなたのブログですぐに表示できるようなものではありません。ブログで利用するにはXMLから表示用のHTMLを作らなくてはなりません。

動くことが分かったら他のコマンドの実験もしてみましょう。使えるパラメータがころころ変わりますのでエラーにめげずに試してみましょう。

PA-APIのリクエストパラメータ

APIテスト実行ツールで一番重要なのはRequest URLの部分です。
PA-API URL
ボカす必要は無いのですが固有情報はボカしています。
ここのSigned URLというのがPA-APIで使うURLになります。
Signed URLをコピーしてブラウザで表示する事も出来ます。試してみてください。ただし、Signed URLには有効期限があります。時間が経つと使えなくなります。

このSigned URLを自力で作ることがPA-APIを使うという事になります。
Signed URLを作るには、まずUnsigned URLを作ります。Signed URLにはUnsigned URLを秘密鍵で暗号化したものをパラメータにする必要があるからです。

まとめ

今回の記事はここで終わります。次回はパラメータを実際に作っていく部分を書いてみたいです。

PA-APIはリクエスト処理を行うホスティングコンピュータが必要になります。自宅サーバーを使う、ホスティングサービスを使うなどします。
間違えてブログにリクエスト処理のコードを直接書かないでください。秘密鍵を公開する事にならないよう気を付けてください。PA-APIへは1秒に1回程度の頻度でアクセスしましょう。2019年1月16日からは1日に86400回しか使えなくなります。売り上げが無くとも8640回は使えるようです。ランキングの取得程度ならこれでも十分です。
ブログに直接コードを書くと閲覧ごとにAPIアクセスする事になるのでアクセス可能回数を使い切ってしまうでしょう。

PA-APIの情報が少なく、アマゾンのドキュメントもやさしくありません。最初はリクエストURLを作るのがとても難しいです。テスト実行ツールを使ってパラメータとリクエストURLがどんなものか良く実感する事をお勧めします。

この記事公開時では実際にPA-APIを使った商品ランキングをページの上部と下部に表示しています。

コメント

最近のコメント

Threaded Recent Comments will be here.