Skip to content

J-Quants API の使い方

kabukit は、httpx を使った非同期設計になっており、Jupytermarimo のような非同期処理を直接扱えるノートブック環境で快適に利用できます。

このガイドでは、kabukit が提供する高レベルなモジュール関数と、より詳細な制御が可能な JQuantsClient の使い方を解説します。

認証設定

API を利用するには、事前にコマンドラインで J-Quants API の ID トークンを取得しておく必要があります。詳細は、CLIの使い方の「認証設定」セクションを参照してください。

モジュールレベル関数

kabukit は、手軽に J-Quants API からデータを取得できるモジュールレベル関数を提供します。これらの関数は内部で非同期処理を並列実行するため、効率的に情報を取得できます。

上場銘柄一覧 (get_info)

kabukit.get_info 関数は、上場銘柄の情報を取得します。

銘柄コード (4 桁または 5 桁の文字列) を指定すると、指定した銘柄の情報を取得できます。

from kabukit import get_info

df = await get_info("7203")  # または "72030"
df.select("Date", "Code", "CompanyName", "MarketCodeName")
shape: (1, 4)
DateCodeCompanyNameMarketCodeName
datestrstrcat
2025-10-20"72030""トヨタ自動車""プライム"

銘柄コードを省略すると、全上場銘柄の情報を取得できます。

df = await get_info()  # 全上場銘柄一覧を取得
df = df.filter(MarketCodeName="プライム")  # 市場区分がプライムの銘柄を選択
df.select("Date", "Code", "CompanyName", "MarketCodeName")
shape: (1_616, 4)
DateCodeCompanyNameMarketCodeName
datestrstrcat
2025-10-20"13010""極洋""プライム"
2025-10-20"13320""ニッスイ""プライム"
2025-10-20"13330""マルハニチロ""プライム"
2025-10-20"99910""ジェコス""プライム"
2025-10-20"99970""ベルーナ""プライム"

財務情報 (get_statements)

kabukit.get_statements 関数は、企業の四半期毎の決算短信サマリーや業績・配当情報の修正に関する開示情報(主に数値データ)を取得します。

銘柄コードを指定すると、指定した銘柄の全期間分の財務情報を取得できます。

from kabukit import get_statements

df = await get_statements("7203")
df.select("DisclosedDate", "Code", "TypeOfDocument")
shape: (41, 3)
DisclosedDateCodeTypeOfDocument
datestrstr
2015-11-05"72030""2QFinancialStatements_Consolid…
2016-02-05"72030""3QFinancialStatements_Consolid…
2016-05-11"72030""FYFinancialStatements_Consolid…
2025-05-08"72030""FYFinancialStatements_Consolid…
2025-08-07"72030""1QFinancialStatements_Consolid…

銘柄コードのリストを指定すると、複数銘柄の全期間分の財務情報を一度に取得できます。このとき、J-Quants API へのリクエストは非同期で並列に行われます。

from polars import col as c
import polars as pl

# 複数銘柄の財務情報を取得
df = await get_statements(["7203", "9984", "8306", "6758"])

# 銘柄コードごとに集計
df.group_by(c.Code).agg(
    pl.len().alias("財務情報の数"),
    c.DisclosedDate.first().alias("初回開示日"),
    c.DisclosedDate.last().alias("最終開示日"),
)
shape: (4, 4)
Code財務情報の数初回開示日最終開示日
stru32datedate
"67580"462015-10-292025-08-07
"72030"412015-11-052025-08-07
"83060"452015-11-132025-08-07
"99840"432015-11-042025-08-07

銘柄コードを指定しない場合、全銘柄の財務情報を全期間に渡って取得します。データ量が大きくなるため、コマンドラインインターフェースの利用を推奨します。ノートブックで試す場合は、max_items で取得する銘柄数を制限できます。また、progress に marimo のプログレスバーを指定することで、進捗を可視化することができます。

