Consultar CNPJ em Python

Este guia mostra como consultar um CNPJ pela API REST da CNPJAPI em Python, usando a biblioteca requests. A resposta vem em JSON, com os campos em PascalCase (RazaoSocial, SituacaoCadastral, ...).

Pré-requisitos

Consulta simples

import requests

CNPJ = "00776574000156"  # apenas os 14 dígitos, sem pontuação
API_KEY = "cnpj_sua_chave"

resposta = requests.get(
    f"https://api.cnpjapi.com.br/{CNPJ}",
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=10,
)
resposta.raise_for_status()

empresa = resposta.json()
print(empresa["RazaoSocial"])
print(empresa["SituacaoCadastral"]["Descricao"])
print(empresa["AtividadePrincipal"]["Descricao"])

Tratando erros e rate limit

Ao exceder o limite por minuto ou a cota mensal, a API responde 429 com o cabeçalho Retry-After (segundos). Trate como recuperável:

import time

resposta = requests.get(
    f"https://api.cnpjapi.com.br/{CNPJ}",
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=10,
)

if resposta.status_code == 429:
    espera = int(resposta.headers.get("Retry-After", "60"))
    time.sleep(espera)
    # tente novamente...
elif resposta.status_code == 404:
    print("CNPJ não encontrado na base pública")
elif resposta.ok:
    empresa = resposta.json()
    print(empresa["RazaoSocial"])
else:
    resposta.raise_for_status()

Inscrição Estadual (premium)

Com um plano que inclui Inscrição Estadual, consulte a IE de um CNPJ na fonte oficial da SEFAZ. Passe uf para uma UF (1 crédito) ou omita para a varredura nacional (3 créditos):

resposta = requests.get(
    f"https://api.cnpjapi.com.br/consulta/ie/{CNPJ}",
    params={"uf": "SP"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=15,
)
resposta.raise_for_status()

for ie in resposta.json()["resultados"]:
    print(ie["uf"], ie["ie"], ie["situacao"])

Contrato completo (campos, cobertura, créditos) em Consultar a Inscrição Estadual.

Próximos passos

Crie sua conta gratuita em https://app.cnpjapi.com.br e faça a primeira consulta em minutos.