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étodo | Endpoint | Créditos | Descrição |
|---|---|---|---|
| GET | /v1/cnpj/:cnpj | 1 | Dados básicos da empresa |
| GET | /v1/cnpj/:cnpj/full | 3 | Dados completos (empresa + sócios + estabelecimentos + Simples) |
| GET | /v1/cnpj/:cnpj/socios | 1 | Quadro societário (QSA) da empresa |
| GET | /v1/cnpj/:cnpj/estabelecimentos | 1 | Filiais e estabelecimentos da empresa |
| GET | /v1/cnpj/:cnpj/simples | 1 | Situação no Simples Nacional e MEI |
| GET | /v1/search | 1 | Busca por nome/filtros (max 50 resultados) |
| GET | /v1/search?export=true | 10 | Exportação (max 1000 resultados) |
| GET | /v1/account | 0 | Saldo de créditos, limites e uso |
| GET | /v1/status | 0 | Status da API (com saldo se autenticado) |
| GET | /health | 0 | Health 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)
Busca de Empresas
Parâmetros de busca:
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
| q | Sim | Termo de busca (razão social ou nome fantasia, min 2 caracteres) |
| uf | Não | Filtrar por estado (ex: SP, RJ, MG) |
| situacao | Não | Situação cadastral (ex: 02 = Ativa, 08 = Baixada) |
| cnae | Não | Código CNAE principal (ex: 6201501) |
| cnae_secao | Não | Seção CNAE (ex: G = Comércio, J = Informação) |
| municipio_nome | Não | Nome do município |
| mode | Não | Modo de busca: fuzzy (padrão), exact, prefix |
| limit | Não | Limite de resultados (max 50, ou 1000 com export=true) |
| cursor | Não | Cursor para paginação (retornado em pagination.next_cursor) |
| export | Não | Se 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:
| Header | Descrição |
|---|---|
| X-RateLimit-Limit | Limite por minuto |
| X-RateLimit-Remaining | Requests restantes no minuto |
| X-RateLimit-Reset | Timestamp Unix de reset |
| X-Credits-Consumed | Créditos consumidos nesta request |
| X-Credits-Remaining | Saldo de créditos após a request |
| X-Request-Id | ID único da request (para suporte) |
Códigos de Erro
| Status | Nome | Descrição |
|---|---|---|
| 400 | Bad Request | Parâmetros inválidos (CNPJ malformado, query ausente, etc.) |
| 401 | Unauthorized | API key ausente, inválida, expirada ou revogada |
| 402 | Payment Required | Créditos insuficientes para a operação |
| 404 | Not Found | CNPJ não encontrado na base de dados |
| 429 | Too Many Requests | Rate limit excedido (por minuto ou por dia) |
| 502 | Bad Gateway | Erro ao comunicar com a base de dados |
| 504 | Gateway Timeout | Timeout 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.