Pular para o conteúdo principal
Cole no ChatGPT/Claude e peça para resumir/gerar SDK.

Cotações em lote

POST
/quotes

Retorna cotações para múltiplos tickers em uma única chamada — cotação atual, série histórica (diária ou intraday) ou dados para gráfico com presets prontos.

Ideal para alimentar dashboards, carteiras, screeners e qualquer cenário onde você precisa de dados de vários ativos de uma vez sem fazer N chamadas individuais.

Cotações com 15 minutos de atraso

As cotações são fornecidas com 15 minutos de atraso em relação ao pregão. Os parâmetros type, interval, start_date e end_date estão disponíveis apenas para planos com acesso a cotações com 15 minutos de atraso.

Para planos sem esse acesso, a API retorna apenas cotações do dia anterior (D-1), sem parâmetros adicionais — somente adjusted é aceito.

Quando usar

  • Carregar cotações de uma carteira inteira de uma vez
  • Montar tabelas comparativas ou rankings de múltiplos ativos
  • Popular gráficos com overlay de vários tickers
  • Reduzir latência e número de requests em relação a chamadas individuais

Parâmetros de requisição

Todos os parâmetros vão no body (JSON).

ParâmetroTipoDescriçãoObrigatório
tickersstring[]Lista de tickers. Mínimo 1, máximo 500. Ex.: ["PETR4", "VALE3"].Obrigatório
typestringTipo de consulta: current, historical ou chart. Padrão: historical.Opcional
intervalnumberIntervalo em segundos (mínimo 60). Ignorado quando type=chart. Padrão: 86400 (diário).Opcional
start_datestringData inicial. Formato: YYYY-MM-DD. Ignorado quando type=chart.Opcional
end_datestringData final. Formato: YYYY-MM-DD. Ignorado quando type=chart.Opcional
adjustedbooleanSe true, retorna preços ajustados por eventos corporativos.Opcional

Formato de tickers

Cada ticker deve obedecer ao padrão ^[A-Z0-9]{4}[0-9]?[0-9]?$ ou ser um dos indicadores especiais: SELIC, IPCA, USD.

Limites de intervalo

  • interval mínimo: 60 segundos.
  • Intervalos intraday (6086399) com start_date e end_date: janela máxima de 5 dias.
  • Intervalos diários (86400 ou mais): sem limite de janela.

Comportamento por type

O comportamento por type é idêntico ao do endpoint de Cotações (GET /quotes/:ticker), aplicado individualmente a cada ticker:

  • current: cotação spot de cada ticker.
  • historical (padrão): série diária ou intraday de cada ticker.
  • chart: presets prontos (1d, 5d, 1M, 6M, 1Y, 5Y) de cada ticker — ignora interval, start_date e end_date.

Resposta

CódigoDescrição
200Retorna as cotações.
400Parâmetros ausentes ou inválidos.
401Não autorizado.

Formato da resposta

A resposta é um objeto indexado por ticker. O payload de cada ticker segue exatamente o mesmo formato do endpoint individual:

  • current: objeto com os campos de cotação.
  • historical: array de datapoints.
  • chart: { "chart": { "1d": [...], "5d": [...], ... } }.

Quando um ticker não é encontrado, o valor é um objeto de erro:

{
"error": {
"status": 404,
"message": "Ticker not found"
}
}

Exemplo — type=current

{
"PETR4": {
"date": "2026-04-22T18:30:00.000Z",
"open_price": 32.16,
"close_price": 32.45,
"highest_price": 32.60,
"lowest_price": 31.90,
"volume": 757726088,
"currency": "BRL",
"variation": 0.0090,
"variation_value": 0.29
},
"VALE3": {
"date": "2026-04-22T18:30:00.000Z",
"open_price": 58.20,
"close_price": 58.50,
"highest_price": 58.80,
"lowest_price": 57.90,
"volume": 420000000,
"currency": "BRL",
"variation": 0.0052,
"variation_value": 0.30
}
}

Exemplo — type=historical

{
"PETR4": [
{
"date": "2026-04-22T22:00:00.000Z",
"open_price": 32.16,
"close_price": 32.00,
"highest_price": 32.18,
"lowest_price": 31.90,
"volume": 757726088,
"currency": "BRL",
"variation": -0.0050,
"variation_value": -0.16,
"adjustment_factor": 0.8680821961067703
}
],
"VALE3": [
{
"date": "2026-04-22T22:00:00.000Z",
"open_price": 58.20,
"close_price": 58.50,
"highest_price": 58.80,
"lowest_price": 57.90,
"volume": 420000000,
"currency": "BRL",
"variation": 0.0052,
"variation_value": 0.30,
"adjustment_factor": 1
}
]
}

Exemplo — ticker não encontrado

{
"PETR4": {
"date": "2026-04-22T18:30:00.000Z",
"open_price": 32.16,
"close_price": 32.45,
"highest_price": 32.60,
"lowest_price": 31.90,
"volume": 757726088,
"currency": "BRL",
"variation": 0.0090,
"variation_value": 0.29
},
"XXXX3": {
"error": {
"status": 404,
"message": "Ticker not found"
}
}
}
Boas práticas
  • Use este endpoint em vez de múltiplas chamadas GET /quotes/:ticker para reduzir latência.
  • O limite de 500 tickers por chamada cobre a maioria dos cenários (carteiras, screeners, rankings).
  • Trate erros por ticker — uma falha individual não impede o retorno dos demais.
  • Os campos de cada datapoint são idênticos aos do endpoint individual; consulte a documentação de campos lá.