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
- Entre na Conta e crie uma chave com um nome que identifique sua integração.
- Copie a chave: ela só aparece uma vez. Guarde como variável de ambiente no seu backend.
- 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-MMounullse 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.
| Status | Significado |
|---|---|
| 400 | CNPJ ou entrada inválida. |
| 401 | Chave ausente, inválida ou revogada. |
| 404 | CNPJ não encontrado na carga disponível. |
| 429 | Limite de conta ou proteção por IP atingido. |
| 503 | Serviç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 →