株価をリアルタイムで取得したい!でも、どのAPIを使えばいい?
Pythonで自動売買や株価分析をしようとしたとき、まず壁にぶつかるのが「データをどこから取ってくるか」という問題です。2026年現在、株価リアルタイムAPIの選択肢は増えており、無料・有料・日本株対応・米国株対応とさまざまです。本記事では、主要な株価APIを徹底比較し、Pythonでの実装例も紹介します。
主要な株価リアルタイムAPIの比較
1. yfinance(Yahoo Finance非公式ライブラリ)
最も手軽に使えるのがyfinanceです。APIキー不要、無料で利用でき、日本株・米国株どちらにも対応しています。ただし非公式ライブラリのため、仕様変更によって突然動かなくなるリスクがあります。個人の学習・バックテスト用途には十分な選択肢です。
2. Twelve Data API
Twelve Dataは無料プランでも1分足のリアルタイムデータが取得できる優れたAPIです。APIキーの登録は必要ですが、無料枠(800リクエスト/日)で十分な場合も多いです。公式Pythonライブラリも提供されており、使いやすさは随一です。
3. Alpaca Markets API
Alpacaは米国株に特化したAPIで、株価取得だけでなく売買注文の発注もできます。ペーパートレード(模擬取引)環境も提供されており、実際に発注する前にテストが可能です。
4. J-Quants API(日本株専門)
J-QuantsはJPX(日本取引所グループ)が提供する日本株専門のAPIです。2024年以降、無料プランも充実しており、EODデータから始まり、有料プランでは分足データも取得できます。日本株の本格的な自動売買を目指すなら最有力候補です。
PythonでyfinanceをつかってAPIデータを取得する
まずは最も手軽なyfinanceから試してみましょう。インストールはpip install yfinanceだけで完了です。
import yfinance as yf
import pandas as pd
from datetime import datetime
# トヨタ自動車(7203)の株価を取得
ticker = yf.Ticker("7203.T")
# 直近5日間の日足データ
df = ticker.history(period="5d")
print(df[['Open', 'High', 'Low', 'Close', 'Volume']])
# 1分足データ(直近1日分)
df_1m = ticker.history(period="1d", interval="1m")
print(f"最新価格: {df_1m['Close'].iloc[-1]:.0f}円")
print(f"取得時刻: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
Twelve Data APIをPythonで使う
より安定したリアルタイムデータが欲しい場合はTwelve Dataがおすすめです。公式サイトでAPIキーを取得してから以下のコードを実行してください。
import requests
import pandas as pd
API_KEY = "your_api_key_here"
def get_ohlcv(symbol: str, interval: str = "1min", outputsize: int = 30) -> pd.DataFrame:
url = "https://api.twelvedata.com/time_series"
params = {
"symbol": symbol,
"interval": interval,
"outputsize": outputsize,
"apikey": API_KEY
}
r = requests.get(url, params=params)
data = r.json()
df = pd.DataFrame(data['values'])
df['datetime'] = pd.to_datetime(df['datetime'])
df.set_index('datetime', inplace=True)
return df.astype(float).sort_index()
df = get_ohlcv("AAPL", interval="5min", outputsize=20)
print(df.tail())
J-Quants APIで日本株データを取得する
日本株に特化した高品質なデータが欲しいならJ-Quantsです。JPX J-Quants公式サイトでアカウントを作成して利用できます。
import requests
import pandas as pd
class JQuantsClient:
BASE_URL = "https://api.jquants.com/v1"
def __init__(self, email: str, password: str):
self.access_token = self._authenticate(email, password)
def _authenticate(self, email, password) -> str:
r1 = requests.post(f"{self.BASE_URL}/token/auth_user",
json={"mailaddress": email, "password": password})
id_token = r1.json()["idToken"]
r2 = requests.post(f"{self.BASE_URL}/token/auth_refresh",
params={"idtoken": id_token})
return r2.json()["idToken"]
def get_daily_quotes(self, code: str, date_from: str, date_to: str) -> pd.DataFrame:
headers = {"Authorization": f"Bearer {self.access_token}"}
r = requests.get(f"{self.BASE_URL}/prices/daily_quotes",
headers=headers,
params={"code": code, "dateFrom": date_from, "dateTo": date_to})
return pd.DataFrame(r.json()["daily_quotes"])
# 使い方(要アカウント登録)
# client = JQuantsClient("your@email.com", "password")
# df = client.get_daily_quotes("72030", "20260101", "20260520")
# print(df.head())
APIを選ぶときの判断基準まとめ
どのAPIを選ぶかは使用目的と予算によって変わります。学習・バックテスト目的ならyfinanceが最も手軽です。米国株の本格的な自動売買を目指すならAlpaca、日本株の高品質データが欲しいならJ-Quantsが最適です。まずはyfinanceで動くものを作り、必要に応じて有料APIに移行するのが王道のステップアップ方法です。
まとめ
2026年現在、株価リアルタイムAPIの選択肢は豊富になりました。yfinanceで手軽に始め、本番運用が近づいたらJ-QuantsやAlpacaに移行するのがおすすめです。次回は、これらのAPIを使ってリアルタイムでシグナルを生成する方法を解説します。まずは上記のコードをコピーして、実際に動かしてみてください!

