pandas
O endpoint CSV do Frankfurter carrega direto num DataFrame, então buscar cotações leva uma linha. O motivo para usá-lo em vez de uma consulta rápida de cotação de mercado é a reprodutibilidade: fixe um único provedor e o histórico dele fica como foi publicado, então um backtest que você roda hoje bate com o que rodou no ano passado.
Início rápido
Aponte o read_csv para o endpoint CSV:
import pandas as pd
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur,gbp")Você recebe um DataFrame date,base,quote,rate, com uma linha por cotação.
Converter um valor
O CSV traz a cotação, não o total convertido. Multiplique o valor pela coluna rate. Para um único escalar sem pandas, chame o endpoint de cotação única com requests:
import requests
rate = requests.get("https://api.frankfurter.dev/v2/rate/usd/eur").json()["rate"]
total = 100 * rateFixar uma fonte oficial
Por padrão, você recebe a combinação de todas as fontes. Adicione providers para fixar uma única autoridade, o que mantém a análise auditável: muitas jurisdições exigem a taxa publicada pelo próprio banco central na conversão de valores em moeda estrangeira.
df = pd.read_csv("https://api.frankfurter.dev/v2/rates.csv?base=usd"es=eur&providers=ecb")ECB- Taxa de referência do Banco Central Europeu, o padrão para IVA e alfândega na UE.
NBP- Narodowy Bank Polski. Na Polônia, o IVA e o imposto de renda das empresas (CIT) são convertidos pela taxa do NBP.
CNB- Fixing do Banco Nacional Tcheco, usado na contabilidade e nos impostos da República Tcheca.
BCB- PTAX do Banco Central do Brasil, a referência para contratos e tributos no Brasil.
BANXICO- Taxa FIX do Banco de México, usada para liquidar obrigações em dólar americano.
Veja todas as fontes. Uma fonte fixada segue o próprio calendário de publicação, então a cotação mais recente dela pode ficar um dia atrás da cotação combinada mais recente.
Séries históricas
Use from para um intervalo de datas e group=month para ter uma linha por mês. Faça o parse da coluna de data e defina-a como índice; depois é só plotar ou fazer resample. O histórico combinado pode mudar um pouco quando chegam dados novos, então fixe um provedor para tudo o que você precisar reproduzir.
df = pd.read_csv(
"https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd"es=gbp&providers=bbk&group=month",
parse_dates=["date"],
index_col="date",
)
df["rate"].plot() Isso traz o dólar americano contra a libra desde 1949, direto do arquivo do Deutsche Bundesbank. Dá para ver a paridade fixa da libra em US$ 2,80 ficar estável por anos até ser rompida em 1967. O histórico mais antigo vem dos fixings do Bundesbank em Frankfurt: o dólar contra o marco desde 1948 e a maioria dos outros pares com o dólar de 1949 a 1970. O Banco Central Europeu assume a partir de 1999, então uma série moderna contínua usa a combinação padrão ou providers=ecb.