ビジネス > アフィリエイト > Amazonアソシエイト > Amazon API
Amazon APIとは? †
Amazonアソシエイトの機能を外部から利用するためのAPIのことです。
正式には「Amazon Product Advertising API」と言います。
公式サイト †
Tips †
Amazon APIの更新 †
Amazon APIがバージョンアップして、最新のバージョンは5になった。
古いバージョン4はもう使えないので入れ替えが必要です。(面倒くせ~!)
- PA-API v5 PHP - Google 検索 https://www.google.com/search?q=PA-API+v5+PHP
- 移行ガイド アソシエイト・セントラル https://affiliate.amazon.co.jp/help/node/topic/GZH32YX29UH5GACM
- What's New in PA-API 5.0 · Product Advertising API 5.0 https://webservices.amazon.com/paapi5/documentation/migration-guide/whats-new-in-paapi5.html
- 4.0から大きく変わった「PA-API v5.0(Amazon API)」の使い方! | HPcode https://haniwaman.com/pa-api-5/
ASINから商品データを取得する方法 †
これらのデータを取得するにはどうしたら良いのだろうか?
- 商品名
- 商品画像
- 本の著者名
- 本の出版社名
- 発売日
- 価格
(参考)
- 4.0から大きく変わった「PA-API v5.0(Amazon API)」の使い方! | HPcode https://haniwaman.com/pa-api-5/#i-5
- GetItems · Product Advertising API 5.0 https://webservices.amazon.com/paapi5/documentation/get-items.html#ItemLookup-exam
Examples
The following is the sample json payload for GetItems request.{ "ItemIds": ["B0199980K4","B000HZD168","B01180YUXS","B00BKQTA4A"], "ItemIdType": "ASIN", "LanguagesOfPreference": ["en_US"], "Marketplace": "www.amazon.com", "PartnerTag": "xyz-20", "PartnerType": "Associates", "Resources": ["Images.Primary.Small","ItemInfo.Title","ItemInfo.Features","Offers.Summaries.HighestPrice","ParentASIN"] }
この例では、欲しいデータの内容を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 Parameter | SDKのPHPサンプルコード中の定数 |
商品名 | ItemInfo.Title | ITEM_INFOTITLE |
商品画像(小)"Height": 75 | Images.Primary.Small | IMAGESPRIMARYSMALL |
商品画像(中)"Height": 160 | Images.Primary.Medium | IMAGESPRIMARYMEDIUM |
商品画像(大)"Height": 500 | Images.Primary.Large | IMAGESPRIMARYLARGE |
本の著者名 | ItemInfo.ByLineInfo | ITEM_INFOBY_LINE_INFO |
本の出版社名 | ItemInfo.ByLineInfo | ITEM_INFOBY_LINE_INFO |
発売日 | ItemInfo.ContentInfo | ITEM_INFOCONTENT_INFO |
価格 | Offers.Listings.Price | OFFERSLISTINGSPRICE |
という項目をセットしてリスエストすれば、欲しいデータが得られます。
PHPの配列で指定すると、以下のようになりました。
$resources = [ GetItemsResource::ITEM_INFOTITLE, GetItemsResource::IMAGESPRIMARYSMALL , GetItemsResource::IMAGESPRIMARYMEDIUM , GetItemsResource::IMAGESPRIMARYLARGE , GetItemsResource::ITEM_INFOBY_LINE_INFO , GetItemsResource::ITEM_INFOCONTENT_INFO , GetItemsResource::OFFERSLISTINGSPRICE , ];
これで、試しにASIN「4863542224」の本のデータを取得してみます。
- 基礎からわかる Elm | 鳥居 陽介 |本 | 通販 | Amazon https://www.amazon.co.jp/dp/4863542224
返ってきたレスポンスのJSONは、以下のようになっていました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
|
次の工程では、JSONをパースして必要な項目のデータを取り出せばOKですね!
参考書 †