Tony Wang4 分で読めますYahoo Finance のスクレイピング方法(2026年版・API と Python)
2026 年に Yahoo Finance をスクレイピングする方法。yfinance を使った Python での自作(とレート制限を受ける理由)、ノーコード、そして気配値・過去データ・ファンダメンタルズ向けの構造化 API を解説します。
2026 年に Yahoo Finance をスクレイピングする最速の方法は、yfinance で Yahoo の非公式エンドポイントを叩き続けてレート制限のバンを管理するのではなく、正規化された JSON(気配値・過去価格・ファンダメンタルズ・検索)を返す構造化 API を呼び出すことです。yfinance で自作することもできますが、これはドキュメント化されていない API をスクレイピングしており、強くスロットリングされます。しかも、代わりに頼れる公式の公開 Yahoo Finance API は存在しません。このガイドでは 3 つのアプローチすべてについて、それぞれが何を返し、どこで破綻し、基本はどうなるのかを解説します。
なぜ Yahoo Finance をスクレイピングするのか?
Yahoo Finance は最もアクセスしやすい幅広いマーケットデータソースであり、次のような用途で役立ちます。
- クオンツリサーチとバックテスト — 多数のティッカーにわたる過去の OHLCV。
- ダッシュボードとウォッチリスト — ポートフォリオの気配値と前日比。
- ファンダメンタルズによるスクリーニング — 財務データ・比率・スクリーナーで銘柄群を絞り込む。
- マーケットのモニタリング — 値動きの大きい銘柄、決算カレンダー、セクターのパフォーマンス、ニュース。
Yahoo Finance のスクレイピングは合法か?
選択肢 1: Python で自作する(そしてなぜ破綻するのか)
yfinance は事実上の標準的な自作ルートで、Yahoo の内部 API をきれいにラップしたものです。
import yfinance as yf
hist = yf.Ticker("AAPL").history(period="1y") # OHLCV DataFrame
これは手元のノート PC では動きますが、本番で破綻します。
- 429 のレート制限。
yfinanceは Yahoo の非公式かつ非ライセンスのエンドポイントを呼び出すため、多用すると DDoS のように見え、Yahoo は429 Too Many Requestsを返して一時的に IP をブロックします。回避策——ランダムな 1〜3 秒のスリープ、冗長な呼び出しの回避、requests-cacheによるキャッシュ——はいずれもスループットの上限を下げてしまいます。 - 公式 API がない。 Yahoo は YQL を廃止し、公開された後継を一度も出していないため、ドキュメント化されたエンドポイントも認証情報も SLA もありません。内部 JSON の形は予告なく変わります。
- ライブラリがリリース間で壊れる。 Yahoo が内部 API を変更したり crumb/cookie 認証を追加したりすると、パッチが当たるまで
yfinanceは壊れます。つまり、データを集める代わりにライブラリの更新を追いかけることになります。 - スケールすれば結局は払うことになる。 実運用の量では、ドキュメント化された有料 API(Alpha Vantage、Polygon、Tiingo)へ移行するのが一般的なアドバイスです。これは別のスキーマに合わせて書き直すことを意味します。
選択肢 2: ノーコードツール
スプレッドシートのアドオンやブラウザツールでも気配値やテーブルを 1 つ引くことはできますが、保存・結合・スケジュールができるきれいな過去データ系列を得られることはめったにありません。パイプラインに流し込む用途には、JSON が欲しくなります。
選択肢 3: 構造化された Yahoo Finance API
繰り返し実行するワークフローには、Yahoo Finance API が正規化された JSON を返し、管理すべきスロットリングもありません。過去データ系列を取得します。
curl "https://api.crawlora.net/api/v1/yahoo-finance/ticker/AAPL/history?period=1y&interval=1d" \
-H "x-api-key: $CRAWLORA_API_KEY"
Python で気配値・過去データ・検索を取得します。
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/yahoo-finance"
quote = requests.get(f"{base}/ticker/AAPL/quote", headers=h).json()["data"]
history = requests.get(f"{base}/ticker/AAPL/history", headers=h,
params={"period": "1y", "interval": "1d"}).json()["data"]
hits = requests.get(f"{base}/search", headers=h, params={"q": "apple"}).json()["data"]
過去データのレスポンスはそのまま保存できる正規化された JSON です(フィールドは説明用です。スキーマはドキュメントで確認してください)。
{
"code": 200,
"msg": "OK",
"data": {
"symbol": "AAPL",
"interval": "1d",
"rows": [
{ "date": "2026-05-01", "open": 212.4, "high": 215.1, "low": 211.8, "close": 214.7, "volume": 48213000 }
]
}
}
価格以外にも、同じキーでファンダメンタルズやコーポレートアクションに届きます。
info = requests.get(f"{base}/ticker/AAPL/info", headers=h).json()["data"]
financials = requests.get(f"{base}/ticker/AAPL/financials", headers=h).json()["data"]
dividends = requests.get(f"{base}/ticker/AAPL/dividends", headers=h).json()["data"]
news = requests.get(f"{base}/ticker/AAPL/news", headers=h).json()["data"]
過去データは period(例: 1mo、1y、max)または start/end、それに interval(1d、1wk、1mo)を受け付けます。会社名をティッカーシンボルに解決するには /yahoo-finance/search か /yahoo-finance/lookup を、条件で絞り込んだ銘柄群には /yahoo-finance/screener を使ってください。日付ごとに 1 行を保存し、スケジュールに沿って再取得します。
何を収集できるか
ティッカーシンボルごとに、ほぼリアルタイムの気配値、配当と株式分割を含む過去の OHLCV、企業情報と財務データ、アナリストデータ・株主・オプション、決算日、ニュースを取得できます。加えてマーケットレベルのデータとして、指数とマーケットサマリー、セクターと業種、スクリーナー、カレンダーもあります。公開マーケットデータのみです。
制約とよくある課題
- 頼れる公式 API がない。 Yahoo は YQL を廃止し、公開 API も SLA も提供していません。
yfinanceは変化しやすく負荷がかかると429でブロックする非公式エンドポイントをスクレイピングします。構造化 API は、スロットリングとパースを 1 つのキーの裏で吸収します。 - データは情報であってアドバイスではない。 値は推奨ではなくデータ入力として扱い、重要なものは権威ある情報源で確認してください。
- 再配布にはライセンスが必要な場合がある。 リサーチのために公開マーケットデータを収集するのと、Yahoo や取引所のデータを商用で再配布するのは別の話です。後者にはライセンスが必要になることがあります。利用規約を確認してください。
- 値の変動が速い。 気配値や日中データは絶えず動くため、用途に応じた頻度で再取得し、行ごとにタイムスタンプを保存してください。
どこで使われるか
- 金融データのワークフロー — 気配値、過去価格、スクリーナー、ティッカーモジュール。Yahoo Finance API のページを参照してください。
- クオンツリサーチとバックテスト — ティッカーをまたいだ過去 OHLCV のデータセットを構築する。
- マーケットのモニタリング — 値動きの大きい銘柄、決算、セクター、ニュースをスケジュールで追跡する。
出典
収集を始める
まずは無料で試す: 任意の公開 URL を無料ウェブスクレイパーに通すか、アンチボットチェッカーでサイトがボットをブロックするか確認できます。サインアップは不要です。
Playground でティッカーのエンドポイントをテストし、API ドキュメントでスキーマを確認し、料金を確認してください。もう 1 つの情報源として、Google Finance API ガイドと Google Finance API、ウェブスクレイピング API の選び方、ウェブスクレイピングは合法かも参照してください。
よくある質問
公式の Yahoo Finance API はありますか?
ありません。Yahoo は YQL を廃止し、公開された後継を一度も出していないため、ドキュメント化されたエンドポイントも認証情報も SLA もありません。yfinance のようなライブラリは Yahoo の非公式な内部 API をスクレイピングしますが、これは予告なく変わり、レート制限もかかります。そのため、信頼できる収集には自前で強くスロットリングするか、構造化されたスクレイパー API を使うかのどちらかになります。
なぜ yfinance はレート制限を受け続けるのですか?
yfinance は Yahoo の非公式かつ非ライセンスのエンドポイントを呼び出すため、多用すると DDoS のように見え、Yahoo は 429 Too Many Requests を返して一時的に IP をブロックします。よくある緩和策——ランダムな 1〜3 秒のスリープ、冗長な呼び出しの回避、requests-cache——は機能しますがスループットの上限を下げます。構造化 API はスロットリングを 1 つのキーの裏で処理します。
過去価格はどうやって取得しますか?
/yahoo-finance/ticker/{symbol}/history を period(例: 1mo、1y、max)または start/end、それに interval(1d、1wk、1mo)を付けて呼び出します。配当と株式分割を含む OHLCV 系列が返り、日付ごとに 1 行で保存できます。
ティッカーシンボルはどうやって見つけますか?
/yahoo-finance/search または /yahoo-finance/lookup を使って会社名をティッカーシンボルに解決し、そのシンボルで気配値・過去データ・ファンダメンタルズを指定します。
どんな Yahoo Finance データを収集できますか?
シンボルごとに、気配値、過去の OHLCV、企業情報と財務データ、アナリストデータ、株主、オプション、決算日、ニュース。加えてマーケットレベルのサマリー、セクターと業種、スクリーナー、カレンダー——いずれも正規化された JSON として取得できます。
スクレイピングしたマーケットデータは投資アドバイスですか?
いいえ。あなた自身の分析のためのデータであって推奨ではありません。重要なものは権威ある情報源で確認してください。また、Yahoo や取引所のデータを商用で再配布するにはライセンスが必要になる場合がある点にも注意してください。
どのくらいの頻度で更新できますか?
気配値や日中データは絶えず動くため、プランと責任ある利用の範囲内で、用途に応じた頻度で再取得し、行ごとにタイムスタンプを保存してください。