- 対象API: 日本銀行「時系列統計データ検索サイト」API機能
- 公開日(公式資料上): 2026-02-18
- APIバージョン: v1(URLパス
/api/v1/) - エンドポイント数: 3(コードAPI / 階層API / メタデータAPI)
- 注意: 本書は公式資料を読みやすく再構成した「非公式仕様書」です。公式の停止・仕様変更の可能性を前提に実装してください。
本APIは、日本銀行「時系列統計データ検索サイト」で提供されている時系列統計データを、機械判読可能な形式(JSON / CSV)で取得するためのAPIです。
提供されるAPIは以下の3種類です。
- コードAPI(getDataCode): 系列コードを指定して時系列データを取得
- 階層API(getDataLayer): 階層(カテゴリツリー)を指定して時系列データを取得
- メタデータAPI(getMetadata): DB単位のメタ情報(系列一覧・属性・階層情報など)を取得
https://www.stat-search.boj.or.jp/api/v1/
- コードAPI:
GET https://www.stat-search.boj.or.jp/api/v1/getDataCode - 階層API:
GET https://www.stat-search.boj.or.jp/api/v1/getDataLayer - メタデータAPI:
GET https://www.stat-search.boj.or.jp/api/v1/getMetadata
重要: エンドポイント(
/api/v1/getDataCode等)は大文字小文字を区別します。
一方、クエリパラメータ名・値(format=json等)は大文字小文字を区別しません。
- 公式資料上、APIキー発行や認証方式の記載はありません(= 典型的なAPIキー方式ではない運用です)。
- 代わりに「高頻度アクセス回避」「負荷状況に応じたアクセス制限」「接続遮断の可能性」が明記されています。
- 短時間での高頻度アクセスは避ける必要があります。
- 高頻度アクセス等により、接続遮断・利用停止となり得ます。
- 公式資料はメソッド名(GET/POST)を明示していませんが、「URLのパラメータとして条件を指定する」形式で提示されているため、本書ではGETとして記載します。
- 通信量削減のため、HTTPレスポンスのgzip圧縮に対応しています。
- 推奨ヘッダ例:
Accept-Encoding: gzip
format=jsonの場合:Content-Type: application/jsonformat=csvの場合:Content-Type: text/csv- ただし、エラー時はformat指定に関わらずJSONで返却されます。
| パラメータ | 型 | 必須 | 対象API | 説明 | 設定値 / 既定値 |
|---|---|---|---|---|---|
format |
string | 任意 | 全API | 出力形式 | json or csv(省略時json) |
lang |
string | 任意 | 全API | 言語 | jp or en(省略時jp) |
db |
string | 必須 | 全API | DB名 | 例: CO, FM01 等(DB一覧は後述) |
startDate |
string | 任意 | コード/階層 | 開始期 | 期種に応じた形式(後述) |
endDate |
string | 任意 | コード/階層 | 終了期 | 期種に応じた形式(後述) |
startPosition |
integer | 任意 | コード/階層 | 検索開始位置 | 1以上の整数(ページングに使用) |
| パラメータ | 型 | 必須 | 対象API | 説明 |
|---|---|---|---|---|
code |
string | 必須 | コードAPI | 系列コード(カンマ区切りで複数指定可) |
layer |
string | 必須 | 階層API | 階層情報(カンマ区切り、ワイルドカード*可) |
frequency |
string | 必須 | 階層API | 期種(略称) |
以下の文字および全角文字は指定できません。
< > ” ! | \ ; '
DB名は以下の通りです(公式マニュアル記載)。
(実装上は、まずgetMetadataでDB単位のメタ情報を取得し、そこから系列を特定する運用が堅牢です。)
| 統計分野 | DB名 | DB名称 |
|---|---|---|
| 金利(預金・貸出関連) | IR01 | 基準割引率および基準貸付利率の推移 |
| IR02 | 預金種類別店頭表示金利の平均年利率等 | |
| IR03 | 定期預金の預入期間別平均金利 | |
| IR04 | 貸出約定平均金利 | |
| マーケット関連 | FM01 | 無担保コールO/N物レート(毎営業日) |
| FM02 | 短期金融市場金利 | |
| FM03 | 短期金融市場残高 | |
| FM04 | コール市場残高 | |
| FM05 | 公社債発行・償還および現存額 | |
| FM06 | 公社債消化状況(利付国債) | |
| FM07 | (参考)国債窓口販売額・窓口販売率 | |
| FM08 | 外国為替市況 | |
| FM09 | 実効為替レート | |
| 決済関連 | PS01 | 各種決済 |
| PS02 | フェイルの発生状況 | |
| 預金・マネー・貸出 | MD01 | マネタリーベース |
| MD02 | マネーストック | |
| MD03 | マネタリーサーベイ | |
| MD04 | (参考)マネーサプライ増減と信用面の対応 | |
| MD05 | 通貨流通高 | |
| MD06 | 日銀当座預金増減要因と金融調節(実績) | |
| MD07 | 準備預金額 | |
| MD08 | 業態別の日銀当座預金残高 | |
| MD09 | マネタリーベースと日本銀行の取引 | |
| MD10 | 預金者別預金 | |
| MD11 | 預金・現金・貸出金 | |
| MD12 | 都道府県別預金・現金・貸出金 | |
| MD13 | 貸出・預金動向 | |
| MD14 | 定期預金の残高および新規受入高 | |
| LA01 | 貸出先別貸出金 | |
| LA02 | 日本銀行貸出 | |
| LA03 | その他貸出残高 | |
| LA04 | コミットメントライン契約額、利用額 | |
| LA05 | 主要銀行貸出動向アンケート調査 | |
| 金融機関バランスシート | BS01 | 日本銀行勘定 |
| BS02 | 民間金融機関の資産・負債 | |
| 資金循環 | FF | 資金循環 |
| その他の日本銀行関連 | OB01 | 日本銀行の対政府取引 |
| OB02 | 日本銀行が受入れている担保の残高 | |
| 短観 | CO | 短観 |
| 物価 | PR01 | 企業物価指数 |
| PR02 | 企業向けサービス価格指数 | |
| PR03 | 製造業部門別投入・産出物価指数 | |
| PR04 | <サテライト指数>最終需要・中間需要物価指数 | |
| 財政関連 | PF01 | 財政資金収支 |
| PF02 | 政府債務 | |
| 国際収支・BIS関連 | BP01 | 国際収支統計 |
| BIS | BIS 国際資金取引統計および国際与信統計の日本分集計結果 | |
| DER | デリバティブ取引に関する定例市場報告の日本分集計結果 | |
| その他 | OT | その他 |
codeには「系列コード」を指定します(例:MADR1Z@Dのような固有コード)。- 検索画面で使う「データコード」(例:
IR01'...のようにDB名が付与されたもの)を渡すとエラーになります。 codeはカンマ区切りで複数指定可能ですが、同一リクエスト内では同じ期種(frequency)の系列のみ指定可能です。
- 階層APIの
frequencyは以下の略称を指定します。CY(暦年),FY(年度),CH(暦年半期),FH(年度半期),Q(四半期),M(月次),W(週次),D(日次)
- 重要: 出力(RESULTSET内の
FREQUENCY)には正式名称(例:QUARTERLY等)が表示されますが、リクエストでは正式名称を指定できません(指定するとエラー)。
startDateとendDateは期種に応じて形式が変わります。
| 期種 | 形式 | 例 |
|---|---|---|
| 暦年 / 年度 | YYYY |
2025 |
| 暦年半期 / 年度半期 | YYYYHH(HH=01/02) |
202501(上期) |
| 四半期 | YYYYQQ(QQ=01..04) |
202502(第2四半期) |
| 月次 | YYYYMM(MM=01..12) |
202512 |
| 週次 / 日次 | 指定はYYYYMM(月次形式) |
202501 |
追加制約:
- 年月は 1850年〜2050年 の範囲で数値指定が求められます。
startDate <= endDateの順序で指定する必要があります。
| API種類 | 制限内容 | 上限値 | 超過時の挙動 |
|---|---|---|---|
| 階層API | 検索条件で抽出される系列数(系列コード数) | 1,250 | エラー(出力ファイルは作成されない) |
| コードAPI / 階層API | 1回のリクエストで検索可能な系列数 | 250 | 上限まで出力し、続き位置をNEXTPOSITIONに出力 |
| コードAPI / 階層API | 1回のリクエストで検索可能なデータ数(系列数×期数) | 60,000 | 上限まで出力し、続き位置をNEXTPOSITIONに出力 |
- 階層APIは、指定
frequencyで絞る前段階で系列数を数えるため、指定外の期種が混在すると合計が上限超過になり得ます。 - 例: 階層条件で「月次800系列 + 四半期500系列 = 合計1300系列」だと、
frequency=Mを指定していても上限エラーになり得ます。
- 上限超過時に出力される
NEXTPOSITION(次回検索開始位置)を、次回リクエストのstartPositionに指定すると続きから取得できます。 NEXTPOSITIONが出力されない場合は全データ取得済みです。- JSONの場合:
NEXTPOSITION: null - CSVの場合: 空欄
- JSONの場合:
codeで指定した系列コードの「並び順」を1始まりの位置として扱います。- 例:
startPosition=160なら、指定したコードリストの160番目以降から出力します。
- DB内の全系列を「階層1〜5で並べ替えた順序番号」で管理し、その番号を
startPositionとして使います。 - 重要: これは「検索条件で絞り込んだ結果内の通し番号」ではありません。
- JSON: UTF-8
- CSV:
lang=jp(日本語): Shift-JISlang=en(英語): UTF-8
全APIで処理結果情報が出力されます。
| フィールド | 型 | 説明 |
|---|---|---|
STATUS |
integer | 200=正常終了、200以外=エラー(400/500/503) |
MESSAGEID |
string | メッセージID(例: M1810001I) |
MESSAGE |
string | 人間可読メッセージ |
DATE |
string | 日付時刻(日本時間) |
DATEの意味:
- コードAPI/階層API: 出力ファイル作成日時
- メタデータAPI: システム内部のデータ作成日時(出力ファイル作成日時とは限らない)
- 欠損値(データがない)場合は、
nullが出力されます。 - 検索画面では
NA/NDですが、API出力はnullです。
- 系列コード(
code)で時系列データを取得します。 - 同一リクエスト内で指定する系列は同じ期種である必要があります。
- URL:
GET https://www.stat-search.boj.or.jp/api/v1/getDataCode - クエリ:
- 必須:
db,code - 任意:
format,lang,startDate,endDate,startPosition
- 必須:
| パラメータ | 必須 | 形式 | 例 | 補足 |
|---|---|---|---|---|
db |
必須 | DB名 | CO |
DB一覧参照 |
code |
必須 | カンマ区切り | TK99...,... |
最大1250件、同一期種のみ |
startDate |
任意 | 期種に応じた形式 | 202401 |
週次/日次はYYYYMM |
endDate |
任意 | 期種に応じた形式 | 202504 |
startDate<=endDate |
startPosition |
任意 | 1以上整数 | 160 |
指定コードリストの位置 |
- Content-Type:
application/json(エラー時もJSON)
トップレベル:
{
"STATUS": 200,
"MESSAGEID": "M1810001I",
"MESSAGE": "...",
"DATE": "YYYY-MM-DDThh:mm:ss.sss+09:00",
"PARAMETER": {
"FORMAT": "JSON|CSV|",
"LANG": "JP|EN|",
"DB": "CO",
"STARTDATE": "202401|",
"ENDDATE": "202504|",
"STARTPOSITION": "160|"
},
"NEXTPOSITION": 255,
"RESULTSET": [
{
"SERIES_CODE": "...",
"NAME_OF_TIME_SERIES_J": "...",
"UNIT_J": "...",
"FREQUENCY": "QUARTERLY|MONTHLY|...",
"CATEGORY_J": "...",
"LAST_UPDATE": 20251002,
"VALUES": {
"SURVEY_DATES": [202401, 202402, ...],
"VALUES": [11, 13, null, ...]
}
}
]
}ポイント:
PARAMETERは「リクエストで指定したパラメータ情報」を返します。未指定項目は空欄になり得ます。NEXTPOSITIONが数値の場合は「一部未取得」であり、続き取得が必要です。VALUES.SURVEY_DATESとVALUES.VALUESは同じインデックス同士が対応します。
-
Content-Type:
text/csv -
CSVは概ね以下の構造(概念図)です。
- 先頭に処理結果(STATUS/MESSAGEID/MESSAGE/DATE)
- 次にPARAMETER行(
PARAMETER, KEY, VALUEのような形で複数行) - 次にNEXTPOSITION行
- 次にヘッダ行(SERIES_CODE, NAME..., ... SURVEY_DATES, VALUES)
- データ行(1行=1系列×1時点)で、系列メタ情報は行ごとに繰り返し出力される
https://www.stat-search.boj.or.jp/api/v1/getDataCode?format=json&lang=jp&db=CO&startDate=202401&endDate=202504&code=TK99F1000601GCQ01000,TK99F2000601GCQ01000
- DB内の「階層情報(layer)」に基づいて、該当系列の時系列データを取得します。
frequency(期種略称)とlayer(階層指定)が必須です。
-
URL:
GET https://www.stat-search.boj.or.jp/api/v1/getDataLayer -
クエリ:
- 必須:
db,frequency,layer - 任意:
format,lang,startDate,endDate,startPosition
- 必須:
| パラメータ | 必須 | 形式 | 例 | 補足 |
|---|---|---|---|---|
db |
必須 | DB名 | BP01 |
DB一覧参照 |
frequency |
必須 | 期種略称 | M |
CY/FY/CH/FH/Q/M/W/D |
layer |
必須 | カンマ区切り | 1,1,1 / * |
最大5要素。*はワイルドカード |
startDate |
任意 | 期種に応じた形式 | 202504 |
週次/日次はYYYYMM |
endDate |
任意 | 期種に応じた形式 | 202509 |
startDate<=endDate |
startPosition |
任意 | 1以上整数 | 255 |
DB全系列の並び順番号(注意) |
layer指定補足:
- 階層は1〜5の5段です。
- 階層1の指定は必須、階層2〜5は任意(ただし6つ以上は指定不可)。
- ワイルドカード
*で当該階層を全対象として指定できます。
コードAPIと同じトップレベル構造(PARAMETER/NEXTPOSITION/RESULTSET)です。
違いとして、PARAMETERにLAYER1..LAYER5およびFREQUENCYが含まれます。
コードAPIと同様に、1行=1系列×1時点のロング形式で出力されます。
https://www.stat-search.boj.or.jp/api/v1/getDataLayer?format=csv&db=BP01&frequency=M&startDate=202504&endDate=202509&layer=1,1,1
- DB単位のメタ情報(系列コード・系列名・単位・期種・カテゴリ・階層・収録期間・注記等)を取得します。
- コードAPI/階層APIのパラメータ作成に利用することが推奨されます。
- メタ情報ファイルは日々定期的に更新されます。
-
URL:
GET https://www.stat-search.boj.or.jp/api/v1/getMetadata -
クエリ:
- 必須:
db - 任意:
format,lang
- 必須:
メタデータAPIは、コード/階層APIとトップレベル構造が異なります(PARAMETER/NEXTPOSITIONがありません)。
{
"STATUS": 200,
"MESSAGEID": "M1810001I",
"MESSAGE": "...",
"DATE": "YYYY-MM-DDThh:mm:ss.sss+09:00",
"DB": "FM08",
"RESULTSET": [
{
"SERIES_CODE": "FXERD01",
"NAME_OF_TIME_SERIES_J": "...",
"NAME_OF_TIME_SERIES": "...",
"UNIT_J": "...",
"UNIT": "...",
"FREQUENCY": "DAILY|MONTHLY|...",
"CATEGORY_J": "...",
"CATEGORY": "...",
"LAYER1": 1,
"LAYER2": 1,
"LAYER3": 0,
"LAYER4": 0,
"LAYER5": 0,
"START_OF_THE_TIME_SERIES": "19990101",
"END_OF_THE_TIME_SERIES": "20250114",
"LAST_UPDATE": 20250116,
"NOTES_J": "...",
"NOTES": "..."
}
]
}補足:
- 言語により出力されるタグ(日本語/英語)が異なります(
*_Jの有無など)。 - 階層情報のみの行が出力される場合、
SERIES_CODEが空欄になり得ます。
-
先頭に処理結果(STATUS/MESSAGEID/MESSAGE/DATE)と
DBが出力され、その後にヘッダ行+データ行が続きます。 -
出力例(概念):
SERIES_CODE, NAME_OF_TIME_SERIES_J, NAME_OF_TIME_SERIES, UNIT_J, UNIT, FREQUENCY, CATEGORY_J, CATEGORY, LAYER1..LAYER5, START_OF_THE_TIME_SERIES, END_OF_THE_TIME_SERIES, LAST_UPDATE, NOTES_J, NOTES
https://www.stat-search.boj.or.jp/api/v1/getMetadata?format=csv&lang=jp&db=fm08
https://www.stat-search.boj.or.jp/api/v1/getMetadata?db=pr01
| MESSAGEID | MESSAGE(要旨) | 補足 |
|---|---|---|
| M1810001I | 正常に終了しました。 | 欠損値が含まれていても200になり得ます |
| M181030I | 正常に終了しましたが、該当データはありませんでした。 | 収録期間外または全て欠損等 |
| MESSAGEID | MESSAGE(要旨) | 補足 |
|---|---|---|
| M181001E | Invalid input parameters | 禁止文字/全角/データコード(DB名付き)指定など |
| M181002E | Invalid language setting | lang不正 |
| M181003E | 結果ファイル形式が正しくありません | format不正 |
| M181004E | DBが指定されていません | db欠落 |
| M181005E | DB名が正しくありません | db不正 |
| M181006E | 系列コードが指定されていません | code欠落(コードAPI) |
| M181007E | 系列コードの数が1250を超えています | code件数上限 |
| M181008E | 指定した開始期が正しくありません | startDate不正 |
| M181009E | 指定した終了期が正しくありません | endDate不正 |
| M181010E | 時期は1850年から2050年までを数値で指定してください | 範囲外 |
| M181011E | 開始期と終了期の順序を正しく指定してください | startDate<=endDate |
| M181012E | 検索開始位置が正しくありません | startPositionは1以上整数 |
| M181013E | 指定した系列コードは存在しません | *番目のコードが表示される |
| M181014E | 指定した系列コードの期種が一致しません | *番目のコードが表示される |
| M181015E | 指定した開始期の設定形式が期種と一致しません | 期種と形式不一致 |
| M181016E | 指定した終了期の設定形式が期種と一致しません | 期種と形式不一致 |
| M181017E | 期種が指定されていません | 階層APIでfrequency欠落 |
| M181018E | 期種が正しくありません | frequency不正 |
| M181019E | 階層情報が指定されていません | 階層1必須、2〜5任意、6つ以上不可 |
| M181020E | 階層情報設定が正しくありません | 階層の指定方法不正 |
| MESSAGEID | MESSAGE(要旨) |
|---|---|
| M181090S | 予期しないエラーが発生しました。時間をおいてやり直してください。 |
| MESSAGEID | MESSAGE(要旨) |
|---|---|
| M181091S | データベースにアクセス中にエラーになりました。時間をおいてやり直してください。 |
「スーパーで一度にカゴ山盛りにするとレジが止まる」のと同じで、制限値(系列数/データ数)を超えると途中で止まる設計です。 そのため、以下のように分割取得が基本です。
- まずメタデータAPIで系列一覧を取得(系列コードと期種を把握)
- コードAPIで、同じ期種の系列を「最大250件ずつ」分割して取得
NEXTPOSITIONが出たら、startPositionで続き取得- リクエスト間隔を空ける(高頻度アクセス回避)
- 同一データの繰り返し取得を避ける(ETLでキャッシュ)
- エラー(特に500/503)は指数バックオフでリトライ(無限ループ禁止)
- gzip圧縮を有効化(
Accept-Encoding: gzip)
公開サービスとして提供する場合、公式の留意点に従い以下を実施してください。
- 公開時の連絡(調査統計局へのメール連絡)
- クレジット表示(定型文の掲示)
- 高頻度アクセス等の禁止事項の遵守
- 予告なく停止・性能低下・仕様変更があり得る前提での設計(SLA前提にしない)
- 照会先メール: post.rsd17@boj.or.jp
- 件名指定(公式案内に従うこと)