UC-SERP-001SERPLv2Lv3
Organic Keyword Tracking(順位監視)
キーワード順位の定点観測を自動化し、変動を検知する。
SERP API
KPI 例
- 順位変動
- 取得成功率
- 更新頻度
順位監視の難しさは、順位そのものよりも「同じ条件で取り続けること」にあります。Bright Data では SERP API を使うことで、Google や Bing の検索結果を JSON として取得し、日次比較に必要な rank、title、link をそのまま保存できます。
誰の課題か
- SEO 担当者が、キーワードごとの順位変動を毎日同じ条件で追いたい
- コンテンツチームが、施策前後で露出がどう変わったかを確認したい
- データ担当者が、検索順位を CSV や DB に保存して可視化したい
推奨製品セット
| 製品 | 役割 | 使いどころ |
|---|---|---|
| SERP API | 検索結果の取得 | 順位、タイトル、URL を構造化で取る |
| API Access | 認証方式 | Authorization: Bearer $BRIGHTDATA_API_KEY で呼ぶ |
- 順位監視では、まず Google 検索の 1 クエリを安定して取得し、その後に日次ジョブへ広げる形が安全です。
- zone は SERP 専用に分け、他の取得系 API と混ぜないほうが運用しやすくなります。
最小実装イメージ
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=bright+data+api",
"format": "json",
"method": "GET",
"country": "jp"
}'Python
import csv
import os
import requests
API_KEY = os.environ["BRIGHTDATA_API_KEY"]
ZONE = "serp_api1"
QUERY = "bright data api"
response = requests.post(
"https://api.brightdata.com/request",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
},
json={
"zone": ZONE,
"url": f"https://www.google.com/search?q={QUERY.replace(' ', '+')}",
"format": "json",
"method": "GET",
"country": "jp",
},
timeout=60,
)
response.raise_for_status()
data = response.json()
with open("serp_snapshot.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
writer.writerow(["query", "rank", "title", "link"])
for item in data.get("organic", []):
writer.writerow([
QUERY,
item.get("rank"),
item.get("title"),
item.get("link"),
])format: "json"を使うと、organic[]に順位監視向きの構造化結果が入ります。- まずは 10 件程度で確認し、必要になってからページングや複数キーワードへ広げます。
運用ポイント
- 順位は国や言語で変わるため、
countryと検索 URL を毎回固定します。 - 日次比較では
rankだけでなくtitleとlinkも保存し、同順位でも結果差し替えを追えるようにします。 - 料金は成功リクエスト単位なので、検証と本番で実行頻度を分けます。
- 429 や 5xx は再試行対象ですが、クエリ数の増やしすぎ自体も見直します。