ビジネスアフィリエイトAmazonアソシエイト > Amazon API

Amazon APIとは?

Amazonアソシエイトの機能を外部から利用するためのAPIのことです。
正式には「Amazon Product Advertising API」と言います。

公式サイト

リファレンス / チュートリアル

ライブラリー / フレームワーク

Tips

Amazon APIの更新

ASINから商品データを取得する方法

これらのデータを取得するにはどうしたら良いのだろうか?

  1. 商品名
  2. 商品画像
  3. 本の著者名
  4. 本の出版社名
  5. 発売日
  6. 価格

(参考)

この例では、欲しいデータの内容をJSON形式で指定する方法になっている。
PHPのSDKのサンプルコードでは、PHPの配列の形式で指定する方法になっている。
JSONではなく、PHPの配列で指定するにはどうすればいいのか?さらに追跡調査。

SampleGetItemsApi.php

function getItems()の中で、

   # Request initialization
   
   # Choose item id(s)
   $itemIds = ["059035342X", "B00X4WHP55", "1401263119"];
   
   /*
    * Choose resources you want from GetItemsResource enum
    * For more details, refer: https://webservices.amazon.com/paapi5/documentation/get-items.html#resources-parameter
    */
   $resources = [
       GetItemsResource::ITEM_INFOTITLE,
       GetItemsResource::OFFERSLISTINGSPRICE];
   
   # Forming the request
   $getItemsRequest = new GetItemsRequest();
   $getItemsRequest->setItemIds($itemIds);
   $getItemsRequest->setPartnerTag($partnerTag);
   $getItemsRequest->setPartnerType(PartnerType::ASSOCIATES);
   $getItemsRequest->setResources($resources);

という部分がある。
この$resourcesを編集すればOKだ。
「ITEM_INFOTITLE」などの定数が定義されている箇所にジャンプして見てみる。

