# 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 Versão no PyPI 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] ``` Versão no PyPI ## 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).