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を使用するための準備

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

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

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

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

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

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

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

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

必要情報を入力する

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

赤枠つけ忘れましたが、[Partner Tag]も必須です。
パートナータグはアソシエイトIDなのでアソシエイトのページ右上に表示されているアソシエイトIDを記入します。

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

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

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サイト制作
-,

関連記事

no image

amazon APIのBrowseNode ID一覧ってどうやって調べるの?

amazon APIのBrowseNodeID BrowseNodeって? アマゾンの商品カテゴリです。 ScratchpadのGetBrowseNodesでIDを取得することができます。 まずは必要 ...

背景画像を複数指定する方法(css)

背景画像を複数指定したい時があり調べてたところ 順番にcssを指定するところまでは分かったけど書き方がよく分からない・・・ 複数背景の使用はよく使いそうなのでメモ。 基本的には,(カンマ)区切りで続け ...

no image

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

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

画面の縦幅いっぱいに背景画像を表示する

画面全体に背景画像を表示するには、 background:url('画像を指定'); background-size:cover; でできますが、 いやいや、一画面だけでなくその下にもコンテンツがあっ ...

tableのwidth幅指定のメモ

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