신흥국은 제공 범위가 고르지 않아, 비교하려면 먼저 커버리지를 확인해야 합니다. Narwhal은 인도네시아와 브라질의 월별 인플레이션, 정책금리, GDP 성장률을 반환하고, 월별 경로에 데이터가 없는 나라에는 World Bank 연간 계열을 반환합니다.
신흥국 한 곳의 인플레이션 요청하기
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에서 가져옵니다.
어느 나라가 응답하는지 테스트하기
커버리지는 나라와 계열마다 다르므로, 전부 있다고 가정하지 말고 조합마다 테스트하세요. 다음은 주요 신흥국 여섯 곳의 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가 붙습니다. 해당 경로에 그 나라의 발표 계열이 없다는 뜻이므로, 공백으로 처리하고 계속 진행하세요. 레이아웃을 설계하기 전에 필요한 다른 국가 코드로도 같은 반복문을 실행하세요. 한 번 실행하면 표의 어느 칸을 월별 경로로 채울 수 있고 어느 칸에 연간 대체가 필요한지 알 수 있습니다.
같은 나라의 성장률 읽기
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가 들어 있습니다. 두 나라를 한 차트에 올리기 전에 이 플래그를 확인하세요.
World Bank 연간 데이터로 공백 채우기
월별 경로에 계열이 없어도 카탈로그에는 연간 계열이 있을 수 있습니다. GET /v1/economics/catalogue는 q와 source로 검색합니다. wdi 소스에서 인플레이션을 검색하면 {country} 슬롯이 있는 id_template이 반환됩니다. 이 슬롯을 소문자 세 글자 코드로 바꾸세요. 예를 들어 인도는 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이 오면 한 번 재시도합니다.
- 차이 계산하기 인플레이션과 정책금리가 모두 있으면 정책금리에서 인플레이션을 뺀 값을 퍼센트포인트로 출력합니다.
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입니다. 발표된 두 숫자의 단순한 차이입니다. 1에 금리를 더한 값을 1에 인플레이션을 더한 값으로 나누는 정확한 방식은 실질금리 계산하기를 참고하세요.
경로를 바꾸면 계열이 없는 나라의 데이터를 얻을 수 있나요?
월별 경로가 모든 나라를 다루는 것은 아닙니다. 튀르키예 예시처럼 카탈로그에서 같은 의미의 계열을 검색하고, 월별 수치와 비교하기 전에 그 frequency를 확인하세요.
카탈로그 호출이 503을 반환한 이유는 무엇인가요?
아직 읽은 적 없는 World Bank 계열은 503과 코드 upstream_busy로 응답할 수 있습니다. 테스트한 계열에서는 몇 초 뒤 두 번째 호출이 성공했으므로, 스크립트는 기다렸다가 한 번 재시도합니다. 카탈로그 검색 자체는 매번 200으로 응답했고, 503은 계열 읽기에서 나타났습니다.
에 게시되었습니다.