Documentação da API

API pública para consulta de dados empresariais brasileiros. 67,1M+ empresas da Receita Federal.

Autenticação

Todas as chamadas (exceto health check) requerem uma chave de API no header X-API-Key.

curl -H "X-API-Key: inx_live_SUA_CHAVE" https://api.inddex.com.br/v1/cnpj/00000000000191

Gere suas chaves em inddex.com.br/chaves-api. Cada chamada consome créditos da sua conta.

Endpoints

MétodoEndpointCréditosDescrição
GET/v1/cnpj/:cnpj1Dados básicos da empresa
GET/v1/cnpj/:cnpj/full3Dados completos (empresa + sócios + estabelecimentos + Simples)
GET/v1/cnpj/:cnpj/socios1Quadro societário (QSA) da empresa
GET/v1/cnpj/:cnpj/estabelecimentos1Filiais e estabelecimentos da empresa
GET/v1/cnpj/:cnpj/simples1Situação no Simples Nacional e MEI
GET/v1/search1Busca por nome/filtros (max 50 resultados)
GET/v1/search?export=true10Exportação (max 1000 resultados)
GET/v1/account0Saldo de créditos, limites e uso
GET/v1/status0Status da API (com saldo se autenticado)
GET/health0Health check (sem autenticação)

Consulta CNPJ

Aceita CNPJ básico (8 dígitos) ou completo (14 dígitos), com ou sem formatação. Você pode consultar os dados separadamente ou usar o /full para obter tudo de uma vez.

/v1/cnpj/:cnpj |Dados básicos: razão social, nome fantasia, endereço, telefone, email, CNAE, situação cadastral, capital social (1 crédito)

/v1/cnpj/:cnpj/socios |Quadro societário: nome, CPF/CNPJ, qualificação, data de entrada, representante legal (1 crédito)

/v1/cnpj/:cnpj/estabelecimentos |Todas as filiais: CNPJ, endereço, telefone, situação, CNAE de cada unidade (1 crédito)

/v1/cnpj/:cnpj/simples |Situação no Simples Nacional e MEI: optante, datas de opção e exclusão (1 crédito)

/v1/cnpj/:cnpj/full |Tudo acima combinado em uma única chamada (3 créditos)

Parâmetros de busca:

ParâmetroObrigatórioDescrição
qSimTermo de busca (razão social ou nome fantasia, min 2 caracteres)
ufNãoFiltrar por estado (ex: SP, RJ, MG)
situacaoNãoSituação cadastral (ex: 02 = Ativa, 08 = Baixada)
cnaeNãoCódigo CNAE principal (ex: 6201501)
cnae_secaoNãoSeção CNAE (ex: G = Comércio, J = Informação)
municipio_nomeNãoNome do município
modeNãoModo de busca: fuzzy (padrão), exact, prefix
limitNãoLimite de resultados (max 50, ou 1000 com export=true)
cursorNãoCursor para paginação (retornado em pagination.next_cursor)
exportNãoSe true, modo exportação: até 1000 resultados (10 créditos)

Exemplos de Código

cURL

# Consulta CNPJ básico
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/cnpj/00000000000191"

# Consulta completa (empresa + sócios + estabelecimentos + simples)
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/cnpj/00000000/full"

# Sócios / QSA separado
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/cnpj/33000167/socios"

# Estabelecimentos / filiais
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/cnpj/33000167/estabelecimentos"

# Simples Nacional / MEI
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/cnpj/33000167/simples"

# Busca por nome
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/search?q=petrobras&uf=RJ&limit=10"

# Exportação (até 1000 resultados)
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/search?q=fintech&situacao=02&export=true&limit=500"

# Saldo e uso da conta
curl -H "X-API-Key: inx_live_SUA_CHAVE" \
  "https://api.inddex.com.br/v1/account"

Python

import requests

API_KEY = "inx_live_SUA_CHAVE"
BASE = "https://api.inddex.com.br"
headers = {"X-API-Key": API_KEY}

