2017.5.17
2018.4.13

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」といった情報が追加される程度)

その他】関連記事