金融庁は電子開示システム「EDINET」のAPIを公開しています。この記事では、PythonにおけるWeb APIの使い方と、EDINETを使って有価証券報告書の検索や閲覧を行うサンプルプログラムを紹介しています。

目次

requestsモジュールのインストール

PythonからWeb APIを呼び出すには、requestsモジュールをインポートする。そのため、初めに一度だけrequestsモジュールをインストールする必要がある。

Pythonのrequestsモジュールをインストールするには、次のコマンドを実行する。

pip install requests

または、次のコマンドを実行する。

python -m pip install requests

メタデータの取得

メタデータとは、日付ごとの提出書類一覧に関する基礎情報のことである。メタデータには、件数や更新日時などが含まれる。

EDINETからメタデータを取得するには、書類一覧APIを使う。

EDINET書類一覧API
エンドポイント https://disclosure.edinet-fsa.go.jp/api/バージョン/documents.json
HTTPメソッド GET
応答形式 JSON
暗号化 TLS (Transport Layer Security)
クロスドメイン通信 許可しない

EDINET書類一覧APIのリクエストパラメータは、次のとおり。

EDINET書類一覧APIのリクエストパラメータ
パラメータ名 項目名 必須 設定値 説明
date ファイル日付 Yes 日付(YYYY-MM-DD形式) 出力対象とする提出書類一覧のファイル日付を指定します。
type 取得情報 No 1 メタデータのみを取得します。指定が無い場合のデフォルト値です。
2 提出書類一覧及びメタデータを取得します。

出典:金融庁企画市場局企業開示課(2019)「EDINET API仕様書 (Version 1)』

PythonからEDINET書類一覧APIを使ってメタデータを取得するサンプルは、次のとおり。

import requests

# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"

# 書類一覧APIのリクエストパラメータ
params = {
  "date" : "2019-04-25"
}

# 書類一覧APIの呼び出し
res = requests.get(url, params=params, verify=False)

# レスポンス(JSON)の表示
print(res.text)

上記のサンプルプログラムを実行すると、次のように表示される。

{
  "metadata":
    {
      "title": "提出された書類を把握するためのAPI",
      "parameter":
        {
          "date": "2019-04-25",
          "type": "1"
        },
      "resultset":
        {
          "count": 370
        },
      "processDateTime": "2019-04-29 00:02",
      "status": "200",
      "message": "OK"
    }
}

提出書類一覧及びメタデータの取得

提出書類一覧及びメタデータを取得するには、書類一覧APIのリクエストパラメータtypeに2(提出書類一覧及びメタデータを取得)を指定する。

PythonからEDINET書類一覧APIを使って提出書類一覧及びメタデータを取得するサンプルは、次のとおり。

import requests

# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"

# 書類一覧APIのリクエストパラメータ
params = {
  "date" : "2019-04-25",
  "type" : 2
}

# 書類一覧APIの呼び出し
res = requests.get(url, params=params, verify=False)

# レスポンス(JSON)の表示
print(res.text)

上記のサンプルプログラムを実行すると、次のように表示される。

{
  "metadata":
    {
      "title": "提出された書類を把握するためのAPI",
      "parameter":
        {
          "date": "2019-04-25",
          "type": "1"
        },
      "resultset":
        {
          "count": 370
        },
      "processDateTime": "2019-04-29 00:02",
      "status": "200",
      "message": "OK"
    }
  "results": [
    {
      "seqNumber": 1,
      "docID": "S100FIZV",
      "edinetCode": "E11764",
      "secCode": null,
      "JCN": "1010401064261",
      "filerName": "T&Dアセットマネジメント株式会社",
      "fundCode": "G08875",
      "ordinanceCode": "030",
      "formCode": "07A000",
      "docTypeCode": "120",
      "periodStart": "2018-07-26",
      "periodEnd": "2019-01-25",
      "submitDateTime": "2019-04-25 09:00",
      "docDescription": "有価証券報告書(内国投資信託受益証券)−第13期(平成30年7月26日−平成31年1月25日)",
      "issuerEdinetCode": null,
      "subjectEdinetCode": null,
      "subsidiaryEdinetCode": null,
      "currentReportReason": null,
      "parentDocID": null,
      "opeDateTime": null,
      "withdrawalStatus": "0",
      "docInfoEditStatus": "0",
      "disclosureStatus": "0",
      "xbrlFlag": "1",
      "pdfFlag": "1",
      "attachDocFlag": "1",
      "englishDocFlag": "0"
    },
    {
      "seqNumber": 2,
      "docID": "S100FNKK",
      "edinetCode": "E12448",
      "secCode": null,
      "JCN": "8010401040306",
      "filerName": "明治安田アセットマネジメント株式会社",
      "fundCode": "G08415",
      "ordinanceCode": "030",
      "formCode": "995000",
      "docTypeCode": "180",
      "periodStart": null,
      "periodEnd": null,
      "submitDateTime": "2019-04-25 09:00",
      "docDescription": "臨時報告書(内国特定有価証券)",
      "issuerEdinetCode": null,
      "subjectEdinetCode": null,
      "subsidiaryEdinetCode": null,
      "currentReportReason": "第29条第2項第4号",
      "parentDocID": null,
      "opeDateTime": null,
      "withdrawalStatus": "0",
      "docInfoEditStatus": "0",
      "disclosureStatus": "0",
      "xbrlFlag": "1",
      "pdfFlag": "1",
      "attachDocFlag": "0",
      "englishDocFlag": "0"
    },
(中略)
  ]
}

EDINET書類一覧APIのレスポンス(応答)データは、次のとおり。

EDINET書類一覧APIの出力データ内容
項目名 項目ID 説明
連番 seqNumber number ファイル日付ごとの連番です。
書類管理番号 docID string 書類管理番号が出力されます。
提出者EDINETコード edinetCode string 提出者のEDINETコードが出力されます。
提出者証券コード secCode string 提出者の証券コードが出力されます。

書類の取得

EDINET APIで書類を取得するには、書類取得APIを使う。

EDINET書類取得API
エンドポイント https://disclosure.edinet-fsa.go.jp/api/バージョン/documents/書類管理番号
HTTPメソッド GET
応答形式 ZIP、PDF、JSON
暗号化 TLS (Transport Layer Security)
クロスドメイン通信 許可しない

書類取得APIのリクエストパラメータは、次のとおり。

EDINET書類一覧APIのリクエストパラメータ
パラメータ名 項目名 必須 設定値 説明
type 必要書類 Yes 1 提出本文書及び監査報告書を取得します。
2 PDFを取得します。
3 代替書面・添付文書を取得します。
4 英文ファイルを取得します。

ZIPファイルの取得

PythonからEDINET書類取得APIを使ってZIPファイルを取得するサンプルは、次のとおり。

import requests

# 書類管理番号
docid = "S100FIZV"

# 書類取得APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/" + docid

# 書類取得APIのリクエストパラメータ
params = {
  "type" : 1
}

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

# 書類取得APIの呼び出し
res = requests.get(url, params=params, verify=False)

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

上記サンプルプログラムを実行すると、ZIPファイルが作成される。

PDFファイルの取得

PythonからEDINET書類取得APIを使ってPDFファイルを取得するサンプルは、次のとおり。

import requests

# 書類管理番号
docid = "S100FIZV"

# 書類取得APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/" + docid

# 書類取得APIのリクエストパラメータ
params = {
  "type" : 2
}

# 出力ファイル名
filename = docid + ".pdf"

# 書類取得APIの呼び出し
res = requests.get(url, params=params, verify=False)

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

上記サンプルプログラムを実行すると、PDFファイルが作成される。

関連記事

SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送