— REST API REFERENCE
YUHO DB API ガイド
EDINET 公開メタデータを企業軸で再インデックス化した非公式 API。匿名・キーレスで利用でき、
IP 単位のレート制限のみ適用されます。すべての応答は application/json
または text/csv。
概要
ベース URL:
https://yuho-db-api-7oq53ssyja-an.a.run.app
このサービスは EDINET の公式日付ベース API の非効率(特定企業の過去 N 年分の書類取得に N×365 回の API コールが必要)を補うため、 日次でメタデータを取得して企業軸で再インデックス化しています。書類本体は配信せず、 ドック ID から EDINET 公式書類ページへのリンクで提供します。
/warmup を発火しています。
プログラムから叩く場合も最初に /warmup を no-cors fetch すると速くなります。
認証 / レート制限
認証は不要。キーや Cookie も渡さないでください。代わりに IP 単位レート制限が適用されます:
| 単位 | 上限 | 残量ヘッダ |
|---|---|---|
| 1 分 | 10 req | X-RateLimit-Remaining-Minute |
| 1 時間 | 100 req | X-RateLimit-Remaining-Hour |
| 1 日 | 500 req | X-RateLimit-Remaining-Day |
制限超過時は HTTP 429 Too Many Requests + Retry-After ヘッダ。/health と /warmup は対象外。
CORS
https://*.web.app および https://*.firebaseapp.com オリジンからの GET / OPTIONS を許可しています。
ローカル開発は localhost:3000/5000/8000 を許可。それ以外のオリジンから叩く場合は
mode: 'no-cors' でレスポンスヘッダが読めない制約付きで動作します。
エンドポイント
GET /api/v1/documents
書類のメイン検索。曖昧キーワード、銘柄コード、書類種別、期間でフィルタリング、無限スクロール用カーソル対応。
| パラメータ | 型 | 説明 |
|---|---|---|
q | string | 曖昧検索 (社名・コード・業種を3軸でマッチ) |
sec_code | string | 銘柄コード完全一致 (例: 72030) |
edinet_code | string | EDINET コード完全一致 (例: E02144) |
doc_type | string | 書類種別カンマ区切り (例: 120,140) |
period | enum | 1y / 3y / 5y / 10y / all |
from / to | YYYY-MM-DD | 期間範囲 (period より優先) |
sort | enum | submit_date_desc(default) / submit_date_asc / relevance |
limit | int 1–200 | デフォルト 50 |
cursor | string | 前回応答の next_cursor をそのまま渡す |
主な書類種別コード: 120 有価証券報告書 / 140 四半期報告書 / 160 半期報告書 / 220 大量保有報告書 / 180 臨時報告書 / 030 有価証券届出書
レスポンス例:
{
"results": [
{
"doc_id": "S100ABCD",
"sec_code": "72030",
"edinet_code": "E02144",
"filer_name": "トヨタ自動車",
"doc_type": { "code": "120", "name": "有価証券報告書", "category": "annual" },
"doc_description": "第122期 有価証券報告書",
"submit_date": "2024-06-25",
"has_csv": true,
"edinet_url": "https://disclosure2.edinet-fsa.go.jp/WZEK0040.aspx?S100ABCD="
}
],
"total": 142,
"next_cursor": "eyJvZmZzZXQiOjUwfQ==",
"query_echo": { ... }
}
GET /api/v1/documents/export.csv
検索結果を CSV ファイルとしてダウンロード。/api/v1/documents と同じパラメータ。最大 10,000 件まで。UTF-8 BOM 付きなので Excel でそのまま開けます。
# トヨタの有報を全部 CSV で取得
curl "https://yuho-db-api-7oq53ssyja-an.a.run.app/api/v1/documents/export.csv?q=トヨタ&doc_type=120" \
-o toyota_yuho.csv
列: submit_date, submit_datetime, sec_code, edinet_code, filer_name, doc_type_code, doc_type_name, doc_description, doc_id, has_csv, has_xbrl, edinet_url
GET /api/v1/documents/{doc_id}
単一書類詳細。404: 不存在 OR 自然人提出 (PII フィルタ)。
GET /api/v1/companies/search?q=...
会社名・銘柄コード曖昧サジェスト。Web UI のオートコンプリートで利用。最大 8 件。
curl "https://yuho-db-api-7oq53ssyja-an.a.run.app/api/v1/companies/search?q=トヨタ"
GET /api/v1/companies/{sec_code}/documents
銘柄コード固定の書類一覧 (ショートカット)。内部的に /api/v1/documents?sec_code=... と同等。
GET /api/v1/stats
DB の統計情報 (Firebase ランディング LIVE STATS で利用)。docs_indexed, filers, last_doc_date, last_updated, period_years。
ライブで試す
下のフォームに入れてボタンを押すと、実際の API レスポンスが下に表示されます (このページから直接 API を叩きます)。
— Try /api/v1/documents
サンプルコード
Python (httpx)
import httpx
r = httpx.get(
"https://yuho-db-api-7oq53ssyja-an.a.run.app/api/v1/documents",
params={"q": "トヨタ", "period": "3y", "doc_type": "120,140"},
)
data = r.json()
print(data["total"], "results")
for d in data["results"]:
print(d["submit_date"], d["doc_id"], d["doc_description"])
JavaScript (fetch)
const r = await fetch(
'https://yuho-db-api-7oq53ssyja-an.a.run.app/api/v1/documents?q=トヨタ&period=3y'
);
const data = await r.json();
console.log(data.total);
EDINET 書類本体の取得 (自分で API キー取得が必要)
YUHO DB は本体 ZIP/CSV/XBRL を配信していません。EDINET 公式 API キーを取得して直接ダウンロードしてください:
import httpx
api_key = "..." # https://api.edinet-fsa.go.jp で取得
doc_id = "S100ABCD"
# type=5: CSV / type=2: PDF + 添付 / type=1: 書類本体
r = httpx.get(
f"https://api.edinet-fsa.go.jp/api/v2/documents/{doc_id}",
params={"type": 5, "Subscription-Key": api_key},
)
with open(f"{doc_id}.zip", "wb") as f:
f.write(r.content)
エラー
| Status | 意味 | 対応 |
|---|---|---|
200 | 成功 | — |
400 | 不正なクエリ (cursor デコード失敗等) | パラメータを確認 |
404 | 不存在 OR PII レコード | doc_id を確認 |
429 | レート制限 | Retry-After 秒待つ |
500 | サーバー内部エラー | 少し時間を置いて再試行 |
ライセンス
コード: MIT。データ: 公共データ利用規約 (PDL1.0)。 利用時は出典として「YUHO DB / 出典: EDINET」を表示してください。