import marimo as mo

# 最初の3銘柄だけ取得。その際、プログレスバーを表示
df = await get_statements(max_items=3, progress=mo.status.progress_bar)
df.group_by(c.Code).agg(pl.len())
shape: (3, 2)
Codelen
stru32
"13010"51
"130A0"9
"13320"45

株価情報 (get_prices)

kabukit.get_prices 関数は、株価情報を取得します。

株価情報は、分割・併合を考慮した調整済み株価(小数点第2位四捨五入)と調整前の株価の両方を含みます。

銘柄コードを指定すると、指定した銘柄の全期間分の株価情報を取得できます。

from kabukit import get_prices

df = await get_prices("7203")
df.select("Date", "Code", "Open", "High", "Low", "Close", "Volume")
shape: (2_444, 7)
DateCodeOpenHighLowCloseVolume
datestrf64f64f64f64f64
2015-10-20"72030"1480.01480.21460.61464.02.76615e7
2015-10-21"72030"1470.41493.61468.01493.44.2705e7
2015-10-22"72030"1481.21496.61478.81485.63.235e7
2025-10-17"72030"2920.02960.52920.02933.51.43169e7
2025-10-20"72030"2988.53003.02971.03003.02.05746e7

銘柄コードのリストを指定すると、複数銘柄の全期間分の株価情報を一度に取得できます。

df = await get_prices(["7203", "9984", "8306", "6758"])

# 銘柄コードごとに集計
df.group_by(c.Code).agg(
    pl.len().alias("日数"),
    c.Low.min().alias("最安値"),
    c.High.max().alias("最高値"),
    c.Close.last().alias("直近終値"),
    c.TurnoverValue.mean().alias("1日あたり平均取引代金"),
)
shape: (4, 6)
Code日数最安値最高値直近終値1日あたり平均取引代金
stru32f64f64f64f64
"67580"2444439.84648.04420.04.1575e10
"72030"2444983.43891.03003.05.7052e10
"83060"2444380.02405.02325.05.5405e10
"99840"24442066.524985.024985.08.3427e10

銘柄コードを指定しない場合、全銘柄の株価情報を全期間に渡って取得します。データ量が非常に大きくなるため、コマンドラインインターフェースの利用を推奨します。ノートブックで試す場合は、max_items で取得する銘柄数を制限できます。また、progress に marimo のプログレスバーを指定することで、進捗を可視化することができます。

# 最初の3銘柄だけ取得。その際、プログレスバーを表示
df = await get_prices(max_items=3, progress=mo.status.progress_bar)
df.group_by(c.Code).agg(pl.len())
shape: (3, 2)
Codelen
stru32
"13010"2444
"130A0"415
"13320"2444

JQuantsClient

JQuantsClient の各メソッドは、J-Quants APIの仕様 に対応した実装となっています。また、より詳細な制御(例: タイムアウト設定、リトライポリシーの変更など) が必要な場合に直接利用します。特に、JQuantsClient.client 属性は httpx.AsyncClient のインスタンスであるため、httpx が提供する豊富なメソッドや設定に直接アクセスすることが可能です。

ノートブックで kabukit.JQuantsClient をインポートしてインスタンスを作成します。

from kabukit import JQuantsClient

client = JQuantsClient()
# ここで API を呼び出す
await client.aclose()  # 最後に手動でセッションを閉じる

async with 構文を使うことで、セッションを安全に管理できます。

async with JQuantsClient() as client:
    # このブロック内で API を呼び出す
    pass
# 自動でセッションが閉じられる

上場銘柄一覧 (get_info)

JQuantsClient.get_info メソッドは、上場銘柄の情報を取得します。J-Quants API の上場銘柄一覧 (/listed/info) に対応します。

引数に銘柄コードを指定して、指定した銘柄の情報を取得します。実行した日付あるいは翌営業日の情報となります。

from kabukit import JQuantsClient

