Documentação da cnpjob API
Acesse dados de 67 milhões de empresas, 70 milhões de estabelecimentos e 27 milhões de sócios diretamente da Receita Federal — em tempo real, com latência < 100ms.
Todos os endpoints de dados retornam JSON. Inclua o header Accept: application/json nas suas requisições. A API usa HTTPS obrigatoriamente em produção.
Quickstart — 60 segundos
# 1. Registre sua conta e obtenha uma API key em cnpjob.com.br # 2. Consulte um CNPJ curl https://api.cnpjob.com.br/cnpj/33000167000101 \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
const res = await fetch('https://api.cnpjob.com.br/cnpj/33000167000101', { headers: { 'X-API-Key': 'cnjb_live_SUA_CHAVE' } }); const empresa = await res.json(); console.log(empresa.razao_social); // "PETROLEO BRASILEIRO S A"
import requests res = requests.get( 'https://api.cnpjob.com.br/cnpj/33000167000101', headers={'X-API-Key': 'cnjb_live_SUA_CHAVE'} ) empresa = res.json() print(empresa['razao_social']) # "PETROLEO BRASILEIRO S A"
Autenticação
A API usa API Keys transmitidas via header HTTP. Nunca exponha sua chave em código client-side ou repositórios públicos.
Header obrigatório
GET /cnpj/33000167000101 HTTP/1.1 Host: api.cnpjob.com.br X-API-Key: cnjb_live_SUA_CHAVE Accept: application/json
Requisições sem o header X-API-Key retornam 401 Unauthorized. Chaves inativas ou inválidas também retornam 401.
Gerenciando sua API Key
| Ação | Como fazer |
|---|---|
| Criar chave | Dashboard → "Gerar nova chave" (exibida uma única vez) |
| Revogar chave | Gerar nova chave revoga automaticamente a anterior |
| Ver prefixo | Dashboard → seção "Minha API Key" (ex: cnjb_live_ab12...) |
| Verificar uso | Dashboard → seção "Uso" |
A chave completa é exibida apenas no momento da criação. O sistema armazena somente o hash SHA-256. Guarde em variável de ambiente (CNPJOB_API_KEY=cnjb_live_...).
Rate Limiting
Limites são aplicados por API key usando contadores atômicos no Redis. Dois janelas independentes: por minuto e por dia.
Headers de resposta
Todas as respostas de endpoints autenticados incluem os headers abaixo:
Ao exceder o limite por minuto ou diário, a API retorna 429 Too Many Requests. O contador de minuto reseta após 60s e o diário à meia-noite UTC.
{ "error": "Limite de 2 req/min atingido. Aguarde 1 minuto." }
Códigos de erro
Todos os erros retornam JSON com campo error descritivo.
| Status | Significado | Causa comum |
|---|---|---|
400 | Bad Request | CNPJ inválido, parâmetro ausente |
401 | Unauthorized | API key ausente ou inválida |
402 | Payment Required | Plano expirado — renove a assinatura |
403 | Forbidden | Endpoint requer plano superior (Pro/Business) |
404 | Not Found | CNPJ não encontrado na base RF |
429 | Too Many Requests | Limite de req/min ou req/dia atingido |
500 | Internal Server Error | Erro inesperado — contate o suporte |
503 | Service Unavailable | Serviço temporariamente indisponível |
{ "error": "Este endpoint requer o plano pro ou superior. Faça upgrade em cnpjob.com.br." }
Planos disponíveis
Lista os planos ativos com limites e preços. Útil para exibir opções de upgrade na sua aplicação.
[ { "id": 1, "name": "Free", "slug": "free", "price_brl": "0.00", "req_per_day": 10, "req_per_min": 2, "max_page_size": 10, "has_checkout": false }, { "id": 2, "name": "Pro", "slug": "pro", "price_brl": "99.90", "req_per_day": 10000, "req_per_min": 60, "max_page_size": 100, "has_checkout": true } ]
CNAEs
Lista e consulta atividades econômicas da Classificação Nacional de Atividades Econômicas (CNAE).
[ { "codigo": "0111301", "descricao": "Cultivo de arroz" }, { "codigo": "0111302", "descricao": "Cultivo de milho" } ]
Requer API Key + plano Pro ou superior.
| Parâmetro | Tipo | Descrição |
|---|---|---|
codigo | path | Código CNAE (ex: 6201501) |
{ "codigo": "6201501", "descricao": "Desenvolvimento de programas de computador sob encomenda" }
Requer API Key + plano Pro ou superior. Retorna apenas empresas ativas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
codigo | path | Código CNAE (ex: 6201501) |
limit | query | Resultados por página (padrão: 20, máx: conforme plano) |
page | query | Número da página (padrão: 1) |
{ "cnae": "6201501", "page": 1, "limit": 20, "total": 20, "empresas": [ { "cnpj": "00.000.000/0001-00", "razao_social": "EMPRESA TECH LTDA", "uf": "SP", "municipio": "SAO PAULO", "data_inicio_atividade": "2018-03-15" } ] }
Municípios
[ { "codigo": "7107", "nome": "SAO PAULO", "uf": "SP" } ]
| Parâmetro | Tipo | Exemplo |
|---|---|---|
uf | path | SP, RJ, MG... |
Validar CNPJ
Valida o formato e dígito verificador de um CNPJ sem consumir cota de requisições.
Endpoint público — não requer API Key e não consome cota.
curl https://api.cnpjob.com.br/cnpj/validate/33000167000101
Consulta por CNPJ
Retorna dados completos de uma empresa: razão social, situação, endereço, CNAE, sócios, capital social e mais — direto da Receita Federal.
Disponível no plano Free. Aceita CNPJ com ou sem formatação (33.000.167/0001-01 ou 33000167000101).
| Parâmetro | Tipo | Descrição |
|---|---|---|
cnpj | path | CNPJ com 14 dígitos (formatado ou não) |
curl https://api.cnpjob.com.br/cnpj/33000167000101 \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
{ "cnpj": "33.000.167/0001-01", "razao_social": "PETROLEO BRASILEIRO S A PETROBRAS", "nome_fantasia": "PETROBRAS", "situacao_cadastral": "Ativa", "data_situacao": "2005-11-17", "data_abertura": "1966-09-28", "porte": "Grande", "natureza_juridica": "Sociedade de Economia Mista", "capital_social": 205431960490.52, "cnae_principal": { "codigo": "0600301", "descricao": "Extração de petróleo e gás natural" }, "cnaes_secundarios": [ { "codigo": "1921700", "descricao": "Fabricação de produtos do refino de petróleo" } ], "endereco": { "logradouro": "AV REPUBLICA DO CHILE", "numero": "65", "complemento": "ANDAR 1 A 22", "bairro": "CENTRO", "municipio": "RIO DE JANEIRO", "uf": "RJ", "cep": "20031912" }, "telefone": "2135985678", "email": "relacionamento@petrobras.com.br", "socios": [ { "nome": "MAGDA MARIA DE REGINA CHAMBRIARD", "qualificacao": "Presidente", "tipo": "Pessoa Física", "cpf_representante": null } ] }
Quadro societário
Retorna o quadro de sócios e administradores (QSA) de um CNPJ com qualificações e percentuais.
Disponível no plano Free.
curl https://api.cnpjob.com.br/cnpj/33000167000101/socios \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
[ { "nome": "MAGDA MARIA DE REGINA CHAMBRIARD", "cpf_cnpj": "***355***-**", "qualificacao": "Presidente", "tipo": "Pessoa Física", "data_entrada": "2023-06-21" } ]
Batch de CNPJs
Consulta múltiplos CNPJs em uma única requisição. Cada CNPJ no lote consome 1 unidade do rate limit.
Disponível no plano Free. O peso do rate limit é proporcional ao número de CNPJs enviados.
{ "cnpjs": ["33000167000101", "00000000000191"] }
curl -X POST https://api.cnpjob.com.br/cnpj/batch \ -H "X-API-Key: cnjb_live_SUA_CHAVE" \ -H "Content-Type: application/json" \ -d '{"cnpjs":["33000167000101","00000000000191"]}'
Estabelecimentos
Lista todas as filiais e estabelecimentos de um CNPJ raiz, com endereços e situações individuais.
Requer plano Pro ou superior.
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
cnpj | path | — | CNPJ (14 dígitos) |
limit | query | 20 | Itens por página (máx conforme plano) |
offset | query | 0 | Posição inicial para paginação |
{ "total": 48, "data": [ { "cnpj": "33.000.167/0001-01", "nome_fantasia": "PETROBRAS - MATRIZ", "situacao": "Ativa", "tipo": "Matriz", "uf": "RJ", "municipio": "RIO DE JANEIRO" } ] }
Busca por razão social
Busca empresas por nome usando similaridade trigram (pg_trgm). Suporta termos parciais e nomes incompletos.
Requer plano Pro ou superior.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
q | query | ✅ Sim | Termo de busca (mín. 3 caracteres) |
limit | query | Não | Resultados por página (padrão: 20) |
page | query | Não | Número da página (padrão: 1) |
curl "https://api.cnpjob.com.br/empresa/busca?q=petrobras&limit=5" \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
{ "query": "petrobras", "page": 1, "limit": 5, "total": 12, "empresas": [ { "cnpj": "33.000.167/0001-01", "razao_social": "PETROLEO BRASILEIRO S A PETROBRAS", "situacao": "Ativa", "uf": "RJ", "municipio": "RIO DE JANEIRO", "cnae_principal": "0600301" } ] }
Busca com filtros
Filtra empresas por CNAE, UF, município e situação cadastral. Ideal para prospecção e enriquecimento de leads.
Requer plano Pro ou superior. Ao menos um filtro é obrigatório.
| Parâmetro | Tipo | Exemplo | Descrição |
|---|---|---|---|
cnae | query | 6201501 | Código CNAE principal |
uf | query | SP | Sigla do estado |
municipio | query | 7107 | Código do município RF |
situacao | query | ativa | Situação cadastral: ativa, baixada, suspensa, inapta, nula |
limit | query | 50 | Resultados por página (padrão: 20) |
page | query | 1 | Número da página (padrão: 1) |
curl "https://api.cnpjob.com.br/empresas?cnae=6201501&uf=SP&situacao=ativa&limit=50" \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
{ "page": 1, "limit": 50, "total": 50, "empresas": [ { "cnpj": "00.000.000/0001-00", "razao_social": "EMPRESA TECH LTDA", "situacao": "Ativa", "uf": "SP", "municipio": "SAO PAULO", "cnae_principal": "6201501" } ] }
Empresas por sócio
Descobre todas as empresas onde um CPF ou CNPJ figura como sócio ou administrador.
Requer plano Pro ou superior.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cpf_cnpj | query | ✅ Sim | CPF (11 dígitos) ou CNPJ (14 dígitos) do sócio |
limit | query | Não | Resultados por página (padrão: 20) |
offset | query | Não | Paginação |
curl "https://api.cnpjob.com.br/socio/busca?cpf_cnpj=12345678901" \ -H "X-API-Key: cnjb_live_SUA_CHAVE"
[ { "cnpj": "12.345.678/0001-90", "razao_social": "EMPRESA EXEMPLO LTDA", "situacao": "Ativa", "nome_socio": "FULANO DE TAL", "qualificacao": "Sócio-Administrador" } ]
Buscar leads com filtros
Pesquisa empresas na base da Receita Federal com até 8 filtros combinados. Ao menos um filtro obrigatório; se usar apenas razão social, sócio, porte ou contato é necessário informar UF ou CNAE.
Requer autenticação JWT (Bearer token). Plano Pro ou superior. Consome 1 pesquisa da cota diária — requisições com replay: true não debitam.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cnae | string | — | Código CNAE principal (ex: 4711301) |
uf | string | — | Sigla do estado (ex: SP) |
municipio_codigo | string | — | Código do município da RF |
situacao | string | — | ativa · baixada · inapta · suspensa · nula |
razao_social | string | — | Nome da empresa (trigram, requer UF ou CNAE) |
nome_socio | string | — | Nome do sócio (trigram, requer UF ou CNAE) |
porte | string | — | 01 ME · 03 EPP · 05 Grande |
tem_contato | boolean | — | Apenas empresas com telefone ou e-mail |
page | integer | — | Página (padrão: 1) |
pageSize | integer | — | Resultados por página — máx 100 (padrão: 20) |
replay | boolean | — | Re-executa sem debitar cota nem salvar histórico |
curl -X POST "https://api.cnpjob.com.br/api/portal/leads/search" \ -H "Authorization: Bearer SEU_JWT" \ -H "Content-Type: application/json" \ -d '{"cnae":"8630501","uf":"SP","situacao":"ativa","tem_contato":true}'
{ "data": [ { "cnpj": "12345678000190", "razao_social": "CLINICA SAUDE LTDA", "situacao": "Ativa", "contato": { "telefone": "(11) 3000-0000", "email": "contato@clinica.com.br" }, "endereco": { "municipio": "SAO PAULO", "uf": "SP" }, "cnae_principal": { "codigo": "8630501", "descricao": "Atividade médica ambulatorial" } } ], "count": 20, "page": 1, "quota": { "used": 3, "remaining": 47 } }
Consultar cota diária
Retorna o uso atual, limite e horário de reset da cota de pesquisas de leads do usuário autenticado.
{ "used": 3, "limit": 50, "remaining": 47, "reset_at": "2026-05-26T00:00:00.000Z" }
Histórico de pesquisas
Retorna as últimas 20 pesquisas realizadas pelo usuário.
{ "history": [ { "filters": { "cnae": "8630501", "uf": "SP" }, "result_count": 20, "created_at": "2026-05-25T22:00:00Z" } ] }
Solicitar análise
Gera um relatório de viabilidade empresarial cruzando dados da Receita Federal com pesquisa de preços de mercado via LLM. Se o relatório já existir em cache (mesmo CNAE + município), retorna imediatamente sem debitar cota.
Requer autenticação JWT. Plano Pro (5/mês) ou Business (30/mês). Cache compartilhado — relatórios em cache são gratuitos.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cnae_codigo | string | ✅ Sim | Código CNAE (ex: 8630501) |
municipio_codigo | string | ✅ Sim | Código do município da RF (ex: 3550308) |
descricao_negocio | string | — | Contexto adicional do negócio planejado (max 1000 chars) |
curl -X POST "https://api.cnpjob.com.br/api/portal/analysis/request" \ -H "Authorization: Bearer SEU_JWT" \ -H "Content-Type: application/json" \ -d '{"cnae_codigo":"8630501","municipio_codigo":"3550308","descricao_negocio":"Clínica de fisioterapia especializada em idosos"}'
{ "jobId": "uuid-do-acesso", "status": "done", "report": { "score_viabilidade": 72, "classificacao": "Moderada", "resumo_executivo": "...", "analise_concorrencia": { "total_municipio": 847, "tendencia": "Crescendo" }, "faixa_preco": { "minimo_estimado": 80, "media_estimada": 145, "maximo_estimado": 380 }, "pontos_atencao": ["..."], "recomendacoes": ["..."] }, "score_viabilidade": 72, "last_updated_at": "2026-05-25T22:00:00Z" }
{ "jobId": "uuid-do-acesso", "status": "refreshing", "report": { /* relatório anterior, ainda válido */ }, "score_viabilidade": 72, "last_updated_at": "2026-05-10T00:00:00Z" }
{ "jobId": "uuid-do-acesso", "status": "processing" }
Consultar status / resultado
Consulta o andamento de uma análise em background. Faça polling a cada 3–5 segundos até status === "done". Tempo médio: 30–60 segundos para relatórios novos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
jobId | path | ID retornado pelo POST /analysis/request |
async function waitForAnalysis(jobId, token) { while (true) { const res = await fetch(`/api/portal/analysis/${jobId}`, { headers: { Authorization: `Bearer ${token}` } }); const data = await res.json(); if (data.status === 'done') return data.report; if (data.status === 'failed') throw new Error('Análise falhou'); await new Promise(r => setTimeout(r, 4000)); } }
{ "status": "done", "report": { /* objeto completo do relatório */ }, "score_viabilidade": 72, "last_updated_at": "2026-05-25T22:00:00Z", "cnae_codigo": "8630501", "municipio_codigo": "3550308", "cnae_descricao": "Atividade médica ambulatorial", "municipio_nome": "SAO PAULO" }
| Status | Descrição |
|---|---|
processing | Worker processando — continue o polling |
done | Relatório disponível em report |
failed | Falha no processamento — nova requisição reprocessa automaticamente |
Consultar cota mensal
Retorna o uso, limite e reset mensal da cota de análises de viabilidade.
{ "used": 2, "limit": 5, "remaining": 3, "reset_at": "2026-06-01T00:00:00.000Z" }
Concorrentes no Google Maps
Busca concorrentes reais via Google Places API para o CNAE e município informados. Retorna "available": false se GOOGLE_PLACES_API_KEY não estiver configurado.
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
cnae_descricao | ✅ Sim | Descrição textual do CNAE (ex: Atividade médica ambulatorial) |
municipio_nome | ✅ Sim | Nome do município (ex: SAO PAULO) |
curl "https://api.cnpjob.com.br/api/portal/analysis/nearby-places?cnae_descricao=Fisioterapia&municipio_nome=SAO+PAULO" \ -H "Authorization: Bearer SEU_JWT"
{ "available": true, "places": [ { "name": "Clínica Fisio Centro", "address": "Rua das Flores, 100 - Centro, São Paulo", "rating": 4.7, "total_ratings": 128, "maps_url": "https://www.google.com/maps/place/?q=place_id:..." } ] }