Tony Wang4 分で読めます2026年版・Amazonの商品データをスクレイピングする方法(APIとPython)
2026年にAmazonの商品データ・価格・レビューをスクレイピングする3つの方法:自作Python、ノーコード、構造化API。それぞれ何が取得でき、法律面の基本はどうなっているかを解説します。
2026年にAmazonの商品データをスクレイピングする最も速い方法は、自作のスクレイパーを動かして面倒を見るのではなく、正規化されたJSON(タイトル、ASIN、価格、在庫状況、評価、レビュー件数)を返す構造化されたAmazon APIを呼び出すことです。Pythonで自作のスクレイパーを組むこともできますが、Amazonのアンチボット対策・頻繁に変わるレイアウト・CAPTCHAのせいで、動き続けさせるにはコストがかかります。このガイドでは3つのアプローチすべてについて、それぞれ何が取得でき、どこで壊れ、法律面の基本はどうなっているかを解説します。
| アプローチ | 出力 | 大規模でも通用する? | 向いている用途 |
|---|---|---|---|
| 自作Python | 自分でパースする生のHTML | 通用しない — CAPTCHA・ブロック・レイアウト変更 | 学習、単発のスクリプト |
| ノーコードツール | CSV/JSONエクスポート | 限定的 | 単発のエクスポート |
| 構造化Amazon API | 正規化されたJSON | 通用する — プロキシ/パースは処理済み | 製品組み込み、スケジュール実行のパイプライン |
Amazonの商品データをスクレイピングするのは合法ですか?
公開されている商品データ(タイトル、価格、評価、レビュー)は、一般に収集リスクが低めです。米国では hiQ Labs v. LinkedIn が、一般公開されているデータへのアクセスはコンピュータ詐欺および濫用防止法(CFAA)に違反しないと判断しており、価格のような事実には著作権が及びません。とはいえ、Amazonの利用規約は自動アクセスを禁止しているため、ブロックやアカウント停止に直面することはありますし、個人データはプライバシー法の対象になります。目安としては次のとおりです。
- 収集するのは公開されている商品データだけにとどめ、個人データやログインの背後にあるものは避けましょう。
- レート制限を尊重し、サービスの品質を損なわないようにしましょう。
- Amazonの利用規約と自社のコンプライアンス要件を確認しましょう。
これは法的助言ではありません。判断に迷うときは弁護士に相談してください。
選択肢1:Pythonで自作する(そしてなぜ壊れるのか)
単一ページであれば、requests + BeautifulSoup を使い、商品のフィールドをパースしてCSVにエクスポートし、JavaScriptやアンチボットチェックが立ちはだかったらヘッドレスブラウザに切り替える、という手が考えられます。
import csv
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
}
resp = requests.get("https://www.amazon.com/dp/B0DGJ736JM", headers=headers, timeout=30)
soup = BeautifulSoup(resp.text, "html.parser")
title = soup.select_one("#productTitle")
price = soup.select_one(".a-price .a-offscreen")
rating = soup.select_one("#acrPopover .a-icon-alt")
row = {
"asin": "B0DGJ736JM",
"title": title.get_text(strip=True) if title else None,
"price": price.get_text(strip=True) if price else None,
"rating": rating.get_text(strip=True) if rating else None,
}
with open("amazon.csv", "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=row.keys())
writer.writeheader()
writer.writerow(row)
# ...on a good day. On a bad day: a CAPTCHA, a 503, or a redirect to a bot check.
デモではうまく動き、その後、大規模化すると壊れます。
- アンチボット — CAPTCHAやIPブロックによって、プロキシのローテーションやフィンガープリント対策へと追い込まれます。
- レイアウト変更 — AmazonがDOMを変更し、あなたのセレクタは静かに壊れます。
- ASINとバリエーションの膨張 — 価格や在庫状況は、バリエーション・出品者・地域ごとに異なります。
- スケール — 信頼できる収集には、自分で運用するプロキシプール・リトライ・監視が必要になります。
コストの大部分は最初のスクレイピングではなく、それを動かし続けることにあります。
選択肢2:ノーコードツール
ビジュアル抽出ツールやブラウザ拡張機能は、ページの処理を代わりに行い、CSVやJSONにエクスポートしてくれます。単発のエクスポートには向きますが、製品やパイプラインの中で、スケジュールに従って、予測可能なフィールドでAmazonのデータが必要になると、あまり便利ではありません。
選択肢3:構造化されたAmazon API
繰り返し実行する、製品組み込みのワークフローには、AmazonスクレイピングAPIが使えます。正規化されたJSONを返すドキュメント化されたエンドポイントが提供され、ブラウザもセレクタも、運用すべきプロキシプールも不要です。ASINで商品を取得してみましょう。
curl https://api.crawlora.net/api/v1/amazon/product/B0DGJ736JM \
-H "x-api-key: $CRAWLORA_API_KEY"
同じ呼び出しをPythonで書くと次のようになります。
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/amazon/product/B0DGJ736JM",
headers={"x-api-key": "YOUR_API_KEY"},
)
data = resp.json()["data"]
print(data["title"], data["price"], data["rating"])
レスポンスはそのまま保存できる正規化されたJSONです(示しているフィールドは説明用です。最新のスキーマはドキュメントを確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"asin": "B0DGJ736JM",
"title": "Example product",
"price": 189,
"currency": "USD",
"availability": "In Stock",
"rating": 4.4,
"review_count": 1055
}
}
結果セット全体を収集したい場合は、検索エンドポイントを使いましょう。
curl "https://api.crawlora.net/api/v1/amazon/search?query=wireless+earbuds&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"
何を収集できるか
公開されている出品ページで露出している範囲で、フィールドはいくつかのグループに分かれます。
- 商品の識別情報 — タイトル、ASIN、ブランドまたは出品者、画像、商品URL。
- 価格 — 現在価格、通貨、取り消し線付き/定価、在庫状況。
- ソーシャルプルーフ — 平均評価、レビュー件数、レビューのサンプル。レビューを本格的にマイニングする場合は、その商品のレビューをページ送りで取得します。
- 出品ページのメタデータ — 検索結果での順位とバッジ(Prime、ベストセラー、Amazon's Choice)、加えてリクエストで指定したASINまたはクエリのコンテキスト。
スケジュールで再実行し、1回の実行につきASINごとに1行を保存すれば、価格と評価の履歴を構築できます。
制約とよくある課題
優れたAPIを使っていても、Amazon特有のいくつかの現実は念頭に置いておきましょう。
- パーソナライズされた結果。 Amazonは結果を地域や閲覧履歴に合わせて調整するため、2回のリクエストで内容が異なることがあります。ロケールのパラメータでこれを軽減できますが、完全には解消できません。
- ページネーションの上限。 検索は1クエリあたりおよそ20ページに制限されています。より深く取得するには、カテゴリやフィルタで分割しましょう。
- 価格の変動。 価格は頻繁に変わるため、正確な追跡には一度きりではなくスケジュールでの再スクレイピングが必要です。
- 自作でのアンチボット。 直接のスクレイピングはCAPTCHA・行動分析・Cookie/フィンガープリントのチェックに直面します。構造化APIは、プロキシのルーティング・レンダリング・リトライをエンドポイントの背後で吸収します。
- マーケットプレイスと通貨。 エンドポイントは既定で
amazon.com(USD)を対象とします。他の地域のマーケットプレイスに頼る前に、対応状況を確認しましょう。
どこで使われるか
構造化されたAmazonデータは、いくつかの一般的なワークフローを支えます。
- 価格 & MAP監視 — 価格と在庫状況を追跡し、MAP違反を検知します。価格 & MAP監視のユースケースをご覧ください。
- 商品監視 — Amazon商品監視で、出品ページ・評価・Buy-Boxの変化を見張ります。
- Eコマースインテリジェンス — Eコマース商品インテリジェンスで、マーケットプレイスをまたいでカタログや品揃えを比較します。
出典
収集を始める
まずは無料でお試しを: 任意の公開URLを無料Webスクレイパーにかけるか、サイトがボットをブロックするかどうかをアンチボットチェッカーで確認できます。登録は不要です。
商品エンドポイントをPlaygroundで試し、レスポンスのスキーマをAPIドキュメントで確認し、クレジットのコストを料金ページでご確認ください。同じ手順を別のマーケットプレイスで実行しますか?eBayをスクレイピングする方法とShopifyストアをスクレイピングする方法をご覧ください。より大きな全体像については、Amazonスクレイピングに最適なAPI、WebスクレイピングAPIの選び方、ScraperAPIの代替をご覧ください。
よくある質問
ブロックされずにAmazonをスクレイピングできますか?
構造化APIなら、プロキシのルーティングとブラウザの実行がエンドポイントの背後で処理されるため、ブロック対策を自分で管理する必要はありません。自作のスクレイパーはCAPTCHA・行動分析・Cookie/フィンガープリントのチェックに直面するため、プロキシと慎重なペース配分が必要になります。
Amazonからどんなデータを取得できますか?
公開されている出品ページのフィールドです:タイトル、ASIN、価格、通貨、在庫状況、評価、レビュー件数、ブランドまたは出品者、画像、そして取得可能な場合は検索結果での順位。
Amazonのレビューをスクレイピングできますか?
はい、公開されている範囲で可能です。商品のレスポンスには平均評価・レビュー件数・レビューのサンプルが含まれます。レビュー本文の全体とセンチメント分析には、その商品のレビューをページ送りで取得します。レビュアーの名前や本文は個人データになり得るものとして扱い、必要なものだけを収集しましょう。
Amazonの価格をスクレイピングして変動を追跡できますか?
はい。価格・通貨・在庫状況を取得し、1回の実行につきASINごとに1行を保存したうえで、各実行を前回と比較すれば、価格の動き・在庫の変化・MAP違反を検知できます。価格は頻繁に変わるため、スケジュールで再スクレイピングしましょう。
他の国やマーケットプレイスからAmazonをスクレイピングできますか?
Amazonはマーケットプレイスや地域ごとに異なる結果と通貨を提供します。エンドポイントは既定で amazon.com(USD)を対象とします。他の地域のマーケットプレイスに頼る前に対応状況を確認し、一部のパーソナライズは残ると想定してください。
これは公式のAmazon SP-APIやPA-APIですか?
いいえ。これは公開されているAmazonの商品データを抽出するものであり、Amazon公式のSelling Partner API(出品者向け)およびProduct Advertising API(アフィリエイト向け)とは独立しています。これらはいずれも自分自身のアカウントに紐づけられています。
どのくらいの頻度でデータを更新できますか?
プランと責任ある利用の制約が許す範囲で、いつでも更新できます。ほとんどのチームは継続的なポーリングではなく、スケジュールされたスナップショットを実行しています。