← Voltar ao Monitor

CNPJ API

Documentação da API de consulta de dados da Receita Federal

Base URL: https://cnpj.lab8.com.br

Autenticacao

A API requer autenticacao via API Key para todas as rotas, exceto /api/health. Solicite sua API Key ao administrador do sistema.

Como usar a API Key

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
Importante
Guarde sua API Key em local seguro. Nao compartilhe publicamente. Se sua chave for comprometida, solicite uma nova ao administrador.
Resposta de erro (401 - Nao autenticado):
{
  "error": "Autenticacao necessaria",
  "message": "Forneca uma API Key no header X-API-Key ou no parametro api_key"
}

Health Check

GET /api/health

Verifica se a API esta funcionando e retorna informacoes basicas.

Resposta:
{
  "status": "ok",
  "timestamp": "2024-01-10T12:00:00.000Z",
  "database": "connected",
  "version": "2024-12"
}

Buscar CNPJ

GET /api/cnpj/{cnpj}

Busca dados completos de uma empresa pelo CNPJ.

Parametros de URL
Parametro Tipo Descricao
cnpj string obrigatorio CNPJ com 14 digitos (com ou sem formatacao)
Exemplo de requisicao:
GET /api/cnpj/00000000000191
GET /api/cnpj/00.000.000/0001-91
Resposta de sucesso (200):
{
  "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 }
}
Resposta de erro (404):
{
  "error": "CNPJ nao encontrado",
  "cnpj": "00000000000000"
}

Gerar Lista de Leads

POST /api/listas

Gera uma nova lista de empresas com base nos filtros. A lista fica salva para exportacao posterior.

Exemplo de requisicao:
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
}
Resposta:
{
  "message": "Lista gerada com sucesso",
  "lista": {
    "id": 1,
    "nome": "Saloes SP",
    "quantidade": 5000
  }
}
POST /api/listas/preview

Verifica se existem resultados para os filtros informados antes de gerar a lista.

Exemplo:
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."
}
GET /api/listas

Lista todas as listas geradas.

GET /api/listas/{id}

Retorna detalhes de uma lista especifica.

DELETE /api/listas/{id}

Exclui uma lista.

Exportar CSV

GET /api/listas/{id}/export

Exporta uma lista para CSV. Retorna arquivo para download.

Exemplo:
GET /api/listas/1/export

// Retorna arquivo CSV com headers:
Content-Type: text/csv
Content-Disposition: attachment; filename="lista-1.csv"
Colunas do CSV:
cnpj, razao_social, nome_fantasia, situacao, cnae_principal,
uf, municipio, bairro, logradouro, numero, cep,
telefone1, telefone2, email, capital_social, porte

Endpoints Auxiliares

GET /api/cnaes?q={termo}

Busca CNAEs por codigo ou descricao. Util para autocomplete.

Exemplo:
GET /api/cnaes?q=restaurante

// Resposta:
[
  { "value": "5611201", "label": "5611201 - Restaurantes e similares" },
  { "value": "5611203", "label": "5611203 - Lanchonetes..." }
]
GET /api/municipios?q={termo}&uf={uf}

Busca municipios por nome. Util para autocomplete. Pode filtrar por UF.

Exemplo:
GET /api/municipios?q=recife&uf=PE

// Resposta:
[
  { "codigo": "2611606", "nome": "RECIFE", "uf": "PE" }
]
GET /api/stats

Retorna estatisticas do banco de dados.

Resposta:
{
  "tabelas": {
    "empresas": 58000000,
    "estabelecimentos": 61000000,
    "socios": 25000000
  },
  "total_registros": 244000000,
  "versao": "2024-12",
  "data_atualizacao": "2024-01-10T00:00:00.000Z"
}
GET /api/versao

Retorna a versao dos dados importados.

Exemplos de Integracao

JavaScript / Node.js
// 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);
Python
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']
PHP
// 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);
cURL
# 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"
Importante
Todas as requisicoes (exceto /api/health) requerem autenticacao via API Key. Solicite sua chave ao administrador do sistema.