金融庁は電子開示システム「EDINET」のWeb APIを公開しています。この記事は、PythonからEDINET APIを使って有価証券報告書を検索したり、有価証券報告書を取得する方法を紹介しています。
PythonからWeb APIを呼び出すには、requestsモジュールをインポートする。そのため、初めに一度だけrequestsモジュールをインストールする必要がある。
Pythonのrequestsモジュールをインストールするには、次のコマンドを実行する。
pip install requests
または、次のコマンドを実行する。
python -m pip install requests
メタデータとは、日付ごとの提出書類一覧に関する基礎情報のことである。メタデータには、件数や更新日時などが含まれる。
EDINETからメタデータを取得するには、書類一覧APIを使う。
エンドポイント | https://disclosure.edinet-fsa.go.jp/api/バージョン/documents.json |
HTTPメソッド | GET |
応答形式 | JSON |
暗号化 | TLS (Transport Layer Security) |
クロスドメイン通信 | 許可しない |
EDINET書類一覧APIのリクエストパラメータは、次のとおり。
パラメータ名 | 項目名 | 必須 | 設定値 | 説明 |
---|---|---|---|---|
date | ファイル日付 | Yes | 日付(YYYY-MM-DD形式) | 出力対象とする提出書類一覧のファイル日付を指定します。 |
type | 取得情報 | No | 1 | メタデータのみを取得します。指定が無い場合のデフォルト値です。 |
2 | 提出書類一覧及びメタデータを取得します。 |
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のレスポンス(応答)データは、次のとおり。
項目名 | 項目ID | 型 | 説明 |
---|---|---|---|
連番 | seqNumber | number | ファイル日付ごとの連番です。 |
書類管理番号 | docID | string | 書類管理番号が出力されます。 |
提出者EDINETコード | edinetCode | string | 提出者のEDINETコードが出力されます。 |
提出者証券コード | secCode | string | 提出者の証券コードが出力されます。 |
EDINET APIで書類を取得するには、書類取得APIを使う。
エンドポイント | https://disclosure.edinet-fsa.go.jp/api/バージョン/documents/書類管理番号 |
HTTPメソッド | GET |
応答形式 | ZIP、PDF、JSON |
暗号化 | TLS (Transport Layer Security) |
クロスドメイン通信 | 許可しない |
書類取得APIのリクエストパラメータは、次のとおり。
パラメータ名 | 項目名 | 必須 | 設定値 | 説明 |
---|---|---|---|---|
type | 必要書類 | Yes | 1 | 提出本文書及び監査報告書を取得します。 |
2 | PDFを取得します。 | |||
3 | 代替書面・添付文書を取得します。 | |||
4 | 英文ファイルを取得します。 |
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ファイルが作成される。
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ファイルが作成される。
金融庁(2021)EDINET