Api em python para consultar dados de empresas com dados abertos públicos da Receita Federal, utilizando uma base local em sqlite cnpj.db, que deve ser gerada utilizando o projeto https://github.com/rictom/cnpj-sqlite ou pelo programa Rede_Cria_Tabelas.
Os arquivos csv zipados com os dados de CNPJs estão disponíveis em https://dados.gov.br/dados/conjuntos-dados/cadastro-nacional-da-pessoa-juridica---cnpj ou https://arquivos.receitafederal.gov.br/dados/cnpj/dados_abertos_cnpj/
Como a base ocupa bastante espaço, é recomendável ter 100GB de SSD disponível como disco principal no computador, bem como 16GB de memória RAM.
Uma versão executável está na pasta apps deste repositório. Foi gerado pela biblioteca pyinstaller e testado em Windows 10. Para gerar o arquivo cnpj.db (base de dados de empresas), baixe o programa Rede_Cria_Tabelas disponível em https://www.redecnpj.com.br/rede/pag/aplicativo.html e execute as partes 1 e 2 desse programa (baixar as bases e gerar a base cnpj.db). Descompacte o arquivo cnpj_api.win.zip e salve o arquivo cnpj.db na mesma pasta que cnpj_api.exe. Para executar, clique duas vezes no .exe.
É recomendável criar um ambiente para rodar o projeto, siga as orientações em https://docs.python.org/pt-br/3/library/venv.html. O arquivo cnpj.db deve estar na mesma pasta que o script cnpj_listas.py.
No console, dentro de um ambiente python, para instalar as bibliotecas utilizadas, rode pip install -r requirements_cnpj_api.txt
Para executar o script:
python cnpj_api.py
A primeira vez que o script for rodado, irá gerar índices no arquivo cnpj.db. Isso poderá levar dezenas de minutos ou horas para execução, dependendo do computador. O arquivo cnpj.db final terá mais de 60GB!
Abra o endereço http:127.0.0.1:8015/docs no navegador para visualizar a página de testes da api:

A consulta de um cnpj, por exemplo, do Banco do Brasil, pode ser feita com a url
http://127.0.0.1:8015/cnpj/00000000000191

Podem ser colocados vários CNPJs separados por vírgulas ou ponto-e-vírgulas(;).
As consultas podem ser feitas por UF, Município, CEP, Natureza Jurídica, CNAE primária ou secundária, Situação Cadastral, Porte da Empresa, Opção Simples, Opção Mei, Data de Início de Atividades e Capital Social.
Exemplos:
- Para consultar dois cnpjs (podem ter pontos,traços ou barras - Os cnpjs devem ser separados por vírgulas): http://127.0.0.1:8000/consultar?cnpj=<cnpj 1>,<cnpj 2> onde <cnpj 1> e <cnpj 2> são dois CNPJs de empresas;
- Para consultar os dados de um cnpj com os sócios: http://127.0.0.1:8000/consultar?cnpj=CNPJ_PROCURADO&exibe_socios=S
- Para consultar 200 empresas em SP: http://127.0.0.1:8000/consultar?uf=sp&limite=200
- Para consultar 1000 empresas de pequeno porte, em SP, na capital, http://127.0.0.1:8000/consultar?uf=SP&municipio=7107&porte_empresa=2limite=1000
- Se desejar buscar empresas apenas com o cnae principal, coloque busca_cnae_secundaria=N
- Para consultar 250 empresas no RS com dois tipos de cnae: http://127.0.0.1:8000/consultar?uf=RS&cnae=0115600-Cultivo_de_soja,1011201-Frigorífico-abate_de_bovinos&limite=250
- A consulta anterior dará o mesmo resultado que: http://127.0.0.1:8000/consultar?uf=RS&cnae=0115600,1011201&limite=250, o texto no código após o hífen será ignorado
- Para visualizar os códigos de cnae, municipio, porte_empresa e situacao_cadastral, utilize a opção /codigos/
Lembre-se que a base tem mais de 60 milhões de empresas, então dependendo dos parâmetros as consultas poderão demorar.
Python 3.12;
Bibliotecas fastAPI e aiosqlite.
Se o projeto for útil, faça uma doação para a Paróquia do Padre Júlio Lancelotti: https://www.oarcanjo.net/site/doe/
Em caso de erros, dúvidas ou sugestões, abra uma issue (https://github.com/rictom/cnpj_API/issues) neste repositório.
Fazer consultas de listas de empresas: https://github.com/rictom/cnpj_consulta
Projeto para visualizar os relacionamentos de sócios e de empresas de forma gráfica: https://github.com/rictom/rede-cnpj
Carregar os dados de cnpjs para o banco de dados MYSQL: https://github.com/rictom/cnpj-mysql
versão 0.1 (janeiro/2026)