この記事でわかること:SellerSprite価格追跡APIで取得できる価格データの種類(現在価格・オファー情報・価格履歴)、商品価格とオファー情報の違い、リクエストとレスポンスの実装例、通貨・マーケットプレイスの正規化方法、価格変動アラートの設計パターン、更新頻度と欠損値の扱い方までを解説します。
Amazon商品の価格変動をプログラムで追跡・分析したい開発者や運用担当者に向けて、SellerSprite価格追跡APIの具体的な使い方を解説します。本APIでは、商品の現在価格に加えて、複数オファーの価格情報や過去の価格履歴を取得できます。価格変動の通知や分析システムに組み込む際に、実運用で問題になりやすい点(オファー欠損・通貨・更新間隔)を先に整理しながら、実装例を紹介します。
1. 商品価格とオファー情報の違い
価格追跡APIを正しく理解するには、「商品価格」と「オファー情報」の違いをまず押さえることが重要です。
- 商品価格(Price):Amazonの商品詳細ページに表示される「現在の販売価格」。通常は最も安いオファー(新品)の価格が表示されます。
- オファー情報(Offer):その商品に対して複数の出品者が提示している価格。新品・中古・Amazon販売・サードパーティ販売など、出品者ごとに異なる価格や在庫状況を含みます。
オファー情報が重要な理由:1つの商品に複数の出品者がいる場合、最も安い価格が「商品価格」として表示されます。しかし、その商品の実際の市場価格の分布や競合状況を把握するには、オファー単位の価格情報が不可欠です。
SellerSprite価格追跡APIでは、以下の価格データを取得できます。
| 取得できる価格データ | 説明 | 主な用途 |
|---|
| 現在価格(Current Price) | 商品詳細ページに表示される最新の販売価格 | 価格モニタリング・競合分析 |
| オファー一覧(Offer List) | 全出品者の価格・配送・出品者情報 | 市場価格分布・競合把握 |
| 価格履歴(Price History) | 過去の価格変動(日次・週次・月次) | トレンド分析・価格戦略策定 |
図:商品価格(最安値)とオファー一覧(全出品者)の関係2. リクエスト・レスポンス例
以下は、価格追跡APIのリクエストとレスポンスの例です。
curl -X GET "https://api.sellersprite.com/v1/product/price/B0XXXXXX?marketplace=JP" -H "X-API-Key: your_api_key_here"
{ "code": 200, "data": { "asin": "B0XXXXXX", "marketplace": "JP", "currency": "JPY", "current_price": 3980, "list_price": 4980, "is_on_sale": true, "offers": [ { "seller_name": "Amazon Japan", "price": 3980, "shipping": 0, "condition": "New", "is_prime": true, "is_fulfilled_by_amazon": true }, { "seller_name": "Sample Store", "price": 3800, "shipping": 350, "condition": "New", "is_prime": false, "is_fulfilled_by_amazon": false }, { "seller_name": "Secondhand Shop", "price": 3200, "shipping": 350, "condition": "Used", "is_prime": false, "is_fulfilled_by_amazon": false } ], "offer_count": 3, "lowest_price": 3980, "lowest_offer_total": 3980, "price_updated_at": "2026-09-04T08:30:00+09:00" }, "request_id": "req_price_abc123" }
レスポンスに含まれる主なフィールドの説明:
- current_price:商品詳細ページに表示されている現在価格
- list_price:メーカー希望小売価格(設定されている場合)
- is_on_sale:セール価格かどうか(list_priceより低い場合に true)
- offers:各出品者の価格・送料・状態・Prime対応状況
- lowest_price:全オファー中最安値(新品)
- lowest_offer_total:最安オファーの合計額(価格+送料)
3. 価格履歴の取得
価格履歴APIを使用すると、対象ASINの過去の価格変動を時系列で取得できます。
curl -X GET "https://api.sellersprite.com/v1/product/price-history/B0XXXXXX?marketplace=JP&period=90d" -H "X-API-Key: your_api_key_here"
{ "code": 200, "data": { "asin": "B0XXXXXX", "marketplace": "JP", "period": "90d", "currency": "JPY", "history": [ { "date": "2026-06-01", "price": 4980, "lowest_offer": 4980 }, { "date": "2026-06-15", "price": 3980, "lowest_offer": 3980 }, { "date": "2026-07-01", "price": 4480, "lowest_offer": 4480 }, { "date": "2026-08-01", "price": 3980, "lowest_offer": 3980 } ], "statistics": { "avg_price": 4355, "min_price": 3980, "max_price": 4980, "price_range": 1000 } }, "request_id": "req_history_xyz789" }
履歴データの注意点:価格履歴は日次で取得されたスナップショットに基づいています。1日の中で複数回価格が変動した場合、取得タイミングによっては一部の変動が反映されない可能性があります。リアルタイムに近い価格変動を追いたい場合は、頻度の高いポーリングを検討してください。
4. 通貨・マーケットプレイスの正規化
複数のマーケットプレイスを横断して価格データを扱う場合、通貨と市場の正規化が重要です。
- 通貨コードの統一:APIレスポンスの
currency フィールド(JPY / USD / EUR / GBP / CADなど)を基に、通貨換算や価格比較を行う際は為替レートを適用して統一通貨に変換する。 - マーケットプレイスコードの正規化:リクエスト時の
marketplace パラメータ(JP / US / UK / DE / FR / IT / ES / CA / MX / AU)は大文字で統一し、コード体系を事前に定義して管理する。 - 税込・税抜の区別:日本のAmazonは税込価格が表示されますが、アメリカなどは税抜き表示の州があります。価格比較時は表示ルールの違いを考慮する必要があります。
正規化処理の実装例(Python)
class PriceNormalizer: def __init__(self): self.exchange_rates = { "JPY": 1.0, "USD": 145.0, "EUR": 160.0, "GBP": 190.0, "CAD": 107.0, "AUD": 97.0 } def normalize(self, price, currency, target_currency="JPY"): if currency not in self.exchange_rates: raise ValueError(f"Unknown currency: {currency}") if target_currency not in self.exchange_rates: raise ValueError(f"Unknown target currency: {target_currency}") rate = self.exchange_rates[currency] / self.exchange_rates[target_currency] return round(price * rate, 0) def compare_prices(self, price1, currency1, price2, currency2): normalized1 = self.normalize(price1, currency1, "JPY") normalized2 = self.normalize(price2, currency2, "JPY") return normalized1 - normalized2 normalizer = PriceNormalizer() result = normalizer.compare_prices(3980, "JPY", 29.99, "USD")
5. アラート設計
価格変動アラートシステムを設計する際のパターンと実装例を紹介します。
アラートの種類
- 閾値アラート:価格が設定した下限または上限を超えた場合に通知(例:3,000円以下になったら通知)
- 変動率アラート:前日比で一定以上変動した場合に通知(例:±10%以上の変動を検知)
- 競合価格変動アラート:競合商品の価格が変動した場合に通知(例:特定の競合が値下げしたら通知)
- セール開始アラート:セール価格になった場合に通知(例:list_priceを下回ったら通知)
import requests import json from datetime import datetime SLACK_WEBHOOK_URL = "https://hooks.slack.com/services/xxx/yyy/zzz" ALERT_THRESHOLD = 3500 TARGET_ASIN = "B0XXXXXX" def check_price_alert(asin, threshold): url = f"https://api.sellersprite.com/v1/product/price/{asin}?marketplace=JP" headers = {"X-API-Key": "your_api_key_here"} response = requests.get(url, headers=headers, timeout=30) data = response.json() if data.get("code") != 200: return current_price = data["data"]["current_price"] if current_price <= threshold: message = f""" 価格アラート ASIN: {asin} 現在価格: {current_price} JPY 閾値: {threshold} JPY 確認日時: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} アクション: 購入を検討してください """ requests.post(SLACK_WEBHOOK_URL, json={"text": message}) check_price_alert(TARGET_ASIN, ALERT_THRESHOLD)
6. 更新頻度・欠損・利用条件
価格追跡APIを実運用に組み込む際に注意すべきポイントを整理します。
更新頻度
- 現在価格・オファー情報:数時間〜24時間以内に更新されます。人気商品ほど更新頻度が高くなります。
- 価格履歴:日次でスナップショットが取得・蓄積されており、最大365日分の履歴を参照可能です。
欠損値の扱い
- 価格データが取得できないASIN:Amazonの商品ページ自体が存在しない、または一時的にアクセスできない場合、nullが返却されることがあります。
- オファー情報がない商品:在庫切れや出品者が存在しない商品の場合、
offers 配列が空になることがあります。 - 実装時は必ずnullチェックと空配列チェックを行ってください。
利用条件
- レート制限:プランに応じた制限(スタータープラン:5 req/sec、プロフェッショナルプラン:20 req/sec)
- クレジット消費:価格APIの呼び出しにはクレジットが消費されます(エンドポイントごとに異なります)
- 商用利用:自社の分析・業務改善用途に限り利用可能です。データの再配布は禁止されています。
実装上の推奨:価格追跡システムではキャッシュ戦略を必ず導入してください。頻繁に同じASINを呼び出す場合は、TTLを設定したキャッシュ(Redisなど)を利用することで、不要なAPIコールとクレジット消費を削減できます。
よくある質問(FAQ)
商品価格とオファー価格は何が違いますか?
商品価格はAmazonの商品詳細ページに表示されている「現在の販売価格」で、通常は最安値のオファー価格です。オファー価格は各出品者が設定した個別の価格で、新品・中古・Amazon販売・サードパーティ販売など様々な条件の価格を含みます。市場の価格分布を把握するにはオファー情報が重要です。
価格履歴データはどのくらいの期間分取得できますか?
最大365日分の価格履歴を取得可能です。periodパラメータで期間(30d、90d、180d、365d)を指定できます。履歴データは日次スナップショットに基づいており、1日の中で複数回価格変動があった場合でも取得タイミングによっては一部が反映されない可能性があります。
異なるマーケットプレイスの価格を比較するにはどうすればいいですか?
各マーケットプレイスから取得した価格データを通貨換算して統一通貨(例:JPY)に変換した上で比較することをおすすめします。為替レートは固定ではなく、データ取得時点のレートを使用するか、定期的にレートを更新する仕組みを検討してください。また、税込・税抜きの表示ルールの違いも考慮する必要があります。
価格追跡APIのデータを元にアラートシステムを作りたいのですが、おすすめの設計は?
バッチ処理とキャッシュを組み合わせた設計をおすすめします。①日次バッチで主要ASINの価格データを取得しデータベースに保存 ②価格変動を検知したらSlackやメールで通知 ③ユーザーが参照するデータはキャッシュから表示(APIコール削減)。閾値アラート(3,000円以下)と変動率アラート(前日比±10%)の2種類を組み合わせることで、より効果的なモニタリングが可能です。
価格データが取得できないASINがあるのはなぜですか?
主な原因として、①指定したASINが存在しない(特に親ASINを指定した場合)、②商品が在庫切れでAmazon上に表示されていない、③マーケットプレイスが正しく指定されていない、④Amazon側で商品ページが一時的にアクセスできない状態になっている、などが考えられます。まずは子ASINと正しいマーケットプレイスコードを指定しているか確認し、それでも取得できない場合は一時的な障害の可能性もあるため、時間を置いて再試行してみてください。
著者:セラースプライト(SellerSprite) 編集部
Amazon外部サービスプロバイダー(Amazon SPN)として、Amazon市場向けのリサーチツールを提供している私たちは、日々変化するAmazon市場において、セラーの皆様が抱える「何が売れるのか?」「どうすれば利益を出せるのか?」という悩みを解決するための情報を発信しています。
私たちは単なるツールの提供者ではなく、伴走型パートナーとしてセラー様と一緒に成長しようと考えています。
EC事業者やこれから物販ビジネスを始める方に向けて、実用的な情報をお届けしています。