← Blog · Estratégia & Abertura

Análise de Viabilidade:
quantos CNPJs do mesmo CNAE existem na sua região?

Antes de pagar o contador, registrar a empresa e alugar a sala, você pode — em minutos — consultar dados reais da Receita Federal para saber se o mercado onde quer atuar já está saturado ou ainda tem espaço.

19 de maio de 2026 · 8 min de leitura · Python & Node.js

Abrir uma empresa sem fazer uma análise de mercado é o erro número um de empreendedores de primeira viagem. A boa notícia: o Brasil tem um dataset público com 67 milhões de CNPJs — e você pode acessá-lo via API em segundos.

Por que contar concorrentes antes de abrir

Imagine que você quer abrir uma academia de ginástica no bairro de Pinheiros, São Paulo. Intuitivamente você pode dar uma volta de carro e contar as academias visíveis, mas isso capta apenas quem tem fachada. O que dizer de estúdios de crossfit no fundo de um corredor comercial, ou de personal trainers com CNPJ próprio que operam na mesma região?

A Receita Federal exige que toda empresa registre seu CNAE (Classificação Nacional de Atividades Econômicas) no momento do cadastro. Isso cria um censo completo e confiável de toda empresa ativa por setor de atividade e localização.

Dado real

Em março de 2026, existiam 42.318 empresas ativas no Brasil com CNAE 9313-1/00 (academias de condicionamento físico). Só no município de São Paulo: 4.821. No bairro de Pinheiros (código de município 3550308 + filtro de endereço): 214.

O CNAE certo faz toda a diferença

Antes de fazer a consulta, você precisa do código CNAE exato do seu setor. Você pode listar todos os CNAEs disponíveis gratuitamente:

curl https://api.cnpjob.com.br/cnae \
  -H "X-API-Key: SUA_CHAVE_AQUI" | jq '.[] | select(.descricao | test("academia"; "i"))'

O retorno será algo como:

{
  "codigo": "9313100",
  "descricao": "Atividades de condicionamento físico"
}

Consultando o volume de empresas por CNAE e região

Node.js

const API_KEY = process.env.CNPJOB_KEY;
const BASE    = "https://api.cnpjob.com.br";

async function analisarViabilidade({ cnae, uf, municipio }) {
  const params = new URLSearchParams({
    cnae,
    uf,
    situacao: "ativa",
    ...(municipio && { municipio }),
  });

  const res = await fetch(`${BASE}/empresas?${params}`, {
    headers: { "X-API-Key": API_KEY },
  });
  const data = await res.json();

  console.log(`\n=== Análise de Viabilidade ===`);
  console.log(`CNAE: ${cnae} | UF: ${uf} | Município: ${municipio || "todos"}`);
  console.log(`Empresas ativas encontradas: ${data.total}`);

  if (data.total < 50)  console.log("Mercado: POUCO EXPLORADO — pode haver oportunidade.");
  else if (data.total < 300) console.log("Mercado: MODERADO — há concorrência, mas não saturado.");
  else console.log("Mercado: SATURADO — diferenciação é essencial.");

  // Distribui por ano de abertura para ver tendência
  const porAno = {};
  for (const e of data.empresas) {
    const ano = e.data_inicio_atividade?.slice(0, 4);
    if (ano) porAno[ano] = (porAno[ano] || 0) + 1;
  }

  console.log("\nAbertura por ano (últimos 5 anos):");
  const anoAtual = new Date().getFullYear();
  for (let y = anoAtual - 4; y <= anoAtual; y++) {
    const qtd = porAno[y] || 0;
    const bar = "█".repeat(Math.min(qtd, 40));
    console.log(`  ${y}: ${bar} (${qtd})`);
  }
}

// Exemplo: academias no Rio de Janeiro
analisarViabilidade({ cnae: "9313100", uf: "RJ" });

Python

import os, requests
from collections import Counter

API_KEY = os.getenv("CNPJOB_KEY")
BASE    = "https://api.cnpjob.com.br"
HDR     = {"X-API-Key": API_KEY}

def analisar_viabilidade(cnae: str, uf: str, municipio: str = None) -> dict:
    params = {"cnae": cnae, "uf": uf, "situacao": "ativa"}
    if municipio:
        params["municipio"] = municipio

    r = requests.get(f"{BASE}/empresas", params=params, headers=HDR)
    r.raise_for_status()
    data = r.json()

    total = data["total"]
    empresas = data.get("empresas", [])

    # Tendência: contagem por ano de abertura
    anos = Counter(
        e["data_inicio_atividade"][:4]
        for e in empresas
        if e.get("data_inicio_atividade")
    )

    saturacao = (
        "POUCO EXPLORADO" if total < 50
        else "MODERADO" if total < 300
        else "SATURADO"
    )

    return {
        "total": total,
        "saturacao": saturacao,
        "tendencia_abertura": dict(sorted(anos.items())),
    }

# Exemplo: restaurantes em Florianópolis
resultado = analisar_viabilidade(cnae="5611201", uf="SC", municipio="Florianópolis")
print(f"Total de restaurantes ativos: {resultado['total']}")
print(f"Avaliação de mercado: {resultado['saturacao']}")
print(f"Abertura por ano: {resultado['tendencia_abertura']}")

Indo além: densidade por habitante

O número bruto de empresas ativas não conta toda a história. Uma cidade com 100 academias e 1 milhão de habitantes tem densidade muito menor do que uma cidade com 30 academias e 50 mil habitantes. Combinar o total de CNPJs com dados de população (IBGE) permite calcular a razão empresas/habitante — uma métrica muito mais precisa de saturação.

Dica profissional

Use o endpoint GET /cnpj/:cnpj/estabelecimentos (Plano Pro) para descobrir o número de filiais dos seus principais concorrentes. Uma empresa com 10 filiais na região tem peso muito diferente de 10 microempreendedores individuais.

Identificando a tendência: o mercado está crescendo ou encolhendo?

O campo data_inicio_atividade retornado em cada empresa permite calcular se o número de novos entrantes tem crescido ou diminuído nos últimos anos. Um mercado com menos aberturas nos últimos 2 anos pode indicar:

Já um mercado com mais aberturas nos últimos 2 anos pode indicar aquecimento — ou exatamente o contrário: um hype temporário que está atraindo muitos concorrentes ao mesmo tempo.

Roteiro completo de due diligence pré-abertura

  1. Liste o CNAE principal e os secundários do seu negócio via GET /cnae
  2. Consulte o volume de empresas ativas na sua cidade: GET /empresas?cnae=X&uf=Y&municipio=Z&situacao=ativa
  3. Analise a tendência de abertura por ano usando data_inicio_atividade
  4. Para os 3-5 maiores concorrentes, chame GET /cnpj/:cnpj/estabelecimentos para ver quantas filiais têm
  5. Use GET /cnpj/:cnpj/socios para mapear os sócios e verificar se há grupos econômicos por trás
  6. Configure um monitor de CNPJ nos principais concorrentes para ser alertado se abrirem novas filiais

Pronto para validar seu negócio com dados reais?

A filtragem por CNAE e município está disponível a partir do Plano Pro. Crie sua conta grátis e teste os primeiros endpoints agora.

Criar conta grátis