Documentação da API de consulta de dados da Receita Federal
A API requer autenticacao via API Key para todas as rotas, exceto /api/health.
Solicite sua API Key ao administrador do sistema.
Opcao 1: Via Header (recomendado)
X-API-Key: sua_api_key_aqui
Opcao 2: Via Query String
GET /api/cnpj/00000000000191?api_key=sua_api_key_aqui
{
"error": "Autenticacao necessaria",
"message": "Forneca uma API Key no header X-API-Key ou no parametro api_key"
}
Verifica se a API esta funcionando e retorna informacoes basicas.
{
"status": "ok",
"timestamp": "2024-01-10T12:00:00.000Z",
"database": "connected",
"version": "2024-12"
}
Busca dados completos de uma empresa pelo CNPJ.
| Parametro | Tipo | Descricao |
|---|---|---|
| cnpj | string obrigatorio | CNPJ com 14 digitos (com ou sem formatacao) |
GET /api/cnpj/00000000000191
GET /api/cnpj/00.000.000/0001-91
{
"cnpj": "00.000.000/0001-91",
"razao_social": "BANCO DO BRASIL SA",
"nome_fantasia": "DIRECAO GERAL",
"capital_social": 120000000000,
"porte": { "codigo": "05", "descricao": "Demais" },
"natureza_juridica": { "codigo": "2038", "descricao": "..." },
"situacao_cadastral": { "codigo": "02", "descricao": "Ativa" },
"cnae_principal": { "codigo": "6421200", "descricao": "..." },
"endereco": {
"logradouro": "SAUN QUADRA 5 LOTE B",
"numero": "SN",
"bairro": "ASA NORTE",
"municipio": "BRASILIA",
"uf": "DF",
"cep": "70040912"
},
"contato": {
"telefone1": "6134939002",
"email": "exemplo@empresa.com.br"
},
"socios": [
{
"nome": "JOAO DA SILVA",
"tipo": "Pessoa Fisica",
"qualificacao": "Socio-Administrador"
}
],
"simples_nacional": { "optante": false },
"mei": { "optante": false }
}
{
"error": "CNPJ nao encontrado",
"cnpj": "00000000000000"
}
Busca empresas com multiplos filtros. Retorna lista de resultados.
| Campo | Tipo | Descricao |
|---|---|---|
| filtros.q | string opcional | Busca por razao social ou nome fantasia |
| filtros.uf | string opcional | Sigla do estado (ex: SP, RJ, MG) |
| filtros.cnaes | string[] opcional | Array de codigos CNAE (ex: ["4711301"]) |
| filtros.municipio | string opcional | Nome ou codigo do municipio |
| filtros.bairro | string opcional | Nome do bairro |
| filtros.capital_min | number opcional | Capital social minimo |
| filtros.capital_max | number opcional | Capital social maximo |
| filtros.porte | string opcional | 00=Nao informado, 01=Micro, 03=Peq.Porte, 05=Demais |
| filtros.optante_simples | string opcional | "S" para sim, "N" para nao |
| filtros.optante_mei | string opcional | "S" para sim, "N" para nao |
| filtros.tem_email | boolean opcional | true para filtrar apenas com email |
| filtros.tem_telefone | boolean opcional | true para filtrar apenas com telefone |
| limite | number opcional | Maximo de resultados (padrao: 100, max: 1000) |
POST /api/search/advanced
Content-Type: application/json
{
"filtros": {
"uf": "SP",
"cnaes": ["9602501", "9602502"],
"tem_email": true,
"optante_simples": "S"
},
"limite": 50
}
{
"total": 15234,
"limite": 50,
"results": [
{
"cnpj": "00.000.000/0001-91",
"razao_social": "EMPRESA EXEMPLO LTDA",
"nome_fantasia": "EXEMPLO",
"situacao": "Ativa",
"cnae_principal": "9602501",
"uf": "SP",
"municipio": "SAO PAULO",
"email": "contato@exemplo.com.br"
}
]
}
Gera uma nova lista de empresas com base nos filtros. A lista fica salva para exportacao posterior.
POST /api/listas
Content-Type: application/json
{
"nome": "Saloes SP",
"descricao": "Saloes de beleza em SP com email",
"filtros": {
"uf": "SP",
"cnaes": ["9602501"],
"tem_email": true
},
"limite": 5000
}
{
"message": "Lista gerada com sucesso",
"lista": {
"id": 1,
"nome": "Saloes SP",
"quantidade": 5000
}
}
Verifica se existem resultados para os filtros informados antes de gerar a lista.
POST /api/listas/preview
Content-Type: application/json
{
"filtros": {
"uf": "SP",
"tem_email": true
}
}
// Resposta:
{
"tem_resultados": true,
"mensagem": "Filtros validos. Clique em Gerar Lista para criar."
}
Lista todas as listas geradas.
Retorna detalhes de uma lista especifica.
Exclui uma lista.
Exporta uma lista para CSV. Retorna arquivo para download.
GET /api/listas/1/export
// Retorna arquivo CSV com headers:
Content-Type: text/csv
Content-Disposition: attachment; filename="lista-1.csv"
cnpj, razao_social, nome_fantasia, situacao, cnae_principal,
uf, municipio, bairro, logradouro, numero, cep,
telefone1, telefone2, email, capital_social, porte
Busca CNAEs por codigo ou descricao. Util para autocomplete.
GET /api/cnaes?q=restaurante
// Resposta:
[
{ "value": "5611201", "label": "5611201 - Restaurantes e similares" },
{ "value": "5611203", "label": "5611203 - Lanchonetes..." }
]
Busca municipios por nome. Util para autocomplete. Pode filtrar por UF.
GET /api/municipios?q=recife&uf=PE
// Resposta:
[
{ "codigo": "2611606", "nome": "RECIFE", "uf": "PE" }
]
Retorna estatisticas do banco de dados.
{
"tabelas": {
"empresas": 58000000,
"estabelecimentos": 61000000,
"socios": 25000000
},
"total_registros": 244000000,
"versao": "2024-12",
"data_atualizacao": "2024-01-10T00:00:00.000Z"
}
Retorna a versao dos dados importados.
// Configurar API Key
const API_KEY = 'sua_api_key_aqui';
// Buscar empresas com filtros
const response = await fetch('https://cnpj.lab8.com.br/api/search/advanced', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({
filtros: { uf: 'SP', cnaes: ['9602501'], tem_email: true },
limite: 100
})
});
const data = await response.json();
console.log(data.results);
import requests
# Configurar API Key
API_KEY = 'sua_api_key_aqui'
headers = {'X-API-Key': API_KEY}
# Buscar CNPJ
response = requests.get(
'https://cnpj.lab8.com.br/api/cnpj/00000000000191',
headers=headers
)
empresa = response.json()
print(empresa['razao_social'])
# Busca avancada
response = requests.post(
'https://cnpj.lab8.com.br/api/search/advanced',
headers=headers,
json={
'filtros': {'uf': 'SP', 'tem_email': True},
'limite': 50
}
)
empresas = response.json()['results']
// Configurar API Key
$apiKey = 'sua_api_key_aqui';
// Buscar CNPJ
$context = stream_context_create([
'http' => ['header' => "X-API-Key: $apiKey"]
]);
$response = file_get_contents(
'https://cnpj.lab8.com.br/api/cnpj/00000000000191',
false, $context
);
$empresa = json_decode($response, true);
echo $empresa['razao_social'];
// Busca avancada
$ch = curl_init('https://cnpj.lab8.com.br/api/search/advanced');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'filtros' => ['uf' => 'SP', 'tem_email' => true],
'limite' => 50
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
"X-API-Key: $apiKey"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
# Definir API Key
API_KEY="sua_api_key_aqui"
# Buscar CNPJ
curl -H "X-API-Key: $API_KEY" \
https://cnpj.lab8.com.br/api/cnpj/00000000000191
# Busca avancada
curl -X POST \
-H "Content-Type: application/json" \
-H "X-API-Key: $API_KEY" \
-d '{"filtros":{"uf":"SP","tem_email":true},"limite":50}' \
https://cnpj.lab8.com.br/api/search/advanced
# Ou usando query string
curl "https://cnpj.lab8.com.br/api/cnpj/00000000000191?api_key=$API_KEY"