client = JQuantsClient()

df = await client.get_info("7203")  # トヨタ自動車
df.select("Date", "Code", "CompanyName", "Sector17CodeName")
shape: (1, 4)
DateCodeCompanyNameSector17CodeName
datestrstrcat
2025-10-20"72030""トヨタ自動車""自動車・輸送機"

date 引数に日付を指定して、指定した日付の全銘柄情報を取得します。

df = await client.get_info(date="2020-10-01")
df = df.filter(c.Sector17CodeName != "その他")  # 投資信託などを除く
df.select("Date", "Code", "CompanyName", "Sector17CodeName")
shape: (3_727, 4)
DateCodeCompanyNameSector17CodeName
datestrstrcat
2020-10-01"13010""極洋""食品"
2020-10-01"13320""日本水産""食品"
2020-10-01"13330""マルハニチロ""食品"
2020-10-01"99960""サトー商会""商社・卸売"
2020-10-01"99970""ベルーナ""小売"

引数を指定しない場合、実行した日付の全銘柄情報を取得します。

df = await client.get_info()
df = df.filter(c.Sector17CodeName != "その他")  # 投資信託などを除く
df.select("Date", "Code", "CompanyName", "Sector33CodeName")
shape: (3_946, 4)
DateCodeCompanyNameSector33CodeName
datestrstrcat
2025-10-20"13010""極洋""水産・農林業"
2025-10-20"130A0""Veritas In Silico""医薬品"
2025-10-20"131A0""CCNグループ""情報・通信業"
2025-10-20"99960""サトー商会""卸売業"
2025-10-20"99970""ベルーナ""小売業"

財務情報 (get_statements)

JQuantsClient.get_statements メソッドは、企業の四半期毎の決算短信サマリーや業績・配当情報の修正に関する開示情報(主に数値データ)を取得します。J-Quants API の財務情報 (/fins/statements) に対応します。

引数に銘柄コードを指定して、指定した銘柄の全期間分の財務情報を取得します。

df = await client.get_statements("7203") # トヨタ自動車
df.select("DisclosedDate", "Code", "TypeOfDocument", "NetSales", "Profit")
shape: (41, 5)
DisclosedDateCodeTypeOfDocumentNetSalesProfit
datestrstrf64f64
2015-11-05"72030""2QFinancialStatements_Consolid…1.4091e131.2581e12
2016-02-05"72030""3QFinancialStatements_Consolid…2.1431e131.8861e12
2016-05-11"72030""FYFinancialStatements_Consolid…2.8403e132.3127e12
2025-05-08"72030""FYFinancialStatements_Consolid…4.8037e134.7651e12
2025-08-07"72030""1QFinancialStatements_Consolid…1.2253e138.4134e11

date 引数に日付を指定して、指定した日付に開示された財務情報を取得します。

df = await client.get_statements(date="2025-10-16")
df.select("DisclosedDate", "Code", "TypeOfDocument", "Profit", "ForecastProfit")
shape: (8, 5)
DisclosedDateCodeTypeOfDocumentProfitForecastProfit
datestrstrf64f64
2025-10-16"86220""EarnForecastRevision"nullnull
2025-10-16"63250""EarnForecastRevision"nullnull
2025-10-16"79110""EarnForecastRevision"null6.5000e10
2025-10-16"34810""FYFinancialStatements_Consolid…3.8060e9null
2025-10-16"93410""EarnForecastRevision"null4.17e8

株価情報 (get_prices)

JQuantsClient.get_prices メソッドは、株価情報を取得します。J-Quants API の株価四本値 (/prices/daily_quotes) に対応します。

株価情報は、分割・併合を考慮した調整済み株価(小数点第2位四捨五入)と調整前の株価の両方を含みます。

引数に銘柄コードを指定して、指定した銘柄の全期間分の株価情報を取得します。

