Conheça a API v2: basic, full e fontes por empresa ou estabelecimento →

cnpj.ai para desenvolvedores · v1

Dados de empresas.
Dentro do seu sistema.

Consulte o cadastro da Receita Federal com uma requisição HTTP. API gratuita, com chaves individuais e consumo na sua conta.

No Postman, adicione a collection ou importe o JSON e abra a pasta v1. Veja como configurar sua chave.

Sua primeira chamada

  1. Entre na Conta e crie uma chave com um nome que identifique sua integração.
  2. Copie a chave: ela só aparece uma vez. Guarde como variável de ambiente no seu backend.
  3. Envie a chave no cabeçalho Authorization: Bearer.

Base URL: https://api.cnpj.ai/v1

curl --fail-with-body \
  -H "Authorization: Bearer $CNPJ_API_KEY" \
  https://api.cnpj.ai/v1/cnpj/02709449
Python
import os
import requests

resposta = requests.get(
    "https://api.cnpj.ai/v1/cnpj/02709449",
    headers={"Authorization": f"Bearer {os.environ['CNPJ_API_KEY']}"},
    timeout=15,
)
resposta.raise_for_status()
print(resposta.json()["dados"])
JavaScript (Node.js)
const resposta = await fetch("https://api.cnpj.ai/v1/cnpj/02709449", {
  headers: { Authorization: `Bearer ${process.env.CNPJ_API_KEY}` },
  signal: AbortSignal.timeout(15000),
});
if (!resposta.ok) throw new Error(`API: HTTP ${resposta.status}`);
const { dados } = await resposta.json();
console.log(dados);

Use sua chave em servidores. Não a inclua em código de navegador ou aplicativo distribuído. A API não habilita CORS para chamadas diretas do navegador.

Consulta por CNPJ

GET /v1/cnpj/{cnpj}

Informe um CNPJ básico de 8 posições ou completo de 14 posições, sem máscara. Aceitamos CNPJ alfanumérico; letras são normalizadas para maiúsculas. CNPJs completos precisam ter dígitos verificadores válidos e corresponder a um estabelecimento existente.

Com 8 posições, estabelecimentos contém todos os estabelecimentos da raiz. Com 14 posições, contém somente o estabelecimento do CNPJ solicitado, seja matriz ou filial; se ele não existir, a API retorna 404. O formato da resposta é o mesmo nos dois casos: empresa, quadro societário e Simples/MEI são informações da empresa.

dados.cnpj_basico
Identificador da empresa, como texto.
dados.empresa
Razão social, natureza jurídica, capital social, porte e qualificação do responsável. Pode ser null.
dados.estabelecimentos
CNPJ, situação cadastral, CNAEs, endereço, contatos e datas de cada estabelecimento.
dados.socios
Quadro societário. CPF mantém a máscara publicada pela fonte; faixa etária é o código da Receita, não idade exata.
dados.simples
Opções e datas de Simples/MEI. Pode ser null.
meta
Versão v1, competência da carga (AAAA-MM ou null se indisponível) e UUID da requisição.

Datas são AAAA-MM-DD ou null. CNPJs são strings sem máscara. Campos textuais ausentes podem ser strings vazias; listas sem registros são vazias. Valores de capital são números JSON.

O schema completo de cada campo está na referência interativa. A primeira versão cobre dados cadastrais; registros públicos complementares e busca por filtros ficam fora deste contrato inicial.

Os dados refletem uma carga da Receita, não uma consulta em tempo real. Consulte meta.competencia para conhecer o mês servido.

Gratuita, com limites claros

Sem cartão e sem cota mensal inicial. São 60 chamadas por minuto por conta, compartilhadas entre até 5 chaves ativas. O limite usa janelas de minuto UTC. Existe também proteção por IP.

Cada chamada admitida consome uma unidade, inclusive entradas inválidas, CNPJs não encontrados e falhas após a admissão. Chamadas bloqueadas por limite são exibidas separadamente. Chaves inválidas não geram consumo na conta; documentação e gerenciamento de chaves não consomem a cota da API.

O uso fica disponível na Conta com filtro por chave, totais diários e histórico dos últimos 30 dias. A revogação bloqueia novas admissões e preserva o histórico; chamadas já admitidas podem terminar.

Respostas de admissão incluem X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-Reset (timestamp Unix). Em 429, aguarde os segundos de Retry-After. Evite repetir indefinidamente chamadas que falham.

StatusSignificado
400CNPJ ou entrada inválida.
401Chave ausente, inválida ou revogada.
404CNPJ não encontrado na carga disponível.
429Limite de conta ou proteção por IP atingido.
503Serviço temporariamente indisponível; respeite Retry-After.
{
  "erro": {
    "codigo": "cnpj_nao_encontrado",
    "mensagem": "CNPJ não encontrado na carga disponível."
  },
  "requisicao_id": "00000000-0000-4000-8000-000000000001"
}

Todas as respostas do produto incluem X-Request-ID. Guarde esse identificador para investigar problemas; nunca envie sua chave ao suporte.

Um contrato que acompanha sua integração

A versão principal está na URL. Mudanças incompatíveis de campos, tipos ou significado exigem uma nova versão principal. Campos opcionais podem ser adicionados à v1; sua integração deve ignorar campos desconhecidos.

As releases do produto seguem versionamento próprio. A versão atual, 1.0.1, corrige a consulta de CNPJ completo para retornar somente o estabelecimento solicitado. A versão 1.0.0 retornava todos os estabelecimentos também nesse caso. Para obter todos, consulte a raiz de 8 posições. Uma atualização da carga de dados não é uma nova versão da API.

Versões futuras terão documentação e aviso de descontinuação próprios. Gerenciar minhas chaves →