대부분의 무료 환율 API는 겉보기엔 비슷합니다: JSON, bearer 토큰, 통화 100개 정도. 실제 프로젝트에서 중요한 차이는 하루 고시가와 다음 고시가 사이, 한도를 넘었을 때의 오류 메시지, 새벽 3시에도 코드가 믿어야 하는 필드에서 드러납니다. 브랜드 순위가 아니라 차원별로 선택하세요.
source와 market_session은 시계를 보고 추측할 필요 없이 코드가 실제로 무엇을 보고 있는지 알려줍니다./v1/{date}/{base}로 가져옵니다./v1/convert 엔드포인트와 /v1/mcp의 MCP 서버 덕분에 흔한 작업에 필요한 연결 코드가 줄어듭니다.순위보다 차원이 나은 이유
API 순위 목록은 작성자가 글을 쓴 날 어떤 것을 선호했는지 알려줄 뿐입니다. 차원별 분석은 어떤 것이 자신의 프로젝트에 맞는지 알려줍니다. 하루에 한 번 참조 데이터만 소비하는 대시보드는 하루 내내 가격을 제시하는 여행 앱과 필요한 것이 다릅니다.
아래 여섯 가지 차원은 거의 모든 FX 연동에서 나오는 질문을 다룹니다. 순서대로 검토하면 대부분의 프로젝트는 끝나기 전에 명확한 답을 얻습니다.
차원 1: 무료 월간 할당량과 요청 한도
할당량은 무료로 프로토타입을 만들고 소규모 프로덕션 워크로드를 운영할 수 있는지, 아니면 일주일 안에 한계에 부딪히는지를 결정합니다. 요청 한도는 배치 작업에서 처음부터 재시도 로직을 작성하지 않고도 호출을 몰아서 할 수 있는지를 결정합니다.
ECB는 기준환율을 무료로, 할당량 제한 없이 발표합니다. 다만 개발자용 API가 아니라 원시 XML 피드이며, 영업일마다 한 번만 갱신됩니다.
이 둘과 별개로 알아둘 만한 세 번째 키 불필요 범주가 있습니다: fawazahmed0/exchange-api 같은 커뮤니티 유지 관리, CDN 호스팅 정적 JSON 프로젝트입니다. 요청에 응답하는 서버 자체가 없고, jsDelivr나 Cloudflare Pages에서 제공되는 버전 관리된 JSON 파일일 뿐입니다. 매일 갱신되며 CC0 퍼블릭 도메인 라이선스 아래 200개 이상의 통화(흔한 암호화폐 포함)를 다루고, 키도 강제 요청 한도도 없습니다. 다만 구조적인 트레이드오프가 있습니다: source나 신선도 메타데이터가 없고, 변환 엔드포인트도, 실시간 장중 갱신도 없으며, 미러가 다운되었을 때 책임지는 단일 주체도 없습니다 — 바로 이 이유로 프로젝트 자체 문서도 두 CDN 호스트 사이에 폴백을 구성하라고 권장합니다.
키 없이 시작하는 지점으로, exchangerate.dev는 IP 주소별로 상한이 있는 익명 호출을 허용합니다. 카드 없이 /signup에서 받을 수 있는 무료 키는 이를 월 10,000회, 분당 12회 요청으로 올려줍니다.
symbols 요청으로 묶으면 288회로 줄어듭니다. 등급을 고르기 전에 자신의 숫자를 알아두세요.차원 2: 장중 신선도
대부분의 개발자가 문제가 생기기 전까지는 생각하지 않는 차원입니다. ECB 기준환율은 영업일마다 약 16:00 CET에 발표됩니다 — 그 이후에도 시장은 계속 움직이지만 고시가는 다음 영업일까지 갱신되지 않습니다. 이 고시가만 소스로 삼는 API는 남은 오후 내내, 밤새, 그리고 주말 내내 전날 환율을 반환합니다.
하루에 한 번 마감 환율만 소비하는 파이프라인이라면 문제없습니다. 소비자 대상 앱, 이커머스 사이트, 또는 "최신"이 현재 시장을 의미하기를 기대하는 코드라면, 환율이 장중 움직임을 반영하는지 아니면 최대 24시간 전 고시가인지 알아야 합니다.
exchangerate.dev에는 거래 주간 내내 약 60초마다 갱신되는 live 소스가 있습니다. 통화쌍이 이 소스에서 나오면, market_session이 현재 세션 상태(open, weekend 등)를 알려주고 data_updated_at이 환율이 마지막으로 움직인 정확한 시점을 확인해줍니다.
차원 3: 신선도 메타데이터
환율은 숫자입니다. 그 숫자가 3분 전 현물 집계값인지 어제 아침 기준환율인지 아는 것에 따라 그 값을 책임감 있게 다룰 수 있는 방법이 달라집니다.
대부분의 API는 타임스탬프를 반환합니다. 이는 응답이 생성된 시점을 알려줄 뿐, 원본 데이터가 마지막으로 움직인 시점은 알려주지 않습니다. exchangerate.dev는 함께 보면 진짜 질문에 답이 되는 두 필드를 반환합니다:
source:live(집계된 현물),ecb_daily(ECB 기준환율),fred_daily(연준 일일 시계열) 중 하나입니다.market_session:open,weekend,interbank_closed중 하나이며, 은행 간 거래 주간의 상태를 알려줍니다.data_updated_at: 원본 환율이 마지막으로 기록된 시점이며, 응답이 생성된 시점인timestamp와는 별개입니다.is_forward_filled: 이력과 범위 응답에서true이면 그날 발표된 환율이 없어 이전 값이 이월되었다는 뜻입니다.
timestamp 대신 data_updated_at을 확인하는 캐싱 레이어는 사용자에게 오래된 데이터를 제공하는 것도, 불필요한 업스트림 호출도 피할 수 있습니다.
차원 4: 이력 깊이
일별 이력은 데이터셋을 소급 채울 수 있는지, 지난 1년의 차트를 만들 수 있는지, 10년치 환율로 회귀분석을 할 수 있는지를 결정합니다. 일부 무료 API는 이력을 90일로 제한합니다. 더 깊은 이력을 유료 등급 뒤에 가둬두는 곳도 있습니다.
exchangerate.dev는 무료 등급에서도 일별 참조 이력을 제공합니다. 발표된 시계열은 1999년부터 시작할 수 있지만 실제 시작일은 통화쌍과 출처에 따라 다릅니다. /v1/2024-01-15/USD 같은 날짜 경로로 하루 값을, start_date와 end_date를 지정한 /v1/range로 이용 가능한 시계열을 가져올 수 있습니다. 긴 기간을 요청하기 전에 해당 통화쌍의 커버리지를 확인하세요.
차원 5: 내장 변환 엔드포인트
많은 API는 환율표만 반환하고 곱셈은 사용자에게 맡깁니다. 통화쌍 하나라면 괜찮지만, 배치 변환 작업이나 장바구니 합계를 변환하는 결제 흐름에는 수학 헬퍼가 아니라 변환 기본 기능이 필요합니다.
GET /v1/convert/USD/EUR/100은 한 번의 호출로 rate, converted, derived를 반환합니다. POST /v1/convert 엔드포인트는 하나의 요청으로 배치 변환을 처리합니다. 서로 직접 고시되지 않는 통화쌍인 삼각 교차환율도 서버 측에서 처리됩니다.
차원 6: 에이전트와 MCP 지원
LLM 에이전트와 AI 어시스턴트는 API를 안정적으로 호출하려면 구조화된 도구 정의가 필요합니다. 원시 REST API는 이 연결 코드를 직접 작성해야 하지만, MCP 서버는 도구 정의를 API와 함께 제공합니다.
exchangerate.dev는 https://api.exchangerate.dev/v1/mcp(서버 이름 exchangerate-dev)에서 Model Context Protocol 서버를 운영합니다. 일곱 가지 도구를 제공합니다: start_checkout, list_currencies, get_rate, get_usd_index, convert, get_range, search_docs(FAQ 검색). 결제는 사용자의 명시적 확인이 필요합니다. 도구는 REST API와 같은 월간 할당량과 분당 한도를 공유하므로 별도로 추적할 청구가 없습니다.
여섯 가지 차원 한눈에 비교
내게 맞는 선택 고르기
영업일마다 발표되는 참조 환율만 필요하고 ECB의 XML 피드를 처리할 수 있다면 ECB 공개 데이터를 직접 사용할 수 있습니다. 발표 일정과 데이터가 없는 날짜를 명시적으로 처리하세요.
장중 신선도(ECB 고시 시점뿐 아니라 하루 내내 움직이는 환율)가 필요하거나, 응답에 source와 market_session을 원하거나, ECB 피드에서 쉽게 얻을 수 있는 범위를 넘는 이력이 필요하거나, FX 도구를 호출하는 LLM 에이전트를 만들고 있다면 exchangerate.dev가 그런 경우를 위해 설계되었습니다. 무료 등급은 카드가 필요 없고 MCP 서버도 포함되어 있습니다.
올바른 API는 기능 목록이 가장 긴 것이 아니라 한계가 자신의 사용 사례와 맞아떨어지는 것입니다.
