Skip to content

J-Quants API

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

認証設定

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

モジュールレベル関数

銘柄情報 (get_info)

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

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

from kabukit import get_info

df = await get_info("7203")  # または "72030"
df.select("Date", "Code", "Company", "Market")
shape: (1, 4)
DateCodeCompanyMarket
datestrstrcat
2025-12-15"72030""トヨタ自動車""プライム"

銘柄コードを省略すると、全上場銘柄の情報を取得できます。ただし、デフォルトでは、投資信託や優先株式を除きます。

df = await get_info()  # 全銘柄情報を取得 (投資信託や優先株式を除く)
df.select("Date", "Code", "Company", "Market")
shape: (3_780, 4)
DateCodeCompanyMarket
datestrstrcat
2025-12-15"13010""極洋""プライム"
2025-12-15"130A0""Veritas In Silico""グロース"
2025-12-15"13320""ニッスイ""プライム"
2025-12-15"13330""マルハニチロ""プライム"
2025-12-15"135A0""VRAIN Solution""グロース"
2025-12-15"99910""ジェコス""プライム"
2025-12-15"99930""ヤマザワ""スタンダード"
2025-12-15"99940""やまや""スタンダード"
2025-12-15"99960""サトー商会""スタンダード"
2025-12-15"99970""ベルーナ""プライム"

only_common_stocks キーワード引数を False に設定すると、J-Quants API から取得できる全銘柄が含まれます。

from polars import col as c

df = await get_info(only_common_stocks=False)  # 全銘柄情報を取得
df = df.filter(c.Sector17 == "その他")  # 業種区分が「その他」の銘柄を選択
df.select("Date", "Code", "Company")
shape: (481, 3)
DateCodeCompany
datestrstr
2025-12-15"13050""大和アセットマネジメント株式会社 iFreeETF TOPI…
2025-12-15"13060""野村アセットマネジメント株式会社 NEXT FUNDS TO…
2025-12-15"13080""アモーヴァ・アセットマネジメント株式会社 上場インデックスフ…
2025-12-15"13090""野村アセットマネジメント株式会社 NEXT FUNDS Ch…
2025-12-15"13110""野村アセットマネジメント株式会社 NEXT FUNDS TO…
2025-12-15"92820""いちごグリーンインフラ投資法人"
2025-12-15"92840""カナディアン・ソーラー・インフラ投資法人"
2025-12-15"92850""東京インフラ・エネルギー投資法人"
2025-12-15"92860""エネクス・インフラ投資法人"
2025-12-15"92870""ジャパン・インフラファンド投資法人"

