前回はMWS APIを使ってカートボックス価格を取得してみよう!ということをご説明させていただきました。
しかし、Amazonのすべてにカートボックス価格が設定されているわけではありません。
出品者が自分1人しかいなくても、カートボックス価格が設定されていない!という場合もあります。
たとえば、今までは5,000円くらいで売れていたものが、自分ひとりしか出品していないから20,000円にしていおこう!という場合には、カートが取れなかったりします。
MWS APIを使って価格を知りたいといった場合、カートボックス価格を取得したい気持ちはよくわかりますが、取得できなかった場合のリスクヘッジとして最安値・最低価格は一緒に取得するようにしておきましょう。
というわけで、今回はMWS APIを使って最安値、最低価格を取得する方法です。
サンプルソースだけほしい、という方は目次から飛んじゃってください。そこそこわかる方なら、ソースさえあれば簡単に作れちゃいますからね。
MWS APIを使ったAmazonで出品されている商品の最安値・最低価格取得方法
取得方法は2つある
最安値・最低価格の取得方法には2つあります。
- GetLowestOfferListingsForASIN
- GetLowestPricedOffersForASIN
上記2つはもっとも名前がよく似ているので注意。わたしもたまに間違えます。どっちがどっちだっけ?と。
よく登場してくる『Offer』が出品者を指し、『Listing』がリスト化、一覧表示的な意味です。『Price』はいわずもがな、価格です。
『Price』に『Low』がつけば最安値、『Buybox』がつけばカートボックス価格です。参考までに。
GetLowestOfferListingsForASINは最安値・最低価格をグループで取得する
ここらへんが微妙にわかりづらいところなのです。Amazonのリファレンスを読んでもよくわからない。
GetLowestOfferListingsForASINは出品者すべての価格を取得するように見えるライブラリなのですが、実はこれが違っていて、グループで価格を取得するライブラリなんです。
グループとは、商品のコンディションでグループ化されたものです。
Newが5人で最安値1,500円、Usedが3人で最安値1,000円、みたいな。
残念ながらこのライブラリでは出品者全員の価格を調べてライバルが何人いるのか?という調査には使えないんです。
あくまでも最安値を取得するのに使う、というのがベストでしょう。
GetLowestPricedOffersForASINは出品者単位で価格を取得する
こちらを使えばライバルチェックはできますし、実際に現在ライバルチェックツール開発中です。
むしろ、わたしは過去にFBAセラーチェッカなるFBAセラー数を調査するツールも作ったことがあります。
まぁFBAセラー数=ライバル数じゃないからあまり使えなかったんですよね。追加のアルゴリズムを入れて改良し、公開予定です。
このライブラリが一番くわしくデータを参照できるもので、最安値もカート価格も、ライバルチェックもできちゃいます。
しかし、1時間あたり200商品分しか使えないという、キツイ制限があるため、わたしはほとんど使っていません。
最安値・最低価格の取得にはGetLowestOfferListingsForASINを使う
というわけで、最安値・最低価格の取得にはGetLowestOfferListingsForASINを使いましょう、ということになります。
GetLowestOfferListingsForASINであれば1時間あたり36,000商品のデータが取得できますので。
Amazon MWS APIを使った最安値・最低価格取得のサンプルソースコード
GetLowestOfferListingsForASINを使ったサンプルソース
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);
GetLowestOfferListingsForASINRequest request = new GetLowestOfferListingsForASINRequest();
// 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;
GetLowestOfferListingsForASINResponse response = null;
response = service.GetLowestOfferListingsForASIN(request);
for (int i = 0; i < asinList.ASIN.Count; i++ )
Console.WriteLine(response.GetLowestOfferListingsForASINResult[i].Product.LowestOfferListings.LowestOfferListing[0].Price.LandedPrice.Amount);
}
}
}
GetLowestOfferListingsForASINの実行結果

どんっ!
パッと見てもよくわからないと思いますが、Amazonで『並行輸入』と検索し、頭から10個分の商品の最安値を取得し、表示しています。
まとめ
GetLowestOfferListingsForASINは前回紹介したGetCompetitivePricingForASINと使い方はほとんど変わりありません。
仕様・制限もそっくりで、1時間あたり36,000件の商品データの取得が可能です。
わたしはカート価格の取得と最安値価格の取得、いつも必ず一緒に取得するようにしています。
取りこぼしがあった場合、お互いがその穴を補填できるように、と。

