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分程度、ちょっと急ぎで作ったのでいい加減かもしれません。

