SDKs Oficiais
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)
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)
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
npm install brapi
# ou
yarn add brapi
# ou
pnpm add brapi
# ou
bun add brapi
Exemplo Rápido
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:
Python
SDK oficial para Python 3.8+ com suporte síncrono e assíncrono.
Instalação
pip install brapi
# Com suporte a aiohttp (opcional, melhor performance)
pip install brapi[aiohttp]
Exemplo Rápido (Síncrono)
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)
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:
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:
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:
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:
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:
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:
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:
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
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
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
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
maxRetries: 3, // Tenta até 3 vezes
});
# Python
client = Brapi(
api_key="seu_token",
max_retries=3, # Tenta até 3 vezes
)
Timeouts
// TypeScript
const client = new Brapi({
apiKey: process.env.BRAPI_API_KEY,
timeout: 10000, // 10 segundos
});
# Python
client = Brapi(
api_key="seu_token",
timeout=10.0, # 10 segundos
)
Gerado com Stainless
Nossas SDKs são geradas automaticamente usando Stainless, 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
npm install brapi
Links:
Python
pip install brapi
Links:
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 no GitHub!
Suporte e Comunidade
Open Source
Todas as nossas SDKs são open source e licenciadas sob MIT. Contribuições são muito bem-vindas!