あなたの順位は真空の中に存在するわけではありません — 競合が動くから順位が動きます。キーワードのSERP全体を取得することで、誰が伸びているか、誰が新しいか、どの機能(スニペット、パック)がページを支配しているかが明らかになります。serp.cheapを使った方法を紹介します。
結果ページ全体を取得する
import requests, datetime
def serp_snapshot(keyword, gl="us"):
data = requests.post(
"https://api.serp.cheap/v1/search",
headers={"X-API-Key": "YOUR_KEY"},
json={"q": keyword, "gl": gl},
timeout=30,
).json()
return {
"date": datetime.date.today().isoformat(),
"keyword": keyword,
"ranking": [(r["position"], domain_of(r["link"])) for r in data["organic"]],
}
def domain_of(url):
from urllib.parse import urlparse
return urlparse(url).netloc.replace("www.", "")
変化を検出する
スナップショットを保存し、連続する日を差分します:
def new_entrants(today, yesterday):
seen = {d for _, d in yesterday["ranking"]}
return [(pos, d) for pos, d in today["ranking"] if d not in seen]
これにより、気にしているキーワードでトップ結果に割り込んだばかりの競合が浮かび上がります — アラートに値する早期シグナルです。
追跡すべきもの
- トップ10のシェア — 競合ごとに経時的に。
- 新規参入 — ページに割り込んでくるもの。
- 順位のボラティリティ — SERPが頻繁にシャッフルするキーワード。
- SERP機能 — フィーチャードスニペットやパックがオーガニックを押し下げているかどうかを追跡。
安く保つ
市場ごと・キーワードごとに1リクエストです。200キーワードの毎日のモニタリングはフレッシュで約$0.12/日、キャッシュヒットがあればそれ以下です。キーワードごとのSaaS料金はなく、過去データはあなたのものです。