J-Quants API(無料プランあり)を使用した株価・財務データ取得(Python)

株価データを取得する際に次のような悩みを持ったことはないでしょうか。

株価データを取得する際の悩み
  • そもそも、株価データの入手方法が分からない
  • 少なくとも最初はデータ取得にお金をかけたくない
  • スクレイピングは面倒
  • 入手したデータに信頼性があるかどうか疑問
  • 財務情報などのデータも合わせて分析したいけれど、いろいろな場所にあるので、収集するだけですごい作業量

この記事では、上記の解決方法を

  • 画像多め
  • 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 仕様書」より)

codedatefrom /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の仕様書は次の場所です。

ご意見・ご感想をください
葉っぱ

サイトをご訪問いただき、ありがとうございました。
このサイトの作成者の葉っぱです。
分かりやすく、面白いサイトを作るため、ご意見・ご感想をいただけると嬉しいです。
いただく際は次のTwitterのDM、もしくはページ下部の「お問い合わせ」からお願いいたします。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次(このページで分かること)