SDKの中にある「GetItemsResource.php」を見る。
(src\com\amazon\paapi5\v1\GetItemsResource.php)
この中で定数が定義されていた。

   /**
    * Possible values of this enum
    */
   const BROWSE_NODE_INFOBROWSE_NODES = 'BrowseNodeInfo.BrowseNodes';
   const BROWSE_NODE_INFOBROWSE_NODESANCESTOR = 'BrowseNodeInfo.BrowseNodes.Ancestor';
   const BROWSE_NODE_INFOBROWSE_NODESSALES_RANK = 'BrowseNodeInfo.BrowseNodes.SalesRank';
   const BROWSE_NODE_INFOWEBSITE_SALES_RANK = 'BrowseNodeInfo.WebsiteSalesRank';
   const CUSTOMER_REVIEWSCOUNT = 'CustomerReviews.Count';
   const CUSTOMER_REVIEWSSTAR_RATING = 'CustomerReviews.StarRating';
   const IMAGESPRIMARYSMALL = 'Images.Primary.Small';
   const IMAGESPRIMARYMEDIUM = 'Images.Primary.Medium';
   const IMAGESPRIMARYLARGE = 'Images.Primary.Large';
   const IMAGESVARIANTSSMALL = 'Images.Variants.Small';
   const IMAGESVARIANTSMEDIUM = 'Images.Variants.Medium';
   const IMAGESVARIANTSLARGE = 'Images.Variants.Large';
   const ITEM_INFOBY_LINE_INFO = 'ItemInfo.ByLineInfo';
   const ITEM_INFOCONTENT_INFO = 'ItemInfo.ContentInfo';
   const ITEM_INFOCONTENT_RATING = 'ItemInfo.ContentRating';
   const ITEM_INFOCLASSIFICATIONS = 'ItemInfo.Classifications';
   const ITEM_INFOEXTERNAL_IDS = 'ItemInfo.ExternalIds';
   const ITEM_INFOFEATURES = 'ItemInfo.Features';
   const ITEM_INFOMANUFACTURE_INFO = 'ItemInfo.ManufactureInfo';
   const ITEM_INFOPRODUCT_INFO = 'ItemInfo.ProductInfo';
   const ITEM_INFOTECHNICAL_INFO = 'ItemInfo.TechnicalInfo';
   const ITEM_INFOTITLE = 'ItemInfo.Title';
   const ITEM_INFOTRADE_IN_INFO = 'ItemInfo.TradeInInfo';
   const OFFERSLISTINGSAVAILABILITYMAX_ORDER_QUANTITY = 'Offers.Listings.Availability.MaxOrderQuantity';
   const OFFERSLISTINGSAVAILABILITYMESSAGE = 'Offers.Listings.Availability.Message';
   const OFFERSLISTINGSAVAILABILITYMIN_ORDER_QUANTITY = 'Offers.Listings.Availability.MinOrderQuantity';
   const OFFERSLISTINGSAVAILABILITYTYPE = 'Offers.Listings.Availability.Type';
   const OFFERSLISTINGSCONDITION = 'Offers.Listings.Condition';
   const OFFERSLISTINGSCONDITIONSUB_CONDITION = 'Offers.Listings.Condition.SubCondition';
   const OFFERSLISTINGSDELIVERY_INFOIS_AMAZON_FULFILLED = 'Offers.Listings.DeliveryInfo.IsAmazonFulfilled';
   const OFFERSLISTINGSDELIVERY_INFOIS_FREE_SHIPPING_ELIGIBLE = 'Offers.Listings.DeliveryInfo.IsFreeShippingEligible';
   const OFFERSLISTINGSDELIVERY_INFOIS_PRIME_ELIGIBLE = 'Offers.Listings.DeliveryInfo.IsPrimeEligible';
   const OFFERSLISTINGSDELIVERY_INFOSHIPPING_CHARGES = 'Offers.Listings.DeliveryInfo.ShippingCharges';
   const OFFERSLISTINGSIS_BUY_BOX_WINNER = 'Offers.Listings.IsBuyBoxWinner';
   const OFFERSLISTINGSLOYALTY_POINTSPOINTS = 'Offers.Listings.LoyaltyPoints.Points';
   const OFFERSLISTINGSMERCHANT_INFO = 'Offers.Listings.MerchantInfo';
   const OFFERSLISTINGSPRICE = 'Offers.Listings.Price';
   const OFFERSLISTINGSPROGRAM_ELIGIBILITYIS_PRIME_EXCLUSIVE = 'Offers.Listings.ProgramEligibility.IsPrimeExclusive';
   const OFFERSLISTINGSPROGRAM_ELIGIBILITYIS_PRIME_PANTRY = 'Offers.Listings.ProgramEligibility.IsPrimePantry';
   const OFFERSLISTINGSPROMOTIONS = 'Offers.Listings.Promotions';
   const OFFERSLISTINGSSAVING_BASIS = 'Offers.Listings.SavingBasis';
   const OFFERSSUMMARIESHIGHEST_PRICE = 'Offers.Summaries.HighestPrice';
   const OFFERSSUMMARIESLOWEST_PRICE = 'Offers.Summaries.LowestPrice';
   const OFFERSSUMMARIESOFFER_COUNT = 'Offers.Summaries.OfferCount';
   const PARENT_ASIN = 'ParentASIN';
   const RENTAL_OFFERSLISTINGSAVAILABILITYMAX_ORDER_QUANTITY = 'RentalOffers.Listings.Availability.MaxOrderQuantity';
   const RENTAL_OFFERSLISTINGSAVAILABILITYMESSAGE = 'RentalOffers.Listings.Availability.Message';
   const RENTAL_OFFERSLISTINGSAVAILABILITYMIN_ORDER_QUANTITY = 'RentalOffers.Listings.Availability.MinOrderQuantity';
   const RENTAL_OFFERSLISTINGSAVAILABILITYTYPE = 'RentalOffers.Listings.Availability.Type';
   const RENTAL_OFFERSLISTINGSBASE_PRICE = 'RentalOffers.Listings.BasePrice';
   const RENTAL_OFFERSLISTINGSCONDITION = 'RentalOffers.Listings.Condition';
   const RENTAL_OFFERSLISTINGSCONDITIONSUB_CONDITION = 'RentalOffers.Listings.Condition.SubCondition';
   const RENTAL_OFFERSLISTINGSDELIVERY_INFOIS_AMAZON_FULFILLED = 'RentalOffers.Listings.DeliveryInfo.IsAmazonFulfilled';
   const RENTAL_OFFERSLISTINGSDELIVERY_INFOIS_FREE_SHIPPING_ELIGIBLE = 'RentalOffers.Listings.DeliveryInfo.IsFreeShippingEligible';
   const RENTAL_OFFERSLISTINGSDELIVERY_INFOIS_PRIME_ELIGIBLE = 'RentalOffers.Listings.DeliveryInfo.IsPrimeEligible';
   const RENTAL_OFFERSLISTINGSDELIVERY_INFOSHIPPING_CHARGES = 'RentalOffers.Listings.DeliveryInfo.ShippingCharges';
   const RENTAL_OFFERSLISTINGSMERCHANT_INFO = 'RentalOffers.Listings.MerchantInfo';

