• Início
  • Conteúdo
  • Artigos
  • Blog
  • Como obter o histórico de dividendos e outros proventos com Python direto do site da B3

Como obter o histórico de dividendos e outros proventos com Python direto do site da B3

De forma bem simples, sem o uso de recursos avançados e em poucas linhas de código é possível extrair o histórico de proventos de companhias abertas direto do site da B3 em formato json.

Se preferir só ver o código completo pode pular para o final, mas recomendo ler tudo para ver como cada API usada foi encontrada e passo a passo para o desenvolvimento, pois o mesmo método pode ser usado para obter outras informações no site da B3 e em alguns outros sites.

Origem das informações no site da B3

Primeiro é importante para saber como encontrar as APIs no site da B3 que serão usadas no script.

Entrando nessa página podemos acessar informações sobre qualquer empresa listada pesquisando pelo código da ação ou nome:

Entrando na página da empresa temos várias informações, como no exemplo:

Clicando em Eventos Corporativos, entramos na página de proventos. Selecionando Proventos em Dinheiro, obtemos a lista de proventos conforme mostrado abaixo.

Encontrando a API de importação dos dados

Para encontrar a API, precisamos ver as requisições que a página faz para obter os dados. Para isso, na página de proventos, pressione CTRL+ALT+I para inspecionar a página.

No Chrome vai aparecer a seguinte tela:

Clique em Rede (ou Network) e no botão indicado embaixo para limpar as requisições. Ao selecionar novamente Proventos em Dinheiro, será exibido nessa tela as requisições que o site faz para importar os dados.

No caso desse página, a requisição que precisamos é a primeira, que está selecionada na imagem. A URL exibida ao lado é a API. Ao fazermos a requisição temos os proventos em formato json, conforme a imagem abaixo:

O seguinte texto na última parte da API: eyJsYW5ndWFnZSI6InB0LWJyIiwicGFnZU51bWJlciI6MSwicGFnZVNpemUiOjIwLCJ0cmFkaW5nTmFtZSI6IkFNQkVWU0EifQ==, são os parâmetros da busca codificados base64. Para ver os parâmetros podemos decodificar usando a biblioteca base64 para ver quais são os parâmetros.

Sabendo os parâmetros, podemos usar a função b64encode da mesma biblioteca para criar os parâmetros e codificar. Por exemplo só traz os 20 últimos registros, mas mudando o parâmetro é possível trazer todos, como nesse exemplo que traz todos os proventos da Petrobras desde 1996:

Obtendo o TradingName

O parâmetro TradingName da API não é um nome padronizado, mas é possível obtê-lo através do código da ação.

Novamente na página de empresas listadas, ao pesquisar a empresa, o site faz a requisição de uma API onde tem informações da empresa, incluindo o TradingName, como no exemplo:

Decodificando vemos que a API de busca usa o código da empresa no parâmetro “company”. E no resultado conseguimos o TradingName.

Nesse exemplo foi pesquisado o código da ação do Banco do Brasil (BBAS), mas a pesquisa também retornou o Itaú BBA por também conter “BBAS” no nome. Isso pode acontecer em alguns casos. Para pegar o TradingName certo é só pesquisar pelo código da ação no json como mostrado abaixo.

Script final do Python

Temos todas as APIs necessárias para criar o código para obter os proventos de uma empresa pelo código da ação. Segue abaixo o código:

carbon_1.png

Exemplos de execução:

Exemplo em dataframe do Pandas:

É importante saber que existe uma infinidade de formas que cada site pode fazer as requisições das informações. Em alguns podemos obter os dados dessa forma simples, mas em muitos isso não é possível.

 

 

  • Criado por