無料でAPIキー取得

学ぶ

財務データAPIの選び方:主要項目・財務諸表の階層・XBRLファクトを使い分ける

ZENITH Codeで財務データを取得するときは、まず作りたい画面を決めます。売上高の推移グラフ、科目の内訳表、XBRL要素の調査では、必要なデータの形が違います。

このページで分かること

  • check_circle推移グラフ・内訳表・要素の調査では、必要なデータの形が違います。
  • check_circle引数、対象期、欠損、取得上限を確認します。
  • check_circle値と一緒に、条件と出典を説明できる形を残します。

目的を決めると、取得するデータを絞れる

このページでは、三つの入口の違いと、一つの取得例で確認する項目を説明します。構造化されたデータを使う場合にも、対象期間・範囲・欠損の確認は必要です。

「取れるデータを全部取ってから考える」よりも、表示したい一行を先に書くと、必要なAPIを選びやすくなります。

作りたいもの最初に選ぶ入口得たい形
年ごとの売上高・利益のグラフincome-statement標準化された主要項目
見出しと内訳を持つ財務諸表financial-statement-full科目の親子関係と順序
報告書の特定タグ・コンテキストを調べるfinancial-facts要素とコンテキストごとの値

作りたい画面から、APIの入口を選ぶ

  • 推移グラフ

    標準化された主要項目

    income-statement

  • 見出し・内訳のある表

    科目の階層と順序

    financial-statement-full

  • 報告書の要素を調べる

    タグと条件ごとの値

    financial-facts

三つは用途別の選択肢です。どの入口でも、期間・範囲・単位・欠損を確認します。

図:機能の優劣を表す段階図ではありません。必要な結果に合わせて選ぶための案内です。

1. 主要項目の推移には、損益計算書API

売上高や営業利益などを年度ごとに比較したい場合は、損益計算書APIが入口です。revenue、operatingIncome などの主要項目を使います。

最初は年次のデータを取得し、応答の fiscalPeriod、period、accountingStandard を確認します。配列の先頭が自分の意図する年度だと決めず、画面に出す順番を明示的に揃えます。

確認理由
period=annual などの指定年次と四半期を混ぜないため
fiscalPeriod と period実際に返った決算期・区分を確かめるため
accountingStandard会計基準が違う数値の解釈を確認するため
値が null かどうか欠損をゼロとして描かないため
表示単位円の値を億円・兆円へ換算する箇所を明確にするため

同じ項目名で並べられても、会社や年度の条件が同じとは限りません。標準化された項目を使うことと、比較の妥当性を判断することは別です。

2. 内訳と順番が必要なら、財務諸表の階層

表の見出しや科目の内訳を表示したい場合は、財務諸表の全科目APIを確認します。depth、parent_key、sort などが、階層や順序を扱う手がかりです。

例えば「資産」の下に「流動資産」、その下に個々の科目を表示したい場面では、金額だけの配列では親子関係が分かりません。親と順序を保持してから、表示の字下げなどを決めます。

情報表での使い方
深さ見出しと内訳の字下げを決める
親どの項目の下に属するかを追う
順序同じ親の下の並びを揃える
元のタグ・ラベルどの科目かを確認する
コンテキストなどどの条件の値かを確認する

表示の階層は、そのまま足し算の式を表すとは限りません。親の数値と子の合計を比較するなら、符号や集計範囲、見出し行なども確認します。

通期を指定する引数は、このAPIでは quarter=FY です。損益計算書の period=annual をそのままコピーしないようにします。似た用途でも引数名や形式はエンドポイントごとに確認してください。

3. タグやコンテキストを調べるなら、XBRLファクト

有価証券報告書のXBRL数値データAPIは、要素とコンテキストごとの値を調べる入口です。分類を指定する category や、要素名の部分一致で絞る tag を使えます。

ファクトは、ここでは報告された一つの値などを指します。同じ要素でも、期間や範囲が違えば別の候補になります。取得した行を、会社全体の現在の値として無条件に採用しないようにします。

最初の問い合わせを小さくする

次の例は、トヨタ自動車(7203)の2026年3月期について、貸借対照表の分類から最大20件を取得するリクエストです。20件で全ての項目を取得できる、という指定ではありません。

引数値意味
symbol7203対象会社の証券コード
fiscalPeriod2026-03対象の決算期を固定
categoryBalance_Sheet貸借対照表の分類
limit20返す件数の上限

実際に利用する際は登録・APIキーが必要です。下の YOUR_API_KEY は自分のキーに置き換えます。キーを記事や公開リポジトリへ貼り付けないでください。問い合わせは利用枠を消費するため、現行のプラン・利用量はドキュメントと管理画面で確認します。

curl --fail-with-body --get \
  'https://api.zenithcode.net/stable/financial-facts' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data-urlencode 'symbol=7203' \
  --data-urlencode 'fiscalPeriod=2026-03' \
  --data-urlencode 'category=Balance_Sheet' \
  --data-urlencode 'limit=20'

