Consultar CNPJ em PHP
Este guia mostra como consultar um CNPJ pela API REST da CNPJAPI em PHP, usando cURL (disponível por padrão). A resposta vem em JSON, com os campos em PascalCase (RazaoSocial, SituacaoCadastral, ...).
Pré-requisitos
- PHP 8.0+ com a extensão cURL habilitada.
- Uma API key da CNPJAPI. Crie a conta em https://app.cnpjapi.com.br e gere a chave (veja Autenticação).
Consulta simples
<?php
$cnpj = '00776574000156'; // apenas os 14 dígitos, sem pontuação
$apiKey = 'cnpj_sua_chave';
$ch = curl_init("https://api.cnpjapi.com.br/{$cnpj}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status === 200) {
$empresa = json_decode($body, true);
echo $empresa['RazaoSocial'], PHP_EOL;
echo $empresa['SituacaoCadastral']['Descricao'], PHP_EOL;
}
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). Para lê-lo, capture os cabeçalhos da resposta:
<?php
$ch = curl_init("https://api.cnpjapi.com.br/{$cnpj}");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true, // inclui os cabeçalhos no retorno
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
]);
$resposta = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$tamanhoCabecalho = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
curl_close($ch);
if ($status === 429) {
$cabecalhos = substr($resposta, 0, $tamanhoCabecalho);
preg_match('/retry-after:\s*(\d+)/i', $cabecalhos, $m);
$espera = (int) ($m[1] ?? 60);
sleep($espera);
// tente novamente...
} elseif ($status === 404) {
echo 'CNPJ não encontrado na base pública', PHP_EOL;
}
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):
<?php
$ch = curl_init("https://api.cnpjapi.com.br/consulta/ie/{$cnpj}?uf=SP");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer {$apiKey}"],
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status === 200) {
$ie = json_decode($body, true);
foreach ($ie['resultados'] as $r) {
echo $r['uf'], ' ', $r['ie'], ' ', $r['situacao'], PHP_EOL;
}
}
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.