この定義の右辺の部分(BrowseNodeInfo.BrowseNodesなど)が、ちょうどAPIリファレンスの「Resources Parameter」と一致しているようだ。
(参考)GetItems · Product Advertising API 5.0 https://webservices.amazon.com/paapi5/documentation/get-items.html#resources-parameter

以上から、

欲しいデータ対応するResources ParameterSDKのPHPサンプルコード中の定数
商品名ItemInfo.TitleITEM_INFOTITLE
商品画像(小)"Height": 75Images.Primary.SmallIMAGESPRIMARYSMALL
商品画像(中)"Height": 160Images.Primary.MediumIMAGESPRIMARYMEDIUM
商品画像(大)"Height": 500Images.Primary.LargeIMAGESPRIMARYLARGE
本の著者名ItemInfo.ByLineInfoITEM_INFOBY_LINE_INFO
本の出版社名ItemInfo.ByLineInfoITEM_INFOBY_LINE_INFO
発売日ItemInfo.ContentInfoITEM_INFOCONTENT_INFO
価格Offers.Listings.PriceOFFERSLISTINGSPRICE

という項目をセットしてリスエストすれば、欲しいデータが得られます。
PHPの配列で指定すると、以下のようになりました。

$resources = [
       GetItemsResource::ITEM_INFOTITLE,
       GetItemsResource::IMAGESPRIMARYSMALL ,
       GetItemsResource::IMAGESPRIMARYMEDIUM ,
       GetItemsResource::IMAGESPRIMARYLARGE ,
       GetItemsResource::ITEM_INFOBY_LINE_INFO ,
       GetItemsResource::ITEM_INFOCONTENT_INFO ,
       GetItemsResource::OFFERSLISTINGSPRICE ,
];

これで、試しにASIN「4863542224」の本のデータを取得してみます。

返ってきたレスポンスのJSONは、以下のようになっていました。

#code(json){{{
API called successfully Complete Response: {
"ItemsResult": {
"Items": [
{
"ASIN": "4863542224",
"DetailPageURL": "https:\/\/www.amazon.co.jp\/dp\/4863542224?tag=vertex9-22&linkCode=ogi&th=1&psc=1",
"Images": {
"Primary": {
"Small": {
"URL": "https:\/\/m.media-amazon.com\/images\/I\/51G32HC7rSL._SL75_.jpg",
"Height": 75,
"Width": 53
},
"Medium": {
"URL": "https:\/\/m.media-amazon.com\/images\/I\/51G32HC7rSL._SL160_.jpg",
"Height": 160,
"Width": 113
},
"Large": {
"URL": "https:\/\/m.media-amazon.com\/images\/I\/51G32HC7rSL.jpg",
"Height": 500,
"Width": 352
}
}
},
"ItemInfo": {
"ByLineInfo": {
"Contributors": [
{
"Locale": "ja_JP",
"Name": "\u9ce5\u5c45 \u967d\u4ecb",
"Role": "\u8457",
"RoleType": "author"
}
],
"Manufacturer": {
"DisplayValue": "\u30b7\u30fc\u30a2\u30f3\u30c9\u30a2\u30fc\u30eb\u7814\u7a76\u6240",
"Label": "Manufacturer",
"Locale": "ja_JP"
}
},
"ContentInfo": {
"Languages": {
"DisplayValues": [
{
"DisplayValue": "\u65e5\u672c\u8a9e",
"Type": "\u767a\u884c\u6e08\u307f"
}
],
"Label": "Language",
"Locale": "ja_JP"
},
"PagesCount": {
"DisplayValue": 224,
"Label": "NumberOfPages",
"Locale": "en_US"
},
"PublicationDate": {
"DisplayValue": "2019-02-27T00:00:01Z",
"Label": "PublicationDate",
"Locale": "en_US"
}
},
"Title": {
"DisplayValue": "\u57fa\u790e\u304b\u3089\u308f\u304b\u308b Elm",
"Label": "Title",
"Locale": "ja_JP"
}
},
"Offers": {
"Listings": [
{
"Id": "%259DZs7G3(中略)%F0I8f6Xmq",
"Price": {
"Amount": 2893,
"Currency": "JPY",
"DisplayAmount": "\uffe52,893"
},
"ViolatesMAP": false
}
]
}
}
]
}
} Printing all item information in ItemsResult: Printing information about the itemId: 4863542224 ASIN: 4863542224 Title: 基礎からわかる Elm Detail Page URL: https: //www.amazon.co.jp/dp/4863542224?tag=vertex9-22&linkCode=ogi&th=1&psc=1 Buying price: ¥2,893
}}}

次の工程では、JSONをパースして必要な項目のデータを取り出せばOKですね!

参考書







トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS