AmazonのPAAPIで特定商品のデータを取得する(ItemLookup、Medium)
AmazonのPAAPI(Product Advertising API)で特定商品のデータを取得する方法です。
特定商品のデータを取得するために使用するオペレーションは「ItemLookup」、リクエストパラメータのレスポンスグループは沢山ありますが、今回は「Medium」を指定します。「ItemLookup」は一度のリクエストで最大10件分のデータが取得可能です。
コード
以下のコードはRubyのamazon-ecsを使ったものになります。
「B01LPTFJLO」と「B01LYS572Y」の商品データを取得
# B01LPTFJLO:PlayStation 4 ジェット・ブラック 500GB(CUH-2000AB01)
# B01LYS572Y:ニーア オートマタ - PS4
asins = ['B01LPTFJLO', 'B01LYS572Y']
res = Amazon::Ecs.item_lookup(asins.join(','), {:response_group => 'Medium, Reviews',:country => 'jp'})
res.items.each do |item|
item.get('ASIN')
item.get('DetailPageURL')
item.get('SalesRank')
item_attributes = item.get_element('ItemAttributes')
item_attributes.get('Title')
item_attributes.get('ListPrice/FormattedPrice')
item_attributes.get('Label')
item_attributes.get('ReleaseDate')
item_attributes.get_array('Feature')
end
レスポンスデータ
上記のコードでamazon-ecsライブラリ内でNokogiriによって変換されたXMLデータは、以下のようになっていました。(URL、ItemLinks、ImageSets、2つ目以降の商品データは省略しています)
<?xml version="1.0" encoding="UTF-8"?>
<ItemLookupResponse>
<Items>
<Request>
<IsValid>True</IsValid>
<ItemLookupRequest>
<IdType>ASIN</IdType>
<ItemId>B01LPTFJLO</ItemId>
<ItemId>B01LYS572Y</ItemId>
<ResponseGroup>Medium</ResponseGroup>
<VariationPage>All</VariationPage>
</ItemLookupRequest>
</Request>
<Item>
<ASIN>B01LPTFJLO</ASIN>
<ParentASIN>B01LWDYLH2</ParentASIN>
<DetailPageURL>https://www.amazon.co.jp/~</DetailPageURL>
<ItemLinks>
...
</ItemLinks>
<SalesRank>9</SalesRank>
<SmallImage>
<URL>https://images-fe.ssl-images-amazon.com/images/I/31Y1cDepQnL._SL75_.jpg</URL>
<Height Units="pixels">64</Height>
<Width Units="pixels">75</Width>
</SmallImage>
<MediumImage>
<URL>https://images-fe.ssl-images-amazon.com/images/I/31Y1cDepQnL._SL160_.jpg</URL>
<Height Units="pixels">137</Height>
<Width Units="pixels">160</Width>
</MediumImage>
<LargeImage>
<URL>https://images-fe.ssl-images-amazon.com/images/I/31Y1cDepQnL.jpg</URL>
<Height Units="pixels">427</Height>
<Width Units="pixels">500</Width>
</LargeImage>
<ImageSets>
...
</ImageSets>
<ItemAttributes>
<Binding>Video Game</Binding>
<Brand>ソニー・インタラクティブエンタテインメント</Brand>
<Color>1) ジェット・ブラック</Color>
<EAN>4948872414234</EAN>
<EANList>
<EANListElement>4948872414234</EANListElement>
</EANList>
<Edition>1) HDD 500GB</Edition>
<Feature>小型・軽量化を実現した 新型「プレイステーション 4」。</Feature>
<Feature>CUH-1000シリーズおよびCUH-1200シリーズ比で30%以上の小型化、1000シリーズと1200シリーズ比でそれぞれ25%と16%の軽量化、34%と28%の消費電力低減を実現。</Feature>
<Feature>同梱物: プレイステーション 4 (HDD 500GB)× 1, ワイヤレスコントローラー(DUALSHOCK4) ジェット・ブラック (CUH-ZCT2J) × 1, モノラルヘッドセット× 1, 電源コード× 1, HDMIケーブル× 1, USBケーブル× 1</Feature>
<HardwarePlatform>PlayStation 4</HardwarePlatform>
<Label>ソニー・インタラクティブエンタテインメント</Label>
<ListPrice>
<Amount>32378</Amount>
<CurrencyCode>JPY</CurrencyCode>
<FormattedPrice>¥ 32,378</FormattedPrice>
</ListPrice>
<Manufacturer>ソニー・インタラクティブエンタテインメント</Manufacturer>
<Model>CUH-2000AB01</Model>
<MPN>Sony</MPN>
<OperatingSystem>no_operating_system</OperatingSystem>
<PackageDimensions>
<Height Units="100分の1インチ">394</Height>
<Length Units="100分の1インチ">1673</Length>
<Weight Units="100分の1ポンド">728</Weight>
<Width Units="100分の1インチ">1398</Width>
</PackageDimensions>
<PackageQuantity>1</PackageQuantity>
<PartNumber>Sony</PartNumber>
<Platform>PlayStation 4</Platform>
<ProductGroup>Video Games</ProductGroup>
<ProductTypeName>ABIS_VIDEO_GAMES</ProductTypeName>
<Publisher>ソニー・インタラクティブエンタテインメント</Publisher>
<ReleaseDate>2016-09-15</ReleaseDate>
<Studio>ソニー・インタラクティブエンタテインメント</Studio>
<Title>PlayStation 4 ジェット・ブラック 500GB(CUH-2000AB01)</Title>
</ItemAttributes>
<OfferSummary>
<LowestNewPrice>
<Amount>29099</Amount>
<CurrencyCode>JPY</CurrencyCode>
<FormattedPrice>¥ 29,099</FormattedPrice>
</LowestNewPrice>
<LowestUsedPrice>
<Amount>24000</Amount>
<CurrencyCode>JPY</CurrencyCode>
<FormattedPrice>¥ 24,000</FormattedPrice>
</LowestUsedPrice>
<TotalNew>58</TotalNew>
<TotalUsed>66</TotalUsed>
<TotalCollectible>0</TotalCollectible>
<TotalRefurbished>0</TotalRefurbished>
</OfferSummary>
<CustomerReviews>
<IFrameURL>https://www.amazon.jp/reviews/~</IFrameURL>
<HasReviews>true</HasReviews>
</CustomerReviews>
<EditorialReviews>
<EditorialReview>
<Source>Product Description</Source>
<Content>PlayStation 4 ジェット・ブラック 500GB(CUH-2000AB01)</Content>
<IsLinkSuppressed>0</IsLinkSuppressed>
</EditorialReview>
</EditorialReviews>
</Item>
<Item>
<ASIN>B01LYS572Y</ASIN>
...
</Item>
</Items>
</ItemLookupResponse>
それなりに詳細な情報は取得できていますが、レビュー情報についてはiframe用のURL(時間制限有り(24時間?))で提供されています。また、「ItemAttributes」内の項目に関してはカテゴリ毎に取得できるデータが異なっているので、複数のカテゴリの商品データを取得する場合は注意が必要です。
例えば、商品がKindleデータの場合、「ItemAttributes」内の項目はゲームとは全然違いますし、価格の情報が取得できないといったことがあり、それはレスポンスグループを「Large」にしても同じです。(Medium から Largeにすると「Offers」「SimilarProducts」「BrowseNodes」といった情報が追加される程度)