誰でも引用できるJSON

本サイトが画面に表示している債務の推定値を、誰でもプログラムから取得できるよう公開JSONエンドポイントを用意している。応答はCC BY 4.0で提供し、引用するときは「WorldRealDebt」とともに応答に含まれるciteAsの文言をそのまま使えばよい。

APIキー・会員登録・特別なリクエストヘッダーは不要。すべてのエンドポイントはGETとOPTIONSのみを受け付ける。

エンドポイント

  • GET /api/live.json — 韓国時計の現在時点の推定値(当初からある経路)。values の下に派生指標(derived)も含まれる。
  • GET /api/snapshot.json?t=<ISO> — 韓国時計の特定時点のスナップショット。tの指定が必須。

国別エンドポイント

GET /api/korea/live.json
GET /api/korea/snapshot.json?t=<ISO>
GET /api/korea/history.json?t=<ISO>&days=<n>
  • live.json — その国の現在時点の推定値。国定義に登録されたすべての指標と、指標ごとの出典メタデータを含む。
  • snapshot.json — その国の特定時点のスナップショット。同じtならいつ呼び出しても同じ応答が返る。
  • history.json — 毎日蓄積した観測スナップショットの時系列。t以前の点だけを返し、daysは既定365日・上限2000日で、不正な値は既定値か上限に置き換わる。

country に指定できる値: korea, china, japan, spain, usa

応答の項目

  • asOf — 応答が示す時点(ISO 8601)。liveではリクエスト時刻、snapshotではtの値。
  • baseAsOf — 補間の起点となる公式の基準日。国別エンドポイントでは最初の指標の基準日。
  • country — 国別エンドポイントにのみある国コード(korea・china・japan・usa・spain)。
  • source · license — サイトのアドレスとライセンス表記(CC-BY-4.0)。
  • citeAs — そのまま貼り付けられる引用文。エンドポイントのURLと時点を含む。
  • method — 補間式:value(t) = base × (1+g)^((t−t₀)/1yr)。
  • values — 指標ごとの推定値。キーは指標名(nationalDebt、householdDebt、gdp など)。
  • meta — 指標ごとの出典。国別エンドポイントでは primarySource(6言語の機関名とURL)・supportingSources・asOf・interpolationAllowed を返す。
  • docs — このページのアドレス。

/api/live.json と /api/snapshot.json だけにある項目

  • currency — 金額の通貨(KRW)。
  • values.derived — debtPerCitizen(1人当たり国家債務)、householdDebtPerCitizen(1人当たり家計債務)、debtToGdpRatio(国家債務/GDP)、fiscalBalance(総収入−総支出)、tradeBalance(輸出−輸入)。
  • meta.{指標} — { source, sourceUrl }。出典ページと同じ韓国語の機関名。

history.json だけの項目

  • from · days — 照会期間の開始時刻と日数。
  • count — 返した観測点の総数。0ならまだデータが蓄積されていない。
  • series — 指標ごとの観測点の配列。synthetic=true の点は実測ではなくモデルによる補間値。

単位:金額は各国通貨の1単位(ウォン・ドル・円・ユーロ・元)、人口は人、金利・物価・失業率は小数(0.0275 = 2.75%)で表す。値は丸めていない浮動小数点数なので、表示の桁数は利用側で決める。

応答の例

GET /api/live.json(2026-10-20T00:00:00Z 時点、一部省略):

{
  "asOf": "2026-10-20T00:00:00.000Z",
  "baseAsOf": "2026-01-01T00:00:00+09:00",
  "currency": "KRW",
  "source": "https://worldrealdebt.com",
  "license": "CC-BY-4.0",
  "citeAs": "Korea Debt Clock (https://worldrealdebt.com/api/live.json), accessed 2026-10-20T00:00:00.000Z",
  "method": "compound interpolation: value(t) = base × (1+g)^((t-t₀)/1yr)",
  "values": {
    "nationalDebt": 1392428189250859.8,
    "gdp": 2770569555899763.5,
    "population": 51549209.89518132,
    "householdDebt": 2028123204201555.8,
    "interestRate": 0.0275,
    "exchangeRate": 1546,
    "derived": {
      "debtPerCitizen": 27011630.092530675,
      "householdDebtPerCitizen": 39343439.178320736,
      "debtToGdpRatio": 0.5025783187019314,
      "fiscalBalance": -57187411253740.5,
      "tradeBalance": 117679974849796.38
    }
  },
  "meta": {
    "nationalDebt": {
      "source": "기획재정부 국가채무 잠정",
      "sourceUrl": "https://www.moef.go.kr/"
    },
    "householdDebt": {
      "source": "한국은행 가계신용 통계",
      "sourceUrl": "https://ecos.bok.or.kr/"
    }
  },
  "docs": "https://worldrealdebt.com/api-docs/"
}

