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

Amazon APIとは?

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

公式サイト

Tips

Amazon APIの更新

Amazon APIがバージョンアップして、最新のバージョンは5になった。
古いバージョン4はもう使えないので入れ替えが必要です。(面倒くせ~!)

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

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

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

(参考)

  • 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 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は、以下のようになっていました。

  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
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
Last-modified: 2020-05-05 (火) 13:07:16 (213d)