Pythonは標準ライブラリでリクエストできます。ここでは、応答の書類情報と取得件数だけを表示します。コード自体が、各行の条件を解釈して正しい数値を選ぶわけではありません。

import json
from urllib.parse import urlencode
from urllib.request import Request, urlopen

query = urlencode({
    "symbol": "7203", "fiscalPeriod": "2026-03",
    "category": "Balance_Sheet", "limit": "20",
})
request = Request(
    "https://api.zenithcode.net/stable/financial-facts?" + query,
    headers={"x-api-key": "YOUR_API_KEY"},
)
with urlopen(request, timeout=30) as response:
    reports = json.load(response)
for report in reports:
    print(report["symbol"], report["fiscalPeriod"], report["docId"])
    print("取得件数:", len(report["facts"]))
    print("上限による打ち切り:", report["truncated"])

JavaScriptは、fetch が使えるNode.jsで実行する例です。ブラウザで一般公開する画面のコードへ、秘密のAPIキーを埋め込まないようにします。

const query = new URLSearchParams({
  symbol: '7203', fiscalPeriod: '2026-03',
  category: 'Balance_Sheet', limit: '20',
});
const response = await fetch(
  `https://api.zenithcode.net/stable/financial-facts?${query}`,
  { headers: { 'x-api-key': 'YOUR_API_KEY' } },
);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const reports = await response.json();
for (const report of reports) {
  console.log(report.symbol, report.fiscalPeriod, report.docId);
  console.log('取得件数:', report.facts.length);
  console.log('上限による打ち切り:', report.truncated);
}

truncatedを確認してから「全部取れた」と判断する

truncated=true は、件数上限で結果が打ち切られたことを表します。取得できた20件だけを見て、必要な科目が存在しないと判断しないようにします。

分類やタグの条件を狭めるか、仕様で許される範囲で上限を調整します。tag は要素名の部分一致なので、条件を絞った後も、返ったタグとコンテキストを確認します。複数の問い合わせに同じ行が含まれる可能性もあるため、単純に結果を足し合わせて全件取得と見なさないようにします。

状況次に確認すること
候補が多い分類と要素名の条件を絞る
truncated=true上限と検索条件。結果の完全性を判断し直す
候補がゼロ書類・決算期・分類・タグの指定
値が null未取得・該当なし・文字列側の情報など、応答の意味
前年の値もあるコンテキストと期間。目的の年度だけを選ぶ

truncated=false でも、元の報告書の全情報を取得したことを意味しません。指定した条件とAPIの提供範囲の中で、上限による打ち切りがないことを確認する情報です。

取得後は「説明できる一行」を作る

値だけを保存すると、後から比較条件を調べにくくなります。少なくとも、会社、書類、項目、期間、範囲、単位、取得日時を確認できる形にします。

例えばグラフへ渡すときは、横軸の年度、縦軸の単位、実績と予想の区別、欠損の扱いを決めます。元データの期間を捨てて年度ラベルだけにすると、同じラベルの年間と半年累計を混ぜてしまう可能性があります。

自分で条件を選び、表やグラフを作りたい場合はZENITH Codeが入口です。完成した企業分析画面を使いたい場合は、同じCrabgrassが運営するStockClubという選択肢もあります。ZENITH Codeにも整理済みのデータがあるため、「未解析データと解析済みデータ」という区別ではありません。

次に読む

私たち株式会社Crabgrassは、財務データAPI「ZENITH Code」を開発・提供しています。本記事は技術解説であり、特定の金融商品の売買を勧めるものではありません。

よくある質問

投資家・開発者向け

標準化された主要項目があれば、元のタグは不要ですか?
主要項目の比較だけなら、標準化された項目で目的を満たせる場合があります。会社固有の科目や内訳の根拠を調べたい場合は、元のタグや表の階層へ進みます。分析の目的に応じて、確認の深さを選びます。
このリクエスト例だけで財務グラフが完成しますか?
いいえ。取得と表示は別の工程です。返った候補から必要な条件の値を選び、単位を換算し、欠損の表示を決めます。この記事のコードは、問い合わせと取得状況の確認までを扱います。

AI・研究者向け

AIに渡すなら、全てのファクトを一度に取得した方がよいですか?
まず問いを限定し、必要な書類・項目・期間を選びます。不要な候補が多いと、期間や範囲の違う値を混ぜやすくなります。AIの回答にも、採用した条件と出典を添えて照合できるようにします。
gavel

免責事項

この記事は、データの仕組みと API の使い方を説明するものです。特定の銘柄の売買を勧めるものではなく、投資助言ではありません。実例の数値は記事の作成時点の応答で、その後の開示や訂正で変わることがあります。投資の判断はご自身の責任で行ってください。