범위 엔드포인트 사용 start_date와 end_date는 양 끝을 포함합니다. base 기본값은 USD이고 symbols는 쉼표로 구분합니다. 영어 날짜 도구도 제공합니다.
data에는 저장된 행이 들어갑니다. has_more와 next_cursor를 따라가며 CSV와 Parquet은 지원 구간을 제공합니다.
GET /v1/range copy
$ curl -G "https://api.exchangerate.dev/v1/range" \
-H "Authorization: Bearer exr_live_..." \
--data-urlencode "base=USD" \
--data-urlencode "symbols=EUR,GBP" \
--data-urlencode "start_date=2026-06-10" \
--data-urlencode "end_date=2026-06-13" JSON 응답 읽기 data에는 저장된 행이 들어갑니다. has_more와 next_cursor를 따라가며 CSV와 Parquet은 지원 구간을 제공합니다.
JSON copy
{
"result": "success",
"base": "USD",
"start_date": "2026-06-10",
"end_date": "2026-06-13",
"data": [
{ "date": "2026-06-10", "rates": { "EUR": 0.86663, "GBP": 0.74727 },
"source": "ecb_daily", "is_forward_filled": false },
{ "date": "2026-06-11", "rates": { "EUR": 0.86678, "GBP": 0.74829 },
"source": "ecb_daily", "is_forward_filled": false },
{ "date": "2026-06-12", "rates": { "EUR": 0.86453, "GBP": 0.74613 },
"source": "ecb_daily", "is_forward_filled": false }
],
"has_more": false,
"next_cursor": null
} 빠진 달력 날짜 2026년 6월 13일 토요일이 없는 것은 범위가 모든 달력 날짜에 행을 만들지 않기 때문입니다.
Python으로 페이지 처리 이 루프는 모든 커서를 따라갑니다.
Python · requests copy
import requests
API = "https://api.exchangerate.dev/v1"
KEY = "exr_live_..." # free key at https://exchangerate.dev/signup
params = {
"base": "USD",
"symbols": "EUR,GBP",
"start_date": "2026-06-10",
"end_date": "2026-06-13",
}
rows = []
while True:
resp = requests.get(
f"{API}/range",
headers={"Authorization": f"Bearer {KEY}"},
params=params,
timeout=10,
)
resp.raise_for_status()
data = resp.json()
rows.extend(data["data"])
if not data["has_more"]:
break
cursor = data.get("next_cursor")
if not cursor or cursor <= params.get("cursor", ""):
raise RuntimeError("Incomplete historical response")
params["cursor"] = cursor
for row in rows:
filled = row["is_forward_filled"]
print(row["date"], row["rates"]["EUR"], row["rates"]["GBP"], "filled" if filled else "") 관측값과 전달값 구분 범위 관측값의 is_forward_filled는 false입니다. 날짜 조회는 이전 값을 true로 표시해 반환할 수 있습니다.
주말은 관측값이 아닙니다
범위는 2026년 6월 13일을 생략합니다. 직접 조회하면 이전 값과 is_forward_filled true를 받을 수 있습니다.
날짜 조회와 범위 선택 단일 날짜는 확인용이고 범위는 차트, backfill, 일괄 분석용입니다.
항목 날짜 범위
요청 날짜마다 한 번 한 번의 요청과 페이지
응답 하루 data 배열
데이터 범위 확인 1,830일은 요청 한도이며 모든 통화쌍의 깊이를 보장하지 않습니다. source, 행, data: []를 확인하세요.
pandas pandas로 불러와 날짜순 정렬 후 계산 전에 전달값을 제외하세요.
Python · pandas copy
import pandas as pd
# rows contains every page from the loop above
df = pd.json_normalize(rows)
df["date"] = pd.to_datetime(df["date"])
df = df.set_index("date").sort_index()
# keep only rows that were actually published that day
df = df[~df["is_forward_filled"]]
print(df[["rates.EUR", "rates.GBP"]].tail()) pandas는 선택 사항이며 다른 도구에서도 같은 행을 처리할 수 있습니다.
과거 환율 도구에서 날짜 조회하기 (영문)