2026년 9월 30일에 1미국 달러는 17,891.1인도네시아 루피아였습니다. observations 엔드포인트에 기준 통화, 상대 통화, 날짜를 지정하고 그날 행에서 환율을 읽으세요.
API로 날짜별 환율 가져오기
- 통화와 날짜 선택하기 기준 통화는 observations 경로에, 상대 통화는
currencies에 넣습니다. USD에서 IDR이라면 경로에USD, 파라미터에IDR을 씁니다.start_date와end_date를 모두2026-09-30으로 설정하면 2026년 9월 30일의 관측값을 요청하게 되며, 범위의 양 끝에 같은 날짜를 씁니다. - API 키 설정 무료 키를 받아 환경 변수
NARWHAL_API_KEY에 보관하세요. 스크립트는 이 변수를Authorization: Bearer YOUR_KEY헤더에 사용하므로, 요청을 보내기 전에 키를 환경에 설정해 두어야 합니다. - 요청 보내기 여기에 나온 날짜 파라미터와 인증 헤더를 붙여 observations 엔드포인트를 호출합니다. 스크립트는 응답의
observations배열을 읽고, 반환된 각 날짜와rates배열을 함께 출력합니다.rates배열에는 상대 통화와 그 환율이 함께 들어 있습니다.import os import requests r = requests.get( "https://api.narwhalapi.com/v1/fx/rates/USD/observations", params={"currencies": "IDR", "start_date": "2026-09-30", "end_date": "2026-09-30"}, headers={"Authorization": f"Bearer {os.environ['NARWHAL_API_KEY']}"}, timeout=10, ) r.raise_for_status() for day in r.json()["observations"]: print(day["date"], day["rates"]) - 반환된 날짜와 환율 읽기 2026년 9월 30일의 출력은
2026-09-30 [{'currency': 'IDR', 'rate': '17891.1'}]입니다. 자신의 기록에서 환율을 날짜에 연결할 때는 반환된 행의 날짜를 사용하세요. 여러 날짜가 필요하면 시작일과 종료일을 요청하고, 한 페이지에 많은 날이 담길 수 있으므로limit과next_cursor로 관측값을 페이지별로 넘겨 가며 읽으세요.
과거 날짜에는 GET /v1/fx/rates/{base}/observations를 사용합니다. 현재 환율용 엔드포인트는 GET /v1/fx/rates/{base}?currencies=...이며, 날짜를 지정한 요청은 시작·종료 파라미터를 붙여 observations 경로로 보내야 합니다.
응답에는 base, observations, next_cursor가 들어 있습니다. observations 안의 각 행에는 date와 rates 배열이 있고, 각 환율에는 currency와 rate 필드가 있습니다. 스프레드시트용 값을 뽑을 때는 관측값에서 날짜를, IDR 항목에서 값을 가져와 요청한 상대 통화와 반환된 환율의 대응 관계를 유지하세요.
요청이 오류를 반환하면 본문은 application/problem+json 형식이며 status, code, detail, request_id를 담습니다. 응답을 관측값으로 취급하기 전에 오류의 code와 detail을 먼저 읽으세요. 오류 본문에는 이러한 오류 필드가 있고, 날짜별 환율은 성공 응답의 observations 배열에 들어 있습니다.
코드 없이 과거 환율 찾기
날짜를 직접 찾아보려면 과거 환율을 보여 주는 Narwhal 통화 페이지를 이용하세요. 필요한 통화와 날짜를 찾고, 스프레드시트에 복사할 때 환율과 함께 날짜도 남겨 두세요. 날짜가 붙은 값이 있으면 환산에 쓴 관측값을 나중에 다시 확인할 수 있습니다.
목록이라면 스크립트가 쓴 날짜와 환율을 스프레드시트에 붙여 넣고, 날짜는 조회 열에, 환율은 그다음 열에 둡니다. 수식에서는 찾으려는 날짜에 date, 해당 열들에 table을 씁니다. 이 자리 표시자를 자신의 시트의 날짜 참조와 조회 범위로 바꾸세요. 마지막 FALSE는 날짜를 정확히 일치시키라는 뜻이고, 2는 환율 열을 선택합니다. 붙여 넣은 값이 어느 기준 통화와 상대 통화의 조합인지 알 수 있도록 통화쌍을 표와 함께 보관하고, 조회 열의 날짜로는 반환된 관측값 날짜를 사용하세요.
=VLOOKUP(date, table, 2, FALSE)상황별 계산 방법
| 상황 | 적합한 방법 | 이유 |
|---|---|---|
| 단일 날짜, 직접 조회 | 통화 페이지 | 통화 페이지에서 과거 환율을 보여 줍니다 |
| 날짜 목록 | observations 엔드포인트 | 시작일과 종료일을 요청하고 각 날짜 조회하기 |
모든 계정이 전체 이력을 읽을 수 있습니다. 시계열이 요청한 시작일보다 늦게 시작될 수 있으므로 처음 반환된 날짜를 확인하세요.
날짜가 주말이나 공휴일이면 어떻게 하나요?
요청한 날짜에 환율이 없으면 그보다 앞선 날짜 중 행이 있는 가장 가까운 날짜를 사용하세요. 환율은 일별 관측값이고 주말처럼 환율이 없는 날에는 행이 없으므로, 토요일을 요청하면 그 날짜의 관측값은 반환되지 않습니다.
어느 관측값이 그 환율을 제공했는지 기록할 때는 앞선 행의 날짜를 사용하세요. 관측값이 없는 날짜의 대체 방법은 청구서 날짜 방식에서 설명합니다.
환율은 무엇을 의미하나요?
환율은 기준 통화 1단위당 상대 통화의 단위 수입니다. 2026년 9월 30일 USD/IDR 관측값에서는 USD가 기준 통화, IDR이 상대 통화이므로 17,891.1은 미국 달러당 인도네시아 루피아를 뜻합니다. USD 금액에 그 날짜의 환율을 곱하면 IDR 환산액이 나옵니다.
소수 환율은 어떻게 다뤄야 하나요?
금액 계산을 할 때는 반환된 환율을 소수나 문자열 그대로 두세요. API는 10진수 문자열을 반환하며, 2026년 9월 30일 출력의 따옴표가 붙은 '17891.1'이 그 예입니다. 계산의 곱셈에는 환율을 이진 부동소수점으로 바꾸지 말고 10진수 표현을 사용하세요.
예시: 2026년 9월 30일 USD/IDR
2026년 9월 30일 관측값으로 1,000 USD를 환산하려면 먼저 그 날짜의 USD 행에서 IDR 환율을 읽습니다. 그런 다음 달러 금액에 USD당 17,891.1 IDR을 곱합니다. 결과에 날짜를 함께 두면 그 금액이 계산에 쓴 과거 관측값과 대응한다는 것을 알 수 있습니다. 스프레드시트에서는 붙여 넣은 날짜에서 2026년 9월 30일을 찾아 그 환율을 가져와 USD 금액에 곱하는 값으로 쓰세요.
| 단계 | 값 |
|---|---|
| 관측 날짜 | 2026년 9월 30일 |
| 기준 통화 금액 | 1,000 USD |
| 2026년 9월 30일 환율 | USD당 17,891.1 IDR |
| 곱하기 | 1,000 USD × USD당 17,891.1 IDR |
| 상대 통화 금액 | 17,891,100 IDR |
에 게시되었습니다.