# Consulta CNPJ básico
r = requests.get(f"{BASE}/v1/cnpj/00000000000191", headers=headers)
empresa = r.json()["data"]
print(empresa["razao_social"])  # BANCO DO BRASIL SA

# Sócios / QSA
r = requests.get(f"{BASE}/v1/cnpj/33000167/socios", headers=headers)
for socio in r.json()["data"]:
    print(f"{socio['nome']} - {socio['qualificacao']['descricao']}")

# Busca
r = requests.get(f"{BASE}/v1/search", headers=headers,
                 params={"q": "petrobras", "uf": "RJ", "limit": 10})
for item in r.json()["data"]:
    print(f"{item['cnpj_full']} - {item['razao_social']}")

# Saldo da conta
r = requests.get(f"{BASE}/v1/account", headers=headers)
account = r.json()["data"]
print(f"Saldo: {account['credits']['balance']} créditos")
print(f"Uso hoje: {account['usage']['today']} créditos")

JavaScript / Node.js

const API_KEY = "inx_live_SUA_CHAVE";
const BASE = "https://api.inddex.com.br";
const headers = { "X-API-Key": API_KEY };

// Consulta CNPJ básico
const res = await fetch(`${BASE}/v1/cnpj/00000000000191`, { headers });
const { data, meta } = await res.json();
console.log(data.razao_social); // BANCO DO BRASIL SA
console.log(`Créditos restantes: ${meta.credits.remaining}`);

// Sócios / QSA
const sociosRes = await fetch(`${BASE}/v1/cnpj/33000167/socios`, { headers });
const socios = await sociosRes.json();
socios.data.forEach(s => console.log(s.nome, s.qualificacao.descricao));

// Busca
const searchRes = await fetch(
  `${BASE}/v1/search?q=petrobras&uf=RJ&limit=10`, { headers }
);
const results = await searchRes.json();
results.data.forEach(e => console.log(e.cnpj_full, e.razao_social));

// Saldo da conta
const accountRes = await fetch(`${BASE}/v1/account`, { headers });
const account = await accountRes.json();
console.log(`Saldo: ${account.data.credits.balance} créditos`);

Conta e Saldo

Use GET /v1/account para consultar saldo, limites e uso. Não consome créditos. O saldo também é retornado em todas as respostas no campo meta.credits.remaining e no header X-Credits-Remaining.

// Resposta de /v1/account
{
  "success": true,
  "data": {
    "credits": { "balance": 485 },
    "apiKey": {
      "id": "uuid",
      "rateLimits": { "perMinute": 60, "perDay": 10000 }
    },
    "usage": {
      "today": 42,
      "thisMonth": 380,
      "totalCreditsConsumed": 1250
    }
  }
}

Rate Limits

Limites padrão por chave: 60 requests/minuto e 10.000 requests/dia. Headers de resposta:

HeaderDescrição
X-RateLimit-LimitLimite por minuto
X-RateLimit-RemainingRequests restantes no minuto
X-RateLimit-ResetTimestamp Unix de reset
X-Credits-ConsumedCréditos consumidos nesta request
X-Credits-RemainingSaldo de créditos após a request
X-Request-IdID único da request (para suporte)

Códigos de Erro

StatusNomeDescrição
400Bad RequestParâmetros inválidos (CNPJ malformado, query ausente, etc.)
401UnauthorizedAPI key ausente, inválida, expirada ou revogada
402Payment RequiredCréditos insuficientes para a operação
404Not FoundCNPJ não encontrado na base de dados
429Too Many RequestsRate limit excedido (por minuto ou por dia)
502Bad GatewayErro ao comunicar com a base de dados
504Gateway TimeoutTimeout na consulta (30s)

Formato de Resposta

Sucesso

{
  "success": true,
  "data": { ... },
  "meta": {
    "requestId": "req_abc123def456",
    "took_ms": 45,
    "credits": { "consumed": 1, "remaining": 485 }
  }
}

Erro

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "Créditos insuficientes. Saldo: 0.",
    "requestId": "req_abc123def456"
  }
}

Pronto para começar?

Gere sua primeira chave e faça sua primeira chamada.