REST で使う
https://api.fudoki.dev に JSON で問い合わせ、歳出の木のノードを検索・取得する。
ベース URL は https://api.fudoki.dev です。認証は要りません。財政データの応答は JSON、原典 PDF の中継は application/pdf で返します。応答はキャッシュさせません(Cache-Control: no-store)。
最初の問い合わせ
団体と収録範囲を確かめる
curl 'https://api.fudoki.dev/v1/jurisdictions?name=%E6%AD%A6%E8%94%B5%E9%87%8E%E5%B8%82'name(団体名の部分一致。例は「武蔵野市」)か code(団体コード。6 桁でも、検査数字を除いた 5 桁でもよい)で絞ると、団体の 6 桁のコード・都道府県と、収録している年度・資料区分・会計とその原典が返ります。両方を渡すと AND です。絞らなければ全団体を団体コード順に返し、収録の無い団体は coverage が空です。
収録範囲は明細があることを示すもので、その会計の全事業を収録し終えたことは保証しません。検索の jurisdiction_code は 6 桁だけを受け付ける(5 桁では 0 件になる)ので、ここで引いた 6 桁のコードを使ってください。
列の説明を読む
curl https://api.fudoki.dev/v1/expenditure/columns列の意味、where で使える条件、金額を足すときの条件(sum_rules)、検索の入力の例が返ります。
ノードを検索する
curl -X POST 'https://api.fudoki.dev/v1/expenditure/nodes:search' \
-H 'Content-Type: application/json' \
-d '{
"document_kind": "settlement",
"fiscal_year": { "min": 2025, "max": 2025 },
"where": { "node_kind": { "eq": ["目"] }, "cofog_code": { "prefix": "10.4" } },
"order_by": [{ "column": "amount_yen", "desc": true }],
"page_size": 50
}'document_kind(settlement は決算、initial は当初予算)と fiscal_year の範囲(西暦、5 年以内)が必須です。
内訳を辿る
curl 'https://api.fudoki.dev/v1/expenditure/nodes/settlement/<node_id>'検索の応答の node_id を渡すと、そのノードと子を軸(axis)ごとに返します。
検索の条件
where は列名をキーにした条件で、列どうしは AND です。
| 列の型 | 使える条件 |
|---|---|
| string | eq・not_eq(100 個まで、eq は OR)、prefix・suffix・contains、is_null |
| integer | eq・not_eq(100 個まで、eq は OR)、min・max、is_null |
| number | min・max、is_null |
| boolean | eq |
列をまたぐ OR と NOT はないので、2 回に分けて問い合わせてください。fiscal_year の年数と条件の値の合計は 90 個までなので、eq・not_eq に入れられる値は実際にはこの合計で決まります。文字列の条件の値は 200 文字までです。
ページング
検索と、ノード取得の子の一覧と、団体の一覧はページで返ります。応答の next_page_token が null でなければ、次の要求に page_token として渡します(ノード取得と団体の一覧では query に付けます)。page_size は 1〜1000(既定 100)、団体の一覧では 1〜100(既定 20)です。位置は 100,000 件目までなので、それより先が要るときは条件を絞ってください。
原典
応答の origins には、結果の行が指す原典(資料名・公開 URL・形式・SHA-256)が入ります。行の origin_id から引いてください。団体の一覧では、原典(origin_id・資料名・公開 URL・形式)は会計ごとに coverage[].accounts[].origins に入っています。
GET /v1/origins/{origin_id}/pdf で自治体の公開 PDF を表示用に中継します。任意 URL や query は指定できません。取得 URL は percent-encoding した X-Origin-Url、取得日時は ISO 8601 UTC の X-Origin-Fetched-At ヘッダーで返します。取り込み時の内容との一致は検査しません。保持期限と上限は MCP の PDF 表示を参照してください。
エラー
エラーは {"error": {"code": "...", "message": "..."}} の形で返ります。主なものは次のとおりです。
| HTTP | code | 起きるとき |
|---|---|---|
| 400 | INVALID_ARGUMENT |
入力が schema に合わない |
| 404 | NOT_FOUND |
ノードや path が見つからない |
| 405 | METHOD_NOT_ALLOWED |
操作が受け付けないメソッドで送った |
| 413 | PAYLOAD_TOO_LARGE |
body が 16 KiB を超える |
| 415 | UNSUPPORTED_MEDIA_TYPE |
Content-Type が application/json でない |
| 429 | PDF_UNAVAILABLE |
PDF 中継の頻度・保持件数の上限を超える |
| 502 | PDF_UNAVAILABLE |
PDF を取得できない、形式が不正、32 MiBを超える |
| 504 | PDF_UNAVAILABLE |
PDF の取得が20秒を超える |
| 503 | UNAVAILABLE |
提供を止めている |
各操作の入力と応答の詳細は API リファレンスにあります。