Skip to content

EDINET API の使い方

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

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

認証設定

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

環境変数 EDINET_API_KEY に直接 API キーを設定することも可能です。

モジュールレベル関数

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

書類一覧 (get_entries)

kabukit.get_entries 関数は、提出書類一覧を取得します。

日付 (YYYY-MM-DD) を指定すると、指定した日付に提出された書類一覧を取得できます。

from kabukit import get_entries

df = await get_entries("2025-10-10")
df.select("Date", "Code", "docID", "filerName", "pdfFlag", "csvFlag").tail()
shape: (5, 6)
DateCodedocIDfilerNamepdfFlagcsvFlag
datestrstrstrboolbool
2025-10-10"76030""S100WUON""ジーイエット株式会社"truetrue
2025-10-10"23450""S100WULQ""株式会社クシム"truetrue
2025-10-10null"S100WUB2""リ・ジェネレーション株式会社"truetrue
2025-10-10"26870""S100WT9S""株式会社シー・ヴイ・エス・ベイエリア"truetrue
2025-10-10"26870""S100WT9U""株式会社シー・ヴイ・エス・ベイエリア"truefalse

複数の提出日の書類一覧を一度に取得することもできます。このとき、EDINET API へのリクエストは非同期で並列に行われます。

df = await get_entries(["2025-10-10", "2025-10-14", "2025-10-15"])
df.select("Date", "Code", "docID", "filerName", "pdfFlag", "csvFlag").tail()
shape: (5, 6)
DateCodedocIDfilerNamepdfFlagcsvFlag
datestrstrstrboolbool
2025-10-15"99820""S100WV4Z""タキヒヨー株式会社"truetrue
2025-10-15"99870""S100WUM2""株式会社スズケン"truetrue
2025-10-15"99870""S100WTVO""株式会社スズケン"truetrue
2025-10-14"99930""S100WUKL""株式会社ヤマザワ"truetrue
2025-10-14"99930""S100WUKN""株式会社ヤマザワ"truefalse

戻り値のデータフレームは、銘柄コード (Code)、日付 (Date) の順でソートされます。

過去のある日数あるいは年数に渡る提出日の書類一覧を取得することもできます。

df = await get_entries(days=10)
df.select("Date", "Code", "docID", "filerName", "pdfFlag", "csvFlag").head()
shape: (5, 6)
DateCodedocIDfilerNamepdfFlagcsvFlag
datestrstrstrboolbool
2025-10-14null"S100WN8K""野村アセットマネジメント株式会社"truetrue
2025-10-14null"S100WQLZ""三井住友DSアセットマネジメント株式会社"truetrue
2025-10-14null"S100WU3P""ACTWELL合同会社"truetrue
2025-10-14null"S100WV2H""株式会社友"truetrue
2025-10-14null"S100WUPC""株式会社ナルミヤ・インターナショナル"truefalse
df_years = await get_entries(years=1)
df_years.select("Date", "Code", "docID", "filerName", "pdfFlag", "csvFlag").head()
shape: (5, 6)
DateCodedocIDfilerNamepdfFlagcsvFlag
datestrstrstrboolbool
2024-10-21null"S100UJMY""三井住友トラスト・アセットマネジメント株式会社"truetrue
2024-10-21null"S100UKC0""ストーク株式会社"truetrue
2024-10-21null"S100UKB8""牧 寛之"truetrue
2024-10-21null"S100UK8Y""SBIインベストメント株式会社"truetrue
2024-10-21null"S100UKBK""Ontario合同会社"truetrue

書類本文 (get_documents)

kabukit.get_documents 関数は、書類本文を取得します。書類一覧で取得した書類 ID (docID) を引数にとります。

from kabukit import get_documents

df = await get_documents("S100WUKL")
df.select("docID", "要素ID", "項目名", "値").head()
shape: (4, 4)
docID要素ID項目名
strstrstrstr
"S100WUKL""jpcrp_cor:IndependentAuditorsR…"独立監査人の報告書、連結 [テキストブロック]""  独立監査人の中間連結財務諸表に対する期中レビュー報告書 …
"S100WUKL""jpcrp_cor:AuditFirm1Consolidat…"監査法人1、連結""EY新日本有限責任監査法人"
"S100WUKL""jpcrp_cor:CPA1AuditFirm1Consol…"公認会計士1、監査法人1、連結""佐 藤   晶"
"S100WUKL""jpcrp_cor:CPA2AuditFirm1Consol…"公認会計士2、監査法人1、連結""大 倉 克 俊"

複数の書類 ID を与えて、非同期に並列取得することもできます。

from polars import col as c

