EDINET

EDINETのAPIを使用してみる

Pythonで四半期報告書のpdfデータを取得するために、EDINETを使います。以下のコンテンツではEDINET閲覧サイト(url)から取得できる情報をもとにデータを加工して作成しています。本ページに記載されているコードの実行や取得したデータの利用についてはEDINETの利用規約を確認し理解した上で利用してください。また、Version2のAPIを使用する際はログイン認証+APIキーの発行が必要になります。

※注意:使用時には必ず利用規約(pdfweb)を確認した上で常識の範囲内での使用にとどめてください。

import os
import requests
import pandas as pd

API_ENDPOINT = "https://disclosure.edinet-fsa.go.jp/api/v2"  # v2を使用する

書類一覧APIのリクエストURL

11_EDINET_API仕様書に従って書類一覧を取得してみます。

request_params = {
    "date": "2024-02-09",
    "type": 2,  # 1=メタデータのみ、2=提出書類一覧及びメタデータ
    "Subscription-Key": os.environ.get(
        "EDINET_API_KEY"
    ),  # v1を使用する場合は不要, 2024年3月29日(金)まで利用可能
}

docs_submitted_json = requests.get(
    f"{API_ENDPOINT}/documents.json", request_params
).json()

取得データの確認

今は四半期報告書を取得したいので、『四半期報告書』が文書の説明(docDescription)に含まれている行のみを抽出して確認します。

sd_df = pd.DataFrame(docs_submitted_json["results"])
sd_df = sd_df[sd_df["docDescription"].str.contains("四半期報告書", na=False)]
sd_df.head()

seqNumberdocIDedinetCodesecCodeJCNfilerNamefundCodeordinanceCodeformCodedocTypeCode
12S100SSMQE04505950709470001001933四国電力株式会社None010043000140
23S100SSHRE01441597305122001016280株式会社トーアミNone010043000140
56S100SQAHE30982717509220001001223今村証券株式会社None010043000140
67S100SPH6E03562836003090001002315株式会社 山梨中央銀行None010043000140
1011S100SRF2E00783409107010701015826日本酸素ホールディングス株式会社None010043000140

5 rows × 29 columns

DocIDの確認

商船三井の四半期報告書のDocIDを確認してみます。filerNameに商船三井が含まれる行のみを抽出します。

sd_df[sd_df.filerName.str.contains("商船三井")]

seqNumberdocIDedinetCodesecCodeJCNfilerNamefundCodeordinanceCodeformCodedocTypeCode
13071308S100STH6E04236910404010401082896株式会社商船三井None010043000140

1 rows × 29 columns

四半期報告書の取得

docID をもとに四半期報告書の取得に必要なデータを取得します。pdfを取得したい場合はマニュアルに従い、type=2を指定します。

docID = "S100STH6"
pdf_response = requests.get(
    f"{API_ENDPOINT}/documents/{docID}",
    {
        "type": 2,
        "Subscription-Key": os.environ.get("EDINET_API_KEY"),
    },
)

with open("sample.pdf", "wb") as f:
    f.write(pdf_response.content)

ダウンロードしたpdfを表示する

from IPython.display import display_pdf

with open("sample.pdf", "rb") as f:
    display_pdf(f.read(), raw=True)

(pdfの表示は省略します)

コメント欄

※コメントは承認後に表示されます。個人情報は入力しないようにお願いします。