# brapi - API de ações da bolsa de valores brasileira
**URL:** https://brapi.dev/
## Sobre a brapi
Acesse o mercado financeiro em poucos segundos. A API mais confiável do Brasil entrega preços históricos (OHLCV), dividendos detalhados e fundamentos completos para seus apps e estratégias financeiras — integrada em minutos.
* **Documentação clara e objetiva**
* **API simples e completa**
* **Fácil de usar, rápida e estável**
---
## Exemplo de Uso (Cotação)
### Requisição
```bash
curl https://brapi.dev/api/quote/PETR4
```
### Resposta
```json
{
"results": [
{
"currency": "BRL",
"marketCap": 406927019658,
"shortName": "PETROBRAS PN EDR N2",
"longName": "Petróleo Brasileiro S.A. - Petrobras",
"regularMarketChange": 0.82,
"regularMarketChangePercent": 2.734,
"regularMarketTime": "2025-05-02T20:07:46.000Z",
"regularMarketPrice": 30.81,
"regularMarketDayHigh": 30.81,
"regularMarketDayRange": "29.97 - 30.81",
"regularMarketDayLow": 29.97,
"regularMarketVolume": 32881800,
"regularMarketPreviousClose": 29.99,
"regularMarketOpen": 30.29,
"fiftyTwoWeekRange": "29.96 - 42.09",
"fiftyTwoWeekLow": 29.96,
"fiftyTwoWeekHigh": 42.09,
"symbol": "PETR4",
"priceEarnings": 10.864275891251454,
"earningsPerShare": 2.8358848,
"logourl": "https://icons.brapi.dev/icons/PETR4.svg"
}
],
"requestedAt": "2025-05-04T01:30:20.521Z",
"took": "8ms"
}
```
---
## Empresas e Parceiros que utilizam
* Banco Banestes
* Toro Investimentos
* Suno Research
* Grupo Primo
* PicPay
* A Supernova
---
## Principais Funcionalidades
### Análise Fundamentalista
Balanços, DREs e múltiplos direto da CVM, sem bagunça ou parsing manual. Balanço Patrimonial, Demonstrativo de Resultados, Fluxo de Caixa, Valor Adicionado, Dados financeiros e Indicadores financeiros.
### Preços Históricos (OHLCV)
Séries completas para backtests e gráficos que impressionam.
### Dividendos Detalhados
Datas com, ex e pagamento — otimize sua renda passiva com dados completos.
### Moedas e Criptomoedas
Taxas de câmbio e preços históricos de criptomoedas atualizados.
### Inflação e Taxa Selic histórica
Dados de inflação, como IPCA e IGP-M, para análises econômicas e financeiras.
---
## Exemplo de Dados Fundamentalistas (WEGE3)
### Requisição
```bash
curl https://brapi.dev/api/quote/WEGE3?modules=balanceSheetHistory,balanceSheetHistoryQuarterly
```
### Resposta (Estrutura de Dados)
```json
{
"symbol": "WEGE3", // Símbolo do ativo
"balanceSheetHistory": [ // Histórico Anual do Balanço Patrimonial
{
"type": "yearly", // Tipo (Periodicidade: Anual)
"endDate": "2024-12-31", // Data de Fim do Período
"cash": 7347599000, // Caixa e Equivalentes de Caixa
"shortTermInvestments": 648477000, // Investimentos de Curto Prazo
"netReceivables": 7394411000, // Contas a Receber Líquidas
"inventory": 9903951000, // Estoques
"otherCurrentAssets": 1109507000, // Outros Ativos Circulantes
"totalCurrentAssets": 27221359000, // Total de Ativos Circulantes
"longTermInvestments": 71808000, // Investimentos de Longo Prazo
"propertyPlantEquipment": 9933659000, // Imobilizado
"otherAssets": 14268342000, // Outros Ativos Não Circulantes
"totalAssets": 41489701000, // Total de Ativos
"accountsPayable": 3778116000, // Contas a Pagar (Fornecedores)
"shortLongTermDebt": 2850956000, // Dívida de Curto Prazo
"longTermDebt": 744281000, // Dívida de Longo Prazo
"otherLiab": 1212384000, // Outros Passivos Não Circulantes
"totalCurrentLiabilities": 15454265000, // Total de Passivos Circulantes
"totalLiab": 41489701000, // Total de Passivos
"commonStock": 7504517000, // Capital Social
"retainedEarnings": null, // Lucros Retidos / Prejuízos Acumulados
"treasuryStock": null, // Ações em Tesouraria
"otherStockholderEquity": -155191000, // Outros Componentes do Patrimônio Líquido
"totalStockholderEquity": 23125217000, // Total do Patrimônio Líquido
"netTangibleAssets": null, // Ativos Tangíveis Líquidos
"goodWill": null, // Goodwill (Ágio)
"intangibleAssets": 2820655000, // Ativos Intangíveis
"deferredLongTermAssetCharges": null, // Encargos Diferidos de Ativos LP
"deferredLongTermLiab": 170520000, // Passivos Fiscais Diferidos LP
"minorityInterest": 920996000, // Participação de Não Controladores
"capitalSurplus": null, // Reservas de Capital
"accountsReceivableFromClients": 7394411000, // Contas a Receber de Clientes
"taxesToRecover": 817414000, // Impostos a Recuperar
"longTermAssets": 14268342000, // Total do Ativo Não Circulante
"longTermRealizableAssets": 1442220000, // Ativo Realizável a Longo Prazo
"longTermDeferredTaxes": 1141821000, // Tributos Diferidos (Ativo Não Circulante)
"shareholdings": 71808000, // Participações Societárias
"otherNonCurrentAssets": 283265000, // Outros Ativos Não Circulantes (detalhe)
"nonCurrentAssets": 20785497000, // Total do Ativo Não Circulante (sinônimo de longTermAssets)
"shareholdersEquity": 23125217000, // Patrimônio Líquido (sinônimo de totalStockholderEquity)
"realizedShareCapital": 7504517000, // Capital Social Realizado (sinônimo de commonStock)
"capitalReserves": -155191000, // Reservas de Capital (sinônimo de capitalSurplus)
"revaluationReserves": 3631000, // Reservas de Reavaliação
"profitReserves": 11466140000, // Reservas de Lucros
"equityValuationAdjustments": 277498000, // Ajustes de Avaliação Patrimonial
"otherComprehensiveResults": 3107626000, // Outros Resultados Abrangentes
"currentLiabilities": 15454265000, // Total do Passivo Circulante (sinônimo de totalCurrentLiabilities)
"socialAndLaborObligations": 728469000, // Obrigações Sociais e Trabalhistas
"providers": 3778116000, // Fornecedores (sinônimo de accountsPayable)
"taxObligations": 799564000, // Obrigações Fiscais (Circulante)
"loansAndFinancing": 2850956000, // Empréstimos e Financiamentos (Circulante)
"loansAndFinancingInNationalCurrency": 6089000, // Empréstimos e Financiamentos (Moeda Nacional)
"loansAndFinancingInForeignCurrency": 2844867000, // Empréstimos e Financiamentos (Moeda Estrangeira)
"otherObligations": 4330000, // Outras Obrigações (Circulante)
"nonCurrentLiabilities": 2910219000, // Total do Passivo Não Circulante
"longTermLoansAndFinancing": 744281000, // Empréstimos e Financiamentos (Não Circulante)
"longTermLoansAndFinancingInNationalCurrency": 248894000, // Empréstimos e Financiamentos LP (Moeda Nacional)
"longTermLoansAndFinancingInForeignCurrency": 495387000, // Empréstimos e Financiamentos LP (Moeda Estrangeira)
"otherLongTermObligations": 1212384000, // Outras Obrigações (Não Circulante)
"longTermProvisions": 783034000, // Provisões (Não Circulante)
"updatedAt": "2024-12-31" // Atualizado Em
}
],
"balanceSheetHistoryQuarterly": [
// Estrutura similar à anual, mas com type: "quarterly"
]
}
```
---
## Casos de Uso
1. **Integração de Dados do Mercado Financeiro:** Conecte cotações, históricos e fundamentos em seus apps, planilhas ou sistemas com nossa API REST.
2. **Análises Históricas e Backtesting:** Acesse séries temporais detalhadas (OHLCV) para backtests precisos.
3. **Dashboards e Aplicações:** Desenvolva rastreadores de portfólio ou plataformas de análise.
4. **Integração com IA (MCP):** Conecte dados financeiros diretamente em assistentes de IA como Cursor, Claude e VS Code via Model Context Protocol.
### Exemplo de Log de Aplicação
```text
[2023-12-15 14:23:45] INFO Iniciando análise de dados históricos.
[2023-12-15 14:23:47] ACTION Obtendo série histórica OHLCV...
[2023-12-15 14:23:50] DECISION Análise de padrões. Confiança: 85%
[2023-12-15 14:23:52] WARNING Anomalia detectada em indicadores.
[2023-12-15 14:23:55] ERROR Backtest concluído. Resultado disponível.
```
---
## Planos e Preços
### Gratuito
**R$ 0/ano**
Ideal para testar a API, projetos pessoais ou acadêmicos.
* Até 15.000 requisições por mês
* Consulta de 1 ativo por requisição
* Dados históricos de cotações dos últimos 3 meses
* Acesso instantâneo com dados atualizados a cada 30 minutos
* Dados Fundamentalistas Profundos (BP, DRE, DFC)
* Histórico Completo de Dividendos
### Startup
**R$ 59,99/mes**
**R$ 599,90/ano** (Economize 2 meses no plano anual)
Ideal para desenvolvedores e investidores que precisam de mais profundidade.
* Volume: 150.000 requisições/mês
* Consultas Múltiplas: Até 10 ativos por requisição
* Dados atualizados a cada 15 minutos
* Histórico de Cotações: Último ano completo
* Dados Fundamentalistas Anuais (últimos 5 anos) e DREs anuais
* Dados Fundamentalistas Trimestrais e Histórico Profundo (desde 2009)
### Pro (Mais Popular)
**R$ 99,99/mês**
**R$ 999,90/ano** (Economize 2 meses no plano anual)
A escolha definitiva para análises profundas e uso profissional.
* Volume: 500.000 requisições/mês
* Consultas Múltiplas: Até 20 ativos por requisição
* Dados atualizados a cada 5 minutos
* Dados Fundamentalistas Completos (BP, DRE, DFC, DVA desde 2009)
* Histórico de Cotações Extenso: 10+ anos
* Indicadores Financeiros Avançados Prontos (P/L, P/VP, ROE, etc.)
* Suporte Técnico Prioritário Dedicado
---
## Integração
Nossa API REST suporta qualquer linguagem de programação. Exemplos comuns incluem:
* JavaScript
* Java
* Go
* Python
* TypeScript
---
## Blog e Tutoriais Recentes
* **Como Usar a API da B3 com Python: Guia Prático 2025:** Aprenda a integrar a API brapi.dev com Python usando requests, Pandas e Flask.
* **API B3 com TypeScript e JavaScript:** Guia completo de integração usando fetch, Axios, Next.js e Node.js.
* **Como Importar Cotações da B3 no Excel:** Tutorial usando Power Query e VBA.
---
## Informações Legais e Rodapé
**ASL TECNOLOGIA LTDA 2025**
CNPJ: 41.182.041/0001-23
Parceiro Microsoft for Startups
**Fontes de Dados:** CVM, BCB, Tesouro Direto, B3.
**Isenção de Responsabilidade:** A Brapi fornece informações estritamente informativas provenientes de fontes públicas. Não fornecemos orientações de compra ou venda. Não nos responsabilizamos por decisões financeiras tomadas com base nas informações disponibilizadas. Recomendamos consultoria financeira independente.
```
# Comece a Usar a API da brapi.dev
URL: /docs.mdx
Guia completo para começar a usar a API da brapi.dev. Aprenda sobre autenticação, endpoints principais e veja exemplos práticos para integrar dados financeiros do Brasil em suas aplicações.
***
title: 'Comece a Usar a API da brapi.dev'
description:
'Guia completo para começar a usar a API da brapi.dev. Aprenda sobre
autenticação, endpoints principais e veja exemplos práticos para integrar
dados financeiros do Brasil em suas aplicações.'
howToSteps:
* name: 'Obtenha sua chave de API (opcional para teste)'
text: 'Para testar, use as 4 ações gratuitas (PETR4, MGLU3, VALE3, ITUB4) sem token. Para produção, crie uma conta no dashboard para gerar seu token.'
* name: 'Faça sua primeira requisição'
text: 'Execute curl "[https://brapi.dev/api/quote/PETR4](https://brapi.dev/api/quote/PETR4)" no terminal para testar sem token, ou adicione o header Authorization: Bearer SEU\_TOKEN para acessar todas as ações.'
* name: 'Receba os dados em JSON'
text: 'A API retorna um objeto JSON com array results contendo symbol, regularMarketPrice, regularMarketChangePercent e outros dados da cotação.'
howToTools:
* 'Terminal ou linha de comando'
* 'cURL ou cliente HTTP'
* 'Navegador web'
howToSupplies:
* 'Conta brapi.dev (opcional para teste)'
* 'Token de API brapi.dev (opcional para teste)'
***
import { Callout } from 'fumadocs-ui/components/callout';
import { Card, Cards } from 'fumadocs-ui/components/card';
import { Step, Steps } from 'fumadocs-ui/components/steps';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
A **brapi.dev** é uma API REST completa para o mercado financeiro brasileiro.
Fornecemos dados em tempo real e históricos de ações, FIIs, BDRs, ETFs,
criptomoedas, câmbio e indicadores econômicos. Nossos dados são obtidos de
fontes oficiais: **B3** (cotações), **CVM** (demonstrações financeiras),
**IBGE** (inflação) e **Banco Central do Brasil** (SELIC, câmbio).
Bem-vindo à documentação da **brapi.dev**. Nossa API foi projetada para ser
**simples, robusta e confiável**, permitindo que você integre dados financeiros
do mercado brasileiro em suas aplicações com o mínimo de esforço.
Este guia vai te mostrar como fazer sua primeira requisição em minutos.
## Teste Agora - Sem Cadastro!
Para facilitar o desenvolvimento e testes, você pode experimentar nossa API
**imediatamente** com estas 4 ações brasileiras populares - **sem precisar de
token ou cadastro**:
**PETR4** (Petrobras) • **MGLU3** (Magazine Luiza) • **VALE3** (Vale) •
**ITUB4** (Itaú)
```bash title="Experimente agora mesmo!"
# Cotação simples - funciona sem token
curl "https://brapi.dev/api/quote/PETR4"
# Múltiplas ações com histórico
curl "https://brapi.dev/api/quote/PETR4,VALE3,MGLU3?range=1mo&interval=1d"
# Com dados fundamentalistas e dividendos
curl "https://brapi.dev/api/quote/ITUB4?fundamental=true÷nds=true"
```
Essas ações têm **acesso completo** a todos os recursos da API, incluindo dados
históricos, módulos avançados e dividendos!
#### Obtenha sua Chave de API (Token) - Opcional para Teste
**Para testar:** Use as 4 ações gratuitas (PETR4, MGLU3, VALE3, ITUB4) sem precisar de token.
**Para produção:** Crie sua conta em nosso dashboard para gerar seu token e acessar todas as +4.000 ações disponíveis.
Seu token estará disponível na seção "Chaves de API" do seu **[Dashboard](/dashboard)** após o login.
#### Faça sua Primeira Requisição
**Teste sem token (ações gratuitas):**
```bash title="Terminal (cURL) - Teste Imediato"
curl "https://brapi.dev/api/quote/PETR4"
```
**Com token (todas as ações):**
```bash title="Terminal (cURL) - Produção"
curl --request GET \
--url 'https://brapi.dev/api/quote/PETR4' \
--header 'Authorization: Bearer SEU_TOKEN'
```
#### Receba os Dados
Pronto! Você receberá uma resposta em formato JSON, estruturada e pronta para ser utilizada.
```jsonc title="Resposta da API (JSON)"
{
"results": [
{
"symbol": "PETR4",
"shortName": "PETROBRAS PN",
"longName": "Petróleo Brasileiro S.A. - Petrobras",
"currency": "BRL",
"regularMarketPrice": 38.50,
"regularMarketDayHigh": 39.00,
"regularMarketDayLow": 38.20,
"regularMarketChange": 0.30,
"regularMarketChangePercent": 0.78,
"regularMarketTime": "2024-10-26T17:08:00.000Z",
"marketCap": 503100000000,
"regularMarketVolume": 45678901,
"logourl": "https://icons.brapi.dev/logos/PETR4.png",
}
]
}
```
## Autenticação
Todas as requisições à API devem ser autenticadas. Recomendamos enviar seu token
através do header `Authorization` por ser mais seguro.
`Authorization: Bearer SEU_TOKEN `
`?token=SEU_TOKEN`
Nunca exponha seu token no código do lado do cliente (frontend). Em aplicações
web, faça as chamadas para a API da brapi.dev a partir do seu backend.
## Principais Conceitos
* **URL Base:** Todas as requisições usam a URL base `https://brapi.dev/api`.
* **Múltiplos Ativos:** A maioria dos endpoints permite a consulta de múltiplos
ativos em uma única requisição, separando os tickers por vírgula. Ex:
`PETR4,VALE3,MGLU3`.
* **Módulos Adicionais:** Use o parâmetro `modules` para enriquecer suas
respostas com dados fundamentalistas e mais (disponível conforme seu plano).
## Explore Nossos Endpoints
Navegue pelas seções para descobrir todos os dados que você pode acessar.
## SDKs Oficiais
Use nossas bibliotecas oficiais para integração mais rápida e fácil com tipos completos e retry automático.
**Por que usar as SDKs?**
* ✅ **60% menos código** - Sintaxe simples e direta
* ✅ **Tipos completos** - IntelliSense e autocomplete
* ✅ **Retry automático** - Tratamento inteligente de falhas
* ✅ **Erros tipados** - Exceções específicas por status
## Exemplos Práticos
Veja como é fácil buscar dados em diferentes linguagens.
```typescript
import Brapi from 'brapi';
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
// Buscar cotações - Tipos completos!
const quote = await client.quote.retrieve('PETR4,VALE3');
console.log(quote.results[0].regularMarketPrice);
// Com múltiplos ativos
const quotes = await client.quote.retrieve('ITUB4,BBDC4,MGLU3');
quotes.results.forEach(stock => {
console.log(`${stock.symbol}: R$ ${stock.regularMarketPrice}`);
});
```
📚 [Ver documentação completa da SDK TypeScript](/docs/sdks/typescript)
```python
from brapi import Brapi
client = Brapi(api_key="seu_token")
# Buscar cotações - Type hints completos!
quote = client.quote.retrieve(tickers="PETR4,VALE3")
print(quote.results[0].regular_market_price)
# Com múltiplos ativos
quotes = client.quote.retrieve(tickers="ITUB4,BBDC4,MGLU3")
for stock in quotes.results:
print(f"{stock.symbol}: R$ {stock.regular_market_price}")
```
📚 [Ver documentação completa da SDK Python](/docs/sdks/python)
```bash
# Teste imediato - ações gratuitas (sem token)
curl "https://brapi.dev/api/quote/PETR4,MGLU3"
# Com histórico e módulos avançados
curl "https://brapi.dev/api/quote/VALE3?range=1mo&interval=1d&modules=summaryProfile"
```
```bash
# Qualquer ação (com token)
curl -H "Authorization: Bearer SEU_TOKEN" \
"https://brapi.dev/api/quote/ITUB4,BBDC4?range=1mo&interval=1d"
```
```python
import requests
# Para ações de teste (sem token)
url = "https://brapi.dev/api/quote/PETR4,MGLU3"
response = requests.get(url, params={"range": "1mo", "interval": "1d"})
# Para outras ações (com token)
token = "SEU_TOKEN"
url = "https://brapi.dev/api/quote/ITUB4,BBDC4"
response = requests.get(
url,
headers={"Authorization": f"Bearer {token}"},
params={"range": "1mo", "interval": "1d"}
)
if response.status_code == 200:
data = response.json()
print(data['results'])
else:
print(f"Erro: {response.status_code}")
```
```javascript
// Para ações de teste (sem token)
const testUrl = 'https://brapi.dev/api/quote/PETR4,VALE3?range=1mo&interval=1d';
async function fetchTestQuotes() {
try {
const response = await fetch(testUrl);
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
console.log(data.results);
} catch (error) {
console.error('Falha ao buscar cotações de teste:', error);
}
}
// Para outras ações (com token)
const token = 'SEU_TOKEN';
const url = 'https://brapi.dev/api/quote/ITUB4,BBDC4?range=1mo&interval=1d';
async function fetchQuotes() {
try {
const response = await fetch(url, {
headers: { 'Authorization': `Bearer ${token}` }
});
if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
const data = await response.json();
console.log(data.results);
} catch (error) {
console.error('Falha ao buscar cotações:', error);
}
}
```
## Próximos Passos
Agora que você já entendeu o básico, o que acha de explorar mais a fundo?
* **[Use nossas SDKs oficiais](/docs/sdks):** Integração mais rápida com tipos completos e retry automático (TypeScript e Python).
* **[Explore os endpoints de Ações](/docs/acoes):** A seção mais completa, com dados fundamentalistas e dividendos.
* **[Veja todos os exemplos](/docs/examples):** Descubra como aplicar a API em casos de uso mais complexos.
# Servidor MCP para IAs
URL: /docs/mcp.mdx
Como integrar a Brapi com assistentes de IA usando o Model Context Protocol (MCP)
***
title: Servidor MCP para IAs
description:
Como integrar a Brapi com assistentes de IA usando o Model Context Protocol
(MCP)
howToSteps:
* name: 'Obtenha os requisitos'
text: 'Certifique-se de ter Node.js >= v18.0.0, um cliente MCP compatível (Cursor, Claude Desktop, VS Code, Windsurf, Cline ou Zed) e um token da API Brapi (gratuito em brapi.dev).'
* name: 'Configure o servidor MCP no seu cliente'
text: 'Edite o arquivo de configuração do seu cliente MCP (ex: \~/.cursor/mcp.json para Cursor, claude\_desktop\_config.json para Claude Desktop) e adicione a configuração do servidor brapi com seu token.'
* name: 'Substitua SEU\_TOKEN pela sua chave API'
text: 'No arquivo de configuração, substitua "SEU\_TOKEN" pela chave de API que você obteve no dashboard da brapi.dev.'
* name: 'Reinicie seu cliente MCP'
text: 'Feche e reabra seu cliente (Cursor, Claude Desktop, VS Code, etc.) para carregar a nova configuração do servidor MCP.'
* name: 'Faça consultas financeiras em linguagem natural'
text: 'Agora você pode fazer perguntas como "Analise o desempenho da PETR4 no último mês" e o assistente usará automaticamente a API brapi.dev para buscar dados atualizados.'
howToTools:
* 'Node.js >= v18.0.0'
* 'Cliente MCP (Cursor, Claude Desktop, VS Code, Windsurf, Cline ou Zed)'
* 'npx ou bunx'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
O **Model Context Protocol (MCP)** é um protocolo que permite aos assistentes de
IA acessar dados externos em tempo real. O servidor MCP da Brapi fornece
integração direta com dados financeiros brasileiros, permitindo que LLMs
consultem cotações, históricos e indicadores econômicos atualizados durante
conversas.
## O que é o MCP da Brapi
O servidor MCP da Brapi é uma implementação do Model Context Protocol que expõe
as funcionalidades da API Brapi para assistentes de IA compatíveis. Através
dele, você pode:
* Consultar cotações de ações da B3 em tempo real
* Obter dados históricos e análises fundamentalistas
* Acessar preços de criptomoedas e taxas de câmbio
* Consultar indicadores econômicos brasileiros
### Funcionamento
Quando configurado, o servidor MCP permite que assistentes de IA façam consultas
como:
```txt
Analise o desempenho da PETR4 no último mês
```
```txt
Compare as principais ações do Ibovespa hoje
```
O assistente automaticamente utiliza as ferramentas MCP para buscar dados
atualizados da Brapi e fornecer respostas precisas.
## Instalação
### Requisitos
* Node.js >= v18.0.0
* Cliente MCP compatível (Cursor, Claude Desktop, VS Code, Windsurf, etc.)
* Token da API Brapi ([obtenha gratuitamente](https://brapi.dev))
### Cursor
Configure o servidor MCP editando o arquivo `~/.cursor/mcp.json` (global) ou
`.cursor/mcp.json` (projeto específico).
**Configuração:**
```json
{
"mcpServers": {
"brapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer ${BRAPI_API_KEY}"
],
"env": {
"BRAPI_API_KEY": "SEU_TOKEN"
}
}
}
}
```
### Claude Desktop
Edite o arquivo de configuração `claude_desktop_config.json`:
```json
{
"mcpServers": {
"brapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
]
}
}
}
```
### VS Code
Configure no arquivo de configuração MCP do VS Code:
```json
{
"mcp": {
"servers": {
"brapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
]
}
}
}
}
```
### Windsurf
Configure no arquivo de configuração MCP do Windsurf:
```json
{
"mcpServers": {
"brapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer ${BRAPI_API_KEY}"
],
"env": {
"BRAPI_API_KEY": "SEU_TOKEN"
}
}
}
}
```
### Cline
**Configuração:**
```json
{
"mcpServers": {
"brapi": {
"command": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
],
"disabled": false,
"autoApprove": []
}
}
}
```
### Zed
Configure no arquivo `settings.json` do Zed:
```json
{
"context_servers": {
"Brapi": {
"command": {
"path": "npx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
]
},
"settings": {}
}
}
}
```
**Obtendo sua Chave da API**
1. Acesse [brapi.dev](https://brapi.dev) e crie uma conta
2. No dashboard, gere uma chave da API
3. Substitua `SEU_TOKEN` pela sua chave
## Ferramentas Disponíveis
O servidor MCP expõe as seguintes ferramentas para assistentes de IA:
### Ferramentas Públicas (Sem Autenticação)
* `get_available_stocks` - Lista ações e índices brasileiros com filtros
avançados (setor, tipo, busca, ordenação)
* `get_available_currencies` - Lista pares de moedas disponíveis
* `get_available_cryptocurrencies` - Lista criptomoedas disponíveis
* `get_available_inflation_countries` - Lista países com dados de inflação
### Ferramentas Premium (Chave da API Obrigatória)
* `get_stock_quotes` - Cotações e dados históricos de ações
* `get_currency_rates` - Taxas de câmbio em tempo real
* `get_crypto_prices` - Preços de criptomoedas
* `get_inflation_data` - Dados de inflação
* `get_prime_rate_data` - Dados da taxa básica de juros
### Autenticação
O servidor MCP suporta os mesmos métodos de autenticação da API REST:
* **Header Authorization:** `Authorization: Bearer sua_chave_api` (recomendado)
* **Header Authorization:** `Authorization: sua_chave_api`
* **Query parameter:** `?token=sua_chave_api`
## Dicas de Uso
### Regras Automáticas
Configure regras no seu cliente para invocar automaticamente a Brapi em
consultas financeiras:
**Windsurf (`.windsurfrules`):**
```toml
[[calls]]
match = "quando o usuário solicita dados financeiros, cotações de ações, preços de criptomoedas ou análise de mercado"
tool = "brapi"
```
**Cursor:** Configure em `Settings > Rules`
### Especifique Símbolos
Para consultas mais eficientes, mencione os tickers diretamente:
```txt
Analise o desempenho da PETR4 nos últimos 3 meses e compare com VALE3
```
### Filtros Avançados
A ferramenta `get_available_stocks` suporta filtros avançados que permitem
consultas mais específicas:
**Por Setor:**
* `Finance` - Bancos e instituições financeiras
* `Energy Minerals` - Petróleo e energia
* `Technology Services` - Empresas de tecnologia
* `Health Services` - Saúde e medicina
* `Retail Trade` - Comércio varejista
* `Utilities` - Energia elétrica e saneamento
**Por Tipo:**
* `stock` - Ações ordinárias e preferenciais
* `fund` - Fundos imobiliários (FIIs)
* `bdr` - Brazilian Depositary Receipts
**Ordenação:**
* `volume` - Volume de negociação
* `market_cap_basic` - Valor de mercado
* `change` - Variação percentual
* `close` - Preço de fechamento
* `name` - Ordem alfabética
## Exemplos de Consultas
Com o MCP configurado, você pode fazer perguntas naturais como:
### Análise de Ações
```txt
"Analise o desempenho das ações da Petrobras (PETR4) no último mês e compare com o setor de energia"
```
```txt
"Quais são as 5 ações com melhor performance no Ibovespa hoje?"
```
```txt
"Mostre o histórico de dividendos da Vale (VALE3) nos últimos 2 anos"
```
### Câmbio e Economia
```txt
"Qual é a taxa de câmbio atual USD-BRL e como ela se compara com a média dos últimos 30 dias?"
```
```txt
"Mostre as principais moedas em relação ao Real brasileiro hoje"
```
### Criptomoedas
```txt
"Qual é o preço atual do Bitcoin em Real brasileiro?"
```
```txt
"Compare os preços das principais criptomoedas (BTC, ETH, ADA) em BRL"
```
### Descoberta de Mercado
```txt
"Mostre todas as ações de bancos brasileiros disponíveis"
```
```txt
"Liste as principais empresas de tecnologia listadas na B3"
```
```txt
"Quais são os fundos imobiliários (FIIs) com maior volume de negociação?"
```
```txt
"Mostre as ações do setor de energia ordenadas por valor de mercado"
```
```txt
"Liste todos os BDRs disponíveis ordenados alfabeticamente"
```
O assistente utilizará automaticamente as ferramentas MCP para buscar dados
atualizados.
## Solução de Problemas
### Erros de Módulo Não Encontrado
Se você encontrar `ERR_MODULE_NOT_FOUND`, tente usar `bunx` em vez de `npx`:
```json
{
"mcpServers": {
"brapi": {
"command": "bunx",
"args": [
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer ${BRAPI_API_KEY}"
],
"env": {
"BRAPI_API_KEY": "SEU_TOKEN"
}
}
}
}
```
Isso frequentemente resolve problemas de resolução de módulos em ambientes onde
`npx` não instala ou resolve pacotes adequadamente.
### Problemas de Token de API
**"Token de autenticação obrigatório" (TOKEN\_REQUIRED)**
* Certifique-se de que está fornecendo o cabeçalho Authorization com seu token
* Verifique se seu token está copiado corretamente do dashboard
* Para ferramentas premium, o token é obrigatório
**"Token de API inválido ou expirado" (TOKEN\_INVALID)**
* Verifique se seu token não expirou no dashboard da Brapi
* Regenere seu token se necessário
* Certifique-se de não ter espaços extras no token
### Problemas de TLS/Certificado
Use a flag `--experimental-fetch` para contornar problemas relacionados ao TLS:
```json
{
"mcpServers": {
"brapi": {
"command": "npx",
"args": [
"--node-options=--experimental-fetch",
"mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
]
}
}
}
```
### Erros Gerais do Cliente MCP
1. Tente adicionar `@latest` ao nome do pacote
2. Use `bunx` como alternativa ao `npx`
3. Considere usar `deno` como outra alternativa
4. Certifique-se de estar usando Node.js v18 ou superior para suporte nativo ao
fetch
**Exemplo com Deno:**
```json
{
"mcpServers": {
"brapi": {
"command": "deno",
"args": [
"run",
"--allow-env=NO_DEPRECATION,TRACE_DEPRECATION",
"--allow-net",
"npm:mcp-remote",
"https://brapi.dev/api/mcp/mcp",
"--header",
"Authorization:Bearer SEU_TOKEN"
]
}
}
}
```
## Segurança
O servidor MCP implementa as seguintes práticas de segurança:
* **Autenticação obrigatória** para ferramentas premium
* **Transmissão segura** via HTTPS/TLS
* **Validação de tokens** a cada requisição
* **Validação de parâmetros** de entrada
* **Controle de acesso** baseado no plano de assinatura
## Limites da API
As requisições MCP seguem os mesmos limites da API REST:
* **Plano Gratuito:** Até 15.000 requisições por mês
* **Plano Startup:** Até 150.000 requisições por mês
* **Plano Pro:** Até 500.000 requisições por mês
Consulte os [planos disponíveis](https://brapi.dev/pricing) para mais detalhes
sobre recursos e funcionalidades de cada plano.
## Clientes Compatíveis
O servidor MCP é compatível com qualquer cliente que suporte o protocolo MCP:
* **Cursor** - Editor de código com IA
* **Claude Desktop** - Aplicativo desktop do Anthropic
* **VS Code** - Com extensões MCP
* **Windsurf** - IDE com IA integrada
* **Cline** - Assistente de desenvolvimento
* **Zed** - Editor colaborativo
* **Outros clientes MCP** - Qualquer ferramenta compatível
## Próximos Passos
1. [Obtenha sua chave da API](https://brapi.dev)
2. Configure seu cliente MCP seguindo as instruções acima
3. Comece a fazer consultas financeiras em linguagem natural
**Recursos Relacionados**
* [Documentação da API REST](/docs)
* [Exemplos de integração](/docs/examples)
* [Suporte](https://brapi.dev/contact)
***
**Aviso Legal**
Os dados são fornecidos apenas para fins informativos e não constituem
aconselhamento financeiro. Consulte sempre um profissional qualificado antes de
tomar decisões de investimento.
# Schema OpenAPI
URL: /docs/openapi.mdx
Especificação completa da API brapi em formato OpenAPI 3.0
***
title: 'Schema OpenAPI'
description: 'Especificação completa da API brapi em formato OpenAPI 3.0'
-------------------------------------------------------------------------
import { Button } from '~/components/ui/button'
import { DownloadIcon, EyeIcon } from 'lucide-react'
import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
import schema from '~/public/swagger/latest.json';
A especificação completa da API brapi está disponível no formato OpenAPI 3.0
(anteriormente conhecido como Swagger). Esta documentação técnica contém todos
os endpoints, parâmetros, schemas de resposta e exemplos de uso.
## Download e Visualização
Você pode baixar o arquivo JSON da especificação ou visualizar o arquivo JSON
online.
## Schema Completa
Especificação completa da API brapi em formato OpenAPI 3.0 para dados de ações, moedas, criptomoedas, inflação, etc.
## Como usar esta especificação
### 1. **Ferramentas de Desenvolvimento**
* **Swagger UI**: Visualize e teste a API interativamente
* **Postman**: Importe a especificação para criar coleções automaticamente
* **Insomnia**: Gere requisições baseadas na especificação
* **OpenAPI Generator**: Gere SDKs em diversas linguagens
### 2. **Integração em Projetos**
* **Frontend**: Use para gerar tipos TypeScript automaticamente
* **Backend**: Valide requisições e respostas contra o schema
* **Documentação**: Gere documentação automática para sua aplicação
### 3. **Validação e Testes**
* Valide suas requisições contra o schema oficial
* Use para testes automatizados de integração
* Garanta compatibilidade com futuras versões da API
## Informações Técnicas
* **Versão OpenAPI**: 3.0.0
* **Versão da API**: 3.0.0
* **Formato**: JSON
* **Atualização**: Automática a cada deploy
* **Compatibilidade**: Todas as ferramentas que suportam OpenAPI 3.0+
## Próximos Passos
1. **[Comece com a documentação geral](/docs)** para entender os conceitos
básicos
2. **[Explore os endpoints de ações](/docs/acoes)** para ver exemplos práticos
3. **[Veja exemplos de código](/docs/examples)** em diferentes linguagens
4. **[Configure sua conta](/dashboard)** para obter seu token de API
***
*Esta especificação é gerada automaticamente e sempre reflete o estado atual da
API brapi.*
# Protocolo x402 (Pay-per-Request)
URL: /docs/x402.mdx
Acesse a API da brapi.dev pagando por requisição com USDC na rede Base. Ideal para uso esporádico, agentes de IA e quem prefere pagar com crypto sem criar conta.
***
title: 'Protocolo x402 (Pay-per-Request)'
description:
'Acesse a API da brapi.dev pagando por requisição com USDC na rede Base. Ideal
para uso esporádico, agentes de IA e quem prefere pagar com crypto sem criar
conta.'
-------
import { Callout } from 'fumadocs-ui/components/callout';
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
O **x402** é um protocolo aberto de pagamentos baseado no código de status HTTP
`402 Payment Required`. Ele permite que você acesse endpoints da API pagando por
requisição com **USDC na rede Base**, sem precisar criar conta ou assinar um
plano.
## Por que usar x402?
* **Uso esporádico**: Pague apenas quando usar, sem mensalidade
* **Agentes de IA**: Pagamentos programáticos machine-to-machine
* **Crypto-native**: Pague com USDC, sem cartão de crédito
* **Sem cadastro**: Não precisa de conta, email ou OAuth
| Característica | x402 | Planos Tradicionais |
| -------------- | ------------------------- | ------------------- |
| Cadastro | Não precisa | Obrigatório |
| Pagamento | Por requisição (USDC) | Mensal (cartão/PIX) |
| Ideal para | Uso esporádico, AI agents | Uso frequente |
| Settlement | \~2 segundos (blockchain) | Instantâneo |
## Requisitos
Para usar os endpoints x402, você precisa:
1. **Carteira crypto** com suporte à rede Base (Coinbase Wallet, MetaMask, etc.)
2. **USDC na rede Base** para pagar as requisições
3. **Cliente x402** implementado no seu código (SDK ou biblioteca)
O x402 da brapi.dev opera na **rede Base** (L2 da Coinbase). Certifique-se de
ter USDC na rede correta, não em Ethereum mainnet ou outras redes.
## Como Funciona
O fluxo x402 é simples:
1. Seu cliente faz uma requisição ao endpoint
2. Se não houver pagamento, o servidor responde com `402 Payment Required` e instruções de pagamento
3. Seu cliente prepara e envia o pagamento (assinatura crypto)
4. O servidor verifica o pagamento e retorna os dados
```txt title="Fluxo simplificado"
Cliente → Requisição sem pagamento
Servidor → 402 Payment Required + instruções
Cliente → Requisição com header de pagamento
Servidor → 200 OK + dados
```
## Endpoints Disponíveis
### Endpoints Pagos (x402)
| Endpoint | Descrição | Exemplo |
| -------------------------- | ---------------------- | --------------------------------- |
| `/api/x402/stock-quotes` | Cotações de ações B3 | `?tickers=PETR4,VALE3` |
| `/api/x402/crypto-prices` | Preços de criptomoedas | `?coin=BTC¤cy=BRL` |
| `/api/x402/currency-rates` | Taxas de câmbio | `?currency=USD-BRL` |
| `/api/x402/inflation` | Dados de inflação | `?country=brazil&historical=true` |
| `/api/x402/prime-rate` | Taxa SELIC | `?country=brazil&historical=true` |
### Endpoints Gratuitos (Discovery)
Estes endpoints não requerem pagamento e ajudam a descobrir os dados disponíveis:
| Endpoint | Descrição |
| ----------------------------------------- | ---------------------------------- |
| `/api/x402/available-stocks` | Lista ações disponíveis |
| `/api/x402/available-currencies` | Lista moedas disponíveis |
| `/api/x402/available-cryptocurrencies` | Lista criptomoedas disponíveis |
| `/api/x402/available-inflation-countries` | Lista países com dados de inflação |
## Exemplos de Requisições
### Cotações de Ações
```bash
https://brapi.dev/api/x402/stock-quotes?tickers=PETR4,MGLU3,VALE3&range=1d&interval=1m&modules=summaryProfile÷nds=true
```
**Parâmetros:**
* `tickers` (obrigatório): Símbolos separados por vírgula
* `interval`: Intervalo (1m, 5m, 15m, 1d, 1wk, 1mo)
* `range`: Período (1d, 5d, 1mo, 3mo, 6mo, 1y, 5y, max)
* `modules`: Módulos adicionais (summaryProfile, balanceSheetHistory, etc.)
* `dividends`: Incluir dividendos (true/false)
### Preços de Criptomoedas
```bash
https://brapi.dev/api/x402/crypto-prices?coin=BTC¤cy=BRL&range=1d&interval=1h
```
**Parâmetros:**
* `coin`: Símbolo da cripto (BTC, ETH, etc.)
* `currency`: Moeda de cotação (BRL, USD)
* `range`: Período
* `interval`: Intervalo
### Taxas de Câmbio
```bash
https://brapi.dev/api/x402/currency-rates?currency=USD-BRL
```
**Parâmetros:**
* `currency`: Par de moedas (USD-BRL, EUR-BRL, etc.)
### Inflação
```bash
https://brapi.dev/api/x402/inflation?country=brazil&historical=true&start=01/01/2023&end=31/12/2024&sortBy=date&sortOrder=desc
```
**Parâmetros:**
* `country`: País (brazil)
* `historical`: Dados históricos (true/false)
* `start`: Data inicial (DD/MM/YYYY)
* `end`: Data final (DD/MM/YYYY)
* `sortBy`: Ordenar por (date, value)
* `sortOrder`: Ordem (asc, desc)
### Taxa SELIC
```bash
https://brapi.dev/api/x402/prime-rate?country=brazil&historical=true&start=01/01/2023&end=31/12/2024
```
**Parâmetros:** Mesmos da inflação.
Para `start` e `end`, use o formato **DD/MM/YYYY** (ex: `01/01/2023`).
## Implementando o Cliente x402
Para fazer requisições x402, você precisa implementar o lado do cliente do
protocolo. Existem SDKs disponíveis:
```bash
npm install x402-fetch
```
```typescript
import { createX402Fetch } from 'x402-fetch';
const x402Fetch = createX402Fetch({
walletPrivateKey: process.env.WALLET_PRIVATE_KEY,
});
const response = await x402Fetch(
'https://brapi.dev/api/x402/stock-quotes?tickers=PETR4'
);
const data = await response.json();
```
```bash
pip install x402-python
```
```python
from x402 import X402Client
client = X402Client(private_key=os.environ['WALLET_PRIVATE_KEY'])
response = client.get(
'https://brapi.dev/api/x402/stock-quotes?tickers=PETR4'
)
data = response.json()
```
**Nunca exponha sua chave privada no código-fonte ou frontend.** Use variáveis
de ambiente e mantenha a chave segura no servidor.
## Recursos Adicionais
* [Documentação oficial x402](https://x402.org)
* [Whitepaper x402](https://x402.org/x402-whitepaper.pdf)
* [GitHub x402](https://github.com/coinbase/x402)
* [Guia para Compradores](https://x402.gitbook.io/x402/getting-started/quickstart-for-buyers)
## x402 vs Planos Tradicionais
**Quando usar x402:**
* Você quer testar a API sem compromisso
* Uso esporádico (poucas requisições por mês)
* Você é um agente de IA ou sistema automatizado
* Você prefere pagar com crypto
**Quando usar planos tradicionais:**
* Uso frequente e previsível
* Você precisa de limites de requisição garantidos
* Você prefere pagamento com cartão ou PIX
* Você precisa de suporte prioritário
***
**Próximos Passos**
* [Ver documentação completa da API](/docs)
* [Explorar endpoints de ações](/docs/acoes)
* [Consultar preços e planos tradicionais](/pricing)
# Cotação, Dividendos e Dados Financeiros
URL: /docs/acoes.mdx
Endpoints para consulta de dados relacionados a ativos negociados na B3, como Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA). Permite buscar cotações atuais, dados históricos, informações fundamentalistas (via módulos) e listagens de ativos disponíveis.
***
title: Cotação, Dividendos e Dados Financeiros
description: >-
Endpoints para consulta de dados relacionados a ativos negociados na B3, como
Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações fundamentalistas
(via módulos) e listagens de ativos disponíveis.
full: true
keywords: brapi, api, documentação, ações
openGraph:
title: Cotação, Dividendos e Dados Financeiros
description: >-
Endpoints para consulta de dados relacionados a ativos negociados na B3,
como Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações
fundamentalistas (via módulos) e listagens de ativos disponíveis.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.251Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/quote/{tickers}
toc:
* depth: 2
title: Dados de Ações e Ativos Financeiros
url: '#buscar-cotação-detalhada-de-ativos-financeiros'
structuredData:
headings:
* content: Dados de Ações e Ativos Financeiros
id: buscar-cotação-detalhada-de-ativos-financeiros
contents:
* content: >
Este endpoint é a principal forma de obter informações detalhadas
sobre um ou mais ativos financeiros (ações, FIIs, ETFs, BDRs, índices)
listados na B3, identificados pelos seus respectivos **tickers**.
### Funcionalidades Principais:
* **Cotação Atual:** Retorna o preço mais recente, variação diária,
máximas, mínimas, volume, etc.
* **Dados Históricos:** Permite solicitar séries históricas de
preços usando os parâmetros `range` e `interval`.
* **Dados Fundamentalistas:** Opcionalmente, inclui dados
fundamentalistas básicos (P/L, LPA) com o parâmetro
`fundamental=true`.
* **Dividendos:** Opcionalmente, inclui histórico de dividendos e
JCP com `dividends=true`.
* **Módulos Adicionais:** Permite requisitar conjuntos de dados
financeiros mais aprofundados através do parâmetro `modules` (veja
detalhes abaixo).
### Autenticação:
É **obrigatório** fornecer um token de autenticação válido, seja via
query parameter `token` ou via header `Authorization: Bearer
seu_token`.
### 🧪 Ações de Teste (Sem Autenticação):
Para facilitar o desenvolvimento e teste, as seguintes **4 ações têm
acesso irrestrito** e **não requerem autenticação**:
* **PETR4** (Petrobras PN)
* **MGLU3** (Magazine Luiza ON)
* **VALE3** (Vale ON)
* **ITUB4** (Itaú Unibanco PN)
**Importante:** Você pode consultar essas ações sem token e com acesso
a todos os recursos (históricos, módulos, dividendos). Porém, se
misturar essas ações com outras na mesma requisição, a autenticação
será obrigatória.
### Exemplos de Requisição:
**1. Cotação simples de PETR4 e VALE3 (ações de teste - sem token):**
```bash
curl -X GET "https://brapi.dev/api/quote/PETR4,VALE3"
```
**2. Cotação de MGLU3 com dados históricos do último mês (ação de
teste - sem token):**
```bash
curl -X GET
"https://brapi.dev/api/quote/MGLU3?range=1mo&interval=1d"
```
**3. Cotação de ITUB4 incluindo dividendos e dados fundamentalistas
(ação de teste - sem token):**
```bash
curl -X GET
"https://brapi.dev/api/quote/ITUB4?fundamental=true÷nds=true"
```
**4. Cotação de WEGE3 com Resumo da Empresa e Balanço Patrimonial
Anual (via módulos - requer token):**
```bash
curl -X GET
"https://brapi.dev/api/quote/WEGE3?modules=summaryProfile,balanceSheetHistory&token=SEU_TOKEN"
```
**5. Exemplo de requisição mista (requer token):**
```bash
curl -X GET
"https://brapi.dev/api/quote/PETR4,BBAS3?token=SEU_TOKEN"
```
*Nota: Como BBAS3 não é uma ação de teste, toda a requisição requer
autenticação, mesmo contendo PETR4.*
### Parâmetro `modules` (Detalhado):
O parâmetro `modules` é extremamente poderoso para enriquecer a
resposta com dados financeiros detalhados. Você pode solicitar um ou
mais módulos, separados por vírgula.
**Módulos Disponíveis:**
* `summaryProfile`: Informações cadastrais da empresa (endereço,
setor, descrição do negócio, website, número de funcionários).
* `balanceSheetHistory`: Histórico **anual** do Balanço Patrimonial.
* `balanceSheetHistoryQuarterly`: Histórico **trimestral** do
Balanço Patrimonial.
* `defaultKeyStatistics`: Principais estatísticas da empresa (Valor
de Mercado, P/L, ROE, Dividend Yield, etc.) - **TTM (Trailing Twelve
Months)**.
* `defaultKeyStatisticsHistory`: Histórico **anual** das Principais
Estatísticas.
* `defaultKeyStatisticsHistoryQuarterly`: Histórico **trimestral**
das Principais Estatísticas.
* `incomeStatementHistory`: Histórico **anual** da Demonstração do
Resultado do Exercício (DRE).
* `incomeStatementHistoryQuarterly`: Histórico **trimestral** da
Demonstração do Resultado do Exercício (DRE).
* `financialData`: Dados financeiros selecionados (Receita, Lucro
Bruto, EBITDA, Dívida Líquida, Fluxo de Caixa Livre, Margens) - **TTM
(Trailing Twelve Months)**.
* `financialDataHistory`: Histórico **anual** dos Dados Financeiros.
* `financialDataHistoryQuarterly`: Histórico **trimestral** dos
Dados Financeiros.
* `valueAddedHistory`: Histórico **anual** da Demonstração do Valor
Adicionado (DVA).
* `valueAddedHistoryQuarterly`: Histórico **trimestral** da
Demonstração do Valor Adicionado (DVA).
* `cashflowHistory`: Histórico **anual** da Demonstração do Fluxo de
Caixa (DFC).
* `cashflowHistoryQuarterly`: Histórico **trimestral** da
Demonstração do Fluxo de Caixa (DFC).
**Exemplo de Uso do `modules`:**
Para obter a cotação de BBDC4 junto com seu DRE trimestral e Fluxo de
Caixa anual:
```bash
curl -X GET
"https://brapi.dev/api/quote/BBDC4?modules=incomeStatementHistoryQuarterly,cashflowHistory&token=SEU_TOKEN"
```
### Resposta:
A resposta é um objeto JSON contendo a chave `results`, que é um
array. Cada elemento do array corresponde a um ticker solicitado e
contém os dados da cotação e os módulos adicionais requisitados.
* **Sucesso (200 OK):** Retorna os dados conforme solicitado.
* **Bad Request (400 Bad Request):** Ocorre se um parâmetro for
inválido (ex: `range=invalid`) ou se a formatação estiver incorreta.
* **Unauthorized (401 Unauthorized):** Token inválido ou ausente.
* **Payment Required (402 Payment Required):** Limite de requisições
do plano atual excedido.
* **Not Found (404 Not Found):** Um ou mais tickers solicitados não
foram encontrados.
heading: buscar-cotação-detalhada-de-ativos-financeiros
***
Endpoints para consulta de dados relacionados a ativos negociados na B3, como
**Ações**, **Fundos Imobiliários (FIIs)**, **BDRs**, **ETFs** e **Índices** (ex:
IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações fundamentalistas
(via módulos) e listagens de ativos disponíveis.
**B3** para cotações, **CVM** para demonstrativos financeiros (BP, DRE, DFC, DVA), **BCB** para indicadores econômicos.
# Cotação de todas as ações
URL: /docs/acoes/list.mdx
Endpoints para consulta de dados relacionados a ativos negociados na B3, como Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA). Permite buscar cotações atuais, dados históricos, informações fundamentalistas (via módulos) e listagens de ativos disponíveis.
***
title: Cotação de todas as ações
description: >-
Endpoints para consulta de dados relacionados a ativos negociados na B3, como
Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações fundamentalistas
(via módulos) e listagens de ativos disponíveis.
full: true
keywords: brapi, api, documentação, ações
openGraph:
title: Cotação de todas as ações
description: >-
Endpoints para consulta de dados relacionados a ativos negociados na B3,
como Ações, Fundos Imobiliários (FIIs), BDRs, ETFs e Índices (ex: IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações
fundamentalistas (via módulos) e listagens de ativos disponíveis.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.251Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/quote/list
toc:
* depth: 2
title: Cotações de todas as ações, fundos, índices e BDRs
url: '#cotacoes-de-todas-as-acoes-fundos-indices-e-bdrs'
structuredData:
headings:
* content: Listar e Filtrar Cotações de Ativos
id: cotacoes-de-todas-as-acoes-fundos-indices-e-bdrs
contents:
* content: >-
Obtenha uma lista paginada de cotações de diversos ativos (ações,
FIIs, BDRs) negociados na B3, com opções avançadas de busca, filtragem
e ordenação.
### Funcionalidades:
* **Busca por Ticker:** Filtre por parte do ticker usando `search`.
* **Filtragem por Tipo:** Restrinja a lista a `stock`, `fund` (FII)
ou `bdr` com o parâmetro `type`.
* **Filtragem por Setor:** Selecione ativos de um setor específico
usando `sector`.
* **Ordenação:** Ordene os resultados por diversos campos (preço,
variação, volume, etc.) usando `sortBy` e `sortOrder`.
* **Paginação:** Controle o número de resultados por página
(`limit`) e a página desejada (`page`).
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Listar as 10 ações do setor Financeiro com maior volume, ordenadas
de forma decrescente:**
```bash
curl -X GET
"https://brapi.dev/api/quote/list?sector=Finance&sortBy=volume&sortOrder=desc&limit=10&page=1&token=SEU_TOKEN"
```
**Buscar por ativos cujo ticker contenha 'ITUB' e ordenar por nome
ascendente:**
```bash
curl -X GET
"https://brapi.dev/api/quote/list?search=ITUB&sortBy=name&sortOrder=asc&token=SEU_TOKEN"
```
### Resposta:
A resposta contém a lista de `stocks` (e `indexes` relevantes),
informações sobre os filtros aplicados, detalhes da paginação
(`currentPage`, `totalPages`, `itemsPerPage`, `totalCount`,
`hasNextPage`) e listas de setores (`availableSectors`) e tipos
(`availableStockTypes`) disponíveis para filtragem.
heading: cotacoes-de-todas-as-acoes-fundos-indices-e-bdrs
***
Endpoints para consulta de dados relacionados a ativos negociados na B3, como
**Ações**, **Fundos Imobiliários (FIIs)**, **BDRs**, **ETFs** e **Índices** (ex:
IBOVESPA).
Permite buscar cotações atuais, dados históricos, informações fundamentalistas
(via módulos) e listagens de ativos disponíveis.
# Listar Criptomoedas
URL: /docs/criptomoedas/available.mdx
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta de cotações atuais em diversas moedas fiduciárias, dados históricos e listagem de criptomoedas suportadas pela API.
***
title: Listar Criptomoedas
description: >-
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta de
cotações atuais em diversas moedas fiduciárias, dados históricos e listagem de
criptomoedas suportadas pela API.
full: true
keywords: brapi, api, documentação, criptomoedas
openGraph:
title: Listar Criptomoedas
description: >-
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta
de cotações atuais em diversas moedas fiduciárias, dados históricos e
listagem de criptomoedas suportadas pela API.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.254Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/crypto/available
toc:
* depth: 2
title: Listar Todas as Criptomoedas Disponíveis
url: '#listar-todas-as-criptomoedas-disponíveis'
structuredData:
headings:
* content: Listar Todas as Criptomoedas Disponíveis
id: listar-todas-as-criptomoedas-disponíveis
contents:
* content: >-
Obtenha a lista completa de todas as siglas (tickers) de criptomoedas
que a API Brapi suporta para consulta no endpoint `/api/v2/crypto`.
### Funcionalidade:
* Retorna um array `coins` com as siglas.
* Pode ser filtrado usando o parâmetro `search`.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Listar todas as criptomoedas disponíveis:**
```bash
curl -X GET
"https://brapi.dev/api/v2/crypto/available?token=SEU_TOKEN"
```
**Buscar criptomoedas cujo ticker contenha 'DOGE':**
```bash
curl -X GET
"https://brapi.dev/api/v2/crypto/available?search=DOGE&token=SEU_TOKEN"
```
### Resposta:
A resposta é um objeto JSON com a chave `coins`, contendo um array de
strings com as siglas das criptomoedas (ex: `["BTC", "ETH", "LTC",
"XRP"]`).
heading: listar-todas-as-criptomoedas-disponíveis
***
Endpoints focados na obtenção de dados sobre **Criptomoedas**.
Inclui consulta de cotações atuais em diversas moedas fiduciárias, dados
históricos e listagem de criptomoedas suportadas pela API.
# Cotação de Criptomoedas
URL: /docs/criptomoedas.mdx
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta de cotações atuais em diversas moedas fiduciárias, dados históricos e listagem de criptomoedas suportadas pela API.
***
title: Cotação de Criptomoedas
description: >-
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta de
cotações atuais em diversas moedas fiduciárias, dados históricos e listagem de
criptomoedas suportadas pela API.
full: true
keywords: brapi, api, documentação, criptomoedas
openGraph:
title: Cotação de Criptomoedas
description: >-
Endpoints focados na obtenção de dados sobre Criptomoedas. Inclui consulta
de cotações atuais em diversas moedas fiduciárias, dados históricos e
listagem de criptomoedas suportadas pela API.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.254Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/crypto
toc:
* depth: 2
title: Buscar Cotação Detalhada de Criptomoedas
url: '#buscar-cotação-detalhada-de-criptomoedas'
structuredData:
headings:
* content: Buscar Cotação Detalhada de Criptomoedas
id: buscar-cotação-detalhada-de-criptomoedas
contents:
* content: >-
Obtenha cotações atualizadas e dados históricos para uma ou mais
criptomoedas.
### Funcionalidades:
* **Cotação Múltipla:** Consulte várias criptomoedas em uma única
requisição usando o parâmetro `coin`.
* **Moeda de Referência:** Especifique a moeda fiduciária para a
cotação com `currency` (padrão: BRL).
* **Dados Históricos:** Solicite séries históricas usando `range` e
`interval` (similar ao endpoint de ações).
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Cotação de Bitcoin (BTC) e Ethereum (ETH) em Dólar Americano
(USD):**
```bash
curl -X GET
"https://brapi.dev/api/v2/crypto?coin=BTC,ETH¤cy=USD&token=SEU_TOKEN"
```
**Cotação de Cardano (ADA) em Real (BRL) com histórico do último mês
(intervalo diário):**
```bash
curl -X GET
"https://brapi.dev/api/v2/crypto?coin=ADA¤cy=BRL&range=1mo&interval=1d&token=SEU_TOKEN"
```
### Resposta:
A resposta contém um array `coins`, onde cada objeto representa uma
criptomoeda solicitada, incluindo sua cotação atual, dados de mercado
e, opcionalmente, a série histórica (`historicalDataPrice`).
heading: buscar-cotação-detalhada-de-criptomoedas
***
import { Callout } from 'fumadocs-ui/components/callout';
Endpoints focados na obtenção de dados sobre **Criptomoedas**.
Dados agregados de provedores de mercado crypto. Cotações em tempo real para BTC, ETH e 100+ criptoativos em BRL, USD e EUR.
Inclui consulta de cotações atuais em diversas moedas fiduciárias, dados
históricos e listagem de criptomoedas suportadas pela API.
# C#
URL: /docs/examples/csharp.mdx
Integre a API brapi.dev em suas aplicações C# usando HttpClient. Exemplos práticos para buscar cotações de ações da B3.
***
title: 'C#'
description: >-
Integre a API brapi.dev em suas aplicações C# usando HttpClient. Exemplos
práticos para buscar cotações de ações da B3.
full: false
keywords: brapi, api, csharp, dotnet, httpclient, cotações, B3
openGraph:
title: Integração C# - brapi.dev
description: Exemplos de integração usando C# e .NET
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Crie um HttpClient'
text: 'Use new HttpClient() com Timeout configurado. Considere reutilizar a instância para evitar esgotamento de sockets.'
* name: 'Faça a requisição GET assíncrona'
text: 'Use await client.GetStringAsync(url) para buscar dados da API brapi.dev de forma assíncrona.'
* name: 'Defina classes para deserialização'
text: 'Crie classes Quote e QuoteResponse com propriedades que mapeiam os campos JSON retornados pela API.'
* name: 'Deserialize o JSON usando System.Text.Json'
text: 'Use JsonSerializer.Deserialize(response) para converter a resposta JSON em objetos C# tipados.'
* name: 'Acesse e exiba os dados'
text: 'Acesse data.Results\[0].RegularMarketPrice para obter o preço e formate com Console.WriteLine($"R$ {price:F2}").'
howToTools:
* '.NET 6+ ou .NET Framework 4.8+'
* 'Visual Studio ou VS Code'
* 'System.Text.Json ou Newtonsoft.Json'
howToSupplies:
* 'Projeto .NET configurado'
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Integre a API brapi.dev em suas aplicações C# usando HttpClient.
## Exemplo Básico
```csharp
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
string token = "SEU_TOKEN";
string ticker = "PETR4";
string url = $"https://brapi.dev/api/quote/{ticker}?token={token}";
using HttpClient client = new HttpClient();
string response = await client.GetStringAsync(url);
Console.WriteLine(response);
}
}
```
## Com Classes Tipadas
```csharp
using System;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
public class Quote
{
public string Symbol { get; set; }
public string ShortName { get; set; }
public decimal RegularMarketPrice { get; set; }
public decimal RegularMarketChangePercent { get; set; }
public string Currency { get; set; }
}
public class QuoteResponse
{
public Quote[] Results { get; set; }
}
public class BrapiClient
{
private readonly HttpClient _httpClient;
private readonly string _token;
private const string BaseUrl = "https://brapi.dev/api";
public BrapiClient(string token)
{
_token = token;
_httpClient = new HttpClient
{
Timeout = TimeSpan.FromSeconds(10)
};
}
public async Task GetQuoteAsync(string ticker)
{
var url = $"{BaseUrl}/quote/{ticker}?token={_token}";
var response = await _httpClient.GetStringAsync(url);
var data = JsonSerializer.Deserialize(response);
return data?.Results?[0];
}
static async Task Main()
{
var client = new BrapiClient("SEU_TOKEN");
var quote = await client.GetQuoteAsync("PETR4");
if (quote != null)
{
Console.WriteLine($"{quote.Symbol}: R$ {quote.RegularMarketPrice:F2}");
}
}
}
```
## Próximos Passos
* Explore [outros exemplos](/docs/examples)
* Veja a [documentação completa](/docs)
# Microsoft Excel
URL: /docs/examples/excel.mdx
Aprenda a importar cotações da B3 no Excel usando Power Query e a API brapi.dev. Integração sem código para planilhas financeiras.
***
title: 'Microsoft Excel'
description: >-
Aprenda a importar cotações da B3 no Excel usando Power Query e a API
brapi.dev. Integração sem código para planilhas financeiras.
full: false
keywords: brapi, api, excel, power query, planilha, cotações
openGraph:
title: Integração com Excel - brapi.dev
description: Importe cotações da B3 no Excel usando Power Query
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Abra o Excel e acesse Dados'
text: 'Abra o Microsoft Excel e vá para a guia Dados na barra de ferramentas.'
* name: 'Conecte-se à API brapi.dev via Web'
text: 'Clique em Obter Dados > De Outras Fontes > Da Web e insira a URL: [https://brapi.dev/api/quote/PETR4?token=SEU\_TOKEN](https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN)'
* name: 'Converta os dados JSON para tabela'
text: 'O Power Query abrirá mostrando os dados JSON. Clique em Converter > Para Tabela e expanda as colunas conforme necessário.'
* name: 'Carregue e atualize os dados'
text: 'Clique em Fechar e Carregar. Para atualizar, clique com botão direito na tabela e selecione Atualizar.'
howToTools:
* 'Microsoft Excel'
* 'Power Query'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Importe cotações automáticas da B3 no Microsoft Excel usando Power Query.
## Usando Power Query
O Power Query permite importar dados JSON diretamente no Excel sem necessidade de programação.
### Passo a Passo
1. Abra o Excel e vá para a guia **Dados**
2. Clique em **Obter Dados** > **De Outras Fontes** > **Da Web**
3. Insira a URL:
```
https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN
```
4. Clique em **OK**
5. O Power Query abrirá uma janela mostrando os dados JSON
6. Clique em **Converter** > **Para Tabela**
7. Expanda as colunas conforme necessário
8. Clique em **Fechar e Carregar**
### Atualização Automática
Para atualizar os dados automaticamente:
1. Clique com botão direito na tabela
2. Selecione **Atualizar**
3. Ou configure atualização automática em **Propriedades da Consulta**
## VBA (Avançado)
Se precisar de mais controle, use VBA:
```vb
Sub GetBrapiQuote()
Dim http As Object
Dim json As Object
Dim token As String
Dim ticker As String
Dim url As String
token = "SEU_TOKEN"
ticker = "PETR4"
url = "https://brapi.dev/api/quote/" & ticker & "?token=" & token
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", url, False
http.Send
If http.Status = 200 Then
Set json = JsonConverter.ParseJson(http.responseText)
Range("A1").Value = json("results")(1)("symbol")
Range("B1").Value = json("results")(1)("regularMarketPrice")
End If
End Sub
```
> **Nota**: Requer biblioteca [VBA-JSON](https://github.com/VBA-tools/VBA-JSON)
## Próximos Passos
* Veja como usar no [Google Sheets](/docs/examples/google-sheets)
* Explore [outros exemplos](/docs/examples)
# Google Sheets
URL: /docs/examples/google-sheets.mdx
Aprenda a buscar cotações automáticas da B3 no Google Sheets usando a API brapi.dev. Inclui função personalizada em Apps Script para obter dados de ações e ETFs que não aparecem no Google Finance.
***
title: 'Google Sheets'
description: >-
Aprenda a buscar cotações automáticas da B3 no Google Sheets usando a API
brapi.dev. Inclui função personalizada em Apps Script para obter dados de
ações e ETFs que não aparecem no Google Finance.
full: false
keywords:
brapi, api, google sheets, planilha, cotações, ETFs, apps script, IMAB11,
WRLD11, automação
openGraph:
title: Integração com Google Sheets - brapi.dev
description: >-
Busque cotações automáticas da B3 no Google Sheets com a API brapi.dev.
Solução para ETFs brasileiros que não aparecem no Google Finance.
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Obtenha sua chave API'
text: 'Acesse brapi.dev, crie uma conta gratuita e copie seu token API no painel de usuário.'
* name: 'Adicione a função personalizada no Apps Script'
text: 'Abra sua planilha no Google Sheets, vá em Extensões > Apps Script, apague o código existente e cole a função BRAPI\_PRICE fornecida. Salve o projeto.'
* name: 'Use a função na sua planilha'
text: 'Na célula A1, cole seu token da API. Em qualquer outra célula, use a fórmula =BRAPI\_PRICE("PETR4"; $A$1) para obter cotações de ações e ETFs.'
howToTools:
* 'Google Sheets'
* 'Google Apps Script'
* 'Navegador web'
howToSupplies:
* 'Conta brapi.dev gratuita'
* 'Token de API brapi.dev'
* 'Planilha Google Sheets'
***
O Google Sheets é uma ferramenta poderosa para acompanhar seus investimentos de forma automática. Através do Google Apps Script, você pode criar uma função personalizada que busca cotações diretamente da brapi.dev.
## Por que usar a brapi.dev no Google Sheets?
A função `GOOGLEFINANCE` não funciona para muitos ativos brasileiros, especialmente ETFs como IMAB11, WRLD11, IB5M11 e IRFM11. A integração com a brapi.dev resolve esse problema, oferecendo:
* **Dados confiáveis**: Acesso direto aos dados da B3
* **ETFs brasileiros**: Funciona com todos os ativos negociados na B3
* **Atualização automática**: Cotações atualizadas conforme seu plano
* **Uso gratuito**: 15.000 requisições mensais no plano gratuito
## Passo a Passo
### 1. Obtenha sua chave API
1. Acesse [brapi.dev](https://brapi.dev)
2. Crie uma conta gratuita
3. No painel de usuário, copie seu **token API**
### 2. Adicione a função personalizada
1. Abra sua planilha no Google Sheets
2. Clique em **Extensões** > **Apps Script**
3. Apague o código existente e cole o código abaixo:
```javascript
/**
* Retorna o preço atual de um ticker da B3 via brapi.dev
* Uso: =BRAPI_PRICE("PETR4"; $A$1)
* @param {string} ticker - Código do ativo (ex: "PETR4", "VALE3", "IMAB11")
* @param {string} token - Token da API brapi.dev
* @return {number} Preço atual do ativo
*/
function BRAPI_PRICE(ticker, token) {
if (!ticker) return "Erro: informe ticker";
// Permite passar o token como célula ou string
if (token && typeof token === 'object' && token.length) {
token = token[0][0];
}
// Se não informar token, tenta pegar da célula A1
if (!token) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
token = sh.getRange('A1').getDisplayValue();
}
if (!token) return "Erro: token brapi.dev ausente";
// Formata o ticker
ticker = String(ticker).toUpperCase().trim();
if (ticker.indexOf('.') === -1) ticker = ticker + '.SA';
// Faz a requisição
var url = 'https://brapi.dev/api/quote/' + encodeURIComponent(ticker) +
'?token=' + encodeURIComponent(token);
var options = {
muteHttpExceptions: true,
headers: {'User-Agent': 'Mozilla/5.0'}
};
var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() !== 200) {
return "HTTP " + response.getResponseCode() + ": " +
response.getContentText().substring(0, 200);
}
var json = JSON.parse(response.getContentText());
var result = (json && json.results && json.results[0]) || null;
if (!result) return "Sem dados retornados";
return result.regularMarketPrice || result.lastPrice ||
result.close || "Preço não encontrado";
}
```
4. Salve o projeto (Ctrl + S ou clique no ícone de disquete)
5. Feche a janela do editor
### 3. Use a função na sua planilha
1. Na célula **A1**, cole seu token da API brapi.dev
2. Em qualquer outra célula, use a fórmula:
```
=BRAPI_PRICE("PETR4"; $A$1)
```
A referência `$A$1` garante que o endereço da célula do token não mude ao arrastar a fórmula.
## Exemplos de Uso
### Ações
```
=BRAPI_PRICE("PETR4"; $A$1) # Petrobras PN
=BRAPI_PRICE("VALE3"; $A$1) # Vale ON
=BRAPI_PRICE("ITUB4"; $A$1) # Itaú Unibanco PN
=BRAPI_PRICE("BBDC4"; $A$1) # Bradesco PN
```
### ETFs de Renda Fixa
```
=BRAPI_PRICE("IMAB11"; $A$1) # ETF IMA-B
=BRAPI_PRICE("IB5M11"; $A$1) # ETF IMA-B 5+
=BRAPI_PRICE("IRFM11"; $A$1) # ETF IRF-M
=BRAPI_PRICE("B5P211"; $A$1) # ETF NTN-B Principal
```
### ETFs Internacionais
```
=BRAPI_PRICE("WRLD11"; $A$1) # ETF Global
=BRAPI_PRICE("IVVB11"; $A$1) # ETF S&P 500
=BRAPI_PRICE("NASD11"; $A$1) # ETF Nasdaq
```
### Índices
```
=BRAPI_PRICE("^BVSP"; $A$1) # Índice Ibovespa
```
## Função Avançada: Múltiplos Dados
Se você quiser buscar mais informações além do preço, pode criar uma função mais completa:
```javascript
/**
* Retorna dados completos de um ativo
* Uso: =BRAPI_DATA("PETR4"; $A$1; "symbol")
* @param {string} ticker - Código do ativo
* @param {string} token - Token da API
* @param {string} field - Campo desejado (regularMarketPrice, currency, shortName, etc)
* @return {any} Valor do campo solicitado
*/
function BRAPI_DATA(ticker, token, field) {
if (!ticker) return "Erro: informe ticker";
if (!field) return "Erro: informe campo";
if (token && typeof token === 'object' && token.length) {
token = token[0][0];
}
if (!token) {
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
token = sh.getRange('A1').getDisplayValue();
}
if (!token) return "Erro: token ausente";
ticker = String(ticker).toUpperCase().trim();
if (ticker.indexOf('.') === -1) ticker = ticker + '.SA';
var url = 'https://brapi.dev/api/quote/' + encodeURIComponent(ticker) +
'?token=' + encodeURIComponent(token);
var options = {
muteHttpExceptions: true,
headers: {'User-Agent': 'Mozilla/5.0'}
};
var response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() !== 200) {
return "Erro HTTP " + response.getResponseCode();
}
var json = JSON.parse(response.getContentText());
var result = (json && json.results && json.results[0]) || null;
if (!result) return "Sem dados";
return result[field] || "Campo não encontrado";
}
```
Exemplos de uso:
```
=BRAPI_DATA("PETR4"; $A$1; "regularMarketPrice") # Preço
=BRAPI_DATA("PETR4"; $A$1; "currency") # Moeda
=BRAPI_DATA("PETR4"; $A$1; "shortName") # Nome curto
=BRAPI_DATA("PETR4"; $A$1; "regularMarketChange") # Variação do dia
=BRAPI_DATA("PETR4"; $A$1; "marketCap") # Valor de mercado
```
## Dicas de Uso
1. **Economize requisições**: Evite usar a função em células que são recalculadas constantemente
2. **Cache de dados**: Para grandes planilhas, considere atualizar dados periodicamente e não em tempo real
3. **Limite de requisições**: O plano gratuito oferece 15.000 requisições/mês - monitore seu uso no painel
4. **Erros de quota**: Se exceder o limite, a API retornará erro HTTP 429
## Monitoramento de Uso
Para uma ideia de consumo, uma planilha com 30 ativos diferentes, atualizada 3x ao dia, consome aproximadamente 2.700 requisições por mês (30 ativos × 3 atualizações × 30 dias), bem abaixo do limite gratuito.
## Solução de Problemas
### "Erro: token ausente"
Verifique se o token está na célula A1 ou se está sendo passado corretamente como parâmetro.
### "HTTP 401"
Token inválido. Verifique se copiou o token completo do painel da brapi.dev.
### "HTTP 429"
Limite de requisições excedido. Aguarde o próximo ciclo de faturamento ou considere o plano pago.
### "Sem dados retornados"
Ticker inválido ou ativo não encontrado. Verifique o código do ativo.
## Próximos Passos
* Explore outros [exemplos de integração](/docs/examples)
* Consulte a [documentação da API](/docs)
* Confira os [endpoints disponíveis](/docs/acoes)
# Exemplos de Integração
URL: /docs/examples.mdx
Exemplos práticos de integração com a API brapi.dev em diversas linguagens de programação, plataformas e ferramentas. Inclui código de exemplo para TypeScript, Python, PHP, Java, C#, Google Sheets, Excel, WordPress e aplicações mobile.
***
title: 'Exemplos de Integração'
description: >-
Exemplos práticos de integração com a API brapi.dev em diversas linguagens de
programação, plataformas e ferramentas. Inclui código de exemplo para
TypeScript, Python, PHP, Java, C#, Google Sheets, Excel, WordPress e
aplicações mobile.
full: false
keywords:
brapi, api, documentação, integração, exemplos, código, typescript, python,
php, java, google sheets, excel
openGraph:
title: Exemplos de Integração com brapi.dev
description: >-
Exemplos práticos de integração com a API brapi.dev em diversas linguagens
de programação, plataformas e ferramentas. Inclui código de exemplo para
TypeScript, Python, PHP, Java, C#, Google Sheets, Excel, WordPress e
aplicações mobile.
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
-----------
A API da brapi.dev é uma API REST, o que significa que ela pode ser integrada
com praticamente qualquer plataforma ou linguagem de programação. Esta seção
apresenta exemplos concretos de como integrar nossa API em diferentes ambientes.
## Linguagens de Programação
Exemplos de integração em diferentes linguagens:
* [TypeScript/JavaScript](/docs/examples/typescript) - Integração usando fetch e Axios
* [Python](/docs/examples/python) - Usando a biblioteca requests
* [PHP](/docs/examples/php) - Usando cURL
* [Java](/docs/examples/java) - Usando HttpClient (Java 11+)
* [C#](/docs/examples/csharp) - Usando HttpClient
## Planilhas e Ferramentas Sem Código
Integre cotações diretamente em planilhas e ferramentas de produtividade:
* [Google Sheets](/docs/examples/google-sheets) - Função personalizada com Apps Script
* [Microsoft Excel](/docs/examples/excel) - Power Query para importar dados JSON
* [Notion](/docs/examples/notion) - Sincronização automática com Note API Connector
## CMS e Plataformas
Exemplos de integração em sistemas de gerenciamento de conteúdo:
* [WordPress](/docs/examples/wordpress) - Shortcode personalizado para exibir cotações
## Aplicações Mobile
Exemplos para desenvolvimento mobile:
* [React Native](/docs/examples/react-native) - Componente de cotação com hooks
## Começando
Todos os exemplos requerem um token de API. Para obter seu token:
1. Acesse [brapi.dev](https://brapi.dev)
2. Crie uma conta gratuita
3. Copie seu token no painel de usuário
O plano gratuito oferece **15.000 requisições mensais**, suficiente para a maioria dos casos de uso.
## Suporte
Para sugestões de integração com outras plataformas ou linguagens, entre em
contato com nossa equipe de suporte.
# Java
URL: /docs/examples/java.mdx
Integre a API brapi.dev em suas aplicações Java usando HttpClient. Exemplos práticos para buscar cotações de ações da B3.
***
title: 'Java'
description: >-
Integre a API brapi.dev em suas aplicações Java usando HttpClient. Exemplos
práticos para buscar cotações de ações da B3.
full: false
keywords: brapi, api, java, httpclient, cotações, B3
openGraph:
title: Integração Java - brapi.dev
description: Exemplos de integração usando Java 11+ HttpClient
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Crie um HttpClient'
text: 'Use HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(10)).build() para criar um cliente HTTP com timeout configurado.'
* name: 'Construa a requisição HTTP'
text: 'Use HttpRequest.newBuilder().uri(URI.create(url)).GET().build() para criar a requisição GET para a API brapi.dev.'
* name: 'Execute a requisição e obtenha a resposta'
text: 'Use client.send(request, HttpResponse.BodyHandlers.ofString()) para executar e obter a resposta como String.'
* name: 'Parse o JSON usando Gson'
text: 'Adicione Gson como dependência e use gson.fromJson(response.body(), QuoteResponse.class) para converter a resposta em objetos Java tipados.'
* name: 'Opcionalmente, integre com Spring Boot'
text: 'Use RestTemplate ou WebClient do Spring com @Cacheable para cache e @Value para injetar o token de configuração.'
howToTools:
* 'Java 11+'
* 'Maven ou Gradle'
* 'Gson ou Jackson'
* 'IDE Java'
howToSupplies:
* 'JDK 11 ou superior'
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Integre a API brapi.dev em suas aplicações Java usando HttpClient (Java 11+).
## Exemplo Básico
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class BrapiExample {
public static void main(String[] args) throws Exception {
String token = "SEU_TOKEN";
String ticker = "PETR4";
String url = "https://brapi.dev/api/quote/" + ticker + "?token=" + token;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.GET()
.build();
HttpResponse response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
```
## Classe Cliente Completa
```java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
public class BrapiClient {
private static final String BASE_URL = "https://brapi.dev/api";
private final HttpClient httpClient;
private final String token;
private final Gson gson;
public BrapiClient(String token) {
this.token = token;
this.httpClient = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(10))
.build();
this.gson = new Gson();
}
public QuoteResponse getQuote(String ticker) throws Exception {
String url = String.format("%s/quote/%s?token=%s", BASE_URL, ticker, token);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("User-Agent", "Java BrapiClient/1.0")
.GET()
.build();
HttpResponse response = httpClient.send(request,
HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new Exception("HTTP " + response.statusCode());
}
return gson.fromJson(response.body(), QuoteResponse.class);
}
public static class QuoteResponse {
public Quote[] results;
public static class Quote {
public String symbol;
public String shortName;
public double regularMarketPrice;
public double regularMarketChange;
public double regularMarketChangePercent;
public String currency;
}
}
public static void main(String[] args) {
try {
BrapiClient client = new BrapiClient("SEU_TOKEN");
QuoteResponse response = client.getQuote("PETR4");
if (response.results != null && response.results.length > 0) {
QuoteResponse.Quote quote = response.results[0];
System.out.printf("%s: R$ %.2f%n", quote.symbol, quote.regularMarketPrice);
System.out.printf("Variação: %.2f%%%n", quote.regularMarketChangePercent);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
## Spring Boot
```java
// BrapiService.java
package com.example.service;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
@Service
public class BrapiService {
@Value("${brapi.token}")
private String token;
private final RestTemplate restTemplate = new RestTemplate();
private static final String BASE_URL = "https://brapi.dev/api";
@Cacheable(value = "quotes", key = "#ticker")
public QuoteResponse getQuote(String ticker) {
String url = String.format("%s/quote/%s?token=%s", BASE_URL, ticker, token);
return restTemplate.getForObject(url, QuoteResponse.class);
}
}
// Controller
package com.example.controller;
import com.example.service.BrapiService;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/stock")
public class StockController {
private final BrapiService brapiService;
public StockController(BrapiService brapiService) {
this.brapiService = brapiService;
}
@GetMapping("/{ticker}")
public QuoteResponse getStock(@PathVariable String ticker) {
return brapiService.getQuote(ticker);
}
}
// application.properties
// brapi.token=SEU_TOKEN
```
## Próximos Passos
* Explore [outros exemplos](/docs/examples)
* Veja a [documentação completa](/docs)
# Notion
URL: /docs/examples/notion.mdx
Sincronize cotações da B3 no Notion usando Note API Connector e a API brapi.dev. Importe dados automaticamente sem código.
***
title: 'Notion'
description: >-
Sincronize cotações da B3 no Notion usando Note API Connector e a API
brapi.dev. Importe dados automaticamente sem código.
full: false
keywords: brapi, api, notion, note api connector, automação, cotações
openGraph:
title: Integração com Notion - brapi.dev
description: Sincronize cotações da B3 no Notion automaticamente
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Acesse o Note API Connector e conecte ao Notion'
text: 'Acesse noteapiconnector.com, clique em Connect with Notion e autorize o acesso ao seu workspace do Notion.'
* name: 'Configure a requisição para a brapi.dev'
text: 'Crie uma nova requisição com URL: [https://brapi.dev/api/quote/PETR4?token=SEU\_TOKEN](https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN) e método GET.'
* name: 'Personalize a saída e configure sincronização'
text: 'Mapeie os campos da resposta JSON para colunas do Notion e configure a frequência de sincronização automática (a cada hora, 5 minutos, etc.).'
* name: 'Visualize seus dados no Notion'
text: 'Seus dados de cotações serão sincronizados automaticamente no Notion, prontos para criar dashboards e acompanhar investimentos.'
howToTools:
* 'Notion'
* 'Note API Connector'
* 'Navegador web'
howToSupplies:
* 'Conta Notion'
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Importe e sincronize dados da brapi.dev diretamente no Notion sem necessidade de código.
## Note API Connector
O [Note API Connector](https://noteapiconnector.com?ref=brapi) permite importar e sincronizar dados da brapi.dev diretamente no Notion. Com ele, você pode:
* 📊 Importar dados de ações e cotações automaticamente
* 🔄 Agendar sincronizações em intervalos personalizados (a cada hora, a cada 5 minutos, etc.)
* 📈 Criar dashboards ao vivo com dados do mercado financeiro brasileiro
* 📌 Manter seu workspace do Notion sempre atualizado com as últimas cotações
## Como Usar
1. Acesse o [Note API Connector](https://noteapiconnector.com?ref=brapi) e clique em **Connect with Notion**
2. Conecte sua conta do Notion e autorize o workspace
3. Configure uma requisição para a brapi.dev usando sua API token:
* **URL**: `https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN`
* **Método**: GET
4. Personalize a saída e configure a sincronização automática
## Configuração Avançada
Para múltiplos ativos, use:
```
https://brapi.dev/api/quote/PETR4,VALE3,ITUB4?token=SEU_TOKEN
```
## Documentação
Para um guia completo de configuração, consulte a [documentação oficial do Note API Connector](https://help.noteapiconnector.com?ref=brapi).
## Próximos Passos
* Veja como usar no [Google Sheets](/docs/examples/google-sheets)
* Explore [outros exemplos](/docs/examples)
# PHP
URL: /docs/examples/php.mdx
Integre a API brapi.dev em suas aplicações PHP usando cURL. Exemplos práticos para buscar cotações de ações da B3.
***
title: 'PHP'
description: >-
Integre a API brapi.dev em suas aplicações PHP usando cURL. Exemplos práticos
para buscar cotações de ações da B3.
full: false
keywords: brapi, api, php, curl, cotações, B3
openGraph:
title: Integração PHP - brapi.dev
description: Exemplos de integração usando PHP e cURL
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Inicialize uma requisição cURL'
text: 'Use curl\_init() com a URL [https://brapi.dev/api/quote/PETR4?token=SEU\_TOKEN](https://brapi.dev/api/quote/PETR4?token=SEU_TOKEN) e configure CURLOPT\_RETURNTRANSFER como true.'
* name: 'Execute a requisição e obtenha a resposta'
text: 'Execute curl\_exec(), verifique o código HTTP com curl\_getinfo() e feche a conexão com curl\_close().'
* name: 'Parse o JSON e acesse os dados'
text: 'Use json\_decode($response, true) para converter a resposta em array PHP e acesse $data\["results"]\[0]\["regularMarketPrice"].'
* name: 'Implemente tratamento de erros'
text: 'Verifique curl\_error() e o código HTTP para tratar erros de conexão e respostas inválidas adequadamente.'
* name: 'Opcionalmente, integre com WordPress ou Laravel'
text: 'Use wp\_remote\_get() no WordPress com transients para cache, ou Http::get() no Laravel com Cache::remember().'
howToTools:
* 'PHP 7.4+'
* 'cURL'
* 'Editor de código'
howToSupplies:
* 'Servidor com PHP instalado'
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Integre a API brapi.dev em suas aplicações PHP usando cURL ou file\_get\_contents.
## Usando cURL
```php
```
## Com Tratamento de Erros
```php
getMessage()}\n";
}
?>
```
## Classe Cliente
```php
token = $token;
}
public function getQuote($ticker) {
$url = "{$this->baseUrl}/quote/{$ticker}?token={$this->token}";
return $this->request($url);
}
public function getMultipleQuotes($tickers) {
$tickersParam = implode(',', $tickers);
$url = "{$this->baseUrl}/quote/{$tickersParam}?token={$this->token}";
return $this->request($url);
}
private function request($url) {
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_HTTPHEADER, [
'User-Agent: PHP BrapiClient/1.0'
]);
$response = curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$error = curl_error($curl);
curl_close($curl);
if ($error) {
throw new Exception("Erro cURL: {$error}");
}
if ($httpCode !== 200) {
throw new Exception("HTTP {$httpCode}");
}
return json_decode($response, true);
}
}
// Uso
$client = new BrapiClient('SEU_TOKEN');
try {
$data = $client->getQuote('PETR4');
$quote = $data['results'][0];
echo "{$quote['symbol']}: R$ {$quote['regularMarketPrice']}\n";
} catch (Exception $e) {
echo "Erro: {$e->getMessage()}\n";
}
?>
```
## WordPress Integration
```php
10]);
if (is_wp_error($response)) {
return 'Erro ao buscar dados';
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (isset($data['results'][0]['regularMarketPrice'])) {
$price = $data['results'][0]['regularMarketPrice'];
set_transient($transient_key, $price, 60); // Cache por 60 segundos
return $price;
}
return 'Cotação indisponível';
}
// Shortcode
function brapi_stock_price_shortcode($atts) {
$atts = shortcode_atts([
'ticker' => 'PETR4',
], $atts);
$price = brapi_get_stock_price($atts['ticker']);
if (is_numeric($price)) {
return 'R$ ' . number_format($price, 2, ',', '.');
}
return $price;
}
add_shortcode('brapi_cotacao', 'brapi_stock_price_shortcode');
// Uso no WordPress: [brapi_cotacao ticker="PETR4"]
?>
```
## Laravel
```php
token = config('services.brapi.token');
}
public function getQuote(string $ticker)
{
$cacheKey = "quote_{$ticker}";
return Cache::remember($cacheKey, 60, function () use ($ticker) {
$response = Http::timeout(10)
->get("{$this->baseUrl}/quote/{$ticker}", [
'token' => $this->token
]);
if ($response->failed()) {
throw new \Exception('Failed to fetch quote');
}
return $response->json();
});
}
public function getMultipleQuotes(array $tickers)
{
$tickersParam = implode(',', $tickers);
$response = Http::timeout(10)
->get("{$this->baseUrl}/quote/{$tickersParam}", [
'token' => $this->token
]);
if ($response->failed()) {
throw new \Exception('Failed to fetch quotes');
}
return $response->json();
}
}
// config/services.php
return [
'brapi' => [
'token' => env('BRAPI_TOKEN'),
],
];
// Controller
namespace App\Http\Controllers;
use App\Services\BrapiService;
class StockController extends Controller
{
public function show($ticker, BrapiService $brapi)
{
$data = $brapi->getQuote($ticker);
$quote = $data['results'][0] ?? null;
return view('stock.show', compact('quote'));
}
}
?>
```
## Próximos Passos
* Explore [outros exemplos](/docs/examples)
* Veja a [documentação completa](/docs)
* Confira os [endpoints disponíveis](/docs/acoes)
# Python
URL: /docs/examples/python.mdx
Integre a API brapi.dev em suas aplicações Python usando a biblioteca requests. Exemplos práticos para buscar cotações de ações da B3.
***
title: 'Python'
description: >-
Integre a API brapi.dev em suas aplicações Python usando a biblioteca
requests. Exemplos práticos para buscar cotações de ações da B3.
full: false
keywords: brapi, api, python, requests, cotações, B3
openGraph:
title: Integração Python - brapi.dev
description: Exemplos de integração usando Python e requests
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Escolha sua abordagem: SDK oficial ou requests'
text: 'Recomendamos usar a SDK oficial (pip install brapi) para type hints e retry automático. Se preferir controle manual, use a biblioteca requests.'
* name: 'Configure seu token de API'
text: 'Use python-dotenv para carregar variáveis de ambiente. Crie um arquivo .env com BRAPI\_TOKEN=seu\_token\_aqui.'
* name: 'Faça a requisição para a API'
text: 'Com requests: response = requests.get(f"[https://brapi.dev/api/quote/PETR4?token=\{token}](https://brapi.dev/api/quote/PETR4?token=\{token})"). Parse com response.json().'
* name: 'Parse e use os dados retornados'
text: 'O retorno contém results com lista de cotações. Acesse data\["results"]\[0]\["regularMarketPrice"] para o preço atual.'
* name: 'Integre com Pandas ou Flask'
text: 'Converta os dados para DataFrame com pd.DataFrame(data) para análise. Use Flask ou FastAPI para criar endpoints REST.'
howToTools:
* 'Python 3.7+'
* 'pip'
* 'Editor de código'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
* 'Ambiente Python configurado'
***
Integre a API brapi.dev em suas aplicações Python usando nossa SDK oficial ou biblioteca requests.
## 🎉 SDK Oficial Disponível!
A brapi.dev agora oferece uma **SDK oficial Python 3.8+** que facilita muito a integração:
```bash
pip install brapi
```
**Vantagens da SDK:**
* ✅ Type hints completos
* ✅ Suporte síncrono e assíncrono
* ✅ Tratamento de erros automático
* ✅ Retry inteligente
* ✅ Integração com asyncio e aiohttp
**Exemplo rápido:**
```python
from brapi import Brapi
client = Brapi(api_key="seu_token")
quote = client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
```
📚 **[Ver documentação completa da SDK](/docs/sdks/python)**
***
## Integração Manual (Sem SDK)
Se preferir usar requests diretamente, veja os exemplos abaixo.
## Por Que Python para Análise Financeira?
```python
import requests
token = 'SEU_TOKEN'
ticker = 'PETR4'
url = f'https://brapi.dev/api/quote/{ticker}?token={token}'
response = requests.get(url)
data = response.json()
print(data)
```
## Com Tratamento de Erros
```python
import requests
from typing import Dict, Optional
def get_quote(ticker: str, token: str) -> Optional[Dict]:
"""
Busca cotação de um ativo na B3
Args:
ticker: Código do ativo (ex: 'PETR4')
token: Token da API brapi.dev
Returns:
Dicionário com dados da cotação ou None em caso de erro
"""
url = f'https://brapi.dev/api/quote/{ticker}?token={token}'
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f'Erro ao buscar cotação: {e}')
return None
# Uso
token = 'SEU_TOKEN'
data = get_quote('PETR4', token)
if data and 'results' in data:
quote = data['results'][0]
print(f"{quote['symbol']}: R$ {quote['regularMarketPrice']:.2f}")
print(f"Variação: {quote['regularMarketChangePercent']:.2f}%")
```
## Múltiplos Tickers
```python
def get_multiple_quotes(tickers: list[str], token: str) -> Optional[Dict]:
"""Busca cotações de múltiplos ativos"""
tickers_param = ','.join(tickers)
url = f'https://brapi.dev/api/quote/{tickers_param}?token={token}'
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
print(f'Erro: {e}')
return None
# Uso
tickers = ['PETR4', 'VALE3', 'ITUB4']
data = get_multiple_quotes(tickers, token)
if data:
for quote in data['results']:
print(f"{quote['symbol']}: R$ {quote['regularMarketPrice']:.2f}")
```
## Classe Cliente
```python
import requests
from typing import Dict, List, Optional
from dataclasses import dataclass
from datetime import datetime
@dataclass
class Quote:
"""Representa uma cotação de ativo"""
symbol: str
short_name: str
regular_market_price: float
regular_market_change: float
regular_market_change_percent: float
currency: str
market_cap: Optional[float] = None
@classmethod
def from_dict(cls, data: Dict) -> 'Quote':
return cls(
symbol=data['symbol'],
short_name=data['shortName'],
regular_market_price=data['regularMarketPrice'],
regular_market_change=data['regularMarketChange'],
regular_market_change_percent=data['regularMarketChangePercent'],
currency=data['currency'],
market_cap=data.get('marketCap')
)
class BrapiClient:
"""Cliente para a API brapi.dev"""
BASE_URL = 'https://brapi.dev/api'
def __init__(self, token: str):
self.token = token
self.session = requests.Session()
self.session.headers.update({
'User-Agent': 'Python BrapiClient/1.0'
})
def get_quote(self, ticker: str) -> Optional[Quote]:
"""Busca cotação de um ativo"""
url = f'{self.BASE_URL}/quote/{ticker}'
params = {'token': self.token}
try:
response = self.session.get(url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
if data.get('results'):
return Quote.from_dict(data['results'][0])
return None
except requests.exceptions.RequestException as e:
print(f'Erro ao buscar {ticker}: {e}')
return None
def get_multiple_quotes(self, tickers: List[str]) -> List[Quote]:
"""Busca cotações de múltiplos ativos"""
tickers_param = ','.join(tickers)
url = f'{self.BASE_URL}/quote/{tickers_param}'
params = {'token': self.token}
try:
response = self.session.get(url, params=params, timeout=10)
response.raise_for_status()
data = response.json()
return [Quote.from_dict(item) for item in data.get('results', [])]
except requests.exceptions.RequestException as e:
print(f'Erro ao buscar cotações: {e}')
return []
def __enter__(self):
return self
def __exit__(self, *args):
self.session.close()
# Uso
with BrapiClient('SEU_TOKEN') as client:
# Cotação única
quote = client.get_quote('PETR4')
if quote:
print(f'{quote.symbol}: R$ {quote.regular_market_price:.2f}')
print(f'Variação: {quote.regular_market_change_percent:.2f}%')
# Múltiplas cotações
quotes = client.get_multiple_quotes(['PETR4', 'VALE3', 'ITUB4'])
for quote in quotes:
print(f'{quote.symbol}: R$ {quote.regular_market_price:.2f}')
```
## Salvando em CSV
```python
import csv
from datetime import datetime
def save_quotes_to_csv(tickers: List[str], token: str, filename: str):
"""Salva cotações em arquivo CSV"""
with BrapiClient(token) as client:
quotes = client.get_multiple_quotes(tickers)
if not quotes:
print('Nenhuma cotação obtida')
return
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:
fieldnames = [
'timestamp', 'symbol', 'short_name', 'price',
'change', 'change_percent', 'currency'
]
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
timestamp = datetime.now().isoformat()
for quote in quotes:
writer.writerow({
'timestamp': timestamp,
'symbol': quote.symbol,
'short_name': quote.short_name,
'price': quote.regular_market_price,
'change': quote.regular_market_change,
'change_percent': quote.regular_market_change_percent,
'currency': quote.currency
})
print(f'Cotações salvas em {filename}')
# Uso
tickers = ['PETR4', 'VALE3', 'ITUB4', 'BBDC4']
save_quotes_to_csv(tickers, 'SEU_TOKEN', 'quotes.csv')
```
## Com Pandas
```python
import pandas as pd
def get_quotes_dataframe(tickers: List[str], token: str) -> pd.DataFrame:
"""Retorna cotações como DataFrame do pandas"""
with BrapiClient(token) as client:
quotes = client.get_multiple_quotes(tickers)
if not quotes:
return pd.DataFrame()
data = [{
'symbol': q.symbol,
'name': q.short_name,
'price': q.regular_market_price,
'change': q.regular_market_change,
'change_percent': q.regular_market_change_percent,
'currency': q.currency,
'market_cap': q.market_cap
} for q in quotes]
return pd.DataFrame(data)
# Uso
df = get_quotes_dataframe(['PETR4', 'VALE3', 'ITUB4'], 'SEU_TOKEN')
print(df)
# Salvar em Excel
df.to_excel('quotes.xlsx', index=False)
```
## Aplicação Flask
```python
from flask import Flask, jsonify
import os
app = Flask(__name__)
BRAPI_TOKEN = os.environ.get('BRAPI_TOKEN')
@app.route('/api/quote/')
def get_quote_api(ticker):
"""Endpoint para buscar cotação"""
with BrapiClient(BRAPI_TOKEN) as client:
quote = client.get_quote(ticker)
if not quote:
return jsonify({'error': 'Quote not found'}), 404
return jsonify({
'symbol': quote.symbol,
'name': quote.short_name,
'price': quote.regular_market_price,
'change_percent': quote.regular_market_change_percent
})
if __name__ == '__main__':
app.run(debug=True)
```
## Boas Práticas
1. **Use variáveis de ambiente** para o token
2. **Implemente timeout** nas requisições
3. **Trate erros** adequadamente
4. **Use sessões** para melhor performance
5. **Feche conexões** quando não precisar mais
## Variáveis de Ambiente
```python
import os
from dotenv import load_dotenv
load_dotenv() # Carrega .env
token = os.environ.get('BRAPI_TOKEN')
if not token:
raise ValueError('BRAPI_TOKEN não configurado')
```
Arquivo `.env`:
```
BRAPI_TOKEN=seu_token_aqui
```
## Próximos Passos
* Explore [outros exemplos](/docs/examples)
* Veja a [documentação completa](/docs)
* Confira os [endpoints disponíveis](/docs/acoes)
# React Native
URL: /docs/examples/react-native.mdx
Integre a API brapi.dev em aplicações React Native. Componentes para exibir cotações de ações da B3 em apps mobile.
***
title: 'React Native'
description: >-
Integre a API brapi.dev em aplicações React Native. Componentes para exibir
cotações de ações da B3 em apps mobile.
full: false
keywords: brapi, api, react native, mobile, cotações, hooks
openGraph:
title: Integração React Native - brapi.dev
description: Componentes React Native para cotações da B3
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Crie um componente de cotação'
text: 'Crie um componente StockPrice que recebe ticker como prop e usa useState para gerenciar preço, loading e erro.'
* name: 'Implemente useEffect para buscar dados'
text: 'Use useEffect com fetch para chamar [https://brapi.dev/api/quote/\{ticker}?token=SEU\_TOKEN](https://brapi.dev/api/quote/\{ticker}?token=SEU_TOKEN) e atualizar o estado com os dados retornados.'
* name: 'Adicione tratamento de loading e erro'
text: 'Renderize ActivityIndicator durante loading e mensagem de erro quando houver falha na requisição.'
* name: 'Estilize o componente com StyleSheet'
text: 'Use StyleSheet.create para definir estilos do card, incluindo cores para variação positiva (verde) e negativa (vermelho).'
* name: 'Opcionalmente, crie um custom hook useBrapiQuote'
text: 'Extraia a lógica de fetch para um hook reutilizável que retorna { data, loading, error } para uso em múltiplos componentes.'
howToTools:
* 'React Native'
* 'Expo ou React Native CLI'
* 'Editor de código'
howToSupplies:
* 'Projeto React Native configurado'
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
***
Integre a API brapi.dev em suas aplicações React Native.
## Componente Básico
```javascript
import React, { useState, useEffect } from 'react';
import { View, Text, StyleSheet, ActivityIndicator } from 'react-native';
const StockPrice = ({ ticker }) => {
const [price, setPrice] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
const token = 'SEU_TOKEN';
const fetchPrice = async () => {
try {
const response = await fetch(
`https://brapi.dev/api/quote/${ticker}?token=${token}`
);
if (!response.ok) {
throw new Error('Erro ao buscar cotação');
}
const data = await response.json();
setPrice(data.results[0]);
} catch (error) {
setError(error.message);
} finally {
setLoading(false);
}
};
fetchPrice();
}, [ticker]);
if (loading) {
return (
);
}
if (error) {
return (
{error}
);
}
if (!price) return null;
const isPositive = price.regularMarketChangePercent > 0;
return (
{price.symbol}
{price.shortName}
R$ {price.regularMarketPrice.toFixed(2)}
{isPositive ? '+' : ''}{price.regularMarketChangePercent.toFixed(2)}%
);
};
const styles = StyleSheet.create({
container: {
padding: 16,
backgroundColor: '#ffffff',
borderRadius: 12,
marginBottom: 12,
shadowColor: '#000',
shadowOffset: { width: 0, height: 2 },
shadowOpacity: 0.1,
shadowRadius: 4,
elevation: 3,
},
ticker: {
fontSize: 18,
fontWeight: 'bold',
color: '#333',
},
name: {
fontSize: 14,
color: '#666',
marginTop: 4,
},
price: {
fontSize: 24,
fontWeight: 'bold',
color: '#000',
marginTop: 8,
},
change: {
fontSize: 16,
fontWeight: '600',
marginTop: 4,
},
positive: {
color: '#10b981',
},
negative: {
color: '#ef4444',
},
error: {
color: '#ef4444',
fontSize: 14,
},
});
export default StockPrice;
```
## Com Custom Hook
```javascript
import { useState, useEffect } from 'react';
const useBrapiQuote = (ticker, token) => {
const [data, setData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
useEffect(() => {
let isMounted = true;
const fetchQuote = async () => {
try {
const response = await fetch(
`https://brapi.dev/api/quote/${ticker}?token=${token}`
);
if (!response.ok) {
throw new Error(`HTTP ${response.status}`);
}
const json = await response.json();
if (isMounted) {
setData(json.results[0]);
setError(null);
}
} catch (err) {
if (isMounted) {
setError(err.message);
setData(null);
}
} finally {
if (isMounted) {
setLoading(false);
}
}
};
fetchQuote();
return () => {
isMounted = false;
};
}, [ticker, token]);
return { data, loading, error };
};
// Uso
const StockCard = ({ ticker }) => {
const { data, loading, error } = useBrapiQuote(ticker, 'SEU_TOKEN');
if (loading) return ;
if (error) return Erro: {error};
if (!data) return null;
return (
{data.symbol}: R$ {data.regularMarketPrice.toFixed(2)}
);
};
```
## Lista de Cotações
```javascript
import React from 'react';
import { FlatList, View } from 'react-native';
const StockList = () => {
const tickers = ['PETR4', 'VALE3', 'ITUB4', 'BBDC4', 'MGLU3'];
return (
item}
renderItem={({ item }) => }
contentContainerStyle={{ padding: 16 }}
/>
);
};
```
## Próximos Passos
* Veja exemplos em [TypeScript](/docs/examples/typescript)
* Explore [outros exemplos](/docs/examples)
# TypeScript / JavaScript
URL: /docs/examples/typescript.mdx
Exemplos de integração da API brapi.dev usando TypeScript e JavaScript com fetch nativo e Axios. Aprenda a buscar cotações de ações da B3 em aplicações web e Node.js.
***
title: 'TypeScript / JavaScript'
description: >-
Exemplos de integração da API brapi.dev usando TypeScript e JavaScript com
fetch nativo e Axios. Aprenda a buscar cotações de ações da B3 em aplicações
web e Node.js.
full: false
keywords:
brapi, api, typescript, javascript, fetch, axios, node.js, web
openGraph:
title: Integração TypeScript/JavaScript - brapi.dev
description: >-
Exemplos práticos de integração com fetch e Axios para buscar cotações da B3
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Escolha sua abordagem: SDK oficial ou fetch/Axios'
text: 'Recomendamos usar a SDK oficial (npm install brapi) para tipos completos e retry automático. Se preferir controle manual, use fetch nativo ou Axios.'
* name: 'Configure seu token de API'
text: 'Armazene seu token em variáveis de ambiente (process.env.BRAPI\_TOKEN). Nunca exponha o token no código frontend.'
* name: 'Faça a requisição para a API'
text: 'Com fetch: await fetch(`https://brapi.dev/api/quote/PETR4?token=${token}`). Com Axios: await axios.get(url).'
* name: 'Parse e use os dados retornados'
text: 'O retorno contém results com array de cotações. Acesse data.results\[0].regularMarketPrice para o preço atual.'
* name: 'Implemente cache e tratamento de erros'
text: 'Use try/catch para erros de rede. Implemente cache (ex: Next.js revalidate, SWR, Map) para economizar requisições.'
howToTools:
* 'Node.js ou navegador moderno'
* 'npm, yarn ou bun'
* 'Editor de código'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
* 'Projeto JavaScript/TypeScript'
***
Integre a API brapi.dev em suas aplicações TypeScript e JavaScript usando nossa SDK oficial ou fetch/Axios.
## 🎉 SDK Oficial Disponível!
A brapi.dev agora oferece uma **SDK oficial TypeScript/JavaScript** que facilita muito a integração:
```bash
npm install brapi
```
**Vantagens da SDK:**
* ✅ Tipos TypeScript completos com IntelliSense
* ✅ Tratamento de erros automático
* ✅ Retry inteligente em falhas
* ✅ Suporte a Node.js e navegador
**Exemplo rápido:**
```typescript
import Brapi from 'brapi';
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
const quote = await client.quote.retrieve('PETR4');
console.log(quote.results[0].regularMarketPrice);
```
📚 **[Ver documentação completa da SDK](/docs/sdks/typescript)**
***
## Integração Manual (Sem SDK)
Se preferir fazer requisições HTTP diretamente, veja os exemplos abaixo.
## Usando Fetch (Nativo)
O fetch é nativo em navegadores modernos e Node.js 18+, sem necessidade de bibliotecas externas.
### Exemplo Básico
```typescript
const fetchQuote = async () => {
const token = 'SEU_TOKEN';
const ticker = 'PETR4';
const response = await fetch(
`https://brapi.dev/api/quote/${ticker}?token=${token}`
);
const data = await response.json();
console.log(data);
};
fetchQuote();
```
### Com Tratamento de Erros
```typescript
interface QuoteResult {
results: Array<{
symbol: string;
shortName: string;
regularMarketPrice: number;
regularMarketChange: number;
regularMarketChangePercent: number;
currency: string;
}>;
}
const fetchQuote = async (ticker: string): Promise => {
const token = process.env.BRAPI_TOKEN || 'SEU_TOKEN';
try {
const response = await fetch(
`https://brapi.dev/api/quote/${ticker}?token=${token}`
);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data: QuoteResult = await response.json();
return data;
} catch (error) {
console.error('Erro ao buscar cotação:', error);
return null;
}
};
// Uso
fetchQuote('PETR4').then(data => {
if (data && data.results[0]) {
const quote = data.results[0];
console.log(`${quote.symbol}: R$ ${quote.regularMarketPrice}`);
}
});
```
### Múltiplos Tickers
```typescript
const fetchMultipleQuotes = async (tickers: string[]) => {
const token = 'SEU_TOKEN';
const tickersParam = tickers.join(',');
const response = await fetch(
`https://brapi.dev/api/quote/${tickersParam}?token=${token}`
);
const data = await response.json();
return data.results;
};
// Uso
fetchMultipleQuotes(['PETR4', 'VALE3', 'ITUB4']).then(quotes => {
quotes.forEach(quote => {
console.log(`${quote.symbol}: R$ ${quote.regularMarketPrice}`);
});
});
```
## Usando Axios
Axios é uma biblioteca popular para fazer requisições HTTP, com sintaxe mais simples e recursos adicionais.
### Instalação
```bash
npm install axios
# ou
yarn add axios
# ou
bun add axios
```
### Exemplo Básico
```typescript
import axios from 'axios';
const token = 'SEU_TOKEN';
const ticker = 'PETR4';
const url = `https://brapi.dev/api/quote/${ticker}?token=${token}`;
async function fetchQuote() {
try {
const response = await axios.get(url);
console.log(response.data);
} catch (error) {
console.error('Erro ao buscar cotação:', error);
}
}
fetchQuote();
```
### Com TypeScript e Interface
```typescript
import axios, { AxiosError } from 'axios';
interface BrapiQuoteResponse {
results: Array<{
symbol: string;
shortName: string;
longName: string;
currency: string;
regularMarketPrice: number;
regularMarketDayHigh: number;
regularMarketDayLow: number;
regularMarketVolume: number;
regularMarketChange: number;
regularMarketChangePercent: number;
regularMarketTime: string;
marketCap: number;
fiftyTwoWeekLow: number;
fiftyTwoWeekHigh: number;
}>;
requestedAt: string;
took: string;
}
class BrapiClient {
private baseUrl = 'https://brapi.dev/api';
private token: string;
constructor(token: string) {
this.token = token;
}
async getQuote(ticker: string): Promise {
try {
const response = await axios.get(
`${this.baseUrl}/quote/${ticker}`,
{
params: { token: this.token }
}
);
return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
const axiosError = error as AxiosError;
throw new Error(
`Erro na API: ${axiosError.response?.status} - ${axiosError.message}`
);
}
throw error;
}
}
async getMultipleQuotes(tickers: string[]): Promise {
const tickersParam = tickers.join(',');
return this.getQuote(tickersParam);
}
}
// Uso
const client = new BrapiClient(process.env.BRAPI_TOKEN!);
client.getQuote('PETR4').then(data => {
const quote = data.results[0];
console.log(`${quote.symbol}: R$ ${quote.regularMarketPrice}`);
console.log(`Variação: ${quote.regularMarketChangePercent.toFixed(2)}%`);
});
```
## Exemplo Next.js (App Router)
### Server Component
```typescript
// app/stock/[ticker]/page.tsx
import { Suspense } from 'react';
interface QuoteData {
results: Array<{
symbol: string;
shortName: string;
regularMarketPrice: number;
regularMarketChangePercent: number;
}>;
}
async function getQuote(ticker: string): Promise {
const token = process.env.BRAPI_TOKEN;
const res = await fetch(
`https://brapi.dev/api/quote/${ticker}?token=${token}`,
{ next: { revalidate: 60 } } // Cache por 60 segundos
);
if (!res.ok) {
throw new Error('Failed to fetch quote');
}
return res.json();
}
export default async function StockPage({
params,
}: {
params: { ticker: string };
}) {
const data = await getQuote(params.ticker);
const quote = data.results[0];
return (
{quote.shortName}
R$ {quote.regularMarketPrice.toFixed(2)}
0 ? 'text-green-600' : 'text-red-600'}>
{quote.regularMarketChangePercent.toFixed(2)}%
);
}
```
### Client Component com SWR
```typescript
'use client';
import useSWR from 'swr';
const fetcher = (url: string) => fetch(url).then(r => r.json());
export function StockQuote({ ticker }: { ticker: string }) {
const { data, error, isLoading } = useSWR(
`/api/quote/${ticker}`,
fetcher,
{ refreshInterval: 60000 } // Atualiza a cada 60 segundos
);
if (error) return Erro ao carregar cotação
;
if (isLoading) return Carregando...
;
const quote = data.results[0];
return (
{quote.symbol}
R$ {quote.regularMarketPrice.toFixed(2)}
);
}
```
### API Route
```typescript
// app/api/quote/[ticker]/route.ts
import { NextResponse } from 'next/server';
export async function GET(
request: Request,
{ params }: { params: { ticker: string } }
) {
const token = process.env.BRAPI_TOKEN;
try {
const response = await fetch(
`https://brapi.dev/api/quote/${params.ticker}?token=${token}`
);
if (!response.ok) {
return NextResponse.json(
{ error: 'Failed to fetch quote' },
{ status: response.status }
);
}
const data = await response.json();
return NextResponse.json(data);
} catch (error) {
return NextResponse.json(
{ error: 'Internal server error' },
{ status: 500 }
);
}
}
```
## Node.js com Cache
```typescript
import axios from 'axios';
class BrapiService {
private cache = new Map();
private cacheDuration = 60000; // 60 segundos
constructor(private token: string) {}
async getQuote(ticker: string) {
const cached = this.cache.get(ticker);
const now = Date.now();
if (cached && now - cached.timestamp < this.cacheDuration) {
return cached.data;
}
const response = await axios.get(
`https://brapi.dev/api/quote/${ticker}?token=${this.token}`
);
this.cache.set(ticker, {
data: response.data,
timestamp: now
});
return response.data;
}
}
// Uso
const service = new BrapiService(process.env.BRAPI_TOKEN!);
const data = await service.getQuote('PETR4');
```
## Boas Práticas
1. **Armazene o token em variáveis de ambiente**: Nunca exponha o token no código
2. **Implemente cache**: Evite requisições desnecessárias
3. **Trate erros adequadamente**: Sempre use try/catch ou .catch()
4. **Use tipos TypeScript**: Aproveite a tipagem para melhor DX
5. **Respeite os limites**: Monitore o uso de requisições
## Próximos Passos
* Veja exemplos em [outras linguagens](/docs/examples)
* Explore a [documentação completa da API](/docs)
* Confira os [endpoints disponíveis](/docs/acoes)
# WordPress
URL: /docs/examples/wordpress.mdx
Integre cotações da B3 no WordPress usando shortcodes e a API brapi.dev. Exiba preços de ações em posts e páginas.
***
title: 'WordPress'
description: >-
Integre cotações da B3 no WordPress usando shortcodes e a API brapi.dev.
Exiba preços de ações em posts e páginas.
full: false
keywords: brapi, api, wordpress, shortcode, php, cotações
openGraph:
title: Integração WordPress - brapi.dev
description: Exiba cotações da B3 no WordPress com shortcodes
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T17:30:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Adicione o código ao functions.php'
text: 'Acesse o arquivo functions.php do seu tema WordPress (ou crie um plugin personalizado) e cole o código da função brapi\_get\_stock\_price e brapi\_stock\_price\_shortcode fornecidos.'
* name: 'Configure seu token da API'
text: 'Substitua SEU\_TOKEN no código pelo token que você obteve em brapi.dev. Você pode também armazenar o token usando get\_option para maior segurança.'
* name: 'Use o shortcode em posts e páginas'
text: 'Em qualquer post ou página, insira o shortcode \[brapi\_cotacao ticker="PETR4"] para exibir a cotação do ativo desejado.'
* name: 'Opcionalmente, crie um bloco Gutenberg'
text: 'Para uma experiência mais integrada, registre um bloco customizado usando register\_block\_type para permitir inserir cotações diretamente no editor de blocos.'
howToTools:
* 'WordPress'
* 'Editor de código ou FTP'
* 'Navegador web'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
* 'Tema WordPress com functions.php'
***
Integre cotações da B3 no WordPress usando shortcodes personalizados.
## Implementação
Adicione este código ao arquivo `functions.php` do seu tema ou em um plugin personalizado:
```php
10]);
if (is_wp_error($response)) {
return 'Erro ao buscar dados';
}
$body = wp_remote_retrieve_body($response);
$data = json_decode($body, true);
if (isset($data['results'][0]['regularMarketPrice'])) {
$price = $data['results'][0]['regularMarketPrice'];
set_transient($transient_key, $price, 60);
return $price;
}
return 'Cotação indisponível';
}
function brapi_stock_price_shortcode($atts) {
$atts = shortcode_atts([
'ticker' => 'PETR4',
], $atts);
$price = brapi_get_stock_price($atts['ticker']);
if (is_numeric($price)) {
return 'R$ ' . number_format($price, 2, ',', '.');
}
return $price;
}
add_shortcode('brapi_cotacao', 'brapi_stock_price_shortcode');
?>
```
## Uso no WordPress
Use o shortcode em posts e páginas:
```
[brapi_cotacao ticker="PETR4"]
```
Exemplos:
```
[brapi_cotacao ticker="VALE3"]
[brapi_cotacao ticker="ITUB4"]
[brapi_cotacao ticker="IMAB11"]
```
## Com Widget Gutenberg
Para criar um bloco customizado:
```php
'brapi-block',
'render_callback' => 'brapi_render_block'
]);
}
add_action('init', 'brapi_register_block');
function brapi_render_block($attributes) {
$ticker = $attributes['ticker'] ?? 'PETR4';
return brapi_stock_price_shortcode(['ticker' => $ticker]);
}
?>
```
## Próximos Passos
* Veja exemplos em [PHP](/docs/examples/php)
* Explore [outros exemplos](/docs/examples)
# Listar Países disponíveis
URL: /docs/inflacao/available.mdx
Endpoints para acessar dados históricos de Índices de Inflação. Permite consultar a inflação de diferentes países ao longo do tempo e listar os países com dados disponíveis.
***
title: Listar Países disponíveis
description: >-
Endpoints para acessar dados históricos de Índices de Inflação. Permite
consultar a inflação de diferentes países ao longo do tempo e listar os países
com dados disponíveis.
full: true
keywords: brapi, api, documentação, inflação
openGraph:
title: Inflação
description: >-
Endpoints para acessar dados históricos de Índices de Inflação. Permite
consultar a inflação de diferentes países ao longo do tempo e listar os
países com dados disponíveis.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.255Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/inflation/available
toc:
* depth: 2
title: Listar Países com Dados de Inflação Disponíveis
url: '#listar-países-com-dados-de-inflação-disponíveis'
structuredData:
headings:
* content: Listar Países com Dados de Inflação Disponíveis
id: listar-países-com-dados-de-inflação-disponíveis
contents:
* content: >-
Obtenha a lista completa de todos os países para os quais a API Brapi
possui dados de inflação disponíveis para consulta no endpoint
`/api/v2/inflation`.
### Funcionalidade:
* Retorna um array `countries` com os nomes dos países (em
minúsculas).
* Pode ser filtrado usando o parâmetro `search`.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Listar todos os países com dados de inflação:**
```bash
curl -X GET
"https://brapi.dev/api/v2/inflation/available?token=SEU_TOKEN"
```
**Buscar países cujo nome contenha 'arg':**
```bash
curl -X GET
"https://brapi.dev/api/v2/inflation/available?search=arg&token=SEU_TOKEN"
```
### Resposta:
A resposta é um objeto JSON com a chave `countries`, contendo um array
de strings com os nomes dos países (ex: `["brazil", "argentina",
"usa"]`).
heading: listar-países-com-dados-de-inflação-disponíveis
***
{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}
Endpoints para acessar dados históricos de **Índices de Inflação**.
Permite consultar a inflação de diferentes países ao longo do tempo e listar os
países com dados disponíveis.
# Inflação
URL: /docs/inflacao.mdx
Endpoints para acessar dados históricos de Índices de Inflação. Permite consultar a inflação de diferentes países ao longo do tempo e listar os países com dados disponíveis.
***
title: Inflação
description: >-
Endpoints para acessar dados históricos de Índices de Inflação. Permite
consultar a inflação de diferentes países ao longo do tempo e listar os países
com dados disponíveis.
full: true
keywords: brapi, api, documentação, inflação
openGraph:
title: Inflação
description: >-
Endpoints para acessar dados históricos de Índices de Inflação. Permite
consultar a inflação de diferentes países ao longo do tempo e listar os
países com dados disponíveis.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.255Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/inflation
toc:
* depth: 2
title: Buscar Dados Históricos de Inflação por País
url: '#buscar-dados-históricos-de-inflação-por-país'
structuredData:
headings:
* content: Buscar Dados Históricos de Inflação por País
id: buscar-dados-históricos-de-inflação-por-país
contents:
* content: >-
Obtenha dados históricos sobre índices de inflação para um país
específico.
### Funcionalidades:
* **Seleção de País:** Especifique o país desejado com o parâmetro
`country` (padrão: `brazil`).
* **Filtragem por Período:** Defina um intervalo de datas com
`start` e `end` (formato DD/MM/YYYY).
* **Inclusão de Histórico:** O parâmetro `historical` (booleano)
parece controlar a inclusão de dados históricos (verificar
comportamento exato, pode ser redundante com `start`/`end`).
* **Ordenação:** Ordene os resultados por data (`date`) ou valor
(`value`) usando `sortBy` e `sortOrder`.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Buscar dados de inflação do Brasil para o ano de 2022, ordenados por
valor ascendente:**
```bash
curl -X GET
"https://brapi.dev/api/v2/inflation?country=brazil&start=01/01/2022&end=31/12/2022&sortBy=value&sortOrder=asc&token=SEU_TOKEN"
```
**Buscar os dados mais recentes de inflação (sem período definido,
ordenação padrão):**
```bash
curl -X GET
"https://brapi.dev/api/v2/inflation?country=brazil&token=SEU_TOKEN"
```
### Resposta:
A resposta contém um array `inflation`, onde cada objeto representa um
ponto de dado de inflação com sua `date` (DD/MM/YYYY), `value` (o
índice de inflação como string) e `epochDate` (timestamp UNIX).
heading: buscar-dados-históricos-de-inflação-por-país
***
Endpoints para acessar dados históricos de **Índices de Inflação**.
Permite consultar a inflação de diferentes países ao longo do tempo e listar os
países com dados disponíveis.
Dados do **IBGE** (IPCA, INPC) e **BCB** para séries históricas desde 1980.
# Listar Moedas
URL: /docs/moedas/available.mdx
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na listagem das moedas disponíveis para conversão ou consulta de taxas de câmbio (embora o endpoint de cotação de moedas não esteja detalhado aqui, a listagem está disponível).
***
title: Listar Moedas
description: >-
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na listagem
das moedas disponíveis para conversão ou consulta de taxas de câmbio (embora o
endpoint de cotação de moedas não esteja detalhado aqui, a listagem está
disponível).
full: true
keywords: brapi, api, documentação, moedas
openGraph:
title: Listar Moedas
description: >-
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na
listagem das moedas disponíveis para conversão ou consulta de taxas de
câmbio (embora o endpoint de cotação de moedas não esteja detalhado aqui, a
listagem está disponível).
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.254Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/currency/available
toc:
* depth: 2
title: Listar Todas as Moedas Fiduciárias Disponíveis
url: '#listar-todas-as-moedas-fiduciárias-disponíveis'
structuredData:
headings:
* content: Listar Todas as Moedas Fiduciárias Disponíveis
id: listar-todas-as-moedas-fiduciárias-disponíveis
contents:
* content: >-
Obtenha a lista completa de todas as moedas fiduciárias suportadas
pela API, geralmente utilizadas no parâmetro `currency` de outros
endpoints (como o de criptomoedas) ou para futuras funcionalidades de
conversão.
### Funcionalidade:
* Retorna um array `currencies` com os nomes das moedas.
* Pode ser filtrado usando o parâmetro `search`.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Listar todas as moedas disponíveis:**
```bash
curl -X GET
"https://brapi.dev/api/v2/currency/available?token=SEU_TOKEN"
```
**Buscar moedas cujo nome contenha 'Euro':**
```bash
curl -X GET
"https://brapi.dev/api/v2/currency/available?search=Euro&token=SEU_TOKEN"
```
### Resposta:
A resposta é um objeto JSON com a chave `currencies`, contendo um
array de objetos. Cada objeto possui uma chave `currency` com o nome
completo da moeda (ex: `"Dólar Americano/Real Brasileiro"`). **Nota:**
O formato do nome pode indicar um par de moedas, dependendo do
contexto interno da API.
heading: listar-todas-as-moedas-fiduciárias-disponíveis
***
Endpoints para consulta de **Moedas Fiduciárias**.
Atualmente, focado na listagem das moedas disponíveis para conversão ou consulta
de taxas de câmbio (embora o endpoint de cotação de moedas não esteja detalhado
aqui, a listagem está disponível).
# Cotação de Moedas
URL: /docs/moedas.mdx
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na listagem das moedas disponíveis para conversão ou consulta de taxas de câmbio.
***
title: Cotação de Moedas
description: >-
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na listagem
das moedas disponíveis para conversão ou consulta de taxas de câmbio.
full: true
keywords: brapi, api, documentação, moedas
openGraph:
title: Cotação de Moedas
description: >-
Endpoints para consulta de Moedas Fiduciárias. Atualmente, focado na
listagem das moedas disponíveis para conversão ou consulta de taxas de
câmbio.
type: website
locale: pt\_BR
lastUpdated: '2025-04-28T01:22:35.254Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/currency/available
toc:
* depth: 2
title: Listar Todas as Moedas Fiduciárias Disponíveis
url: '#listar-todas-as-moedas-fiduciárias-disponíveis'
structuredData:
headings:
* content: Listar Todas as Moedas Fiduciárias Disponíveis
id: listar-todas-as-moedas-fiduciárias-disponíveis
contents:
* content: >-
Obtenha cotações atualizadas para um ou mais pares de moedas
fiduciárias (ex: USD-BRL, EUR-USD).
### Funcionalidades:
* **Cotação Múltipla:** Consulte vários pares de moedas em uma única
requisição usando o parâmetro `currency`. \* **Dados Retornados:**
Inclui nome do par, preços de compra (bid) e venda (ask), variação,
máximas e mínimas, e timestamp da atualização.
### Parâmetros:
* **`currency` (Obrigatório):** Uma lista de pares de moedas
separados por vírgula, no formato `MOEDA_ORIGEM-MOEDA_DESTINO` (ex:
`USD-BRL`, `EUR-USD`). Consulte os pares disponíveis em
[`/api/v2/currency/available`](#/Moedas/getAvailableCurrencies).
* **`token` (Obrigatório):** Seu token de autenticação.
### Autenticação:
Requer token de autenticação válido via `token` (query) ou
`Authorization` (header).
### Estrutura da Resposta (200 OK):
A resposta bem-sucedida (`CurrencyResponse`) contém um array
`currency`. Cada objeto dentro deste array (`CurrencyQuote`)
representa um par solicitado e inclui: \* `fromCurrency`: Sigla da
moeda de origem. \* `toCurrency`: Sigla da moeda de destino.
* `name`: Nome descritivo do par. \* `high`, `low`: Preços máximo e
mínimo do período recente. \* `bidVariation`, `percentageChange`:
Variação absoluta e percentual. \* `bidPrice`, `askPrice`: Preços de
compra e venda atuais. \* `updatedAtTimestamp`, `updatedAtDate`:
Timestamps da última atualização.
````json {
\"currency\":
[
{
\"fromCurrency\": \"USD\",
\"toCurrency\":
\"BRL\",
\"name\": \"Dólar Americano/Real
Brasileiro\",
\"high\": \"5.22\",
\"low\":
\"5.162\",
\"bidVariation\":
\"0.0454\",
\"percentageChange\":
\"0.88\",
\"bidPrice\": \"5.2097\",
\"askPrice\":
\"5.2127\",
\"updatedAtTimestamp\":
\"1696601423\",
\"updatedAtDate\": \"2023-10-06
11:10:23\"
},
{
\"fromCurrency\":
\"EUR\",
\"toCurrency\": \"USD\",
\"name\": \"Euro/Dólar
Americano\",
\"high\": \"1.0568\",
\"low\":
\"1.0482\",
\"bidVariation\":
\"-0.0037\",
\"percentageChange\":
\"-0.35\",
\"bidPrice\": \"1.051\",
\"askPrice\":
\"1.0511\",
\"updatedAtTimestamp\":
\"1696601456\",
\"updatedAtDate\": \"2023-10-06
11:10:56\"
}
]
} ```
heading: listar-todas-as-moedas-fiduciárias-disponíveis
````
***
import { Callout } from 'fumadocs-ui/components/callout';
Endpoints para consulta de **Moedas Fiduciárias**.
Taxas de câmbio do **BCB** e provedores forex. USD, EUR, GBP e 50+ pares com atualização em tempo real.
Atualmente, focado na listagem das moedas disponíveis para conversão ou consulta
de taxas de câmbio.
# SDKs Oficiais
URL: /docs/sdks.mdx
SDKs oficiais da brapi.dev para TypeScript/JavaScript e Python. Integre a API da B3 com tipos completos, retry automático e tratamento de erros inteligente.
***
title: 'SDKs Oficiais'
description: >-
SDKs oficiais da brapi.dev para TypeScript/JavaScript e Python. Integre a API
da B3 com tipos completos, retry automático e tratamento de erros inteligente.
full: false
keywords:
brapi, sdk, typescript, python, npm, pypi, api client, developer tools
openGraph:
title: SDKs Oficiais - brapi.dev
description: >-
Bibliotecas oficiais para integração rápida e tipada com a API da B3
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T20:10:00.000Z'
lang: pt-BR
-----------
Bibliotecas oficiais que facilitam a integração com a API da B3, oferecendo tipos completos, tratamento de erros automático e experiência de desenvolvimento otimizada.
## Por Que Usar Nossas SDKs?
### Antes (Requisições HTTP Manuais)
```typescript
const response = await fetch(
`https://brapi.dev/api/quote/PETR4?token=${token}`
);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
const data = await response.json();
const price = data.results[0].regularMarketPrice; // Sem tipos 😢
```
### Depois (Com SDKs)
```typescript
const quote = await client.quote.retrieve('PETR4');
const price = quote.results[0].regularMarketPrice; // ✅ Tipos completos!
```
**Benefícios:**
* ✅ **60% menos código**
* ✅ **Tipos completos** - IntelliSense e autocomplete
* ✅ **Retry automático** - Tratamento inteligente de falhas
* ✅ **Erros tipados** - Exceções específicas por status
* ✅ **Sempre atualizado** - Sincronizado com a API
***
## SDKs Disponíveis
### TypeScript / JavaScript
SDK oficial para TypeScript e JavaScript com suporte a Node.js e navegador.
#### Instalação
```bash
npm install brapi
# ou
yarn add brapi
# ou
pnpm add brapi
# ou
bun add brapi
```
#### Exemplo Rápido
```typescript
import Brapi from 'brapi';
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
const quote = await client.quote.retrieve('PETR4');
console.log(quote.results[0].regularMarketPrice);
```
#### Características
* ✅ Tipos TypeScript completos
* ✅ Suporte Node.js e Browser
* ✅ Tree-shakeable (bundle otimizado)
* ✅ Integração Next.js, Express, etc.
* ✅ Retry automático configurável
**Links:**
* 📚 [Documentação completa](/docs/sdks/typescript)
* 📦 [NPM Package](https://www.npmjs.com/package/brapi)
* 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-typescript)
***
### Python
SDK oficial para Python 3.8+ com suporte síncrono e assíncrono.
#### Instalação
```bash
pip install brapi
# Com suporte a aiohttp (opcional, melhor performance)
pip install brapi[aiohttp]
```
#### Exemplo Rápido (Síncrono)
```python
from brapi import Brapi
client = Brapi(api_key="seu_token")
quote = client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
```
#### Exemplo Rápido (Assíncrono)
```python
import asyncio
from brapi import AsyncBrapi
async def main():
async with AsyncBrapi(api_key="seu_token") as client:
quote = await client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
asyncio.run(main())
```
#### Características
* ✅ Type hints completos
* ✅ Cliente síncrono e assíncrono
* ✅ Powered by httpx (HTTP/2)
* ✅ Integração Flask, FastAPI, Pandas
* ✅ Context managers
**Links:**
* 📚 [Documentação completa](/docs/sdks/python)
* 📦 [PyPI Package](https://pypi.org/project/brapi/)
* 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-python)
***
## Comparação de Features
| Feature | TypeScript/JS | Python |
| ---------------- | ------------- | ------------ |
| Tipos completos | ✅ TypeScript | ✅ Type hints |
| Autocomplete IDE | ✅ | ✅ |
| Sync/Async | ✅ Async | ✅ Ambos |
| Retry automático | ✅ | ✅ |
| Erros tipados | ✅ | ✅ |
| HTTP/2 | ✅ | ✅ |
| Bundle size | 📦 Pequeno | N/A |
| Python 3.8+ | N/A | ✅ |
| Node.js/Browser | ✅ | N/A |
***
## Casos de Uso
### 1. Aplicações Web
**Next.js / React:**
```typescript
import Brapi from 'brapi';
// Server Component
const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY });
const quote = await client.quote.retrieve('PETR4');
```
**FastAPI / Flask:**
```python
from fastapi import FastAPI
from brapi import AsyncBrapi
app = FastAPI()
client = AsyncBrapi(api_key="seu_token")
@app.get("/quote/{ticker}")
async def get_quote(ticker: str):
quote = await client.quote.retrieve(tickers=ticker)
return quote.results[0]
```
### 2. Análise de Dados
**Python com Pandas:**
```python
import pandas as pd
from brapi import Brapi
client = Brapi(api_key="seu_token")
# Buscar múltiplas cotações
tickers = "PETR4,VALE3,ITUB4"
quote = client.quote.retrieve(tickers=tickers)
# Converter para DataFrame
df = pd.DataFrame([
{
'symbol': r.symbol,
'price': r.regular_market_price,
'change': r.regular_market_change_percent
}
for r in quote.results
])
print(df)
```
### 3. Scripts e Automação
**Monitoramento de Preços:**
```python
from brapi import Brapi
import time
client = Brapi(api_key="seu_token")
while True:
quote = client.quote.retrieve(tickers="PETR4")
price = quote.results[0].regular_market_price
print(f"PETR4: R$ {price:.2f}")
time.sleep(60) # Atualiza a cada minuto
```
### 4. APIs e Microsserviços
**Express.js API:**
```typescript
import express from 'express';
import Brapi from 'brapi';
const app = express();
const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY });
app.get('/api/quote/:ticker', async (req, res) => {
try {
const quote = await client.quote.retrieve(req.params.ticker);
res.json(quote);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(3000);
```
### 5. Dashboards e Visualizações
**TypeScript com Chart.js:**
```typescript
const client = new Brapi({ apiKey: process.env.BRAPI_API_KEY });
async function updateChart() {
const quote = await client.quote.retrieve('PETR4,VALE3,ITUB4');
const labels = quote.results.map(r => r.symbol);
const prices = quote.results.map(r => r.regularMarketPrice);
// Atualizar gráfico com os dados
chart.data.labels = labels;
chart.data.datasets[0].data = prices;
chart.update();
}
```
***
## Recursos Suportados
Ambas as SDKs suportam todos os endpoints da API:
### Mercado Brasileiro (B3)
* ✅ **Cotações** - Ações, ETFs, FIIs, BDRs
* ✅ **Dados fundamentalistas** - Balanços, DRE, indicadores
* ✅ **Dividendos** - Histórico de proventos
* ✅ **Histórico** - Preços históricos
### Criptomoedas
* ✅ **Bitcoin, Ethereum, etc.**
* ✅ **Lista de moedas disponíveis**
### Indicadores Econômicos
* ✅ **Inflação** - IPCA, IGP-M, etc.
* ✅ **Taxa de juros** - SELIC, CDI
* ✅ **Câmbio** - USD, EUR, etc.
***
## Tratamento de Erros
Ambas as SDKs lançam exceções específicas por tipo de erro:
### TypeScript
```typescript
import Brapi from 'brapi';
try {
const quote = await client.quote.retrieve('INVALID');
} catch (error) {
if (error instanceof Brapi.NotFoundError) {
console.log('Ticker não encontrado');
} else if (error instanceof Brapi.RateLimitError) {
console.log('Limite de requisições atingido');
} else if (error instanceof Brapi.AuthenticationError) {
console.log('Token inválido');
}
}
```
### Python
```python
from brapi import Brapi, NotFoundError, RateLimitError
try:
quote = client.quote.retrieve(tickers="INVALID")
except NotFoundError:
print("Ticker não encontrado")
except RateLimitError:
print("Limite de requisições atingido")
```
***
## Configuração Avançada
### Retry Automático
```typescript
// TypeScript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
maxRetries: 3, // Tenta até 3 vezes
});
```
```python
# Python
client = Brapi(
api_key="seu_token",
max_retries=3, # Tenta até 3 vezes
)
```
### Timeouts
```typescript
// TypeScript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
timeout: 10000, // 10 segundos
});
```
```python
# Python
client = Brapi(
api_key="seu_token",
timeout=10.0, # 10 segundos
)
```
***
## Gerado com Stainless
Nossas SDKs são geradas automaticamente usando [Stainless](https://www.stainless.com/), garantindo:
* ✅ Sempre sincronizadas com a API
* ✅ Tipos precisos e atualizados
* ✅ Documentação inline
* ✅ Padrões de indústria
* ✅ Testes automáticos
***
## Começar a Usar
Escolha a SDK da sua linguagem:
### TypeScript / JavaScript
```bash
npm install brapi
```
**[📚 Ver Documentação Completa →](/docs/sdks/typescript)**
**Links:**
* 📦 [NPM Package](https://www.npmjs.com/package/brapi)
* 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-typescript)
***
### Python
```bash
pip install brapi
```
**[📚 Ver Documentação Completa →](/docs/sdks/python)**
**Links:**
* 📦 [PyPI Package](https://pypi.org/project/brapi/)
* 🔧 [GitHub Repository](https://github.com/brapi-dev/brapi-python)
***
## Futuras SDKs
Estamos trabalhando em SDKs para:
* 🔜 **Go** - Em desenvolvimento
* 🔜 **PHP** - Planejado
* 🔜 **Java** - Planejado
* 🔜 **Ruby** - Planejado
Interessado em contribuir ou sugerir uma SDK? [Abra uma issue](https://github.com/brapi-dev) no GitHub!
***
## Suporte e Comunidade
* 💬 [GitHub Discussions](https://github.com/brapi-dev)
* 🐛 [Reportar Bug](https://github.com/brapi-dev)
* 📧 [Email de Suporte](mailto:contato@brapi.dev)
* 📚 [Documentação da API](/docs)
***
## Open Source
Todas as nossas SDKs são **open source** e licenciadas sob MIT. Contribuições são muito bem-vindas!
* ⭐ [Star no GitHub](https://github.com/brapi-dev)
* 🤝 [Contribuir](https://github.com/brapi-dev)
* 📖 [Changelog](https://github.com/brapi-dev)
# SDK Python
URL: /docs/sdks/python.mdx
SDK oficial Python da brapi.dev. Biblioteca completa com type hints, suporte síncrono e assíncrono, integração com asyncio e aiohttp, tratamento de erros automático.
***
title: 'SDK Python'
description: >-
SDK oficial Python da brapi.dev. Biblioteca completa com type hints, suporte
síncrono e assíncrono, integração com asyncio e aiohttp, tratamento de erros
automático.
full: false
keywords:
brapi, sdk, python, pip, api client, asyncio, httpx
openGraph:
title: SDK Python - brapi.dev
description: >-
SDK oficial Python com type hints e suporte síncrono e assíncrono
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T20:00:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Instale a SDK via pip'
text: 'Execute pip install brapi no terminal. Para melhor performance async, use pip install brapi\[aiohttp].'
* name: 'Configure a variável de ambiente com seu token'
text: 'Crie um arquivo .env com BRAPI\_API\_KEY=seu\_token\_aqui e use python-dotenv para carregar: from dotenv import load\_dotenv; load\_dotenv().'
* name: 'Importe e inicialize o cliente Brapi'
text: 'No seu código Python, importe com from brapi import Brapi e crie uma instância: client = Brapi(api\_key=os.environ.get("BRAPI\_API\_KEY")).'
* name: 'Busque cotações com o cliente síncrono ou assíncrono'
text: 'Use quote = client.quote.retrieve(tickers="PETR4") para síncrono, ou await client.quote.retrieve(tickers="PETR4") com AsyncBrapi para async.'
* name: 'Trate erros usando as exceções tipadas'
text: 'Importe exceções como NotFoundError, RateLimitError e use try/except para tratamento específico de cada tipo de erro.'
howToTools:
* 'Python 3.8+'
* 'pip'
* 'Editor de código'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
* 'Ambiente Python configurado'
***
SDK oficial da brapi.dev para Python 3.8+, oferecendo acesso conveniente à API REST com type hints completos e suporte síncrono e assíncrono.
## Características
* ✅ **Type hints completos** - Autocomplete e validação no IDE
* ✅ **Python 3.8+** - Compatível com versões modernas
* ✅ **Sync e Async** - Cliente síncrono e assíncrono
* ✅ **Powered by httpx** - HTTP/2 e connection pooling
* ✅ **Suporte aiohttp** - Performance assíncrona otimizada
* ✅ **Tratamento de erros** - Exceções tipadas e descritivas
* ✅ **Retry automático** - Tratamento inteligente de falhas
* ✅ **Gerado com Stainless** - Sempre atualizado com a API
## Instalação
```bash
pip install brapi
```
Com suporte a aiohttp (opcional, para melhor performance async):
```bash
pip install brapi[aiohttp]
```
## Início Rápido
### Cliente Síncrono
```python
import os
from brapi import Brapi
client = Brapi(
api_key=os.environ.get("BRAPI_API_KEY"),
)
# Buscar cotação
quote = client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
# Múltiplas ações
quotes = client.quote.retrieve(tickers="PETR4,VALE3,ITUB4")
for stock in quotes.results:
print(f"{stock.symbol}: R$ {stock.regular_market_price}")
```
### Cliente Assíncrono
```python
import os
import asyncio
from brapi import AsyncBrapi
client = AsyncBrapi(
api_key=os.environ.get("BRAPI_API_KEY"),
)
async def main():
quote = await client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
asyncio.run(main())
```
## Configuração
### Variáveis de Ambiente
Recomendamos usar `python-dotenv` para gerenciar variáveis de ambiente:
```bash
pip install python-dotenv
```
Crie um arquivo `.env`:
```bash
BRAPI_API_KEY=seu_token_aqui
```
No seu código:
```python
import os
from dotenv import load_dotenv
from brapi import Brapi
load_dotenv()
client = Brapi(
api_key=os.environ.get("BRAPI_API_KEY"),
)
```
### Opções do Cliente
```python
client = Brapi(
api_key="seu_token",
environment="production", # 'production' ou 'sandbox'
max_retries=2, # Número de tentativas (padrão: 2)
timeout=60.0, # Timeout em segundos (padrão: 60)
)
```
## Exemplos de Uso
### Cotações
```python
# Cotação única
quote = client.quote.retrieve(tickers="PETR4")
stock = quote.results[0]
print(f"Símbolo: {stock.symbol}")
print(f"Nome: {stock.short_name}")
print(f"Preço: R$ {stock.regular_market_price}")
print(f"Variação: {stock.regular_market_change_percent}%")
# Com módulos adicionais
quote_with_data = client.quote.retrieve(
tickers="PETR4",
modules="summaryProfile,balanceSheetHistory"
)
```
### Lista de Ações
```python
# Todas as ações disponíveis
stocks = client.quote.list()
for stock in stocks.stocks:
print(f"{stock.stock}: {stock.name} ({stock.type})")
# Com paginação
stocks_page = client.quote.list(page=1, limit=50)
```
### Criptomoedas
```python
# Cotação de cripto
crypto = client.crypto.retrieve(coin="BTC")
print(f"Bitcoin: ${crypto.currency}")
# Lista de criptos disponíveis
cryptos = client.crypto.available()
for coin in cryptos.coins:
print(f"{coin.coin}: {coin.name}")
```
### Moedas
```python
# Cotação de moeda
currency = client.currency.retrieve(currency="USD-BRL")
print(f"Dólar: R$ {currency.ask}")
# Lista de moedas disponíveis
currencies = client.currency.available()
```
### Inflação
```python
# Dados de inflação do Brasil
inflation = client.inflation.retrieve(country="brazil")
print(f"IPCA: {inflation.IPCA}")
# Países disponíveis
countries = client.inflation.available()
```
### Taxa de Juros
```python
# Taxa SELIC
selic = client.prime_rate.retrieve(country="brazil")
print(f"SELIC: {selic.value}%")
# Países disponíveis
countries = client.prime_rate.available()
```
## Cliente Assíncrono
### Com httpx (padrão)
```python
import asyncio
from brapi import AsyncBrapi
async def main():
client = AsyncBrapi(api_key="seu_token")
# Todas as operações usam await
quote = await client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
# Não esqueça de fechar o cliente
await client.close()
asyncio.run(main())
```
### Com Context Manager
```python
import asyncio
from brapi import AsyncBrapi
async def main():
async with AsyncBrapi(api_key="seu_token") as client:
quote = await client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
# Cliente fechado automaticamente
asyncio.run(main())
```
### Com aiohttp (melhor performance)
```python
import asyncio
from brapi import AsyncBrapi, DefaultAioHttpClient
async def main():
async with AsyncBrapi(
api_key="seu_token",
http_client=DefaultAioHttpClient(),
) as client:
quote = await client.quote.retrieve(tickers="PETR4")
print(quote.results[0].regular_market_price)
asyncio.run(main())
```
### Requisições Concorrentes
```python
import asyncio
from brapi import AsyncBrapi
async def get_multiple_quotes():
async with AsyncBrapi(api_key="seu_token") as client:
# Buscar várias cotações em paralelo
tasks = [
client.quote.retrieve(tickers="PETR4"),
client.quote.retrieve(tickers="VALE3"),
client.quote.retrieve(tickers="ITUB4"),
]
results = await asyncio.gather(*tasks)
for quote in results:
stock = quote.results[0]
print(f"{stock.symbol}: R$ {stock.regular_market_price}")
asyncio.run(get_multiple_quotes())
```
## Tratamento de Erros
```python
from brapi import Brapi
from brapi import (
APIError,
BadRequestError,
AuthenticationError,
NotFoundError,
RateLimitError,
)
client = Brapi(api_key="seu_token")
try:
quote = client.quote.retrieve(tickers="INVALID")
except NotFoundError as e:
print(f"Ticker não encontrado: {e}")
except RateLimitError as e:
print(f"Limite de requisições: {e}")
except AuthenticationError as e:
print(f"Token inválido: {e}")
except APIError as e:
print(f"Erro na API: {e}")
```
### Tipos de Exceção
| Exception | Status | Descrição |
| -------------------------- | ------ | ---------------------- |
| `BadRequestError` | 400 | Requisição inválida |
| `AuthenticationError` | 401 | Token inválido |
| `PermissionDeniedError` | 403 | Sem permissão |
| `NotFoundError` | 404 | Recurso não encontrado |
| `UnprocessableEntityError` | 422 | Dados inválidos |
| `RateLimitError` | 429 | Limite de requisições |
| `InternalServerError` | 5xx | Erro no servidor |
| `APIConnectionError` | N/A | Erro de conexão |
## Integração com Flask
```python
from flask import Flask, jsonify
from brapi import Brapi
app = Flask(__name__)
client = Brapi(api_key="seu_token")
@app.route('/api/quote/')
def get_quote(ticker):
try:
quote = client.quote.retrieve(tickers=ticker)
return jsonify({
'symbol': quote.results[0].symbol,
'price': quote.results[0].regular_market_price,
})
except NotFoundError:
return jsonify({'error': 'Ticker not found'}), 404
if __name__ == '__main__':
app.run()
```
## Integração com FastAPI
```python
from fastapi import FastAPI, HTTPException
from brapi import AsyncBrapi, NotFoundError
app = FastAPI()
client = AsyncBrapi(api_key="seu_token")
@app.get("/api/quote/{ticker}")
async def get_quote(ticker: str):
try:
quote = await client.quote.retrieve(tickers=ticker)
return {
'symbol': quote.results[0].symbol,
'price': quote.results[0].regular_market_price,
}
except NotFoundError:
raise HTTPException(status_code=404, detail="Ticker not found")
@app.on_event("shutdown")
async def shutdown():
await client.close()
```
## Integração com Pandas
```python
import pandas as pd
from brapi import Brapi
client = Brapi(api_key="seu_token")
def get_quotes_dataframe(tickers: list[str]) -> pd.DataFrame:
"""Retorna cotações como DataFrame"""
tickers_str = ','.join(tickers)
quote = client.quote.retrieve(tickers=tickers_str)
data = []
for stock in quote.results:
data.append({
'symbol': stock.symbol,
'name': stock.short_name,
'price': stock.regular_market_price,
'change_percent': stock.regular_market_change_percent,
})
return pd.DataFrame(data)
# Uso
df = get_quotes_dataframe(['PETR4', 'VALE3', 'ITUB4'])
print(df)
# Salvar em Excel
df.to_excel('cotacoes.xlsx', index=False)
```
## Timeouts
```python
# Timeout global
client = Brapi(
api_key="seu_token",
timeout=10.0, # 10 segundos
)
# Timeout por requisição
quote = client.quote.retrieve(
tickers="PETR4",
timeout=5.0, # 5 segundos
)
```
## Retry Automático
```python
# Configurar retries
client = Brapi(
api_key="seu_token",
max_retries=3, # Tenta até 3 vezes
)
# Desabilitar retries
client = Brapi(
api_key="seu_token",
max_retries=0, # Sem retry
)
```
## Type Hints
A SDK inclui type hints completos para todas as operações:
```python
from brapi import Brapi
from brapi.types import QuoteRetrieveResponse
client: Brapi = Brapi(api_key="seu_token")
# Type checking automático
quote: QuoteRetrieveResponse = client.quote.retrieve(tickers="PETR4")
# Autocomplete no IDE
price: float = quote.results[0].regular_market_price
```
## Boas Práticas
### 1. Reutilize o Cliente
```python
# ✅ Bom - Crie uma instância e reutilize
from brapi import Brapi
client = Brapi(api_key="seu_token")
def get_quote(ticker):
return client.quote.retrieve(tickers=ticker)
# ❌ Ruim - Criar nova instância a cada uso
def get_quote(ticker):
client = Brapi(api_key="seu_token") # Não faça isso
return client.quote.retrieve(tickers=ticker)
```
### 2. Use Variáveis de Ambiente
```python
# ✅ Bom
import os
from brapi import Brapi
client = Brapi(api_key=os.environ.get("BRAPI_API_KEY"))
# ❌ Ruim - Nunca hardcode o token
client = Brapi(api_key="meu-token-secreto") # Não faça isso!
```
### 3. Use Context Manager com Async
```python
# ✅ Bom
async with AsyncBrapi(api_key="seu_token") as client:
quote = await client.quote.retrieve(tickers="PETR4")
# Cliente fechado automaticamente
# ❌ Ruim
client = AsyncBrapi(api_key="seu_token")
quote = await client.quote.retrieve(tickers="PETR4")
# Esqueceu de fechar!
```
## Links Úteis
* 📦 [Pacote PyPI](https://pypi.org/project/brapi/)
* 🔧 [Repositório GitHub](https://github.com/brapi-dev/brapi-python)
* 📚 [Documentação Completa da API](/docs)
* 🐛 [Reportar Bug](https://github.com/brapi-dev/brapi-python/issues)
## Suporte
Precisa de ajuda? Entre em contato:
* 💬 [Abra uma issue](https://github.com/brapi-dev/brapi-python/issues)
* 📧 [Suporte por email](mailto:contato@brapi.dev)
* 📖 [Documentação completa](/docs)
## Contribuindo
Contribuições são bem-vindas! Veja o [guia de contribuição](https://github.com/brapi-dev/brapi-python/blob/main/CONTRIBUTING.md).
## Licença
MIT License - veja [LICENSE](https://github.com/brapi-dev/brapi-python/blob/main/LICENSE) para detalhes.
# SDK TypeScript/JavaScript
URL: /docs/sdks/typescript.mdx
SDK oficial TypeScript/JavaScript da brapi.dev. Biblioteca completa com tipos TypeScript, suporte a Node.js e navegador, tratamento de erros automático e retry inteligente.
***
title: 'SDK TypeScript/JavaScript'
description: >-
SDK oficial TypeScript/JavaScript da brapi.dev. Biblioteca completa com tipos
TypeScript, suporte a Node.js e navegador, tratamento de erros automático e
retry inteligente.
full: false
keywords:
brapi, sdk, typescript, javascript, npm, api client, node.js
openGraph:
title: SDK TypeScript/JavaScript - brapi.dev
description: >-
SDK oficial TypeScript/JavaScript com tipos completos e suporte a async/await
type: website
locale: pt\_BR
lastUpdated: '2025-10-12T20:00:00.000Z'
lang: pt-BR
howToSteps:
* name: 'Instale a SDK via npm, yarn ou bun'
text: 'Execute npm install brapi (ou yarn add brapi, bun add brapi) no terminal do seu projeto para instalar a SDK oficial.'
* name: 'Configure a variável de ambiente com seu token'
text: 'Crie um arquivo .env e adicione BRAPI\_API\_KEY=seu\_token\_aqui. Nunca exponha o token diretamente no código.'
* name: 'Importe e inicialize o cliente Brapi'
text: 'No seu código TypeScript/JavaScript, importe com import Brapi from "brapi" e crie uma instância: const client = new Brapi({ apiKey: process.env.BRAPI\_API\_KEY }).'
* name: 'Busque cotações usando async/await'
text: 'Use const quote = await client.quote.retrieve("PETR4") para obter cotações. O resultado já vem tipado com IntelliSense completo.'
* name: 'Trate erros usando as exceções tipadas'
text: 'Envolva as chamadas em try/catch e verifique tipos de erro como Brapi.NotFoundError, Brapi.RateLimitError para tratamento específico.'
howToTools:
* 'Node.js'
* 'npm, yarn, pnpm ou bun'
* 'Editor de código (VS Code recomendado)'
howToSupplies:
* 'Conta brapi.dev'
* 'Token de API brapi.dev'
* 'Projeto Node.js ou TypeScript'
***
SDK oficial da brapi.dev para TypeScript e JavaScript, oferecendo acesso conveniente à API REST com tipos completos e suporte a async/await.
## Características
* ✅ **Tipos TypeScript completos** - IntelliSense e autocomplete
* ✅ **Suporte a Node.js e Browser** - Funciona em qualquer ambiente
* ✅ **Async/Await nativo** - API moderna e fácil de usar
* ✅ **Retry automático** - Tratamento inteligente de falhas
* ✅ **Tratamento de erros** - Erros tipados e descritivos
* ✅ **Tree-shakeable** - Bundle otimizado
* ✅ **Gerado com Stainless** - Sempre atualizado com a API
## Instalação
```bash
npm install brapi
# ou
yarn add brapi
# ou
pnpm add brapi
# ou
bun add brapi
```
## Início Rápido
### JavaScript
```javascript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
// Buscar cotação de uma ação
const quote = await client.quote.retrieve('PETR4');
console.log(quote.results[0].regularMarketPrice);
// Buscar múltiplas ações
const quotes = await client.quote.retrieve('PETR4,VALE3,ITUB4');
console.log(quotes.results);
```
### TypeScript
```typescript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
// Tipos automáticos!
const quote: Brapi.QuoteRetrieveResponse = await client.quote.retrieve('PETR4');
// IntelliSense completo
const price = quote.results[0].regularMarketPrice;
const change = quote.results[0].regularMarketChangePercent;
```
## Configuração
### Variáveis de Ambiente
Crie um arquivo `.env`:
```bash
BRAPI_API_KEY=seu_token_aqui
```
### Opções do Cliente
```typescript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY, // Obrigatório
environment: 'production', // 'production' ou 'sandbox'
maxRetries: 2, // Número de tentativas (padrão: 2)
timeout: 60000, // Timeout em ms (padrão: 60000)
});
```
## Exemplos de Uso
### Cotações
```typescript
// Cotação única
const quote = await client.quote.retrieve('PETR4');
// Múltiplas cotações
const quotes = await client.quote.retrieve('PETR4,VALE3,ITUB4');
// Com parâmetros adicionais
const quoteWithModules = await client.quote.retrieve('PETR4', {
modules: 'summaryProfile,balanceSheetHistory',
});
// Resultado
console.log(quote.results[0]);
// {
// symbol: 'PETR4',
// shortName: 'PETROBRAS PN',
// regularMarketPrice: 38.45,
// regularMarketChangePercent: 2.15,
// currency: 'BRL',
// ...
// }
```
### Lista de Ações
```typescript
// Listar todas as ações disponíveis
const stocks = await client.quote.list();
// Com paginação
const stocksPage = await client.quote.list({
page: 1,
limit: 50,
});
console.log(stocks.stocks);
// [
// { stock: 'PETR4', name: 'Petrobras PN', type: 'stock' },
// { stock: 'VALE3', name: 'Vale ON', type: 'stock' },
// ...
// ]
```
### Criptomoedas
```typescript
// Cotação de cripto
const crypto = await client.crypto.retrieve('BTC');
// Lista de criptos disponíveis
const cryptos = await client.crypto.available();
```
### Moedas
```typescript
// Cotação de moeda
const currency = await client.currency.retrieve('USD-BRL');
// Lista de moedas disponíveis
const currencies = await client.currency.available();
```
### Inflação
```typescript
// Dados de inflação
const inflation = await client.inflation.retrieve('IPCA');
// Países disponíveis
const countries = await client.inflation.available();
```
### Taxa de Juros
```typescript
// Taxa SELIC
const selic = await client.primeRate.retrieve('SELIC');
// Países disponíveis
const countries = await client.primeRate.available();
```
## Tratamento de Erros
A SDK lança erros tipados para facilitar o tratamento:
```typescript
try {
const quote = await client.quote.retrieve('INVALID');
} catch (error) {
if (error instanceof Brapi.APIError) {
console.log(error.status); // Código HTTP (ex: 404)
console.log(error.name); // Nome do erro (ex: 'NotFoundError')
console.log(error.message); // Mensagem descritiva
console.log(error.headers); // Headers da resposta
}
}
```
### Tipos de Erro
| Status Code | Error Type | Descrição |
| ----------- | -------------------------- | ---------------------- |
| 400 | `BadRequestError` | Requisição inválida |
| 401 | `AuthenticationError` | Token inválido |
| 403 | `PermissionDeniedError` | Sem permissão |
| 404 | `NotFoundError` | Recurso não encontrado |
| 422 | `UnprocessableEntityError` | Dados inválidos |
| 429 | `RateLimitError` | Limite de requisições |
| >=500 | `InternalServerError` | Erro no servidor |
| N/A | `APIConnectionError` | Erro de conexão |
## Retry Automático
A SDK tenta automaticamente 2 vezes em caso de falha:
```typescript
// Configurar retries
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
maxRetries: 3, // Tenta até 3 vezes
});
// Desabilitar retries
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
maxRetries: 0, // Sem retry
});
```
Erros automaticamente retriados:
* Erros de conexão
* 408 Request Timeout
* 409 Conflict
* 429 Rate Limit
* Erros 5xx (servidor)
## Uso em Next.js
### Server Component
```typescript
// app/stock/[ticker]/page.tsx
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
export default async function StockPage({
params,
}: {
params: { ticker: string };
}) {
const quote = await client.quote.retrieve(params.ticker);
const stock = quote.results[0];
return (
);
}
```
### API Route
```typescript
// app/api/quote/[ticker]/route.ts
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
export async function GET(
request: Request,
{ params }: { params: { ticker: string } }
) {
try {
const quote = await client.quote.retrieve(params.ticker);
return NextResponse.json(quote);
} catch (error) {
if (error instanceof Brapi.NotFoundError) {
return NextResponse.json(
{ error: 'Ticker not found' },
{ status: 404 }
);
}
throw error;
}
}
```
### Client Component com SWR
```typescript
'use client';
const fetcher = (url: string) => fetch(url).then(r => r.json());
export function StockQuote({ ticker }: { ticker: string }) {
const { data, error } = useSWR(`/api/quote/${ticker}`, fetcher);
if (error) return ;
if (!data) return ;
const stock = data.results[0];
return ;
}
```
## Uso com Express
```typescript
const app = express();
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
app.get('/api/quote/:ticker', async (req, res) => {
try {
const quote = await client.quote.retrieve(req.params.ticker);
res.json(quote);
} catch (error) {
if (error instanceof Brapi.NotFoundError) {
res.status(404).json({ error: 'Ticker not found' });
} else {
res.status(500).json({ error: 'Internal server error' });
}
}
});
app.listen(3000);
```
## Timeouts
```typescript
// Timeout global
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
timeout: 10000, // 10 segundos
});
// Timeout por requisição
const quote = await client.quote.retrieve('PETR4', {
timeout: 5000, // 5 segundos
});
```
## Tipos Disponíveis
A SDK exporta todos os tipos necessários:
```typescript
import type {
QuoteRetrieveResponse,
QuoteListResponse,
CryptoRetrieveResponse,
CurrencyRetrieveResponse,
InflationRetrieveResponse,
} from 'brapi';
```
## Boas Práticas
### 1. Reutilize a Instância do Cliente
```typescript
// ✅ Bom - Crie uma instância e reutilize
export const brapiClient = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
// ❌ Ruim - Criar nova instância a cada uso
function getQuote() {
const client = new Brapi({ apiKey: '...' }); // Não faça isso
}
```
### 2. Use Variáveis de Ambiente
```typescript
// ✅ Bom
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
});
// ❌ Ruim - Nunca hardcode o token
const client = new Brapi({
apiKey: 'meu-token-secreto', // Não faça isso!
});
```
### 3. Trate Erros Adequadamente
```typescript
// ✅ Bom
try {
const quote = await client.quote.retrieve('PETR4');
} catch (error) {
if (error instanceof Brapi.RateLimitError) {
// Trate limite de requisições
} else if (error instanceof Brapi.NotFoundError) {
// Trate ticker não encontrado
}
}
```
## Links Úteis
* 📦 [Pacote NPM](https://www.npmjs.com/package/brapi)
* 🔧 [Repositório GitHub](https://github.com/brapi-dev/brapi-typescript)
* 📚 [Documentação Completa da API](/docs)
* 🐛 [Reportar Bug](https://github.com/brapi-dev/brapi-typescript/issues)
## Suporte
Precisa de ajuda? Entre em contato:
* 💬 [Abra uma issue](https://github.com/brapi-dev/brapi-typescript/issues)
* 📧 [Suporte por email](mailto:contato@brapi.dev)
* 📖 [Documentação completa](/docs)
## Contribuindo
Contribuições são bem-vindas! Veja o [guia de contribuição](https://github.com/brapi-dev/brapi-typescript/blob/main/CONTRIBUTING.md).
## Licença
MIT License - veja [LICENSE](https://github.com/brapi-dev/brapi-typescript/blob/main/LICENSE) para detalhes.
# Taxa Básica de Juros - Países Disponíveis
URL: /docs/taxa-basica-de-juros/available.mdx
Endpoint para listar todos os países com dados de Taxa Básica de Juros (SELIC) disponíveis na API. Permite a filtragem de países por nome, facilitando a implementação de recursos de autocomplete em interfaces.
***
title: Taxa Básica de Juros - Países Disponíveis
description: >-
Endpoint para listar todos os países com dados de Taxa Básica de Juros (SELIC)
disponíveis na API. Permite a filtragem de países por nome, facilitando a
implementação de recursos de autocomplete em interfaces.
full: true
keywords: brapi, api, documentação, taxa de juros, selic, prime rate, países
openGraph:
title: Taxa Básica de Juros - Países Disponíveis
description: >-
Endpoint para listar todos os países com dados de Taxa Básica de Juros
(SELIC) disponíveis na API. Permite a filtragem de países por nome,
facilitando a implementação de recursos de autocomplete em interfaces.
type: website
locale: pt\_BR
lastUpdated: '2025-04-29T10:30:45.123Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/prime-rate/available
toc:
* depth: 2
title:
Listar Todos Os Possíveis Países com Taxa Básica de Juros (SELIC)
Suportados
url: '#listar-todos-os-possíveis-países-com-taxa-básica-de-juros-selic-suportados'
structuredData:
headings:
* content:
Listar Todos Os Possíveis Países com Taxa Básica de Juros (SELIC)
Suportados
id: listar-todos-os-possíveis-países-com-taxa-básica-de-juros-selic-suportados
contents:
* content: >-
Liste todos os países disponíveis com dados de taxa básica de juros
(SELIC) na API brapi. Este endpoint facilita a descoberta de quais
países possuem dados disponíveis para consulta através do endpoint
principal `/api/v2/prime-rate`.
### Funcionalidades:
* **Busca Filtrada:** Utilize o parâmetro `search` para filtrar
países por nome ou parte do nome.
* **Ideal para Autocomplete:** Perfeito para implementar campos de
busca com autocompletar em interfaces de usuário.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Listar países que contenham "BR" no nome:**
```bash
curl -X GET
"https://brapi.dev/api/v2/prime-rate/available?search=BR&token=SEU_TOKEN"
```
**Listar todos os países disponíveis:**
```bash
curl -X GET
"https://brapi.dev/api/v2/prime-rate/available?token=SEU_TOKEN"
```
### Resposta:
A resposta contém um array `countries` com a lista de países
disponíveis para consulta de taxas básicas de juros (ex: `["brazil",
"united states", "european union"]`).
heading: listar-todos-os-possíveis-países-com-taxa-básica-de-juros-selic-suportados
***
Endpoint para listar todos os **países com dados de Taxa Básica de Juros
(SELIC)** disponíveis na API.
Facilita a descoberta de quais países possuem dados disponíveis e permite a
implementação de recursos de busca e autocomplete em interfaces de usuário.
# Taxa Básica de Juros
URL: /docs/taxa-basica-de-juros.mdx
Endpoints para consulta de Taxas Básicas de Juros (SELIC) de diferentes países. Permite a obtenção de taxas atuais e séries históricas das taxas básicas de juros, com personalização por país, período e opções de ordenação.
***
title: Taxa Básica de Juros
description: >-
Endpoints para consulta de Taxas Básicas de Juros (SELIC) de diferentes
países. Permite a obtenção de taxas atuais e séries históricas das taxas
básicas de juros, com personalização por país, período e opções de ordenação.
full: true
keywords: brapi, api, documentação, taxa de juros, selic, prime rate
openGraph:
title: Taxa Básica de Juros
description: >-
Endpoints para consulta de Taxas Básicas de Juros (SELIC) de diferentes
países. Permite a obtenção de taxas atuais e séries históricas das taxas
básicas de juros, com personalização por país, período e opções de
ordenação.
type: website
locale: pt\_BR
lastUpdated: '2025-04-29T10:30:45.123Z'
lang: pt-BR
\_openapi:
method: GET
route: /api/v2/prime-rate
toc:
* depth: 2
title:
Buscar Taxa Básica de Juros (SELIC) de um País por um Período
Determinado
url: '#buscar-taxa-básica-de-juros-selic-de-um-país-por-um-período-determinado'
structuredData:
headings:
* content:
Buscar Taxa Básica de Juros (SELIC) de um País por um Período
Determinado
id: buscar-taxa-básica-de-juros-selic-de-um-país-por-um-período-determinado
contents:
* content: >-
Obtenha informações atualizadas sobre a taxa básica de juros (SELIC)
de um país por um período determinado.
### Funcionalidades:
* **Seleção por País:** Especifique o país desejado usando o
parâmetro `country` (padrão: brazil).
* **Período Customizado:** Defina datas de início e fim com `start`
e `end` para consultar um intervalo específico.
* **Ordenação:** Ordene os resultados por data ou valor com os
parâmetros `sortBy` e `sortOrder`.
* **Dados Históricos:** Solicite o histórico completo ou apenas o
valor mais recente com o parâmetro `historical`.
### Autenticação:
Requer token de autenticação via `token` (query) ou `Authorization`
(header).
### Exemplo de Requisição:
**Taxa de juros do Brasil entre dezembro/2021 e janeiro/2022:**
```bash
curl -X GET
"https://brapi.dev/api/v2/prime-rate?country=brazil&start=01/12/2021&end=01/01/2022&sortBy=date&sortOrder=desc&token=SEU_TOKEN"
```
**Buscar a taxa básica de juros atual do Brasil:**
```bash
curl -X GET
"https://brapi.dev/api/v2/prime-rate?country=brazil&token=SEU_TOKEN"
```
### Resposta:
A resposta contém um array `prime-rate`, onde cada objeto representa
um ponto de dado da taxa básica de juros com sua `date` (DD/MM/YYYY),
`value` (o valor da taxa como string) e `epochDate` (timestamp em
milissegundos).
heading: buscar-taxa-básica-de-juros-selic-de-um-país-por-um-período-determinado
***
Endpoints para consulta de **Taxas Básicas de Juros (SELIC)** de diferentes
países.
Permite a obtenção de taxas atuais e séries históricas das taxas básicas de
juros, com personalização por país, período e opções de ordenação.
Taxa SELIC obtida do **BCB** via Sistema Gerenciador de Séries Temporais (SGS).