API de Consulta CNPJ

Dados públicos da Receita Federal (CNPJ, sócios, Simples/MEI, CNAE) via REST, em JSON ou CSV.

Autenticação

Toda requisição precisa de uma chave de API, enviada no header X-API-KEY (ou como parâmetro ?api_key=). Ao assinar um dos nossos planos, você recebe acesso à sua chave automaticamente.

curl -H "X-API-KEY: SUA_CHAVE_AQUI" \
  https://empresas.leisontelecom.com.br/v1/status

Cada chave tem um limite de requisições por dia. Use o endpoint /v1/status para consultar quanto ainda resta na sua cota.

GET /v1/cnpj/{cnpj}

Retorna os dados completos de um CNPJ: razão social, endereço, contato, sócios e situação no Simples Nacional/MEI.

curl -H "X-API-KEY: SUA_CHAVE_AQUI" \
  https://empresas.leisontelecom.com.br/v1/cnpj/11444777000161
<?php
$ch = curl_init('https://empresas.leisontelecom.com.br/v1/cnpj/11444777000161');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: SUA_CHAVE_AQUI']);
$resposta = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $resposta['razao_social'];
const resp = await fetch('https://empresas.leisontelecom.com.br/v1/cnpj/11444777000161', {
  headers: { 'X-API-KEY': 'SUA_CHAVE_AQUI' }
});
const dados = await resp.json();
console.log(dados.razao_social);
import requests

resp = requests.get(
    'https://empresas.leisontelecom.com.br/v1/cnpj/11444777000161',
    headers={'X-API-KEY': 'SUA_CHAVE_AQUI'}
)
dados = resp.json()
print(dados['razao_social'])

Resposta

{
    "cnpj": "11444777000161",
    "razao_social": "Z R DE BRITO EMPREITEIRA",
    "situacao_cadastral": "Inapta",
    "natureza_juridica": "Empresário (Individual)",
    "porte_empresa": "Empresa de pequeno porte",
    "capital_social": "10000.00",
    "cnae_principal": { "codigo": "4120400", "descricao": "Construção de edifícios" },
    "endereco": { "logradouro": "...", "municipio": "JARDINOPOLIS", "uf": "SP", "...": "..." },
    "contato": { "telefone1": "(16) 37631768", "email": "..." },
    "simples_nacional": { "optante_simples": false, "optante_mei": false, "...": "..." },
    "quadro_societario": [ { "nome": "...", "qualificacao": "...", "...": "..." } ]
}

GET /v1/empresas

Lista/extrai empresas filtrando por estado, município e CNAE — ideal para montar listas de prospecção. É obrigatório informar os três filtros juntos: uf, municipio e cnae. Não é permitido buscar sem informar todos.

ParâmetroDescrição
ufSigla do estado, ex: SP
municipioNome (sem acento, ex: SAO PAULO) ou código do IBGE/RFB
cnaeCódigo do CNAE, ex: 6201501
situacaoativa (padrão), suspensa, inapta, baixada, nula ou todas
com_telefone1 para retornar só quem tem telefone cadastrado
pagina / por_paginaPaginação (máx. 500 por página)
formatocsv para baixar como planilha em vez de JSON
curl -G -H "X-API-KEY: SUA_CHAVE_AQUI" \
  --data-urlencode "uf=SP" \
  --data-urlencode "municipio=SAO PAULO" \
  --data-urlencode "cnae=6201501" \
  --data-urlencode "com_telefone=1" \
  --data-urlencode "por_pagina=50" \
  https://empresas.leisontelecom.com.br/v1/empresas
<?php
$params = http_build_query([
    'uf' => 'SP',
    'municipio' => 'SAO PAULO',
    'cnae' => '6201501',
    'com_telefone' => '1',
    'por_pagina' => 50,
]);
$ch = curl_init("https://empresas.leisontelecom.com.br/v1/empresas?$params");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: SUA_CHAVE_AQUI']);
$resposta = json_decode(curl_exec($ch), true);
curl_close($ch);

foreach ($resposta['resultados'] as $empresa) {
    echo $empresa['razao_social'] . "\n";
}
const params = new URLSearchParams({
  uf: 'SP', municipio: 'SAO PAULO', cnae: '6201501', com_telefone: '1', por_pagina: 50,
});
const resp = await fetch(`https://empresas.leisontelecom.com.br/v1/empresas?${params}`, {
  headers: { 'X-API-KEY': 'SUA_CHAVE_AQUI' }
});
const dados = await resp.json();
dados.resultados.forEach(e => console.log(e.razao_social));
import requests

