특정 날짜의 과거 환율 조회하기

2026년 9월 30일에 1미국 달러는 17,891.1인도네시아 루피아였습니다. observations 엔드포인트에 기준 통화, 상대 통화, 날짜를 지정하고 그날 행에서 환율을 읽으세요.

API로 날짜별 환율 가져오기

  1. 통화와 날짜 선택하기 기준 통화는 observations 경로에, 상대 통화는 currencies에 넣습니다. USD에서 IDR이라면 경로에 USD, 파라미터에 IDR을 씁니다. start_date와 end_date를 모두 2026-09-30으로 설정하면 2026년 9월 30일의 관측값을 요청하게 되며, 범위의 양 끝에 같은 날짜를 씁니다.
  2. API 키 설정 무료 키를 받아 환경 변수 NARWHAL_API_KEY에 보관하세요. 스크립트는 이 변수를 Authorization: Bearer YOUR_KEY 헤더에 사용하므로, 요청을 보내기 전에 키를 환경에 설정해 두어야 합니다.
  3. 요청 보내기 여기에 나온 날짜 파라미터와 인증 헤더를 붙여 observations 엔드포인트를 호출합니다. 스크립트는 응답의 observations 배열을 읽고, 반환된 각 날짜와 rates 배열을 함께 출력합니다. rates 배열에는 상대 통화와 그 환율이 함께 들어 있습니다.
    Python, 과거 날짜의 USD에서 IDR
    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"])
  4. 반환된 날짜와 환율 읽기 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

에 게시되었습니다.

다음 단계