Opções
Esta API foi desenhada para o fluxo mais comum de consulta de opções:
- escolher o ativo subjacente
- descobrir os vencimentos
- ver os preços de exercício
- listar as séries negociadas
- pegar o histórico de uma série específica
O que esta API entrega
Dados EOD de opções. Ou seja: preço de abertura, máxima, mínima, média, fechamento, bid, ask, negócios, volume e volume financeiro do dia.
O que esta API não entrega nesta versão
Não há dados em tempo real, gregas, volatilidade implícita, interesse em aberto ou livro de ofertas.
Cobertura e frequência
- Histórico: a partir de 2009, com consolidação diária após o fechamento.
- Atualização: o arquivo EOD é processado após ~19h de Brasília (BRT/BRT-3). Até lá, o "último pregão disponível" corresponde ao pregão anterior.
- Contratos cobertos: opções de ações, ETFs e índices (ex.: IBOV) listados na bolsa brasileira.
- Fuso horário: todas as datas estão em
America/Sao_Paulo. Camposdateem respostas são timestamps Unix em segundos do fechamento do pregão. - Formato de datas em query params:
YYYY-MM-DD.
Acesso por plano
Opções fazem parte do plano Pro. O sandbox abaixo permite experimentação sem token para PETR4.
| Plano | Acesso a opções |
|---|---|
| Sandbox (sem token) | ✅ Apenas PETR4 |
| Free | ❌ |
| Startup | ❌ |
| Pro | ✅ Todos os ativos |
Termos que você vai ver
- Ativo subjacente: a ação, ETF ou índice da opção. Ex.:
PETR4. - Vencimento (
expirationDate): a data em que a opção vence. Ex.:2026-05-15. - Preço de exercício / strike: preço combinado na opção. Ex.:
34. - Série: a combinação prática que o mercado negocia. Na resposta da API,
aparece como
symbol,expirationDate,sideestrike. symbol: o ticker da série (ex.:PETRE370), composto pelo ativo subjacente + letra do mês/tipo + identificador do strike (veja abaixo).- Opção de compra (
call): direito de comprar o ativo subjacente. - Opção de venda (
put): direito de vender o ativo subjacente. - Titular: quem compra a opção. Paga o prêmio e exerce o direito se for vantajoso.
- Lançador: quem vende a opção. Recebe o prêmio e assume a obrigação.
- Prêmio: preço pago/recebido pela opção. É o que aparece como
close,bid,askno histórico. - Opção americana: pode ser exercida a qualquer momento até o vencimento (padrão de opções de ações).
- Opção europeia: só pode ser exercida no vencimento (padrão de opções de índice, como IBOV).
Formato do symbol
O ticker de uma série segue o padrão da bolsa brasileira:
{ATIVO}{LETRA_MÊS}{ID_STRIKE}.
- Ativo: as 4 letras do subjacente (ex.:
PETR). - Letra do mês + tipo:
A–Lpara calls (A = janeiro, B = fevereiro, ..., L = dezembro).M–Xpara puts (M = janeiro, N = fevereiro, ..., X = dezembro).
- ID do strike: número de 1 a 3 dígitos atribuído pela bolsa para aquele strike no vencimento.
Exemplos:
PETRE370→ PETR4, call (E= maio), strike mapeado como370.PETRQ28→ PETR4, put (Q= maio), strike mapeado como28.
O ID do strike não é o valor em reais. Para saber o strike em reais,
use /api/v2/options/chain ou /api/v2/options/strikes.
Início rápido
Exemplo completo do fluxo vencimentos → séries negociadas → histórico para
opções de PETR4.
# 1) Descubra os vencimentos disponíveis
curl "https://brapi.dev/api/v2/options/expirations?underlying=PETR4"
# 2) Liste as séries negociadas em um vencimento
curl "https://brapi.dev/api/v2/options/chain?underlying=PETR4&expirationDate=2026-05-15"
# 3) Consulte o histórico de uma série específica
curl "https://brapi.dev/api/v2/options/historical?symbol=PETRE370&expirationDate=2026-05-15"const BASE = 'https://brapi.dev/api/v2/options';
const token = process.env.BRAPI_TOKEN; // dispensável para PETR4 no sandbox
const headers = token ? { Authorization: `Bearer ${token}` } : undefined;
// 1) Vencimentos
const expirations = await fetch(
`${BASE}/expirations?underlying=PETR4`,
{ headers },
).then((r) => r.json());
const nextExpiration = expirations.expirations[0];
// 2) Séries negociadas no vencimento
const chain = await fetch(
`${BASE}/chain?underlying=PETR4&expirationDate=${nextExpiration}`,
{ headers },
).then((r) => r.json());
// 3) Histórico da série ATM mais próxima
const series = chain.options[0];
const history = await fetch(
`${BASE}/historical?symbol=${series.symbol}&expirationDate=${series.expirationDate}`,
{ headers },
).then((r) => r.json());
console.log(history);import os
import requests
BASE = "https://brapi.dev/api/v2/options"
token = os.getenv("BRAPI_TOKEN") # dispensável para PETR4 no sandbox
headers = {"Authorization": f"Bearer {token}"} if token else {}
# 1) Vencimentos
expirations = requests.get(
f"{BASE}/expirations", params={"underlying": "PETR4"}, headers=headers
).json()
next_exp = expirations["expirations"][0]
# 2) Séries negociadas no vencimento
chain = requests.get(
f"{BASE}/chain",
params={"underlying": "PETR4", "expirationDate": next_exp},
headers=headers,
).json()
# 3) Histórico da primeira série
series = chain["options"][0]
history = requests.get(
f"{BASE}/historical",
params={"symbol": series["symbol"], "expirationDate": series["expirationDate"]},
headers=headers,
).json()
print(history)Fluxo recomendado
Descubra os vencimentos
Comece em /api/v2/options/expirations quando
você só sabe o ativo, como PETR4, e ainda não sabe qual vencimento usar.
Descubra os preços de exercício
Depois de escolher o vencimento, use
/api/v2/options/strikes para saber
quais strikes existem naquele vencimento.
Liste as séries negociadas
Use /api/v2/options/chain para montar a tela que a
maioria das pessoas espera ver: séries negociadas por vencimento, com preço
e volume.
Busque o histórico de uma série
Quando você já sabe qual série quer acompanhar, use
/api/v2/options/historical com symbol e
expirationDate. Se precisar, informe também strike.
Casos de uso mais comuns
- Tela simples de opções no seu app:
expirations -> chain - Filtro por strike:
expirations -> strikes -> chain - Gráfico de uma opção específica:
chain -> historical - Backtest ou persistência diária: escolher a série via
chaine depois buscar o histórico emhistorical
Quando você pode pular etapas
- Se você já sabe o vencimento, pode ir direto para
strikesouchain. - Se você já sabe a série, pode ir direto para
historical. - Se você quer só montar uma tela simples por vencimento, pode pular
strikese ir direto parachain.
Perguntas frequentes
Receitas prontas
Guias e tutoriais publicados no blog com código pronto para copiar:
Opções para iniciantes
Entenda calls, puts, strikes e vencimentos do zero, em português.
Covered call passo a passo
Como usar opções para gerar renda extra sobre ações que você já tem.
Backtesting com Python
Puxe histórico da brapi e teste estratégias em notebook Python.
Limitações conhecidas e o que vem por aí
Hoje, a API não entrega:
- Cotação intraday (time & sales, snapshot do livro).
- Gregas (delta, gamma, vega, theta, rho).
- Volatilidade implícita e superfície de vol.
- Interesse em aberto (open interest).
- Opções flexíveis (FLEX) e exercício antecipado detalhado.
No roadmap:
- Gregas e volatilidade implícita calculadas.
- Snapshots intraday durante o pregão.
- Interesse em aberto por série.
Se algo aqui é bloqueante para o seu caso, conta pra gente pelo suporte — a ordem de prioridade depende muito do que os clientes pedem.
Sandbox sem token
Para facilitar a experimentação, todos os endpoints de opções aceitam consultas no sandbox sem token, restritas a opções de PETR4:
GET /api/v2/options/expirations,/strikese/chain: apenas comunderlying=PETR4.GET /api/v2/options/historical: apenas comsymbolcomeçando comPETR(ou seja, opções do subjacente PETR4).
Para qualquer outro ativo, é necessário autenticar com um token do plano Pro.