🦁

Python+EDINET APIをやってみる#3 - 書類取得API

2022/03/24に公開

はじめ

  • 前回(メタデータ及び提出書類一覧の取得)のつづき。

https://zenn.dev/indonegiyan/articles/69449013aff663

  • 今回:提出書類の取得。

EDINET APIの仕様

参考:
EDINET API関連資料 - EDINET API仕様書

■2つのAPI

  1. 提出された書類の一覧を取得するAPI
  2. 提出された書類を取得するAPI

■書類取得API

リクエスト

  • エンドポイント

    • https://disclosure.edinet-fsa.go.jp/api/バージョン/documents/書類管理番号
    • バージョンを指定する。
    • 書類管理番号を指定する。
  • HTTP通信方式:TLS

  • HTTPメソッド:GET

  • リクエストパラメータ

    パラメータ名 項目名 必須 設定値 説明
    type 必要書類 1 提出本文書及び監査報告書を取得する。
    2 PDFを取得する。
    3 代替書面・添付文書を取得する。
    4 英文ファイルを取得する。
  • パラメータの指定方法

    1. 「パラメータ名」と「設定値」を=で結合する。
    2. 複数のパラメータを指定する場合は、1.で作成したパラメータ同士を&で結合する。
    3. 「エンドポイント」と2.で作成したパラメータ文字列を?で結合する。

Python編

参考記事:
Pythonから金融庁のEDINET APIを使って有価証券報告書を取得する

■書類取得APIソースコード

edinet_doc.py
import requests #HTTPリクエスト

#エンドポイント(基本)
endpoint_base = "https://disclosure.edinet-fsa.go.jp/api/v1/"

#パラメータ
param = {
    "type" : 1
    }

#書類管理番号
doc_id = "S100NCIA"

#URL
url = endpoint_base + "documents/" + doc_id

#出力ファイル名
filename = doc_id + ".zip"

# 書類一覧の取得
response = requests.get(url, params=param, verify=False)

# ファイルへ出力
if response.status_code == 200:
  with open(filename, 'wb') as f:
    for chunk in response.iter_content(chunk_size=1024):
      f.write(chunk)

#zip解凍
with zipfile.ZipFile(filename) as existing_zip:
    existing_zip.extractall(doc_id)

■実行結果

※ZIPファイルと、解凍ファイルができる。
※保存及び解凍先は上記のソースコードのファイルと同じ階層。

実行結果
S100NCIA.zip
S100NCIA
  └ BRL
    ├ AuditDoc
    │    ├ jpaud-qrr-cc-001_E02213-000_2021-12-31_01_2022-02-04.xbrl
    │    ├ jpaud-qrr-cc-001_E02213-000_2021-12-31_01_2022-02-04.xsd
    │    ├ jpaud-qrr-cc-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
    │    ├ jpaud-qrr-cc-001_E02213-000_2021-12-31_01_2022-02-04_pre.xml
    │    └ manifest_AuditDoc.xml
    │
    └ PublicDoc
         ├ 0000000_header_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ 0101010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ 0102010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ 0103010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ 0104010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ 0200010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htm
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04.xbrl
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04.xsd
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_cal.xml
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_def.xml
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_lab-en.xml
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_lab.xml
         ├ jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_pre.xml
         └ manifest_PublicDoc.xml

■説明

  • 文書管理番号:S100NCIAは、三菱自動車工業株式会社 R4.02.04 15:01 四半期報告書。
  • この例では財務諸表は0104010_honbun_jpcrp040300-q3r-001_E02213-000_2021-12-31_01_2022-02-04_ixbrl.htmに記載されている。

おわり

  • ここまでで思ったんですが、EDINET APIは究極最小限の機能しか提供していないのでは?と。
  • たぶんこのAPIを使おうと思う人って、企業名と期間で検索・取得したいはずですよね。。。
  • となると、予め日々の文書一覧情報を取得して、管理するDBとか構築して、そこから企業名とか日付で検索できるシステムを作って、やっとこさ知り得た文書管理番号で財務諸表等の文書データを取得する…っていう超めんどくさいことしないといけないのかなあ...と思いました。
  • とりあえず、python勉強の題材ついでに挑戦してみようとは思います。

Discussion