resp = requests.get(
    'https://empresas.leisontelecom.com.br/v1/empresas',
    headers={'X-API-KEY': 'SUA_CHAVE_AQUI'},
    params={'uf': 'SP', 'municipio': 'SAO PAULO', 'cnae': '6201501', 'com_telefone': '1', 'por_pagina': 50}
)
dados = resp.json()
for empresa in dados['resultados']:
    print(empresa['razao_social'])

Exportar como CSV

Adicione formato=csv pra baixar como planilha em vez de JSON:

curl -G -H "X-API-KEY: SUA_CHAVE_AQUI" \
  --data-urlencode "uf=SP" --data-urlencode "municipio=SAO PAULO" --data-urlencode "cnae=6201501" \
  --data-urlencode "formato=csv" \
  https://empresas.leisontelecom.com.br/v1/empresas -o empresas.csv

Resposta (JSON)

{
    "total_encontrado": 28655,
    "pagina": 1,
    "por_pagina": 50,
    "total_paginas": 574,
    "resultados": [
        {
            "cnpj": "00000611000130",
            "razao_social": "PC DEBUG DESENVOLVIMENTO DE SOFTWARE LTDA",
            "cnae_descricao": "Desenvolvimento de programas de computador sob encomenda",
            "telefone1": "(11) 91472658",
            "email": "PCFELIAS65@GMAIL.COM",
            "municipio": "SAO PAULO",
            "uf": "SP"
        }
    ]
}

GET /v1/tabela/{tabela}/{codigo}

Consulta as tabelas de apoio da Receita Federal usadas para decodificar os campos acima.

TabelaExemplo de código
cnae0111301
municipio7107
natureza-juridica2062
pais105
qualificacao-socio49
motivo01
curl -H "X-API-KEY: SUA_CHAVE_AQUI" \
  https://empresas.leisontelecom.com.br/v1/tabela/cnae/0111301
<?php
$ch = curl_init('https://empresas.leisontelecom.com.br/v1/tabela/cnae/0111301');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: SUA_CHAVE_AQUI']);
$resposta = json_decode(curl_exec($ch), true);
curl_close($ch);

echo $resposta['descricao'];
const resp = await fetch('https://empresas.leisontelecom.com.br/v1/tabela/cnae/0111301', {
  headers: { 'X-API-KEY': 'SUA_CHAVE_AQUI' }
});
const dados = await resp.json();
console.log(dados.descricao);
import requests

resp = requests.get(
    'https://empresas.leisontelecom.com.br/v1/tabela/cnae/0111301',
    headers={'X-API-KEY': 'SUA_CHAVE_AQUI'}
)
dados = resp.json()
print(dados['descricao'])

Resposta

{ "codigo": "0111301", "descricao": "Cultivo de arroz" }

GET /v1/status

Mostra quantas requisições você já usou hoje e quantas ainda restam na sua cota.

curl -H "X-API-KEY: SUA_CHAVE_AQUI" \
  https://empresas.leisontelecom.com.br/v1/status
<?php
$ch = curl_init('https://empresas.leisontelecom.com.br/v1/status');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-API-KEY: SUA_CHAVE_AQUI']);
$resposta = json_decode(curl_exec($ch), true);
curl_close($ch);

echo "Restantes hoje: " . $resposta['restantes_hoje'];
const resp = await fetch('https://empresas.leisontelecom.com.br/v1/status', {
  headers: { 'X-API-KEY': 'SUA_CHAVE_AQUI' }
});
const dados = await resp.json();
console.log('Restantes hoje:', dados.restantes_hoje);
import requests

resp = requests.get(
    'https://empresas.leisontelecom.com.br/v1/status',
    headers={'X-API-KEY': 'SUA_CHAVE_AQUI'}
)
dados = resp.json()
print('Restantes hoje:', dados['restantes_hoje'])

Resposta

{
    "cliente": "Empresa XPTO",
    "limite_diario": 1000,
    "usadas_hoje": 42,
    "restantes_hoje": 958
}

Códigos de resposta

CódigoSignificado
200Sucesso
400Parâmetro inválido ou faltando (ex: CNPJ com dígito verificador errado)
401Chave de API ausente ou inválida
403Chave de API desativada
404CNPJ/código não encontrado
429Limite diário de requisições atingido
500Erro interno — tente novamente ou entre em contato

Erros sempre voltam no formato {"erro": "mensagem"}.