財務情報 (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
2016-02-05"72030""3QFinancialStatements_Consolid…
2016-05-11"72030""FYFinancialStatements_Consolid…
2016-08-04"72030""1QFinancialStatements_Consolid…
2016-11-08"72030""2QFinancialStatements_Consolid…
2017-02-06"72030""3QFinancialStatements_Consolid…
2024-11-06"72030""2QFinancialStatements_Consolid…
2025-02-05"72030""3QFinancialStatements_Consolid…
2025-05-08"72030""FYFinancialStatements_Consolid…
2025-08-07"72030""1QFinancialStatements_Consolid…
2025-11-05"72030""2QFinancialStatements_Consolid…

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

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"462016-01-292025-11-11
"72030"412016-02-052025-11-05
"83060"452016-02-012025-11-14
"99840"432016-02-102025-11-11

銘柄コードを指定しない場合、全銘柄の財務情報を全期間に渡って取得します。データ量が大きくなるため、コマンドラインインターフェースの利用を推奨します。ノートブックで試す場合は、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"50
"130A0"10
"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-12-14"72030"1500.01503.41483.21492.66.2981e7
2015-12-15"72030"1491.81493.81464.81464.85.25115e7
2015-12-16"72030"1494.41527.21490.81522.45.80235e7
2015-12-17"72030"1543.61555.41536.41540.66.1149e7
2015-12-18"72030"1536.01570.01523.61531.68.55545e7
2025-12-08"72030"3050.03060.03021.03060.01.55966e7
2025-12-09"72030"3076.03083.03044.03066.01.51634e7
2025-12-10"72030"3089.03137.03076.03116.02.03277e7
2025-12-11"72030"3148.03160.03099.03110.01.42422e7
2025-12-12"72030"3191.03272.03168.03260.04.26642e7

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

# 複数銘柄の株価情報を取得
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.84776.04181.04.2109e10
"72030"2444983.43891.03260.05.7093e10
"83060"2444380.02543.52499.05.6234e10
"99840"24442066.527695.017895.09.0608e10

銘柄コードを指定しない場合、全銘柄の株価情報を全期間に渡って取得します。データ量が非常に大きくなるため、コマンドラインインターフェースの利用を推奨します。ノートブックで試す場合は、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"452
"13320"2444

JQuantsClient

JQuantsClient の各メソッドは、J-Quants APIの仕様 に対応した実装となっています。

kabukit.JQuantsClient をインポートしてインスタンスを作成します。

from kabukit import JQuantsClient

client = JQuantsClient()

銘柄情報 (get_info)

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

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

df = await client.get_info("7203")  # トヨタ自動車
df.select("Date", "Code", "Company", "Sector17")
shape: (1, 4)
DateCodeCompanySector17
datestrstrcat
2025-12-15"72030""トヨタ自動車""自動車・輸送機"

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

df = await client.get_info(date="20201001")
df.select("Date", "Code", "Company", "Sector17")
shape: (3_690, 4)
DateCodeCompanySector17
datestrstrcat
2020-10-01"13010""極洋""食品"
2020-10-01"13320""日本水産""食品"
2020-10-01"13330""マルハニチロ""食品"
2020-10-01"13520""ホウスイ""商社・卸売"
2020-10-01"13750""雪国まいたけ""食品"
2020-10-01"99930""ヤマザワ""小売"
2020-10-01"99940""やまや""小売"
2020-10-01"99950""グローセル""商社・卸売"
2020-10-01"99960""サトー商会""商社・卸売"
2020-10-01"99970""ベルーナ""小売"

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

df = await client.get_info()
df.select("Date", "Code", "Company", "Sector33")
shape: (3_780, 4)
DateCodeCompanySector33
datestrstrcat
2025-12-15"13010""極洋""水産・農林業"
2025-12-15"130A0""Veritas In Silico""医薬品"
2025-12-15"13320""ニッスイ""水産・農林業"
2025-12-15"13330""マルハニチロ""水産・農林業"
2025-12-15"135A0""VRAIN Solution""情報・通信業"
2025-12-15"99910""ジェコス""卸売業"
2025-12-15"99930""ヤマザワ""小売業"
2025-12-15"99940""やまや""小売業"
2025-12-15"99960""サトー商会""卸売業"
2025-12-15"99970""ベルーナ""小売業"

全銘柄情報の取得では、デフォルトでは、投資信託や優先株式は除外されます。J-Quants API から取得できる全銘柄を取得するには、only_common_stocks キーワード引数を False に設定します。

df = await client.get_info(only_common_stocks=False)
df = df.filter(c.Sector17 == "その他")  # 業種区分が「その他」の銘柄を選択
df.select("Date", "Code", "Company")
shape: (481, 3)
DateCodeCompany
datestrstr
2025-12-15"13050""大和アセットマネジメント株式会社 iFreeETF TOPI…
2025-12-15"13060""野村アセットマネジメント株式会社 NEXT FUNDS TO…
2025-12-15"13080""アモーヴァ・アセットマネジメント株式会社 上場インデックスフ…
2025-12-15"13090""野村アセットマネジメント株式会社 NEXT FUNDS Ch…
2025-12-15"13110""野村アセットマネジメント株式会社 NEXT FUNDS TO…
2025-12-15"92820""いちごグリーンインフラ投資法人"
2025-12-15"92840""カナディアン・ソーラー・インフラ投資法人"
2025-12-15"92850""東京インフラ・エネルギー投資法人"
2025-12-15"92860""エネクス・インフラ投資法人"
2025-12-15"92870""ジャパン・インフラファンド投資法人"

財務情報 (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
2016-02-05"72030""3QFinancialStatements_Consolid…2.1431e131.8861e12
2016-05-11"72030""FYFinancialStatements_Consolid…2.8403e132.3127e12
2016-08-04"72030""1QFinancialStatements_Consolid…6.5891e125.5246e11
2016-11-08"72030""2QFinancialStatements_Consolid…1.3071e139.4617e11
2017-02-06"72030""3QFinancialStatements_Consolid…2.0155e131.4327e12
2024-11-06"72030""2QFinancialStatements_Consolid…2.3282e131.9071e12
2025-02-05"72030""3QFinancialStatements_Consolid…3.5674e134.1004e12
2025-05-08"72030""FYFinancialStatements_Consolid…4.8037e134.7651e12
2025-08-07"72030""1QFinancialStatements_Consolid…1.2253e138.4134e11
2025-11-05"72030""2QFinancialStatements_Consolid…2.4631e131.7734e12

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"34620""FYFinancialStatements_Consolid…1.6103e10null
2025-10-16"29720""FYFinancialStatements_Consolid…1.1020e9null
2025-10-16"86130""EarnForecastRevision"nullnull
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-12-14"72030"1500.01503.41483.21492.66.2981e7
2015-12-15"72030"1491.81493.81464.81464.85.25115e7
2015-12-16"72030"1494.41527.21490.81522.45.80235e7
2015-12-17"72030"1543.61555.41536.41540.66.1149e7
2015-12-18"72030"1536.01570.01523.61531.68.55545e7
2025-12-08"72030"3050.03060.03021.03060.01.55966e7
2025-12-09"72030"3076.03083.03044.03066.01.51634e7
2025-12-10"72030"3089.03137.03076.03116.02.03277e7
2025-12-11"72030"3148.03160.03099.03110.01.42422e7
2025-12-12"72030"3191.03272.03168.03260.04.26642e7

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"13080"3292.03310.03279.03290.0106544.0
2025-10-17"13090"51110.051110.050310.050310.084.0
2025-10-17"99910"1386.01386.01368.01369.016700.0
2025-10-17"99930"1165.01176.01162.01176.07600.0
2025-10-17"99940"2308.02312.02287.02292.022200.0
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