Product Advertising APIの基本的な使い方は省きます。
APIを叩く際はamazon-ecsというgemを使っていて、商品情報は以下のような形で取得していました。
Amazon::Ecs.item_lookup(asin_id, :response_group => 'ItemAttributes, Images', :country => 'jp')
ID1件ずつAPIを叩いていたんですが、そのせいでAmazonからのレスポンスがとれないことがありました。このAPIには「リクエストは1秒間に1回にしてね」という制限があるので、eachで回して5件分くらいのリクエストを送ると、当然拒否られるわけです。
複数取るにはどうすれば、ということで調べると公式ドキュメントのItemLookupの説明にこう書かれていました。
複数の商品を一度に検索するには、商品IDをカンマで区切ります。
なので、(amazon-ecsを使っている場合には)最初の引数の中身をASIN IDをカンマ区切りにした文字列にしてあげればいいです。
options = {response_group: 'ItemAttributes, Images',country: 'jp'} asins = [] @items.each do |item| asins << item.asin end asins = asins.join(",") res = Amazon::Ecs.item_lookup(asins, options)