Consultar CNPJ em Node.js
Este guia mostra como consultar um CNPJ pela API REST da CNPJAPI em Node.js, usando o fetch nativo (Node 18+). A resposta vem em JSON, com os campos em PascalCase (RazaoSocial, SituacaoCadastral, ...).
Pré-requisitos
- Node.js 18+ (o
fetché nativo; em versões anteriores, usenode-fetchouundici). - Os exemplos usam
awaitno nível superior, então rode-os como módulo ES (arquivo.mjs, ou"type": "module"nopackage.json). Em CommonJS, envolva o código numa funçãoasync. - Uma API key da CNPJAPI. Crie a conta em https://app.cnpjapi.com.br e gere a chave (veja Autenticação).
Consulta simples
const CNPJ = "00776574000156"; // apenas os 14 dígitos, sem pontuação
const API_KEY = "cnpj_sua_chave";
const resposta = await fetch(`https://api.cnpjapi.com.br/${CNPJ}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (!resposta.ok) {
throw new Error(`Falha na consulta: HTTP ${resposta.status}`);
}
const empresa = await resposta.json();
console.log(empresa.RazaoSocial);
console.log(empresa.SituacaoCadastral.Descricao);
console.log(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:
const resposta = await fetch(`https://api.cnpjapi.com.br/${CNPJ}`, {
headers: { Authorization: `Bearer ${API_KEY}` },
});
if (resposta.status === 429) {
const espera = Number(resposta.headers.get("Retry-After") ?? 60);
await new Promise((r) => setTimeout(r, espera * 1000));
// tente novamente...
} else if (resposta.status === 404) {
console.log("CNPJ não encontrado na base pública");
} else if (resposta.ok) {
const empresa = await resposta.json();
console.log(empresa.RazaoSocial);
}
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):
const resposta = await fetch(
`https://api.cnpjapi.com.br/consulta/ie/${CNPJ}?uf=SP`,
{ headers: { Authorization: `Bearer ${API_KEY}` } },
);
if (!resposta.ok) {
throw new Error(`Falha na consulta de IE: HTTP ${resposta.status}`);
}
const { resultados } = await resposta.json();
for (const ie of resultados) {
console.log(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.