MWS APIを使うと何ができるの?なんか便利だって聞いたけど…。
何ができるのかと聞かれれば、ASINをもとにAmazonで出品されている商品のデータを取得することができます。
そして、商品のデータを取得したいといったとき、一番取得したいのは商品の価格でしょう。
商品の価格の中でも、今回はカート価格の取得方法について書かせていただきます。
MWS APIを使ったカート価格の取得方法
価格取得の手段は3つある
実は、MWS APIを使った価格取得には3つほど手段があります。
主に使われるものが下記でしょう。
- GetCompetitivePricingForASIN
- GetLowestOfferListingsForASIN
- GetLowestPricedOffersForASIN
う~ん、名前が似ていて見分けにくい!
わたしが実際にリサーチツールを開発する際に、いろいろ実験もしてみました。
ここではAmazonのリファレンスも含めて、わたしなりの解釈を加えて説明します。
GetCompetitivePricingForASIN
このライブラリを使用することで、商品の競合価格を取得することができます。
競合価格ってなんぞ?という感じでしょう。わたしもよくわかりません。(笑)
わたしが何度か検証してたどりついた結果は、『カートボックスを取得するために競合している価格』と解釈しました。
ゆえに、GetCompetitivePricingForASINで取得した価格が実質カート価格である、という認識です。
GetLowestOfferListingsForASIN
こちらのライブラリは商品の最低価格を取得することができます。
最低価格であって、カート価格ではありません。
カート価格が設定されていない商品もありますので、結構多用します。
GetLowestPricedOffersForASIN
こちらはしっかりカートボックス価格を取得することができます。
ですが、カート価格が設定されていない場合もありますし、なにより1時間に200回しか利用できないので、あまり使い物になりません…。
カート価格の取得には、『GetCompetitivePricingForASIN』を使う!
実際には『実質のカート価格』です。厳密にカート価格ではないです。
ちなみに、当ブログで公開しているAsinStockerもGetCompetitivePricingForASINを使ってカート価格を取得しています。
検証してみていただければわかるかと思いますが、AsinStockerが出力するカート価格と実際のAmazonのカート価格、きっと一致するはずです。
逆に、一致しなかったケースが見当たりませんでした。
Amazonカート価格取得のサンプルプログラム
GetCompetitivePricingForASINを使ったサンプルコード
下記がサンプルコードです。たぶんそのまま使えるはず。
ASINはAmazonで並行輸入と検索した結果の頭から10個分抜き出しています。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MarketplaceWebServiceProducts; using MarketplaceWebServiceProducts.Mock; using MarketplaceWebServiceProducts.Model; namespace _00_sample { class Program { static void Main(string[] args) { string appName = ""; // アプリの名前 string appVer = ""; // アプリのバージョン string merchantId = ""; // 出品者ID string accessKeyId = ""; // アクセスキー string secretAccessKey = ""; // 秘密キー string marketPlaceId = "A1VC38T7YXB528"; // ←日本はこの値固定 MarketplaceWebServiceProductsConfig config = new MarketplaceWebServiceProductsConfig(); config.ServiceURL = "https://mws.amazonservices.jp"; MarketplaceWebServiceProductsClient service; service = new MarketplaceWebServiceProductsClient(appName, appVer, accessKeyId, secretAccessKey, config); GetCompetitivePricingForASINRequest request = new GetCompetitivePricingForASINRequest(); // 1度に突っ込めるASINは10個まで! ASINListType asinList = new ASINListType(); asinList.ASIN.Add("B00WXLQBEI"); asinList.ASIN.Add("B00HIVH840"); asinList.ASIN.Add("B00MHXHL64"); asinList.ASIN.Add("B01ASQ2G6G"); asinList.ASIN.Add("B00PDMJ7VS"); asinList.ASIN.Add("B006D37Q82"); asinList.ASIN.Add("B01KFQQARK"); asinList.ASIN.Add("B005TJMC0S"); asinList.ASIN.Add("B075Q94T7Y"); asinList.ASIN.Add("B00BYIGR4U"); request.SellerId = merchantId; request.ASINList = asinList; request.MarketplaceId = marketPlaceId; GetCompetitivePricingForASINResponse response = null; response = service.GetCompetitivePricingForASIN(request); for (int i = 0; i < asinList.ASIN.Count; i++ ) Console.WriteLine(response.GetCompetitivePricingForASINResult[i].Product.CompetitivePricing.CompetitivePrices.CompetitivePrice[0].Price.LandedPrice.Amount); } } }
GetCompetitivePricingForASINを使った実行結果
実行結果が下記です。
ちなみに、価格はdecimal型になります。
ここから文字列なりなんなり、好きに料理ししちゃってください。
そして実際のAmazonページの表示が下記です。
価格、一致してますよね。
制作時間5分程度、ちょっと急ぎで作ったのでいい加減かもしれません。