UC-SERP-003SERPLv3
Price Comparison(価格比較)
ショッピング系 SERP やマーチャントサイトから価格を横断収集して比較する。
SERP APIWeb Unlocker
KPI 例
- 取得 SKU 数
- 価格更新遅延
- プライスマッチ率
価格比較では、各 EC サイトを個別に回る前に、ショッピング SERP で「どの店舗が、いくら前後で出しているか」をまとめて把握できると調査が速くなります。SERP API は Google Shopping の結果を構造化して返せるため、比較対象候補の抽出に向いています。
誰の課題か
- EC 事業者が、競合や販売チャネルごとの価格帯を定点観測したい
- 比較サイト運営者が、商品候補と店舗候補を短時間で集めたい
- リサーチ担当が、価格だけでなくショップ名やレビュー件数も合わせて見たい
推奨製品セット
| 製品 | 役割 | 使いどころ |
|---|---|---|
| SERP API | ショッピング結果の取得 | 商品名、価格、ショップ名、順位を取る |
| API Access | 認証方式 | バッチや分析ジョブから呼ぶ |
- まずショッピング SERP で候補を集め、個別商品ページの詳細確認が必要なものだけ次工程へ送ります。
- 価格比較の最初の目的は「市場の全体像を取ること」であり、在庫や送料の最終確認は別処理に分けるほうが安定します。
最小実装イメージ
curl
curl -X POST "https://api.brightdata.com/request" \
-H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"zone": "serp_api1",
"url": "https://www.google.com/search?q=wireless+headphones&tbm=shop",
"format": "json",
"method": "GET",
"country": "us"
}'Python
import csv
import os
import requests
API_KEY = os.environ["BRIGHTDATA_API_KEY"]
response = requests.post(
"https://api.brightdata.com/request",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"zone": "serp_api1",
"url": "https://www.google.com/search?q=wireless+headphones&tbm=shop",
"format": "json",
"method": "GET",
"country": "us",
},
timeout=60,
)
response.raise_for_status()
data = response.json()
with open("shopping_comparison.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["rank", "title", "price", "shop", "reviews_cnt"])
for item in data.get("shopping", []):
writer.writerow([
item.get("rank"),
item.get("title"),
item.get("price"),
item.get("shop"),
item.get("reviews_cnt"),
])- Google Shopping の結果は
shopping[]に入り、価格比較の初期スナップショットに使えます。 priceは表示文字列なので、後段で通貨や記号を正規化して比較用カラムに分けます。
運用ポイント
- 商品名の表記揺れが大きい場合は、型番やブランド名を含む検索語に寄せます。
- 比較対象が多いときは、同じクエリを何度も打たず結果を保存して再利用します。
- 表示価格と最終支払額は一致しないことがあるため、送料や税は別フィールドとして扱います。
- SERP 側では市場把握、個別ページ側では精査という二段構えにすると保守しやすくなります。