Biblioteca Python para integrar facilmente com a OpenCNPJ API.
A base de dados usada está disponível para download no site da Receita Federal, mas para aplicações que não exigem altos limites de requisição, a solução via API pode ser suficiente para validações e consultas de CNPJ.
Consulte a documentação oficial para detalhes de uso e limites:
OpenCNPJ API
- Python 3.8+
- requests
- pydantic
- pip_system_certs (opcional, para ambientes corporativos)
Atualmente, as requisições são síncronas. Futuramente, poderão ser adicionadas funcionalidades assíncronas e limitador de requisições.
pip install opencnpjCrie o ambiente virtual
python -m venv venvSe estiver usando Linux use:
source venv/bin/activateSe estiver usando Windows use:
.\venv\Scripts\activateÚltimo passo instale as bibliotecas necesárias.
pip install requests pydantic pip_system_certs from opencnpj import OpenCNPJ
client = OpenCNPJ()
empresa = client.find_by_cnpj("00.000.000/0001-91")
print(empresa.razao_social)from opencnpj import OpenCNPJ
from opencnpj.exceptions import (
CNPJNotFoundError,
RateLimitError,
ServerError,
NetworkError,
TimeoutError,
RequestError,
OpenCNPJError,
)
from time import sleep
if __name__ == "__main__":
cnpj_list = [
"00.360.305/0001-04", # válido
"00000000000000", # inválido
"06947492000130", # válido ou pode não existir
"12.345.678/0001-99", # provavelmente inexistente
]
client = OpenCNPJ()
for cnpj in cnpj_list:
try:
empresa = client.find_by_cnpj(cnpj)
print(f"Sucesso para {cnpj}: {empresa.razao_social}\n")
except CNPJNotFoundError:
print(f"AVISO: O CNPJ {cnpj} não foi encontrado ou não existe.\n")
except RateLimitError:
print("ERRO: Limite de requisições atingido. Pausando por um minuto...\n")
sleep(60)
except ServerError:
print(f"ERRO: A API parece estar com problemas. Pulando o CNPJ {cnpj}.\n")
except NetworkError:
print(f"ERRO: Falha de conexão ao consultar {cnpj}.\n")
except TimeoutError:
print(f"ERRO: Timeout ao consultar {cnpj}.\n")
except RequestError as e:
print(f"ERRO: Erro de requisição ao consultar {cnpj}: {e}\n")
except OpenCNPJError as e:
print(f"ERRO: Erro inesperado do OpenCNPJ ao consultar {cnpj}: {e}\n")
except Exception as e:
print(f"ERRO: Exceção não tratada ao consultar {cnpj}: {type(e).__name__}: {e}\n")Sucesso para 00.360.305/0001-04: CAIXA ECONOMICA FEDERAL
AVISO: O CNPJ 00000000000000 não foi encontrado ou não existe.
...O objeto retornado (empresa) possui todos os campos do cadastro do CNPJ.
Você pode listar os campos disponíveis assim:
print(empresa.fields) # Lista os nomes dos campos disponíveisOu acessar diretamente:
print(empresa.razao_social)
print(empresa.cnpj)Para criar um pacote distribuível da biblioteca, siga os passos abaixo:
- Certifique-se de que o
setuptoolse owheelestão instalados:
pip install setuptools wheel- Gere os arquivos de distribuição:
No diretório do projeto (onde está o setup.py), execute:
python setup.py sdist bdist_wheelIsso irá criar os arquivos .tar.gz e .whl na pasta dist/.
Pull requests são bem-vindos! Para maiores informações, acesse o repositório no GitHub.