Se você está construindo um sistema em Node.js que precisa validar CNPJs de clientes ou fornecedores, integrar uma API profissional é mais confiável do que validar apenas o algoritmo do dígito verificador. O algoritmo confirma que o número é matematicamente válido, mas não diz se a empresa existe ou está ativa na Receita Federal.

Este guia mostra como fazer uma consulta real usando fetch nativo (disponível no Node 18+) com a NextAPI.

Configurando o projeto

Nenhuma dependência externa é necessária para a chamada à API. Se preferir, use axios ou qualquer cliente HTTP da sua escolha — a estrutura da requisição é a mesma.

mkdir consulta-cnpj && cd consulta-cnpj
npm init -y

O módulo de consulta

Crie um arquivo cnpj.js com a função de consulta. Isolar a chamada em um módulo separado facilita testes e evita repetição.

// cnpj.js
const NEXTAPI_BASE = 'https://api.nextapi.com.br/v1';
const API_TOKEN = process.env.NEXTAPI_TOKEN; // nunca exponha o token no código

async function consultarCNPJ(cnpj) {
    const cnpjLimpo = cnpj.replace(/\D/g, '');

    if (cnpjLimpo.length !== 14) {
        throw new Error('CNPJ deve ter 14 dígitos');
    }

    const response = await fetch(\`\${NEXTAPI_BASE}/cnpj/\${cnpjLimpo}\`, {
        headers: { Authorization: \`Bearer \${API_TOKEN}\` },
        signal: AbortSignal.timeout(5000),
    });

    if (response.status === 404) return null;
    if (!response.ok) throw new Error(\`Erro na API: \${response.status}\`);

    return response.json();
}

module.exports = { consultarCNPJ };

Usando o módulo na aplicação

// app.js
require('dotenv').config();
const { consultarCNPJ } = require('./cnpj');

async function validarFornecedor(cnpj) {
    const dados = await consultarCNPJ(cnpj);

    if (!dados) {
        console.log('CNPJ não encontrado na Receita Federal');
        return false;
    }

    if (dados.situacaoCadastral !== 'ATIVA') {
        console.log('Empresa ' + dados.razaoSocial + ' está ' + dados.situacaoCadastral);
        return false;
    }

    console.log('Fornecedor aprovado: ' + dados.razaoSocial);
    console.log('Endereço: ' + dados.logradouro + ', ' + dados.numero + ' — ' + dados.municipio + '/' + dados.uf);
    return true;
}

validarFornecedor('53.008.607/0001-84');

Boas práticas de segurança

  • Guarde o token em variável de ambiente (.env) e nunca o exponha no frontend.
  • Se a aplicação faz muitas consultas, considere cachear o resultado por CNPJ por algumas horas — os dados da Receita são atualizados periodicamente, não em tempo real.
  • Trate o timeout: o AbortSignal.timeout evita que uma requisição pendente trave o servidor.

Com essa estrutura, você pode expandir para validar o CNAE do fornecedor antes de aprovar cadastros, ou checar o regime tributário para acertar a emissão de notas — a NextAPI devolve esses dados no mesmo endpoint, sem chamadas extras.

Pronto para integrar?

Teste a API agora mesmo sem precisar de cartão de crédito. 100 requisições/mês grátis.

Criar Conta Grátis