SDKs

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

NPM version Bundle size

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

PyPI version

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

FeatureTypeScript/JSPython
Tipos completos✅ TypeScript✅ Type hints
Autocomplete IDE
Sync/Async✅ Async✅ Ambos
Retry automático
Erros tipados
HTTP/2
Bundle size📦 PequenoN/A
Python 3.8+N/A
Node.js/BrowserN/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

📚 Ver Documentação Completa →

Links:


Python

pip install brapi

📚 Ver Documentação Completa →

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!