dadosb3
Cliente Python da API Dados B3: fundamentos auditáveis das companhias abertas brasileiras (2010–hoje), fundos imobiliários (FIIs) e ETFs, com metodologia pública. Cada número carrega a conta CVM de origem; os múltiplos são ponto-no-tempo (preço do 1º pregão a partir da chegada do balanço à CVM); nada é publicado sem a bateria de invariantes passar.
pip install dadosb3
from dadosb3 import DadosB3
api = DadosB3() # sem chave: WEGE3, BOVA11, MXRF11, rankings de ETF, /hoje, /saude
api.indicadores("WEGE3")["anos"] # ROE, ROIC, margens... com a conta CVM de cada número
api.multiplos("WEGE3") # P/L, P/VP, EV/EBITDA ponto-no-tempo
api.etf("BOVA11") # cota diária, ágio/deságio, taxa efetiva, carteira
api.auditar_amostra(semente=4242) # sorteie a SUA amostra e confira contra a CVM
api = DadosB3(chave="sua-chave") # ou DADOS_B3_API_KEY no ambiente
api.screener(roic_min=0.15, dl_ebitda_max=2, ano=2024)
api.fiis_screener(pvp_max=0.9, dy_min=0.10)
Novo na 0.2.0
api = DadosB3()
# a companhia: quem é, os códigos e o endereço de cada recurso
api.empresa("WEGE3")["recursos"]["indicadores"]["url"]
# o retrato do último balanço em fatos comparados, com a bandeira de confiança
v = api.veredito("WEGE3")
v["frase_topo"], v["bandeira"]["cor"]
# o vigia: o que mudou de faixa, período contra período, com os dois números
for e in api.vigia(ticker="WEGE3", limite=5)["eventos"]:
print(e["data"], e["texto"])
api.vigia(tipo="reapresentacao") # todas as reapresentações recentes
api.vigia(classe="fiis", tipo="faixa_pvp") # o vigia dos fundos imobiliários
# informes de FII reenviados à CVM (versão vigente; antes e depois quando visto)
api.reapresentacoes_fii("HGLG11")["versoes"]
# "valeu a pena?" em poucos números, sem chave, para qualquer ação, FII ou ETF
d = api.desempenho("PETR4") # últimos 5 anos; cruzamento de médias 21 x 100
d["buy_and_hold"]["retorno_pct"], d["buy_and_hold"]["retorno_total_pct"] # preço e com proventos
api.fii_desempenho("MXRF11"); api.etf_desempenho("BOVA11") # só preço; rendimentos fora (FII: total à parte)
api.indice_desempenho("IBOV"); api.indices() # o benchmark (índice de preço, sem dividendos)
# a série diária: amostra de 30 pregões sem chave; completa com chave
amostra = api.precos("PETR4") # amostra=True e um `aviso` dizendo como ter tudo
api = DadosB3(chave="sua-chave")
serie = api.precos("PETR4", de="2021-10-04")["serie"]
api.eventos("PETR4") # desdobramentos e grupamentos, com a fonte de cada um
# screener ponto-no-tempo e com recibo citável (exige chave)
api = DadosB3(chave="sua-chave")
tela = api.screener(roic_min=0.15, dl_ebitda_max=2, as_of="2023-06-30", recibo=True)
tela["recibo"]["url"] # quem recebe o link confere o hash
api.recibo(tela["recibo"]["id"])["sha256"]
Os testes do pacote rodam sem rede, contra respostas REAIS da API gravadas em
tests/respostas/ (e regravadas pelo mesmo cliente quando a API muda).
Chave grátis (200 consultas/dia, sem cartão) ou Pro em dadosb3.com/assinar. Documentação da API, com curl, Python e a resposta real de cada rota, em dadosb3.com/api; metodologia em dadosb3.com/metodologia; para quem é (e para quem não é) em dadosb3.com/para-quem.
Métodos
| Método | Rota | Chave? |
|---|---|---|
empresas() |
/empresas |
não |
empresa(t) |
/empresas/{t} |
não |
indicadores(t), multiplos(t), fatos(t), dividendos(t), scores(t), reapresentacoes(t), trimestres(t) |
/empresas/{t}/... |
WEGE3 não; demais sim |
screener(ano=, as_of=, recibo=, **faixas) |
/screener |
sim |
fii(t) |
/fiis/{t} |
MXRF11 não; demais sim |
fiis_ranking(), fiis_screener(**faixas) |
/fiis, /fiis/screener |
sim |
etfs_ranking() |
/etfs |
não |
etf(t) |
/etfs/{t} |
BOVA11 não; demais sim |
hoje(), saude(), dicionario() |
/hoje, /saude, /dicionario |
não |
auditar_amostra(semente, n=25) |
/auditoria/amostra/{semente}/{n} |
não |
veredito(t) |
/empresas/{t}/veredito |
não |
vigia(ticker=, tipo=, classe=, desde=, limite=) |
/vigia/eventos |
não |
reapresentacoes_fii(t) |
/fiis/{t}/reapresentacoes |
não |
recibo(id) |
/recibo/{id}.json |
não |
Erros: ChaveNecessaria (401), NaoEncontrado (404), ErroDadosB3 (demais),
todos com .status e .detalhe (o corpo da resposta da API).
Limites, ditos antes
Preço só de fim de dia (COTAHIST); sem tratamento de viés de sobrevivência (companhia que saiu da bolsa não está na base); sem composição histórica de índice; a base começa em 2010. A lista completa está em dadosb3.com/o-que-nao-resolvemos.
Não é recomendação de investimento. Fontes: CVM (dados abertos, ODbL) e B3 (COTAHIST). Projeto independente, não afiliado à B3 nem à CVM. Licença deste cliente: MIT. Conector MCP: Val7h/dados-b3-mcp.
Metadata
Release files for dadosb3 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dadosb3-0.3.0.tar.gz | 12.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dadosb3-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / dadosb3-0.3.0.tar.gz
| Download URL | dadosb3-0.3.0.tar.gz |
|---|---|
| Size | 12.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57057f135e79b0614e76e003d2e43f586acdd1b471294305c5cd273d7b81f2e7
|
|
BLAKE2b-256 checksum How to use checksums |
358797eaf0dfab4269593a068210dd732f1eae6ad2d7f99d6de7913d8bbaa4ee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / dadosb3-0.3.0-py3-none-any.whl
| Download URL | dadosb3-0.3.0-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
885953b45bbd049da261614b7a914151d39eee3e9699bd34b92e56f40cda16fd
|
|
BLAKE2b-256 checksum How to use checksums |
cfc20ff80b8aa42e5e46da653146d28c228b5fba9b499bec848a65c0781d4dd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|