Cotações em lote
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.
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âmetro | Tipo | Descrição | Obrigatório |
|---|---|---|---|
tickers | string[] | Lista de tickers. Mínimo 1, máximo 500. Ex.: ["PETR4", "VALE3"]. | Obrigatório |
type | string | Tipo de consulta: current, historical ou chart. Padrão: historical. | Opcional |
interval | number | Intervalo em segundos (mínimo 60). Ignorado quando type=chart. Padrão: 86400 (diário). | Opcional |
start_date | string | Data inicial. Formato: YYYY-MM-DD. Ignorado quando type=chart. | Opcional |
end_date | string | Data final. Formato: YYYY-MM-DD. Ignorado quando type=chart. | Opcional |
adjusted | boolean | Se 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
intervalmínimo: 60 segundos.- Intervalos intraday (
60–86399) comstart_dateeend_date: janela máxima de 5 dias. - Intervalos diários (
86400ou 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 — ignorainterval,start_dateeend_date.
Resposta
| Código | Descrição |
|---|---|
| 200 | Retorna as cotações. |
| 400 | Parâmetros ausentes ou inválidos. |
| 401 | Nã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"
}
}
}
- Use este endpoint em vez de múltiplas chamadas
GET /quotes/:tickerpara 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á.