AmazonのPA-API+Node.js入門【初心者向け】

「Node.jsでAmazonの商品の情報を取得してみたいなー」と思って調べた内容メモ。

初心者向けです。

Amazonの商品 → PA-APIで取得できる

Amazonが提供している「Product Advertising API」(略称:PA-API)というAPIを使えば、商品の情報をプログラム経由で取得できるらしい。

ちなみに「PA-API」にはバージョンがあって、2020年5月11日現在バージョンはv5

おそらく今後もバージョンアップされていくと思われ、バージョンアップされると前バージョンのPA-APIは使えなくなる可能性があるっぽいです。

現に、以下のようなアナウンスがされています。

2020年3月 31日をもって、PA API 4は完全にサービスを停止します。
サービス停止後は、PA-API 4に対してシステムコールを行ってもAmazonの製品情報を取得することができません。

PA-API → 事前に登録が必要

PA-APIを使うには事前に登録が必要です。

まず、以下のページから「Amazonアソシエイト」のアカウントを作ります。

公式アソシエイト・セントラル – Product Advertising API

 

「Amazonアソシエイト」のアカウントはAmazonアカウントとは別物なので、Amazonアカウントを持っていたとして別途作成する必要があります。(しかしAmazonアカウントと連携することも可能っぽい・・?)

アカウントを作ったら、「認証キー」を作成します。

▲「認証情報を追加する」から作成できます。キーは最大2個までらしい。(ちなみに画像に写っているアクセスIDキーはChromeで書き換えた偽物です)

 

「認証キー」を作成すると

  • アクセスキー(AKIAJOSAFMSFHXB4ENXみたいな文字の羅列)
  • シークレットキー(bs5tb4r5GH8b4s6tr4vb6XF489sthn4rLAthbQVwみたいな文字の羅列)

の2つが入手できるのでコレをメモしておきます。

アクセスキーのほうは管理画面からいつでも確認することができますが、シークレットキーの方はキーを作成したときにしか表示されないので、必ずメモしておきましょう。

SDKを使えば → PA-APIを簡単に使える

PA-APIを使うには、それなりに面倒なコードをガリガリ書かないといけないらしいんですが

  • PHP
  • JAVA
  • Node.js
  • Python

という4つのプログラミング言語に限っては、Amazon様がじきじきに公式のSDK(簡単に使えるようにするためのライブラリみたいなもの)を用意してくださっています。

▲簡単な使い方まで書いてくれてます。英語ですが。(ありがてええええええええええ!!)

なのでこれらの言語にかぎっては、SDKを使えば数行で商品情報を取得できたりします。

Node.js用SDKのインストール方法

公式ページから、Node.js用のSDK(paapi5-nodejs-sdkという名前です)をzipでダウンロードできますが

公式からダウンロードしなくても、CUI上で

npm -i paapi5-nodejs-sdk

という風にタイプすれば、npmから「paapi5-nodejs-sdk」をインストールできます。(Amazon公式でダウンロードできるzipと内容は同じみたいです。)

というわけで上のコマンドを打つだけでインストール完了です!Amazon様ありがとうございます!

Node.js用SDKの使い方

使い方は、SDKの中に入っている

  • sampleGetBrowseNodesApi.js
  • sampleGetItemsApi.js
  • sampleGetVariationsApi.js
  • sampleSearchItemsApi.js

という4つのサンプルコードを見たほうが早いです。

(npm経由でインストールした場合でも、node_modulespaapi5-nodejs-sdkフォルダの中に入ってます)

 

PA-APIには

  • GetBrowseNode関数:
    →指定したノードID(ノード=Amazonのカテゴリ番号みたいなもの)の親ノード(Ancestor)や子ノード(Children)を取得できる関数。
    (例えば「71649051」は「ワイン」のノードなわけですが、「71649051」を指定すると、

    • 親ノード=酒
    • 子ノード=赤ワイン、白ワイン、ロゼワイン、シャンパン・・・
      みたいな感じで取得できたりする)
  • GetItem関数:
    →指定したASINの商品情報を取得する関数。
    (例えば「B017SIIRKQ」みたいに指定すれば、「B017SIIRKQ」の価格を持ってこれたりする)
  • GetVariations関数:
    →指定したASINのバリエーション情報を取得する関数。
    (例えば「B017SIIRKQ」が服だとして、「B017SIIRKQ」を指定すると「L」「M」などのサイズ違いの商品や、「黒」「白」「青」みたいな色違いの商品を取得できる…みたいな感じっぽい)
  • SearchItems関数:
    →指定したノードIDからキーワードを含む商品を取得できる関数。
    (これはわかりますよね・・)

という4つの関数が用意されていて、基本的に商品情報を取得するにはこの4つの関数を使うらしいのですが(というかこの4つの関数しか使わないっぽいのですが)、

この4つの関数のサンプルコードが↑の4つファイルというわけです。

なので、この4つのサンプルコードさえ見れば、使い方をほぼマスターできたようなものなのです!おそらく!

書き換えが必要

サンプルコードを使うには、デフォルトの状態から一部書き換えないと動作しません。

まず、以下の部分を

defaultClient.accessKey = '<YOUR ACCESS KEY>';
defaultClient.secretKey = '<YOUR SECRET KEY>';

先ほど取得した

  • アクセスキー(AKIAJOSAFMSFHXB4ENXみたいな文字の羅列)
  • シークレットキー(bs5tb4r5GH8b4s6tr4vb6XF489sthn4rLAthbQVwみたいな文字の羅列)

にそれぞれ書き換えます。

 

次に以下の部分を

defaultClient.host = 'webservices.amazon.com';
defaultClient.region = 'us-east-1';

以下のように書き換えます。

defaultClient.host = 'webservices.amazon.co.jp';
defaultClient.region = 'us-west-2';

 

最後に以下の部分を、自分のアフィリエイトタグに書き換えます。(「○○○-22」みたいなタグです)

searchItemsRequest['PartnerTag'] = '<YOUR PARTNER TAG>';

 

これで準備完了です。

例:sampleGetItemsApi.jsを使いたい場合

例えばsampleGetItemsApi.jsを使いたい場合は

getItemsRequest['ItemIds'] =['B07TRZ4V1C','B017SIIRKQ'];

に取得したいASINを配列形式で入れて、

node sampleGetItemsApi.js

という風に叩けば、json形式の結果が返ってきます↓。

(もちろん、実行する前にnpm installが必要です)

 

おわり

 

関連AmazonのPA-APIを試すには Scratchpadサイトがオススメ!

Node.jsPA-API
スポンサーリンク
この記事を書いた人
penpen

1991生まれ。WEBエンジニア。

技術スタック:TypeScript/Next.js/Express/Docker/AWS

フォローする
フォローする

コメント

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