Como automatizar cotações da B3 com Google Apps Script e brapi.dev

Conferir preço de ação manualmente, um por um, no site da corretora ou do Google Finanças, funciona até você ter cinco ou seis papéis na carteira. Depois disso vira trabalho repetitivo — e trabalho repetitivo é exatamente o tipo de coisa que dá pra automatizar com uma planilha e um pouco de código.

Neste guia eu mostro como puxar cotações da B3 direto para o Google Sheets usando Google Apps Script e a API gratuita da brapi.dev, sem precisar instalar nada.

O que é a brapi.dev

A brapi.dev é uma API brasileira gratuita de dados do mercado de ações. Ela devolve cotação, variação diária, volume, indicadores como P/L e histórico de dividendos de ativos da B3, tudo em JSON — formato que o Apps Script lê sem esforço.

Existem duas formas de usar:

  • Sem cadastro e sem token: quatro ativos de teste (PETR4, VALE3, ITUB4 e MGLU3) ficam liberados para chamadas diretas, sem limite de uso — ótimo para testar o fluxo antes de decidir se vale criar conta.
  • Com cadastro (plano gratuito): ao criar uma conta você ganha acesso a qualquer ticker da bolsa, com um limite de 15.000 requisições por mês, uma cotação por requisição, defasagem de cerca de 30 minutos nos dados e até 3 meses de histórico. Não inclui dividendos nesse plano. Para quem só quer atualizar uma carteira pessoal uma ou duas vezes por dia, essa cota é mais do que suficiente.

Se no futuro você precisar de dados em tempo real, múltiplos tickers por chamada ou histórico mais longo, a brapi tem planos pagos (Startup e Pro) — mas para o uso que a maioria dos investidores pessoa física faz, o gratuito resolve.

Passo a passo: puxando cotações para o Google Sheets

1. Crie a planilha e abra o Apps Script

Em uma planilha nova do Google Sheets, vá em Extensões > Apps Script. Isso abre um editor de código simples, ligado à sua planilha.

2. Escreva a função que busca a cotação

Cole o código abaixo no editor. Ele usa o serviço UrlFetchApp, nativo do Apps Script, para chamar a API e devolver o preço atual de um ticker:

function buscarCotacao(ticker) {
  var url = 'https://brapi.dev/api/quote/' + ticker;
  var resposta = UrlFetchApp.fetch(url);
  var dados = JSON.parse(resposta.getContentText());
  return dados.results[0].regularMarketPrice;
}

Com PETR4, VALE3, ITUB4 ou MGLU3 esse código já funciona sem token — é o exemplo mais direto para testar. Em uma consulta feita durante a escrita deste post, o endpoint devolveu para PETR4 um regularMarketPrice de 36,65, junto com variação percentual do dia e volume negociado — é esse tipo de dado que a função acima captura.

3. Transforme em função de planilha

Adicione o comentário @customfunction acima da função para que ela apareça como uma fórmula normal do Sheets:

/**
 * Busca a cotacao atual de um ticker na B3.
 * @customfunction
 */
function COTACAO(ticker) {
  var url = 'https://brapi.dev/api/quote/' + ticker;
  var resposta = UrlFetchApp.fetch(url);
  var dados = JSON.parse(resposta.getContentText());
  return dados.results[0].regularMarketPrice;
}

Salve o script, volte para a planilha e digite em qualquer célula:

=COTACAO('PETR4')

A célula retorna o preço atual do ativo, atualizado toda vez que a planilha recalcula.

4. Use um token para acessar qualquer ticker

Para ir além dos quatro ativos livres, crie uma conta gratuita no site da brapi, pegue seu token na área de API Keys e inclua ele na URL:

function COTACAO(ticker) {
  var token = 'SEU_TOKEN_AQUI';
  var url = 'https://brapi.dev/api/quote/' + ticker + '?token=' + token;
  var resposta = UrlFetchApp.fetch(url);
  var dados = JSON.parse(resposta.getContentText());
  return dados.results[0].regularMarketPrice;
}

Com isso, =COTACAO(‘HGLG11’) ou =COTACAO(‘WEGE3’) funcionam do mesmo jeito — lembrando do limite de 15.000 requisições por mês do plano gratuito, o que na prática dá bastante folga para atualizar uma carteira pessoal com dezenas de ativos várias vezes por dia.

5. Automatize a atualização

Se quiser que a planilha se atualize sozinha em vez de depender de recálculo manual, é possível criar um gatilho de tempo (Editar > Gatilhos do projeto atual no editor do Apps Script) para rodar uma função de atualização a cada hora, por exemplo, escrevendo os valores em células fixas em vez de fórmulas — assim você evita bater o limite de requisições recalculando a planilha toda hora sem necessidade.

Por que vale o esforço

Uma planilha que atualiza sozinha resolve dois problemas de quem acompanha ações na B3: elimina o trabalho manual de digitar preço por preço, e cria um histórico automático — já que dá para salvar cada leitura em uma nova linha e, com o tempo, montar seu próprio gráfico de evolução de preço, sem depender de nenhuma ferramenta paga.

É o mesmo princípio por trás de qualquer boa gestão de carteira: quanto menos fricção para manter os dados atualizados, mais consistente fica o acompanhamento — e mais fácil é notar quando algo pede atenção.

Este conteúdo tem fins educativos e não constitui recomendação de investimento. Os dados citados podem mudar — sempre confira os números atuais antes de decidir. Considere consultar um profissional certificado para sua situação específica.