JavaScript
SDK는 필요하지 않습니다. fetch는 모든 브라우저, Node, Deno, Bun, 엣지 런타임에 내장되어 있습니다. CORS가 열려 있고 유출될 키도 없으니, 클라이언트 코드에서 바로 API를 호출할 수 있습니다.
빠른 시작
환율을 조회하고 환전합니다:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const data = await res.json();
const total = 100 * data.rate; 응답은 평면 객체 하나입니다: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. fetch는 HTTP 오류에도 resolve되므로 res.ok를 확인하세요. 잘못된 통화 코드는 JSON 메시지와 함께 422를 반환합니다.
Intl로 서식 지정
통화 기호를 직접 붙이지 마세요. Intl.NumberFormat은 모든 로캘에서 각 통화의 기호, 위치, 소수 자릿수를 알고 있습니다:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const { rate } = await res.json();
const eur = new Intl.NumberFormat("ko-KR", {
style: "currency",
currency: "EUR",
});
eur.format(100 * rate); // "€87.39"기호와 소수 자릿수
보조 단위나 기호를 위한 메타데이터 테이블을 직접 관리할 필요가 없습니다. 포매터에 물어보세요:
const yen = new Intl.NumberFormat("en", {
style: "currency",
currency: "JPY",
});
yen.resolvedOptions().maximumFractionDigits; // 0, 엔에는 보조 단위가 없습니다
yen.formatToParts(1).find((part) => part.type === "currency").value; // "¥"Frankfurter가 제공하는 모든 통화를 코드와 기호와 함께 살펴보세요.
여러 환율 한 번에 조회
/v2/rates는 대상 통화별로 한 행씩 담긴 평면 배열을 반환합니다. Object.fromEntries로 조회용 객체로 바꾸세요. quotes를 생략하면 모든 통화를 반환합니다.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rates?base=usd"es=eur,gbp,jpy`);
const rows = await res.json();
const rates = Object.fromEntries(rows.map((row) => [row.quote, row.rate]));
// { EUR: 0.8739, GBP: 0.74388, JPY: 162.33 }공식 제공 기관 고정
기본적으로 모든 제공 기관을 종합한 환율을 받습니다. providers를 추가해 특정 기관 하나를 고정하세요. EU 부가가치세용 ECB 기준 환율처럼 관할 지역이 자국 중앙은행의 공표 환율을 요구할 때 중요합니다.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rate/usd/eur?providers=ecb`);모든 제공 기관을 살펴보세요. 고정한 제공 기관은 자체 공표 일정을 따르므로, 최신 환율이 종합 환율보다 하루 늦을 수 있습니다.
직접 실행해 보기
브라우저를 벗어나지 않고 Playground에서 쿼리를 구성하고 응답을 확인하세요.