Tony Wang6 分で読めますYahoo Search を2026年にスクレイピングする方法(API & Python)
2026年に Yahoo Search をスクレイピングする方法 — オーガニックな Web 結果をデコード済みの遷移先 URL 付き構造化 JSON として取得。DIY Python、ノーコードツール、構造化 API のいずれか。
2026年に Yahoo Search をスクレイピングする最速の方法は、Yahoo のサーバーレンダリングされた結果ページを自力でパースするのではなく、タイトル・デコード済みの遷移先 URL・スニペットを含むオーガニック結果を正規化された JSON として返す構造化検索 API を呼び出すことです。Python で自前のスクレイパーを組むこともまだ可能ですが、Yahoo 自身の検索 API は頼れる後ろ盾としてもう存在しません。Yahoo は何年も前に BOSS(Build your Own Search Service)を廃止し、公開の代替を一度も出荷していません。
Yahoo Search をスクレイピングする理由
- エンジン横断の順位追跡。 Yahoo の結果は Google や Bing とは異なります。同じクエリ群を Yahoo でも他のエンジンと並行して実行することで、順位の変動がサイト全体のものかエンジン固有のものかを判別できます。
- Yahoo が重要な市場での SERP モニタリング。 Yahoo は今なお一部の地域や属性で無視できない検索シェアを持っています — Google のシェアがすべてを物語ると決めつけず、直接追跡する価値があります。
- AI グラウンディングと RAG。 自前のクローラーを構築することなく、もう1つのエンジンの見解というライブの Web 結果をパイプラインに供給できます。
- Web ディスカバリーのワークフロー。 オーガニック結果を、あるトピックに関するさらなるクロールやリサーチのシードリストとして利用します。
- 競合・ブランドモニタリング。 新規参入や失った順位を含め、あるキーワード群でどのドメインが時間とともにランクしているかを追跡します。
Yahoo Search をスクレイピングするのは合法ですか?
選択肢1: Python での自前実装(そしてなぜ壊れるのか)
素朴なやり方は、結果ページを取得して HTML をパースするものです。
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://search.yahoo.com/search",
params={"p": "ai agents"},
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Organic results sit in markup that shifts without notice, and every
# result link is wrapped in a r.search.yahoo.com/... click-tracking
# redirect rather than the real destination URL.
これは一度は動きますが、すぐに壊れます。
- 頼れる公式 API がない。 Yahoo は何年も前に BOSS を廃止し、公開の代替を出荷していません — 壊れた DIY スクレイパーの背後には、頼れる公式のものが何もありません。
- クリック計測用のリダイレクトであり、本当の URL ではない。 すべての結果リンクは
r.search.yahoo.com/...でラップされています。素のパーサーではリダイレクトのラッパーしか得られず、順位追跡やドメインの突き合わせに使える URL にするには自分でデコードする必要があります。 - アンチボット対策。 自動化と判定されたリクエストには、結果の代わりに CAPTCHA やブロック応答が返されます — Crawlora 自身がこのエンドポイントに対して行う上流リクエストでも、Yahoo がチャレンジを出す際には
503が返ります。 - マークアップの変化。 結果コンテナやクラス名は予告なく変わり、セレクタはエラーを出す代わりに黙って空のリストを返します。
- 利用規約のリスク。 Yahoo の利用規約は「ロボット、スパイダー、クローラー、スクレイパー」を名指しで挙げており、DIY スクレイパーはまさにこの条項が禁止する行為そのものです。
選択肢2: ノーコードツール
ブラウザ拡張機能やポイント&クリック式のスクレイパーは、Yahoo の結果を一回限りで取得することはできますが、クリック計測用のリダイレクトをデコードしてはくれず、継続的な順位追跡のためにスケジュール実行するには扱いにくく、Yahoo のページのマークアップが変われば結局壊れます。
選択肢3: 構造化された Yahoo Search API
Crawlora の Yahoo Search API は、Yahoo 自身のサーバーレンダリングされた検索ページを読み取り、クリック計測用のリダイレクトをすでにデコードした状態で、オーガニック結果を正規化された JSON として返します。
curl -G "https://api.crawlora.net/api/v1/yahoo-search/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
--data-urlencode "q=ai agents" \
--data-urlencode "page=1"
import requests
resp = requests.get(
"https://api.crawlora.net/api/v1/yahoo-search/search",
headers={"x-api-key": "YOUR_API_KEY"},
params={"q": "ai agents", "page": 1},
)
for row in resp.json()["data"]["results"]:
print(row["position"], row["title"], row["url"])
レスポンスは、そのまま保存できる正規化された JSON です(示しているフィールドは説明用です。最新のスキーマは ドキュメント をご確認ください)。
{
"code": 200,
"msg": "OK",
"data": {
"query": "openai",
"results": [
{
"position": 1,
"title": "OpenAI | Research & Deployment",
"url": "https://openai.com/",
"description": "We believe our research will eventually lead to artificial general intelligence, a system that can solve human-level problems.",
"hostname": "openai.com"
}
],
"pagination": { "page": 1, "next_page": 2 }
}
}
url は常にデコード済みの遷移先 URL です — Yahoo の生の r.search.yahoo.com/... リダイレクトリンクではありません — そのため、追加のデコード処理なしに自社ドメインリストとの順位追跡の突き合わせがそのまま成立します。page でさらに多くの結果をたどれます。
BASE = "https://api.crawlora.net/api/v1/yahoo-search"
headers = {"x-api-key": "YOUR_API_KEY"}
all_results = []
page = 1
while True:
data = requests.get(f"{BASE}/search", headers=headers, params={"q": "ai agents", "page": page}).json()["data"]
all_results.extend(data["results"])
if not data["pagination"].get("next_page"):
break
page = data["pagination"]["next_page"]
同じクエリをスケジュールで実行し、前回の結果と比較することで、順位の変動・新規参入・失った順位を監視できます。
収集できるもの
公開されているオーガニックの Web 結果のみです: position、title、デコード済みの遷移先 url、description スニペット、hostname、そしてページ単位の pagination(page、next_page)。このエンドポイントに画像・ニュース・動画のモジュールはありません — カバーするのは Yahoo の Web 検索結果のみで、Yahoo Finance や Yahoo News、その他の Yahoo プロパティは対象外です。
制約とよくある課題
- 頼れる公式 API がない。 BOSS はなくなり、Yahoo に公開の代替はありません — リクエストがブロックされても、エスカレーションできる公式のチャネルは存在しません。
- アンチボット対策。 ブロックまたは CAPTCHA を出された応答は
503を返します。不自然に見える自動化リクエストは、結果を返される代わりにチャレンジされます。 - DIY ではリダイレクトのデコードを誤りやすい。 Yahoo のクリック計測用ラッパーは、単純に取り除けるクエリ文字列パラメータではありません — これを確実にデコードすることが、素の HTML パーサーで使えるはずの URL を取りこぼしてしまう主な理由の1つです。
- 単一エンジンの偏り。 Yahoo のランキングは Google や Bing とは異なります — それぞれ独立した系列として扱い、他のエンジンと一致すると仮定せず、組み合わせて使ってください。
- Web 結果のみ。 このエンドポイントは Yahoo の一般的な Web 検索です — Yahoo Finance のティッカー・株価データではありません。これは完全に別のプロダクトであり、別の API です。
この機能が役立つ場面
- エンジン横断の順位追跡 — Yahoo・Google・Bing にまたがって
position/hostnameを自社ドメインリストと突き合わせ、順位の勝ち負けがエンジン固有かどうかを確認します。 - Web ディスカバリーのパイプライン — デコード済みの
url結果を、さらなるクロールやコンテンツリサーチのシードリストとして利用します。 - 競合モニタリング — あるキーワード群で上位を占めるドメインを時間とともに追跡します。
出典
収集を始める
まずは無料でお試しください: 任意の公開 URL を 無料 Web スクレイパー に通すか、アンチボットチェッカー でサイトがボットをブロックするかどうかを確認できます。登録は不要です。
エンジン横断の順位追跡のために、Yahoo Search をメインのエンジンと組み合わせてください — Bing のスクレイピング方法 と Brave Search のスクレイピング方法 をご覧ください。Web 検索結果ではなく Yahoo のティッカー・株価・ファンダメンタルズデータをお探しの場合は、Yahoo Finance のスクレイピング方法 をご覧ください — こちらは完全に別のプロダクトで、別の API がカバーしています。エンジン間のより広い比較は 2026年のベスト SERP API を、法的な基礎知識は 2026年、Web スクレイピングは合法か をご覧ください。
Playground でエンドポイントを試し、API ドキュメント でリクエストとレスポンスのスキーマを読み、料金ページ でクレジットのコストを確認してください。
よくある質問
Yahoo の公式検索 API はありますか?
ありません。Yahoo は BOSS 検索 API を廃止しており、公開の代替は発表していません。Crawlora のエンドポイントは Yahoo 自身のサーバーレンダリングされた検索ページを読み取り、オーガニック結果を正規化された JSON として返します。
得られるのは本当の遷移先 URL ですか、それとも Yahoo のリダイレクトですか?
本当の遷移先 URL が得られます。Yahoo はすべての結果リンクをクリック計測用のリダイレクトでラップしていますが、このエンドポイントはそれをデコードして遷移先 URL を返します。だからこそ自社ドメインに対する順位追跡が成立するのです。
ページネーションはどう機能しますか?
page パラメータで Yahoo の結果ページをたどります。カーソルはなく、ページ番号は Yahoo 自身のインターフェースが使うのと同じページネーションに対応しています。
API で Yahoo を検索するにはどうすればよいですか?
Crawlora の /yahoo-search/search エンドポイントにキーワードを q として送ると、正規化されたオーガニック結果が構造化 JSON で得られます。Yahoo アカウントは不要です。