株価データを取得する際に次のような悩みを持ったことはないでしょうか。
- そもそも、株価データの入手方法が分からない
- 少なくとも最初はデータ取得にお金をかけたくない
- スクレイピングは面倒
- 入手したデータに信頼性があるかどうか疑問
- 財務情報などのデータも合わせて分析したいけれど、いろいろな場所にあるので、収集するだけですごい作業量
この記事では、上記の解決方法を
- 画像多め
- Pythonコード付き
で説明します。
J-Quants APIとは
J-Quants APIは個人投資家向けに株価・財務などの金融データを配信するサービス(日本取引所グループ公式)です。
日本取引所グループは東京証券取引所、大阪取引所、東京商品取引所等を運営する取引所グループです。
本家本元のデータですので、信頼性については一番ではないでしょうか。
価格プラン表(無料プランあり)

(「J-Quants API」より)
なお、無料プランはデータ提供期間が過去2年分[12週間遅延]になっています。
またプラン表を見ていただくとわかりますが、株価・財務データ以外にも上場銘柄一覧や決算発表予定日など様々なデータを取得できます。
株価・財務データ取得までの手順(Pythonコード付き)
J-Quants APIに登録
まずはJ-Quants APIに登録します。
「J-Quants API」のページを開き、「J-Quants APIに登録する」ボタンを押します。

次に登録用のメールアドレスとパスワードを入力し、登録ボタンを押します。

メールが送られてきます。

メールの記載内容に従ってユーザ登録を完了します。

この画面でメールアドレスとパスワードを入力すると、下のプラン選択画面が開きます。
プラン登録
この記事では一番左の無料プランを選択しています。

名前と住所を入力して申し込みます。

以上でプラン登録は終わりです。
次にデータを取得するためのトークン(証明書のようなもの)を取得していきます。
リフレッシュトークンとIDトークンの取得
株価や財務データなどを取得するためにはIDトークンが必要になります。
そして、IDトークンを取得するためにはリフレッシュトークンが必要になります。
登録したメールアドレスとパスワードを使ってリフレッシュトークンは取得できます。
次がリフレッシュトークンを取得するPythonコードです。
なお、リフレッシュトークンの有効期間は1週間だそうです。
# リフレッシュトークン取得
import requests
import json
# 登録したメールアドレス、パスワードを設定
# EMAIL_ADDRESSに登録メールアドレス、PASSWORDにパスワードを入力
mail_password={"mailaddress":"EMAIL_ADDRESS", "password":"PASSWORD"}
# リフレッシュトークン取得
r_ref = requests.post("https://api.jquants.com/v1/token/auth_user", data=json.dumps(mail_password))
# リフレッシュトークン取得の表示
print(r_ref.json())
次に、取得したリフレッシュトークンを用いてIDトークンを取得します。
なお、IDトークンの有効期間は24時間だそうです。
# IDトークン取得
import requests
# 受け取ったリフレッシュトークンを設定
RefreshToken = r_ref.json()["refreshToken"]
# IDトークン取得
r_token = requests.post(f"https://api.jquants.com/v1/token/auth_refresh?refreshtoken={RefreshToken}")
# IDトークン表示
print(r_token.json())
株価データ取得
実際にIDトークンを使用して、株価データを取得してみます。
# 株価四本値の取得
import requests
import pandas as pd
# 取得したIDトークンを設定
idToken = r_token.json()["idToken"]
headers = {'Authorization': 'Bearer {}'.format(idToken)}
# 銘柄コード、期間を指定
code_ = "8697"
from_ = "2022-12-01"
to_ = "2023-02-28"
# 株価四本値の取得
re_daily_OHLCV = requests.get(f"https://api.jquants.com/v1/prices/daily_quotes?code={code_}&from={from_}&to={to_}", headers=headers)
# pandasデータフレームに変換
df_daily_OHLCV = pd.DataFrame(re_daily_OHLCV.json()["daily_quotes"])
# 'Date'をdatetime型へ変換
df_daily_OHLCV['Date'] = pd.to_datetime(df_daily_OHLCV['Date'])
ここでは取得する際のパラメータとして「code」、「from」、「to」を指定して、指定された銘柄について指定された期間分のデータを取得しています。
指定パラメータの組合せとレスポンス結果は次のとおりです。(「J-Quants API 仕様書」より)
code | date | from /to | レスポンスの結果 |
---|---|---|---|
指定された銘柄について全期間分のデータ | |||
指定された銘柄について指定された期間分のデータ | |||
全上場銘柄について指定された日付のデータ |
取得した株価データ(Open、High、Low、Closeの四本値)をローソク足でグラフ化すると次のようになります。

財務データ取得
同様に財務情報を取得するPythonコードは次のとおりです。
# 財務情報の取得
import requests
import pandas as pd
# 取得したIDトークンを設定
idToken = r_token.json()["idToken"]
headers = {'Authorization': 'Bearer {}'.format(idToken)}
# 銘柄コードを指定
code = "8697"
# 株価四本値の取得
statements = requests.get(f"https://api.jquants.com/v1/fins/statements?code={code}", headers=headers)
# pandasデータフレームに変換
df_statements = pd.DataFrame(statements.json()["statements"])
さらに詳細な使い方
次のnote記事でJ-Quants APIを使って毎日、自動で全銘柄の株価、財務情報、信用取引週末残を取得する方法をPythonコード付きで紹介しています。
それらのコードをwindowsのタスクスケジューラを使って毎日実行する方法も説明しています。

公式の仕様書
公式のJ-Quants APIの仕様書は次の場所です。