Use /api/v2/crypto para consultar Bitcoin, Ethereum e outros criptoativos em
reais. O parâmetro coin aceita vários símbolos. O parâmetro currency
define a moeda da resposta e usa BRL como padrão.
A mesma rota atende dois casos. Sem range e interval, devolve a cotação
atual. Com esses parâmetros, acrescenta a série histórica em
historicalDataPrice.
Aqui o assunto é a integração. Para estudar o ativo em si, leia os guias de Bitcoin no Brasil e Ethereum.
Cotação atual de Bitcoin e Ethereum
Faça uma chamada com os dois símbolos separados por vírgula.
curl -H "Authorization: Bearer SEU_TOKEN" \
"https://brapi.dev/api/v2/crypto?coin=BTC,ETH¤cy=BRL"A resposta tem um item por moeda em coins. Estes são os campos mais úteis:
| Campo | Uso |
|---|---|
coin | Símbolo solicitado |
currency | Moeda usada na conversão |
regularMarketPrice | Preço atual convertido |
regularMarketChangePercent | Variação percentual em 24 horas |
regularMarketDayLow | Menor preço da janela |
regularMarketDayHigh | Maior preço da janela |
regularMarketVolume | Volume informado pela fonte |
regularMarketTime | Data e hora da cotação |
Uma resposta reduzida segue este formato:
{
"coins": [
{
"coin": "BTC",
"currency": "BRL",
"regularMarketPrice": 371028.28,
"regularMarketChangePercent": 2.64,
"regularMarketDayLow": 359613.69,
"regularMarketDayHigh": 372616.12,
"regularMarketTime": "2026-02-08T16:24:00.000Z"
}
],
"requestedAt": "2026-02-08T16:26:22.155Z",
"took": 350
}Os números ilustram a estrutura do JSON. Chame a API para ver os valores do momento.
Variação de 24 horas não é fechamento diário
Criptoativos negociam sem pausa. regularMarketChangePercent compara uma
janela móvel de 24 horas. Não trate esse campo como o fechamento da B3.
Consultar uma cotação com Python
Guarde o token em variável de ambiente. requests já entrega o JSON
desserializado.
import os
import requests
token = os.environ["BRAPI_TOKEN"]
response = requests.get(
"https://brapi.dev/api/v2/crypto",
params={"coin": "BTC,ETH", "currency": "BRL"},
headers={"Authorization": f"Bearer {token}"},
timeout=30,
)
response.raise_for_status()
for coin in response.json()["coins"]:
print(
coin["coin"],
coin["currency"],
coin["regularMarketPrice"],
coin["regularMarketTime"],
)Leia regularMarketTime junto com o preço. Sem esse horário, um painel exibe
um dado velho com a mesma cara de um dado fresco.
Histórico OHLCV na mesma rota
Adicione range e interval para pedir histórico. Os valores aceitos e os
limites da sua chave estão na documentação.
curl -H "Authorization: Bearer SEU_TOKEN" \
"https://brapi.dev/api/v2/crypto?coin=BTC¤cy=BRL&range=1mo&interval=1d"Quando a consulta inclui histórico, cada moeda pode trazer usedRange,
usedInterval e historicalDataPrice. Cada ponto histórico tem estes campos:
{
"date": 1770508800,
"open": 365000.0,
"high": 372000.0,
"low": 361500.0,
"close": 371028.28,
"volume": 199263021357.47,
"adjustedClose": 371028.28
}date usa timestamp Unix. Converta em UTC. Se você deixar o pandas usar o fuso
da máquina, um candle das 21h vira o dia seguinte e a série desalinha.
import os
import pandas as pd
import requests
response = requests.get(
"https://brapi.dev/api/v2/crypto",
params={
"coin": "BTC",
"currency": "BRL",
"range": "1mo",
"interval": "1d",
},
headers={"Authorization": f"Bearer {os.environ['BRAPI_TOKEN']}"},
timeout=30,
)
response.raise_for_status()
btc = response.json()["coins"][0]
history = pd.DataFrame(btc["historicalDataPrice"])
history["date"] = pd.to_datetime(history["date"], unit="s", utc=True)
history = history.set_index("date")
print(history[["open", "high", "low", "close", "volume"]].tail())Cotação e histórico dividem o mesmo item, e é fácil confundir os dois.
regularMarketPrice é a consulta de agora. historicalDataPrice são os
intervalos já fechados.
Descobrir símbolos aceitos
O nome comercial raramente é o símbolo. Consulte o catálogo.
curl -H "Authorization: Bearer SEU_TOKEN" \
"https://brapi.dev/api/v2/crypto/available?search=BTC"A resposta entrega coins como lista de símbolos. Um desses valores vai no
parâmetro coin.
Os parâmetros atuais estão na documentação de criptomoedas, e a busca por símbolo na página de moedas disponíveis.
Erros que alteram o resultado
Somar volumes de moedas diferentes sem conferir a unidade produz um número que
não significa nada. A API converte o preço para currency, e só o preço.
A variação de 24 horas também não é o retorno do dia civil, porque a janela escorrega a cada consulta. Para um retorno diário estável, calcule com fechamentos históricos em horários fixos.
Por fim, requestedAt marca quando a brapi processou a requisição, não quando
o mercado gerou o dado. Esse horário está em regularMarketTime.
Perguntas frequentes
Como obter a cotação do Bitcoin em reais por API?
Envie coin=BTC¤cy=BRL para /api/v2/crypto. Leia o preço em
regularMarketPrice e o horário em regularMarketTime.
A API retorna Ethereum e Bitcoin juntos?
Sim. Use coin=BTC,ETH. A resposta inclui um item separado para cada símbolo
em coins.
Como baixar o histórico de Bitcoin em Python?
Envie range e interval. Transforme historicalDataPrice em um DataFrame e
converta date de timestamp Unix para UTC.