doc_ids = df_years.filter(c.csvFlag)["docID"]  # CSV形式を提供する書類を選択
df = await get_documents(doc_ids, max_items=3)
df.select("docID", "要素ID", "項目名", "値").head()
shape: (5, 4)
docID要素ID項目名
strstrstrstr
"S100UJMY""jplvh_cor:TotalNumberOfFilersA…"提出者及び共同保有者の総数(名)、表紙""2"
"S100UJMY""jpdei_cor:NumberOfSubmissionDE…"提出回数、DEI""1"
"S100UJMY""jplvh_cor:StocksOrInvestmentSe…"株券又は投資証券等、法第27条の23第3項本文""-"
"S100UJMY""jplvh_cor:StocksOrInvestmentSe…"株券又は投資証券等、法第27条の23第3項第1号""-"
"S100UJMY""jplvh_cor:StocksOrInvestmentSe…"株券又は投資証券等、法第27条の23第3項第2号""1621200"

Info

EDINETの書類は、すべてが CSV 形式 (XBRL) で提供されるわけではありません。csvFlagTrue の書類のみ、表形式の構造化データとして取得できます。

pdf キーワード引数を True に指定すると、書類本文を PDF 形式で取得できます。データフレームのカラム名は "pdf"、データ型は polars.Binary です。バイナリファイルとして保存すれば、PDF 形式の書類を閲覧することができます。

doc_ids = df_years.filter(c.pdfFlag)["docID"]  # PDF形式を提供する書類を選択
df = await get_documents(doc_ids, max_items=3, pdf=True)
df.select("docID", "pdf").tail()
shape: (3, 2)
docIDpdf
strbinary
"S100UJMY"b"%PDF-1.5\x0d\x0a%\xe2\xe3\xcf\xd3\x0d\x0a1\x200\x20obj\x0d\x0a<</C"…
"S100UKB8"b"%PDF-1.5\x0d\x0a%\xe2\xe3\xcf\xd3\x0d\x0a1\x200\x20obj\x0d\x0a<</C"…
"S100UKC0"b"%PDF-1.5\x0d\x0a%\xe2\xe3\xcf\xd3\x0d\x0a1\x200\x20obj\x0d\x0a<</C"…

Info

EDINETの書類は、すべてが PDF 形式で提供されるわけではありません。pdfFlagTrue の書類のみ、PDF の原本を取得できます。

EdinetClient

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

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

from kabukit import EdinetClient

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

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

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

書類一覧 (get_entries)

EdinetClient.get_entries メソッドは、日付を指定して、提出された書類のメタデータを取得します。

df = await client.get_entries("2025-10-10")
df.select("Date", "Code", "docID", "filerName", "pdfFlag", "csvFlag").tail()
shape: (5, 6)
DateCodedocIDfilerNamepdfFlagcsvFlag
datestrstrstrboolbool
2025-10-10"76030""S100WUON""ジーイエット株式会社"truetrue
2025-10-10"23450""S100WULQ""株式会社クシム"truetrue
2025-10-10null"S100WUB2""リ・ジェネレーション株式会社"truetrue
2025-10-10"26870""S100WT9S""株式会社シー・ヴイ・エス・ベイエリア"truetrue
2025-10-10"26870""S100WT9U""株式会社シー・ヴイ・エス・ベイエリア"truefalse

書類本文 (get_document)

EdinetClient.get_document メソッドは、文書 ID を指定して、書類本文を取得します。

df = await client.get_document("S100WUKL")
df.select("docID", "要素ID", "項目名", "値").head()
shape: (4, 4)
docID要素ID項目名
strstrstrstr
"S100WUKL""jpcrp_cor:IndependentAuditorsR…"独立監査人の報告書、連結 [テキストブロック]""  独立監査人の中間連結財務諸表に対する期中レビュー報告書 …
"S100WUKL""jpcrp_cor:AuditFirm1Consolidat…"監査法人1、連結""EY新日本有限責任監査法人"
"S100WUKL""jpcrp_cor:CPA1AuditFirm1Consol…"公認会計士1、監査法人1、連結""佐 藤   晶"
"S100WUKL""jpcrp_cor:CPA2AuditFirm1Consol…"公認会計士2、監査法人1、連結""大 倉 克 俊"

pdf キーワード引数を True に指定すると、書類本文を PDF 形式で取得できます。

df = await client.get_document("S100WUKL", pdf=True)
df.select("docID", "pdf").tail()
shape: (1, 2)
docIDpdf
strbinary
"S100WUKL"b"%PDF-1.5\x0d\x0a%\xe2\xe3\xcf\xd3\x0d\x0a1\x200\x20obj\x0d\x0a<</C"…

Note

モジュール関数は複数の書類を一度に取得できるので、get_documents(複数形)です。一方、EdinetClient のメソッドは単一の書類を取得するので、get_document(単数形)です。

データ形式について

kabukit.get_documents 関数および EdinetClient.get_document メソッドで取得される書類本文は、EDINET が提供する CSV 形式のデータ(元のデータは XBRL 形式)を Polars DataFrame に変換したものです。