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")
| Date | Code | Company | Market |
|---|---|---|---|
| date | str | str | cat |
| 2025-12-15 | "72030" | "トヨタ自動車" | "プライム" |
銘柄コードを省略すると、全上場銘柄の情報を取得できます。ただし、デフォルトでは、投資信託や優先株式を除きます。
df = await get_info() # 全銘柄情報を取得 (投資信託や優先株式を除く)
df.select("Date", "Code", "Company", "Market")
| Date | Code | Company | Market |
|---|---|---|---|
| date | str | str | cat |
| 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")
| Date | Code | Company |
|---|---|---|
| date | str | str |
| 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")
| DisclosedDate | Code | TypeOfDocument |
|---|---|---|
| date | str | str |
| 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("最終開示日"),
)
| Code | 財務情報の数 | 初回開示日 | 最終開示日 |
|---|---|---|---|
| str | u32 | date | date |
| "67580" | 46 | 2016-01-29 | 2025-11-11 |
| "72030" | 41 | 2016-02-05 | 2025-11-05 |
| "83060" | 45 | 2016-02-01 | 2025-11-14 |
| "99840" | 43 | 2016-02-10 | 2025-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())
| Code | len |
|---|---|
| str | u32 |
| "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")
| Date | Code | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|---|
| date | str | f64 | f64 | f64 | f64 | f64 |
| 2015-12-14 | "72030" | 1500.0 | 1503.4 | 1483.2 | 1492.6 | 6.2981e7 |
| 2015-12-15 | "72030" | 1491.8 | 1493.8 | 1464.8 | 1464.8 | 5.25115e7 |
| 2015-12-16 | "72030" | 1494.4 | 1527.2 | 1490.8 | 1522.4 | 5.80235e7 |
| 2015-12-17 | "72030" | 1543.6 | 1555.4 | 1536.4 | 1540.6 | 6.1149e7 |
| 2015-12-18 | "72030" | 1536.0 | 1570.0 | 1523.6 | 1531.6 | 8.55545e7 |
| … | … | … | … | … | … | … |
| 2025-12-08 | "72030" | 3050.0 | 3060.0 | 3021.0 | 3060.0 | 1.55966e7 |
| 2025-12-09 | "72030" | 3076.0 | 3083.0 | 3044.0 | 3066.0 | 1.51634e7 |
| 2025-12-10 | "72030" | 3089.0 | 3137.0 | 3076.0 | 3116.0 | 2.03277e7 |
| 2025-12-11 | "72030" | 3148.0 | 3160.0 | 3099.0 | 3110.0 | 1.42422e7 |
| 2025-12-12 | "72030" | 3191.0 | 3272.0 | 3168.0 | 3260.0 | 4.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日あたり平均取引代金"),
)
| Code | 日数 | 最安値 | 最高値 | 直近終値 | 1日あたり平均取引代金 |
|---|---|---|---|---|---|
| str | u32 | f64 | f64 | f64 | f64 |
| "67580" | 2444 | 439.8 | 4776.0 | 4181.0 | 4.2109e10 |
| "72030" | 2444 | 983.4 | 3891.0 | 3260.0 | 5.7093e10 |
| "83060" | 2444 | 380.0 | 2543.5 | 2499.0 | 5.6234e10 |
| "99840" | 2444 | 2066.5 | 27695.0 | 17895.0 | 9.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())
| Code | len |
|---|---|
| str | u32 |
| "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")
| Date | Code | Company | Sector17 |
|---|---|---|---|
| date | str | str | cat |
| 2025-12-15 | "72030" | "トヨタ自動車" | "自動車・輸送機" |
date 引数に日付を指定して、指定した日付の全銘柄情報を取得します。
df = await client.get_info(date="20201001")
df.select("Date", "Code", "Company", "Sector17")
| Date | Code | Company | Sector17 |
|---|---|---|---|
| date | str | str | cat |
| 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")
| Date | Code | Company | Sector33 |
|---|---|---|---|
| date | str | str | cat |
| 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")
| Date | Code | Company |
|---|---|---|
| date | str | str |
| 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")
| DisclosedDate | Code | TypeOfDocument | NetSales | Profit |
|---|---|---|---|---|
| date | str | str | f64 | f64 |
| 2016-02-05 | "72030" | "3QFinancialStatements_Consolid… | 2.1431e13 | 1.8861e12 |
| 2016-05-11 | "72030" | "FYFinancialStatements_Consolid… | 2.8403e13 | 2.3127e12 |
| 2016-08-04 | "72030" | "1QFinancialStatements_Consolid… | 6.5891e12 | 5.5246e11 |
| 2016-11-08 | "72030" | "2QFinancialStatements_Consolid… | 1.3071e13 | 9.4617e11 |
| 2017-02-06 | "72030" | "3QFinancialStatements_Consolid… | 2.0155e13 | 1.4327e12 |
| … | … | … | … | … |
| 2024-11-06 | "72030" | "2QFinancialStatements_Consolid… | 2.3282e13 | 1.9071e12 |
| 2025-02-05 | "72030" | "3QFinancialStatements_Consolid… | 3.5674e13 | 4.1004e12 |
| 2025-05-08 | "72030" | "FYFinancialStatements_Consolid… | 4.8037e13 | 4.7651e12 |
| 2025-08-07 | "72030" | "1QFinancialStatements_Consolid… | 1.2253e13 | 8.4134e11 |
| 2025-11-05 | "72030" | "2QFinancialStatements_Consolid… | 2.4631e13 | 1.7734e12 |
date 引数に日付を指定して、指定した日付に開示された財務情報を取得します。
df = await client.get_statements(date="2025-10-16")
df.select("DisclosedDate", "Code", "TypeOfDocument", "Profit", "ForecastProfit")
| DisclosedDate | Code | TypeOfDocument | Profit | ForecastProfit |
|---|---|---|---|---|
| date | str | str | f64 | f64 |
| 2025-10-16 | "86220" | "EarnForecastRevision" | null | null |
| 2025-10-16 | "63250" | "EarnForecastRevision" | null | null |
| 2025-10-16 | "79110" | "EarnForecastRevision" | null | 6.5000e10 |
| 2025-10-16 | "34620" | "FYFinancialStatements_Consolid… | 1.6103e10 | null |
| 2025-10-16 | "29720" | "FYFinancialStatements_Consolid… | 1.1020e9 | null |
| 2025-10-16 | "86130" | "EarnForecastRevision" | null | null |
| 2025-10-16 | "34810" | "FYFinancialStatements_Consolid… | 3.8060e9 | null |
| 2025-10-16 | "93410" | "EarnForecastRevision" | null | 4.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")
| Date | Code | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|---|
| date | str | f64 | f64 | f64 | f64 | f64 |
| 2015-12-14 | "72030" | 1500.0 | 1503.4 | 1483.2 | 1492.6 | 6.2981e7 |
| 2015-12-15 | "72030" | 1491.8 | 1493.8 | 1464.8 | 1464.8 | 5.25115e7 |
| 2015-12-16 | "72030" | 1494.4 | 1527.2 | 1490.8 | 1522.4 | 5.80235e7 |
| 2015-12-17 | "72030" | 1543.6 | 1555.4 | 1536.4 | 1540.6 | 6.1149e7 |
| 2015-12-18 | "72030" | 1536.0 | 1570.0 | 1523.6 | 1531.6 | 8.55545e7 |
| … | … | … | … | … | … | … |
| 2025-12-08 | "72030" | 3050.0 | 3060.0 | 3021.0 | 3060.0 | 1.55966e7 |
| 2025-12-09 | "72030" | 3076.0 | 3083.0 | 3044.0 | 3066.0 | 1.51634e7 |
| 2025-12-10 | "72030" | 3089.0 | 3137.0 | 3076.0 | 3116.0 | 2.03277e7 |
| 2025-12-11 | "72030" | 3148.0 | 3160.0 | 3099.0 | 3110.0 | 1.42422e7 |
| 2025-12-12 | "72030" | 3191.0 | 3272.0 | 3168.0 | 3260.0 | 4.26642e7 |
date 引数に日付を指定して、全上場銘柄について指定された日付の株価情報を取得します。
df = await client.get_prices(date="2025-10-17")
df.select("Date", "Code", "Open", "High", "Low", "Close", "Volume")
| Date | Code | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|---|
| date | str | f64 | f64 | f64 | f64 | f64 |
| 2025-10-17 | "13010" | 4870.0 | 4900.0 | 4850.0 | 4880.0 | 14300.0 |
| 2025-10-17 | "13050" | 3368.0 | 3385.0 | 3355.0 | 3365.0 | 167560.0 |
| 2025-10-17 | "13060" | 3331.0 | 3350.0 | 3319.0 | 3324.0 | 1.82882e6 |
| 2025-10-17 | "13080" | 3292.0 | 3310.0 | 3279.0 | 3290.0 | 106544.0 |
| 2025-10-17 | "13090" | 51110.0 | 51110.0 | 50310.0 | 50310.0 | 84.0 |
| … | … | … | … | … | … | … |
| 2025-10-17 | "99910" | 1386.0 | 1386.0 | 1368.0 | 1369.0 | 16700.0 |
| 2025-10-17 | "99930" | 1165.0 | 1176.0 | 1162.0 | 1176.0 | 7600.0 |
| 2025-10-17 | "99940" | 2308.0 | 2312.0 | 2287.0 | 2292.0 | 22200.0 |
| 2025-10-17 | "99960" | 2000.0 | 2015.0 | 2000.0 | 2015.0 | 500.0 |
| 2025-10-17 | "99970" | 995.0 | 999.0 | 992.0 | 997.0 | 111600.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)
| Date | Code | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|---|
| date | str | f64 | f64 | f64 | f64 | f64 |
| 2025-01-01 | "72030" | 3103.0 | 3127.0 | 2786.5 | 2973.5 | 4.802512e8 |
| 2025-02-01 | "72030" | 2825.0 | 3025.0 | 2650.0 | 2689.0 | 5.56039e8 |
| 2025-03-01 | "72030" | 2744.5 | 2961.0 | 2583.5 | 2616.0 | 5.735038e8 |
| 2025-04-01 | "72030" | 2649.0 | 2841.0 | 2226.5 | 2729.0 | 8.063114e8 |
| 2025-05-01 | "72030" | 2727.0 | 2879.5 | 2598.0 | 2769.0 | 5.424135e8 |