2017.5.17
2018.4.13

RubyでAmazonのProduct Advertising APIを利用する

Cordovaアプリを開発のためになにか適当なデータはないかなぁ、という理由で、広く使われていてデータの取得が簡単そうだったAmazonのPAAPI(Product Advertising API)を利用してみることにしました。

これまでにベストセラーのRSSを読み込んで、読み込んだXMLを解析したことはあったのですが、APIを利用するのは初めてになります。

PAAPIの日本語のサイトは こちら

目次

  • APIを利用するための準備
  • amazon-ecsのインストールと使い方
  • PAAPI(Product Advertising API)利用時の注意点
  • エラーの例

APIを利用するための準備

PAAPI(Product Advertising API)を利用するためには、APIの「アクセスキー」と「シークレットキー」、それに「アソシエイトID(トラッキングID)」が必要になります。

各キーやIDの取得方法、それに基本的なことについては、Amazon Web サービス入門(Product Advertising API)に詳しく掲載されているので、読み進めながら実際に操作するのがいいと思います。

amazon-ecsのインストールと使い方

今回、言語はRubyなので、PAAPI用のライブラリである amazon-ecs を使います。

インストール


gem install amazon-ecs

基本的な使い方


require 'amazon/ecs'

Amazon::Ecs.configure do |options|
  options[:AWS_access_key_id] = 'アクセスキー'
  options[:AWS_secret_key] = 'シークレットキー'
  options[:associate_tag] = 'アソシエイトID(トラッキングID)'
end

res = Amazon::Ecs.item_search('ruby', {:response_group => 'Medium', :sort => 'salesrank', :country => 'jp'})
res.items.each do |item|
  item.get('ASIN')
  item.get('ItemAttributes/Title')
end

ライブラリ利用時の注意点としては、日本サイトの商品情報を取得する場合、必ず「:country => 'jp'」を指定しないといけません。未指定の場合のデフォルトは「us」になります。

PAAPI(Product Advertising API)利用時の注意点

試験的に少し使ってみただけですが、いくつか注意が必要と感じたので、以下はその要点だけ書いておきます。

  • 基本的に1秒間に1リクエストまで(大量にデータを取得しようとすると時間がかかる)
  • sleep()できっちり1秒指定するとアクセスの間隔が早いのかエラーが返される(1秒プラスアルファくらいの間隔が必要)
  • Kindle本関連の価格情報は取得できない
  • ベストセラー系の情報はRSS同様に10件まで

個人的にベストセラーの情報を取得したい場合は、取得する情報にもよりますがRSSを参照した方が手っ取り早いと感じました。

エラーの例

リクエストの間隔が短いと以下のようなエラーが返されます。

HTTP Response: 503 Service Unavailable - AWS Access Key ID: **********. You are submitting requests too quickly. Please retry your requests at a slower rate.

その他】関連記事