新興国の対応状況は国ごとに差があるため、比較にはカバレッジの確認が必要です。Narwhalは、インドネシアとブラジルについて月次のインフレ率、政策金利、GDP成長率を返し、月次ルートにデータがない国には World Bank の年次系列を返します。
新興国1か国のインフレ率をリクエストする
curl -s "https://api.narwhalapi.com/v1/economics/IDN/inflation" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"country": "IDN",
"period": "2026-09",
"year_over_year": "3.28",
"month_over_month": "0.3",
"released_on": "2026-10-29",
"source": {
"publisher": "Statistics Indonesia (BPS)",
"distributor": "OECD"
}
}year_over_year と month_over_month はパーセント、period は対象月、released_on は公表日です。統計機関が判明している場合、source に公表元と配信元が入ります。政策金利のルートはどの国でも同じ形です。GET /v1/economics/{country}/central-bank/policy-rate は、インドネシアでは rate が 5.75(instrument は bi_rate)、ブラジルでは 13.75(instrument は selic_target)を返しました。成長率は GET /v1/economics/{country}/gdp-growth から取得します。
どの国が応答するかをテストする
対応状況は国と系列によって異なるため、すべてそろっていると仮定せず、組み合わせごとにテストします。以下は、大規模な新興国6か国のHTTP結果です。
| 国 | インフレ率 | 政策金利 | GDP 成長率 | 失業率 |
|---|---|---|---|---|
| インドネシア (IDN) | 200 | 200 | 200 | 404 |
| ブラジル (BRA) | 200 | 200 | 200 | 404 |
| メキシコ (MEX) | 200 | 404 | 200 | 200 |
| インド (IND) | 404 | 404 | 200 | 200 |
| 南アフリカ (ZAF) | 404 | 404 | 200 | 200 |
| トルコ (TUR) | 404 | 404 | 404 | 404 |
404 にはエラーコード series_not_found が付きます。これは、そのルートにその国の公表系列がないという意味なので、欠損として扱って先へ進みます。レイアウトを設計する前に、必要な他の国コードでも同じループを実行してください。1回実行すれば、表のどのセルを月次ルートで埋められ、どのセルに年次のフォールバックが必要かが分かります。
同じ国の成長率を取得する
GET /v1/economics/{country}/gdp-growth は、year_over_year、quarter_over_quarter、period、released_on を返します。公表日は国によって大きく異なるため、数値の横に released_on を表示してください。
| 国 | 期間 | 前年比 | 前期比 | 発表日 |
|---|---|---|---|---|
| インドネシア | 2026-Q2 | 5.3 | 1.3 | 2026-10-30 |
| ブラジル | 2026-Q2 | 1.9 | 0.5 | 2026-10-30 |
| メキシコ | 2026-Q2 | 1.9 | 1.4 | 2026-08-24 |
| 南アフリカ | 2026-Q2 | 0.9 | -0.2 | 2026-09-08 |
南アフリカのレスポンスには year_over_year_not_seasonally_adjusted が、インドのレスポンスには not_seasonally_adjusted が含まれます。2か国を1つのグラフに載せる前に、これらのフラグを確認してください。
World Bank の年次データで欠損を埋める
月次ルートに系列がなくても、カタログに年次の系列がある場合があります。GET /v1/economics/catalogue は q と source で検索します。wdi ソースでインフレ率を検索すると、{country} のスロットを持つ id_template が返ります。スロットを小文字の3文字コードに置き換えます。たとえばインドなら wdi:fp.cpi.totl.zg/ind です。
curl -s "https://api.narwhalapi.com/v1/economics/catalogue?source=wdi&q=inflation&limit=1" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"results": [
{
"id_template": "wdi:fp.cpi.totl.zg/{country}",
"source": "wdi",
"title": "Inflation, consumer prices (annual %)",
"frequency": "annual",
"unit_label": "Inflation, consumer prices (annual %)"
}
]
}観測値は GET /v1/economics/catalogue/series/observations?id=... で取得します。年次系列では start と end に年を指定します。各レスポンスには attribution と licence_url が繰り返し含まれるため、グラフの近くに載せてください。トルコは月次ルートにデータがないので、よいテストになります。
curl -s "https://api.narwhalapi.com/v1/economics/catalogue/series/observations?id=wdi:fp.cpi.totl.zg/tur&start=2024&end=2025" \
-H "Authorization: Bearer $NARWHAL_API_KEY"{
"id": "wdi:fp.cpi.totl.zg/tur",
"title": "Inflation, consumer prices (annual %), Turkiye",
"country": "TUR",
"frequency": "annual",
"unit_label": "Inflation, consumer prices (annual %)",
"attribution": "World Bank, World Development Indicators, CC BY 4.0. Values normalised by Narwhal.",
"observations": [
{
"period": "2024",
"value": "58.5064492168435"
},
{
"period": "2025",
"value": "34.8811700293777"
}
]
}国を並べて比較する
- まず月次データをリクエストする スクリプトは国ごとにインフレ率と政策金利をリクエストします。404 の場合は
Noneを返します。 - 年次系列にフォールバックする 月次のインフレ率がない場合は、2025年の World Bank 年次系列を読み取り、その行に年次であることを示すラベルを付けます。503 の場合は1回だけ再試行します。
- 差を計算する インフレ率と政策金利の両方がある場合は、政策金利からインフレ率を引いた値をポイントで表示します。
import os import time import requests BASE = "https://api.narwhalapi.com" HEAD = {"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"} def get(path, **params): for _ in range(2): r = requests.get(BASE + path, params=params, headers=HEAD, timeout=15) if r.status_code != 503: break time.sleep(3) if r.status_code == 404: return None r.raise_for_status() return r.json() for c in ("IDN", "BRA", "MEX", "IND", "ZAF", "TUR"): infl = get(f"/v1/economics/{c}/inflation") rate = get(f"/v1/economics/{c}/central-bank/policy-rate") if infl: line = f"{c} inflation {infl['year_over_year']}% ({infl['period']})" else: wb = get("/v1/economics/catalogue/series/observations", id=f"wdi:fp.cpi.totl.zg/{c.lower()}", start="2025", end="2025") v = wb["observations"][0] line = f"{c} inflation {float(v['value']):.2f}% (annual {v['period']}, World Bank)" if rate: line += f" | policy rate {rate['rate']}%" if infl: line += f" | gap {float(rate['rate']) - float(infl['year_over_year']):.2f}" else: line += " | no policy rate" print(line)
実行すると次のように出力されました。
| 国 | インフレ率 | 基準 | 政策金利 | 政策金利 − インフレ率 |
|---|---|---|---|---|
| IDN | 3.28% | 月次、2026-09 | 5.75% | 2.47 |
| BRA | 4.58% | 月次、2026-09 | 13.75% | 9.17 |
| MEX | 3.45% | 月次、2026-09 | なし | なし |
| IND | 2.40% | 年次、2025 | なし | なし |
| ZAF | 3.21% | 年次、2025 | なし | なし |
| TUR | 34.88% | 年次、2025 | なし | なし |
年次の行を月次の行と順位付けしないでください。ある月の前年比と通年の値は対象期間が異なるため、すべての数値の隣に Basis 列を置きます。
ブラジルの金利差がインドネシアよりずっと大きいのはなぜですか?
この差は、政策金利から前年比インフレ率を引いたもので、ブラジルは 13.75 − 4.58、インドネシアは 5.75 − 3.28 です。公表された2つの数値の単純な差にすぎません。1に金利を足した値を1にインフレ率を足した値で割る厳密な計算は、実質金利の計算方法をご覧ください。
ルートを変えれば、系列のない国のデータを取得できますか?
月次ルートがすべての国をカバーしているわけではありません。トルコの例のように、カタログで同じ意味の系列を検索し、月次の数値と比べる前にその frequency を確認してください。
カタログの呼び出しが 503 を返したのはなぜですか?
まだ一度も読み取られていない World Bank の系列は、503 とコード upstream_busy で返ることがあります。テストした系列では、数秒後の2回目の呼び出しが成功したため、スクリプトは待ってから1回だけ再試行します。カタログ検索そのものは毎回 200 で応答し、503 が出たのは系列の読み取りでした。
公開。