JavaScript
Você não precisa de um SDK. O fetch já vem integrado em todos os navegadores, Node, Deno, Bun e runtimes de borda (edge). O CORS é aberto e não há chave para vazar, então você pode chamar a API diretamente do código do cliente.
Início rápido
Obtenha uma taxa e converta:
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const data = await res.json();
const total = 100 * data.rate; A resposta é um único objeto simples: {"date": "2026-07-17", "base": "USD", "quote": "EUR", "rate": 0.8739}. O fetch resolve mesmo em erros HTTP, portanto verifique res.ok; um código de moeda inválido retorna 422 com uma mensagem em JSON.
Formatar com Intl
Não posicione símbolos de moedas manualmente. O Intl.NumberFormat conhece o símbolo, sua posição e as casas decimais de cada moeda, em qualquer localidade (locale):
const res = await fetch("https://api.frankfurter.dev/v2/rate/usd/eur");
const { rate } = await res.json();
const eur = new Intl.NumberFormat("en", {
style: "currency",
currency: "EUR",
});
eur.format(100 * rate); // "€87.39"Símbolos e casas decimais
Não é necessário manter uma tabela de metadados para subunidades ou símbolos. Consulte o formatador:
const yen = new Intl.NumberFormat("en", {
style: "currency",
currency: "JPY",
});
yen.resolvedOptions().maximumFractionDigits; // 0, o iene não possui subunidades
yen.formatToParts(1).find((part) => part.type === "currency").value; // "¥"Explore todas as moedas fornecidas pelo Frankfurter, com seus códigos e símbolos.
Várias cotações de uma vez
/v2/rates retorna um array simples, com uma linha por cotação. Transforme-o em um objeto de consulta com Object.fromEntries. Omita quotes para obter todas as moedas.
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 }Fixar uma fonte oficial
Por padrão, você obtém a taxa combinada de todas as fontes. Adicione providers para fixar uma autoridade específica, o que importa quando uma jurisdição exige a taxa publicada pelo seu banco central, como a taxa de referência do BCE para IVA da UE.
const api = "https://api.frankfurter.dev";
const res = await fetch(`${api}/v2/rate/usd/eur?providers=ecb`);Explore todas as fontes. Uma fonte fixada segue seu próprio calendário de publicação, portanto sua cotação mais recente pode ficar um dia atrás da média combinada mais recente.
Experimente ao vivo
Monte consultas e veja as respostas sem sair do navegador no playground.