Webサイト制作

投稿日:2021年1月23日 更新日:

Product Advertising APIで商品情報を取得してみる

ノンプログラマーがProduct Advertising APIでの商品情報取得にチャレンジしました。
検索しても情報が少なく苦労したので、同じような方の参考になればと思います。

amazonのProduct Advertising API(PA-API)って?

PA-APIを利用すると、アマゾンに出品されている商品の情報が取得できます。主にアフェリエイター向けのサービスで無料で使うことができます。 amazonのサイトにはこのように記載されています。

Product Advertising API (PA-API) は商品情報や販売金額などを取得することができるAPIです。PA-APIはキーワードによる商品検索APIや、特定の商品の詳細情報を取得するAPIを提供しています。このAPIをシステムに組み込むことで、キーワードに連動した商品情報を自動で取得・表示するようなシステムを構築することができます。

APIを使用するための準備

1. Amazonアソシエイト・プログラムへ参加する

まずはAmazonアソシエイトへ登録します。

2. アクセスキーとシークレットキーを取得する

APIの使用に必要なアクセスキーとシークレットキーを取得します。
APIを利用するにはアソシエイトのナビゲーション「ツール」→「Amazon Product Advertising API」を選択します。

ページ内[認証キーの管理]でアクセスキーとシークレットキーを取得するのですが、シークレットキーが表示されたらどこかにメモを取りましょう。
そのまま画面を閉じると再確認できずに再度アクセスキーの取得をすることになりますよ。

データの取得はScratchpadが便利です

一からコードを書いて情報を取得する、なんて高度な事できないのでAmazonが提供してくれている[Product Advertising API Scratchpad]を利用します。

アソシエイトのページのどこにリンクあるのかと探しましたが分かりませんでした。
下にスクラッチパッドへのリンクをはっておきます。

後日見てみたらリンクがありました
amazon アソシエイト「ツール」→「Product Advertising API」ページ下部の「APIテスト実行ツール」というテキストリンクです

必要情報を入力する

何でもいいのでとりあえずデータを取得してみます。 Scratchpadサイドバーから[SearchItems]を選択し、赤枠部分に「アクセスキー」と「シークレットキー」を記入します。これがないとデータの取得ができません。

赤枠つけ忘れましたが、[Partner Tag]も必須です。

Partner Tag
パートナータグはアソシエイトIDなのでアソシエイトのページ右上に表示されているアソシエイトIDを記入します。

Keywords
ここに検索キーワードを入れます。

Resources
どんな情報を取得するのか選択します。
[Select all]で全部でもいいのですが、情報量が多いので[Images.Primary.Medium][ItemInfo.Title][Offers.Listings.Price]あたりを選択して見てみると分かりやすいです。商品のメイン画像、タイトル、価格ですね。
選択が面倒な時は[Select all]でOK

SearchIndex
これは商品カテゴリーです。選択しなくても大丈夫ですが、思っている商品が表示されないことがあるので選択してもいいかもしれません。 ちなみにカテゴリはこんな感じでした。

HealthPersonalCare ドラッグストア
HomeAndKitchen ホーム&キッチン
SportsAndOutdoors スポーツ&アウトドア
Industrial 産業・研究開発用品
ToolsAndHomeImprovement DIY・工具・ガーデン
Apparel 服&ファッション小物
Hobbies ホビー
Beauty ビューティー
Toys おもちゃ
Appliances 大型家電
Electronics 家電&カメラ
Shoes シューズ&バッグ
Baby ベビー&マタニティ
GroceryAndGourmetFood 食品・飲料・お酒
OfficeProducts 文房具・オフィス用品
Automotive 車&バイク
Jewelry ジュエリー
MusicalInstruments パソコン・周辺機器
VideoGames TVゲーム
Books
PetSupplies ペット用品
ForeignBooks 洋書
KindleStore Kindleストア
AmazonVideo Prime Video
EverythingElse その他すべて
Music ミュージック

Add a new parameter
他にパラメーターを追加することもできます。
価格順や新着などで並び替えしたり、最低価格、最高価格を設定したりです。
全部使ってないので分かりませんが、色々使って確認してみて下さい。

例えば価格の安い順で並び替えをする場合、 スクロールして[SortBy]のラジオボタンにチェックすると項目が追加されるので、プルダウンより[Price:LowToHigh]を選択します。
複数の条件がある場合は+マークでさらに項目を追加することができます

データを取得

必要情報を入力したら[Run request]のボタンを押すとデータの取得ができます。
例えば「服&ファッション小物」で「財布」を探す場合はこんな感じで入力します

商品情報が取得できました!

名前や価格などの情報を取得する場合は、[JSON response]タブで見てください
どのような感じでデータが取得できているか分かりやすくておすすめです

その他の方法

スクラッチパッド以外にはこんな方法がありました

Code snippetsを利用する

SDK使用してみようとファイルをダウンロードしたもののうまくページに表示されなかったので、私はスクラッチパッドで表示されたPHPのコードスニペットを使用しました。
コードスニペットにはシークレットキーが非表示なのでコピペしてください。

コードスニペットには他にJAVA、PHP、cURLが用意されています。

#responseの中身を整えてページに表示できたら完成です。
ここまでするのに結構時間がかかりました。(SDK使用での表示もできてないし) こういうデータのやり取りとか、やりたいと思っていることをもう少し実現できるようになれればいいなぁと思っています。

- Webサイト制作
-,

関連記事

cssでlistのborderを斜め線にする

このサイトのメニューでも使ってますが、やってみたかったけどなかなか方法が見つけられなかったリストの区切り(border)を直線でなく斜め線にする方法。 まずはHTMLでメニュー作成 普通にリストで作成 ...

スライドショーの画像を切り抜いたように表示する

よくあるスライドショーで 上だけ丸みを帯びていたり、波打っていたり、三角になっていたりと フレームの中でスライドショーが動いてるやつがやりたくて調べていたところ意外と簡単にできることがわかった。 次回 ...

tableのwidth幅指定のメモ

サイト制作している時、 時々テーブルを使うけどIEやfirefoxでwidth指定がきかなかったので対応のメモ。 thやtdに対して幅を指定する場合 Chromeならcalc();が使えるけど、IEで ...

拡大してもボヤけない、アイコンフォントが便利すぎる

サイト作成の時にメニューアイコンを作っていたけど 3つのメニューのうち1つをアイコンフォント使ってたら表示の鮮明さに驚いた。 他のアイコンはpng形式の画像だったけど全然違う。 通常、画像でできたアイ ...

no image

cssで作るタイトルやテキストの装飾色々メモ

タイトルの背景を斜めボーダーにしたい 斜めボーダー背景。 色の組み合わせで色々な雰囲気がつくれる。 ただ、背景に柄が入ると中のテキストが読みにくくなるので、色は注意! HTMLは入れ子にしています。 ...