GET /api/korea/live.json — 同じ時点、値の系列6つと meta の最初の項目だけを残したもの。ルートと同じ応答生成関数で作成:

{
  "country": "korea",
  "asOf": "2026-10-20T00:00:00.000Z",
  "baseAsOf": "2026-01-01T00:00:00+09:00",
  "source": "https://worldrealdebt.com",
  "license": "CC-BY-4.0",
  "citeAs": "WorldRealDebt, South Korea debt data (https://worldrealdebt.com/api/korea/live.json), accessed 2026-10-20T00:00:00.000Z",
  "method": "compound interpolation: value(t) = base × (1+g)^((t-t₀)/1yr)",
  "values": {
    "nationalDebt": 1392428189250859.8,
    "householdDebt": 2028123204201555.8,
    "mortgageDebt": 1201188973927010.2,
    "creditCardDebt": 130449280606744.97,
    "gdp": 2770569555899763.5,
    "population": 51549209.89518132,
    "…": "…"
  },
  "meta": {
    "nationalDebt": {
      "primarySource": {
        "name": {
          "en": "MoEF National Debt (provisional)",
          "ko": "기획재정부 국가채무 잠정",
          "ja": "企画財政部 国家債務 暫定",
          "fr": "Ministère de l’Économie et des Finances — dette publique provisoire",
          "zh": "韩国企划财政部 国家债务暂定值",
          "es": "Ministerio de Economía y Hacienda — deuda pública (provisional)"
        },
        "url": "https://www.moef.go.kr/"
      },
      "supportingSources": [
        {
          "name": "IMF Global Debt Database",
          "url": "https://www.imf.org/external/datamapper/datasets/GDD"
        }
      ],
      "asOf": "2026-01-01T00:00:00+09:00",
      "interpolationAllowed": true
    }
  },
  "docs": "https://worldrealdebt.com/korea/api-docs/"
}

エラー応答

  • 400 — tがない、ISO 8601でない、または2020-01-01..2030-12-31の範囲外のとき。本文に正しい例のURL(example)と文書のURL(docs)が入る。
  • 404 — 対応していない country の値。本文は {"error": "Unsupported country"}。
  • 429 — /api/live.json で同じIPから1分間に60回を超えたとき。Retry-After: 60 ヘッダーが付く。

呼び出し上限・CORS・キャッシュ

  • /api/live.json はIPごとに毎分60回までに制限している。カウンター用ストア(Valkey)が応答しない場合は、制限より応答を優先して制限を省く。
  • live 系は Cache-Control: public, max-age=30, s-maxage=30。30秒以内の再リクエストにはキャッシュされた値が返る。
  • snapshot 系は max-age=31536000, immutable。決定論的なので1年間キャッシュしても変わらない。history もデータがあれば同じ方針で、空なら60秒だけキャッシュする。
  • Access-Control-Allow-Origin: * なので、どのウェブサイトのブラウザコードからも直接呼び出せる。

引用の書き方

応答の citeAs を使うか、次の形式で原出典も併記する:

South Korea Debt Clock (https://worldrealdebt.com/api/korea/live.json), accessed YYYY-MM-DD.
Underlying sources: see meta.*.primarySource in the response, or https://worldrealdebt.com/sources/

このデータが意味しないこと

応答の値は測定値ではなく、公式の四半期・年次発表の間を複利で補間した推定値である。公式の数値が必要なら、各指標の原出典を確認してほしい: データの出典 · 方法論.