【2026年版】株価リアルタイムAPIをPythonで比較・活用する方法|yfinance・Twelve Data・Alpaca・J-Quants

Uncategorized

株価をリアルタイムで取得したい!でも、どの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を使ってリアルタイムでシグナルを生成する方法を解説します。まずは上記のコードをコピーして、実際に動かしてみてください!

タイトルとURLをコピーしました