df = await client.get_prices("7203") # トヨタ自動車
df.select("Date", "Code", "Open", "High", "Low", "Close", "Volume")
shape: (2_444, 7)
DateCodeOpenHighLowCloseVolume
datestrf64f64f64f64f64
2015-10-20"72030"1480.01480.21460.61464.02.76615e7
2015-10-21"72030"1470.41493.61468.01493.44.2705e7
2015-10-22"72030"1481.21496.61478.81485.63.235e7
2025-10-17"72030"2920.02960.52920.02933.51.43169e7
2025-10-20"72030"2988.53003.02971.03003.02.05746e7

date 引数に日付を指定して、全上場銘柄について指定された日付の株価情報を取得します。

df = await client.get_prices(date="2025-10-17")
df.select("Date", "Code", "Open", "High", "Low", "Close", "Volume")
shape: (4_414, 7)
DateCodeOpenHighLowCloseVolume
datestrf64f64f64f64f64
2025-10-17"13010"4870.04900.04850.04880.014300.0
2025-10-17"13050"3368.03385.03355.03365.0167560.0
2025-10-17"13060"3331.03350.03319.03324.01.82882e6
2025-10-17"99960"2000.02015.02000.02015.0500.0
2025-10-17"99970"995.0999.0992.0997.0111600.0

from_, to 引数で期間を指定することもできます。このとき銘柄コードは必須です。

df = await client.get_prices("7203", from_="2025-01-01", to="2025-05-31")

# 月次の株価四本値を求める
df.group_by(c.Date.dt.truncate("1mo"), c.Code).agg(
    c.Open.first(),
    c.High.max(),
    c.Low.min(),
    c.Close.last(),
    c.Volume.sum(),
).sort(c.Code, c.Date)
shape: (5, 7)
DateCodeOpenHighLowCloseVolume
datestrf64f64f64f64f64
2025-01-01"72030"3103.03127.02786.52973.54.802512e8
2025-02-01"72030"2825.03025.02650.02689.05.56039e8
2025-03-01"72030"2744.52961.02583.52616.05.735038e8
2025-04-01"72030"2649.02841.02226.52729.08.063114e8
2025-05-01"72030"2727.02879.52598.02769.05.424135e8

DataFrameのカラム名について

J-Quants API から返される JSON 形式のデータは、JQuantsClientクラスの各メソッドで Polars DataFrame に変換されます。その際、後続の分析を行いやすくするために、一部のカラム名が変更されます。

財務情報

株式数に関するカラム名は、文字数を短縮するため、および、意味を明確にするために、以下のように変更されます。

  • 期末発行済株式数(自己株式を含む)
    • (変更前)NumberOfIssuedAndOutstandingSharesAtTheEndOfFiscalYearIncludingTreasuryStock
    • (変更後)IssuedShares
  • 期末自己株式数
    • (変更前)NumberOfTreasuryStockAtTheEndOfFiscalYear
    • (変更後)TreasuryShares
  • 期中平均株式数(自己株式を含まない)
    • (変更前)AverageNumberOfShares
    • (変更後)AverageOutstandingShares

株価情報

株価に関するカラム名が以下のように変更されます。

  • J-Quants API では、調整済みの値に Adjustment プレフィックスを付けています。kabukit ではカラム名を単純化するために、プレフィックスのない Open, Close などで、調整済みの値を表します。
  • Raw プレフィックスが付いているものが、調整前の実際に取引に使われた値です。

下に対応表を示します。

J-Quants API kabukit 説明
AdjustmentOpen Open 調整済み始値
AdjustmentHigh High 調整済み高値
AdjustmentLow Low 調整済み安値
AdjustmentClose Close 調整済み終値
AdjustmentVolume Volume 調整済み取引高
Open RawOpen 始値(調整前)
High RawHigh 高値(調整前)
Low RawLow 安値(調整前)
Close RawClose 終値(調整前)
Volume RawVolume 取引高(調整前)