# Inteligência de Mercado por CNAE — Brasil (`johnatan029/cnae-market-intelligence`) Actor

Meça o tamanho de mercados brasileiros por CNAE e UF usando dados abertos oficiais da Receita Federal. Veja estabelecimentos totais e ativos, novas matrizes do mês, distribuição por UF e porte das entrantes. Aceita CNAE completo ou prefixo e declara o frescor mensal dos dados.

- **URL**: https://apify.com/johnatan029/cnae-market-intelligence.md
- **Developed by:** [Johnn Mottin](https://apify.com/johnatan029) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 perfil de cnaes

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Meça o tamanho de um mercado brasileiro por CNAE

Transforme dados abertos oficiais do CNPJ em um **perfil de mercado agregado por atividade econômica**.

Informe um CNAE completo ou um prefixo de 2–6 dígitos e receba, no recorte de UF escolhido:

- total de estabelecimentos;
- estabelecimentos ativos;
- novas matrizes ativas no mês;
- distribuição por UF;
- quantidade de CNAEs cobertos pelo prefixo;
- distribuição por porte das novas entrantes, quando ativada.

O Actor usa um **índice mensal mantido pela JM Forge**, construído a partir dos dados abertos oficiais da Receita Federal. Cada perfil informa `versaoDosDados` e `staleness` para que a fotografia usada seja auditável.

Sem scraping de site. Sem IA em runtime. Sem inventar tamanho de mercado.

#### Principais recursos

- **Perfil agregado por CNAE**
- **CNAE completo de 7 dígitos**
- **Prefixos de CNAE de 2–6 dígitos**
- **Brasil inteiro ou UFs selecionadas**
- **Total de estabelecimentos**
- **Estabelecimentos ativos**
- **Novas matrizes ativas do mês**
- **Distribuição por UF**
- **Detalhe das novas empresas por porte**
- **Micro Empresa — 01**
- **Empresa de Pequeno Porte — 03**
- **Demais — 05**
- **Contagem de CNAEs cobertos pelo pedido**
- **Versão mensal dos dados**
- **Alerta de índice atrasado**
- **CNAE inexistente não é cobrado**
- **Mercado zero no recorte continua sendo resposta legítima**
- **RUN\_SUMMARY gratuito**
- **Health checks e transparência de fonte**
- **Até 200 perfis por execução**
- **Pay Per Event por perfil entregue**

> **Actor comunitário não-oficial. Sem afiliação com a Receita Federal do Brasil ou qualquer órgão público.** A fonte de origem são os dados abertos oficiais do CNPJ. O runtime consome um índice mensal derivado desses dados e mantido pela JM Forge; preserve `versaoDosDados` e `staleness` ao armazenar os resultados.

***

### Para que este Actor serve

A pergunta central é:

> Qual o tamanho deste mercado, onde ele está e quantas novas empresas entraram nele no mês de referência?

Exemplos de uso:

- pesquisa de mercado;
- planejamento comercial;
- análise de TAM observável no cadastro CNPJ;
- escolha de regiões;
- inteligência de vendas;
- priorização de setores;
- análise competitiva;
- expansão geográfica;
- acompanhamento de novos entrantes;
- criação de dashboards;
- planejamento B2B.

***

### Para quem é

#### Estratégia e inteligência de mercado

Compare setores e regiões usando uma mesma unidade de medida cadastral.

#### Vendas B2B

Use o perfil para decidir em quais CNAEs ou UFs vale aprofundar a prospecção.

Depois, use um Actor independente de descoberta de empresas quando precisar dos leads individuais.

#### Agências e consultorias

Crie relatórios mensais para nichos específicos.

#### Pesquisa e dados

Construa séries históricas salvando um perfil mensal por CNAE.

#### Automação

Conecte os perfis a:

- Apify API;
- n8n;
- Make;
- Google Sheets;
- bancos de dados;
- BI;
- dashboards;
- sistemas internos.

***

### Este Actor entrega mercado agregado — não uma lista de empresas

O registro principal é:

```text
CNAE_PROFILE
```

Ele representa um **mercado agregado**.

O Actor não entrega, neste produto:

- CNPJ individual de cada empresa;
- razão social de cada estabelecimento;
- endereço de cada empresa;
- telefone;
- e-mail;
- sócios.

Para empresas uma a uma, use os Actors independentes da família CNPJ.

***

### O que entra no tamanho de mercado

#### `totalEstabelecimentos`

Conta estabelecimentos do CNAE × UF presentes no índice:

```text
matrizes
+
filiais
+
diferentes situações cadastrais
```

Portanto, este campo não significa:

```text
empresas ativas
```

nem:

```text
matrizes
```

Ele é o estoque total de estabelecimentos da célula agregada.

***

### Estabelecimentos ativos

O campo:

```text
estabelecimentosAtivos
```

é a parcela ativa dentro do mesmo escopo CNAE × UF.

Use esse campo quando a pergunta for mais próxima de:

> Quantos estabelecimentos ativos existem neste mercado cadastral?

***

### Novas empresas do mês

O campo:

```text
novasMatrizesAtivasNoMes
```

tem um recorte diferente do estoque.

Ele representa:

```text
matriz
+
situação ativa
+
início de atividade no mês de referência
```

Filiais novas não entram nessa métrica.

***

### Importante: porte não existe no estoque agregado

O índice de mercado principal sustenta por célula CNAE × UF:

```text
totalEstabelecimentos
estabelecimentosAtivos
novasMatrizesAtivasNoMes
```

Ele **não** possui porte de cada estabelecimento do estoque total.

O porte é calculado somente no detalhe das **novas matrizes do mês**, quando:

```json
{
  "detalharNovas": true
}
```

Por isso o Actor não promete algo como:

> Existem 500 mil microempresas ativas neste CNAE.

Esse número não é sustentado pelo índice agregado atual.

***

### Como o detalhe de porte funciona

Com o detalhe ativado, o Actor lê os registros mensais das novas matrizes no escopo e calcula:

```text
novasDoMesDetalhe.total
novasDoMesDetalhe.porPorte
```

Exemplo:

```json
{
  "novasDoMesDetalhe": {
    "total": 10374,
    "porPorte": {
      "01": 10133,
      "03": 214,
      "05": 27
    },
    "totalNoEscopoDePorte": null,
    "parcial": false
  }
}
```

***

### Filtro de porte — atenção

O input:

```text
portes
```

não altera:

```text
totalEstabelecimentos
estabelecimentosAtivos
novasMatrizesAtivasNoMes
```

Ele serve para calcular:

```text
novasDoMesDetalhe.totalNoEscopoDePorte
```

dentro das novas empresas detalhadas.

Exemplo:

```json
{
  "portes": [
    "01",
    "03"
  ],
  "detalharNovas": true
}
```

O perfil continua representando o mercado completo do CNAE/UF.

O campo de porte mostra quantas **novas entrantes** pertencem aos portes selecionados.

***

### Fonte dos dados

A origem é o conjunto de dados abertos do CNPJ administrado pela Receita Federal.

Página oficial de dados abertos da Receita Federal:

```text
https://www.gov.br/receitafederal/pt-br/acesso-a-informacao/dados-abertos
```

O fluxo deste produto é:

```text
dados abertos oficiais do CNPJ
        ↓
índice mensal JM Forge — RFB-INDEX
        ↓
células CNAE × UF
        ↓
CNAE_PROFILE
```

O Actor não precisa processar o snapshot bruto completo em cada execução.

***

### Por que existe um índice mensal

A base aberta do CNPJ é grande.

Para tornar consultas agregadas rápidas, a JM Forge pré-processa a fotografia mensal em células como:

```text
CNAE × UF
```

e mantém, por célula:

```text
total
ativos
novas matrizes ativas do mês
```

O runtime consulta esse índice por HTTPS.

É uma dependência de dados, não outro Actor encadeado em runtime.

***

### Frescor dos dados

Este produto trabalha com **frescor mensal**.

Ele não promete:

```text
tempo real
atualização diária
abertura no mesmo dia
```

O mês usado aparece no output.

***

### `versaoDosDados`

O índice pode retornar um bloco como:

```json
{
  "snapshotMonth": "2026-08",
  "referenceMonth": "2026-07",
  "builtAt": "2026-08-31T23:22:20.138Z"
}
```

#### `snapshotMonth`

Fotografia oficial usada para construir o índice.

#### `referenceMonth`

Mês usado para a métrica de novas matrizes.

#### `builtAt`

Momento de construção do índice mensal.

***

### `staleness`

O Actor compara o mês disponível com o **mês fechado esperado no calendário brasileiro**.

Exemplo:

```json
{
  "staleness": {
    "indexMonth": "2026-07",
    "expectedMonth": "2026-07",
    "stale": false
  }
}
```

Se o índice estiver atrás:

```text
stale: true
```

e o resumo adiciona um warning.

O dado ainda informa sua versão real; o Actor não disfarça atraso como frescor.

***

### Input

#### Exemplo recomendado

```json
{
  "cnaes": [
    "56",
    "6201501"
  ],
  "ufs": [
    "SP",
    "MG"
  ],
  "portes": [
    "01",
    "03"
  ],
  "detalharNovas": true,
  "mes": "",
  "maxResults": 20,
  "maxRuntimeMs": 300000
}
```

#### Campos de input

| Campo | Default | Descrição |
|---|---:|---|
| `cnaes` | obrigatório | CNAEs completos ou prefixos de 2–6 dígitos. Máximo 200. |
| `ufs` | `[]` | UFs do perfil. Vazio = Brasil inteiro. |
| `portes` | `[]` | Portes usados somente no detalhe das novas matrizes. |
| `detalharNovas` | `true` | Calcula distribuição por porte das novas matrizes. |
| `mes` | vazio | `AAAA-MM`; vazio = mês mais recente no índice. |
| `maxResults` | `50` | Máximo de perfis entregues/cobrados. Máximo 200. |
| `maxRuntimeMs` | `300000` | Teto de runtime. |
| `debug` | `false` | Logs adicionais. |

***

### CNAE completo

Exemplo:

```json
{
  "cnaes": [
    "5611201"
  ]
}
```

Cria um perfil para o código específico.

***

### Prefixo de CNAE

Exemplo:

```json
{
  "cnaes": [
    "56"
  ]
}
```

Agrega todos os CNAEs presentes no escopo cujo código começa com:

```text
56
```

O campo:

```text
cnaesNaClassificacao
```

informa quantos códigos CNAE distintos foram encontrados **dentro do escopo de UF** e agregados naquele perfil.

***

### Formatação de CNAE

A API aceita o CNAE numérico e também tolera pontuação/espaços usuais.

Exemplo:

```text
5611201
5611-2/01
```

ambos podem representar o mesmo código normalizado.

Caracteres arbitrários ou letras não são removidos silenciosamente.

Uma entrada como:

```text
56abc
```

é rejeitada em vez de virar acidentalmente:

```text
56
```

***

### Filtro por UF

Exemplo:

```json
{
  "ufs": [
    "SP"
  ]
}
```

O perfil soma somente as células do CNAE dentro de São Paulo.

Lista vazia:

```json
{
  "ufs": []
}
```

significa Brasil inteiro.

***

### Porte das novas empresas

Códigos:

```text
01 = Micro Empresa
03 = Empresa de Pequeno Porte
05 = Demais
```

Exemplo:

```json
{
  "portes": [
    "01",
    "03"
  ],
  "detalharNovas": true
}
```

Se `portes` for informado e `detalharNovas` estiver desativado, o input é rejeitado para evitar um filtro silenciosamente ignorado.

***

### Mês de referência

Mês mais recente:

```json
{
  "mes": ""
}
```

Mês específico, quando ainda disponível:

```json
{
  "mes": "2026-07"
}
```

O formato é validado como:

```text
AAAA-MM
```

com mês entre:

```text
01–12
```

***

### Output

O Dataset contém:

```text
CNAE_PROFILE
RUN_SUMMARY
```

`CNAE_PROFILE` é cobrado.

`RUN_SUMMARY` é gratuito.

***

### Exemplo de `CNAE_PROFILE`

```json
{
  "recordType": "CNAE_PROFILE",
  "cnaeSolicitado": "56",
  "tipoSolicitacao": "prefixo",
  "escopoUfs": [
    "SP"
  ],
  "cnaesNaClassificacao": 9,
  "totalEstabelecimentos": 1730020,
  "estabelecimentosAtivos": 509455,
  "novasMatrizesAtivasNoMes": 10374,
  "porUf": {
    "SP": {
      "total": 1730020,
      "ativos": 509455,
      "novasNoMes": 10374
    }
  },
  "novasDoMesDetalhe": {
    "total": 10374,
    "porPorte": {
      "01": 10133,
      "03": 214,
      "05": 27
    },
    "totalNoEscopoDePorte": null,
    "parcial": false
  },
  "escopoPortes": null,
  "versaoDosDados": {
    "snapshotMonth": "2026-08",
    "referenceMonth": "2026-07",
    "builtAt": "2026-08-31T23:22:20.138Z"
  },
  "staleness": {
    "indexMonth": "2026-07",
    "expectedMonth": "2026-07",
    "stale": false
  },
  "observedAt": "2026-08-31T23:26:22.912Z"
}
```

Os números acima ilustram o shape observado durante a construção do produto.

O valor real depende do mês, índice e escopo usados na execução.

***

### Campos de `CNAE_PROFILE`

| Campo | Descrição |
|---|---|
| `recordType` | `CNAE_PROFILE`. |
| `cnaeSolicitado` | CNAE ou prefixo solicitado. |
| `tipoSolicitacao` | `codigo` ou `prefixo`. |
| `escopoUfs` | UFs selecionadas ou `BR`. |
| `cnaesNaClassificacao` | CNAEs distintos agregados dentro do escopo. |
| `totalEstabelecimentos` | Estoque total de estabelecimentos. |
| `estabelecimentosAtivos` | Estabelecimentos ativos. |
| `novasMatrizesAtivasNoMes` | Novas matrizes ativas no mês. |
| `porUf` | Totais distribuídos por UF. |
| `novasDoMesDetalhe` | Detalhe opcional das novas empresas por porte. |
| `escopoPortes` | Portes usados no cálculo do detalhe. |
| `versaoDosDados` | Versão da fotografia/indexação. |
| `staleness` | Diagnóstico do mês disponível. |
| `observedAt` | Timestamp da execução. |

***

### CNAE inexistente

O Actor separa:

```text
CNAE não existe na classificação observada
```

de:

```text
CNAE existe, mas o recorte de UF tem zero estabelecimentos
```

Se nenhum código compatível existe em célula alguma do Brasil:

```text
CNAE_NOT_FOUND
```

o pedido é listado no resumo e **não é cobrado**.

***

### Zero legítimo no recorte

Suponha que um CNAE exista no Brasil, mas tenha:

```text
0 estabelecimentos
```

nas UFs escolhidas.

Esse perfil é uma resposta de mercado legítima:

> O mercado existe na classificação, mas não há estabelecimentos nesse recorte.

O `CNAE_PROFILE` é entregue e cobrado.

***

### Detalhe parcial de porte

O perfil principal depende das células agregadas.

O detalhe por porte depende dos chunks das novas matrizes.

Se uma UF do detalhe falhar:

```text
perfil agregado
=
continua íntegro

novasDoMesDetalhe.parcial
=
true
```

e as UFs indisponíveis são declaradas.

O Actor não transforma uma falha de detalhe em zero silencioso.

***

### `RUN_SUMMARY`

O resumo gratuito pode incluir:

```text
recordsWritten
unitsRequested
unitsOk
unitsFailed
capReason
qualityAlert
sourceUnavailable
warnings
units
outcomeKind
billableRecords
stateVersion
report
httpRequests
cost
pricingLabel
```

***

### `report`

O bloco gratuito:

```text
report
```

pode incluir:

```text
indexMonth
staleness
cellsNoIndice
profilesRequested
profilesDelivered
profilesNotFound
profilesSkippedByCap
novasDetalhe
```

***

### `STATS`

O Key-Value Store padrão recebe:

```text
STATS
```

com diagnóstico operacional como:

- requests HTTP;
- retries;
- perfis entregues;
- cobrança;
- runtime;
- qualidade;
- staleness;
- warnings;
- custo computacional.

***

### Como usar para comparação de mercado

Exemplo:

```json
{
  "cnaes": [
    "56",
    "62",
    "86"
  ],
  "ufs": [
    "SP"
  ],
  "detalharNovas": true
}
```

Isso produz um perfil para cada pedido.

Você pode comparar:

- tamanho do estoque;
- ativos;
- novas matrizes do mês;
- distribuição de porte das entrantes.

***

### Como usar para comparação regional

Exemplo:

```json
{
  "cnaes": [
    "6201501"
  ],
  "ufs": [
    "SP",
    "MG",
    "PR",
    "SC"
  ]
}
```

O perfil traz:

```text
porUf
```

para comparar a distribuição regional dentro do mesmo registro.

***

### Série histórica mensal

O Actor é stateless.

Para construir uma série histórica:

1. salve a configuração como uma Task;
2. execute uma vez por mês;
3. preserve o Dataset;
4. compare os `CNAE_PROFILE` ao longo do tempo.

O Actor não mantém automaticamente um histórico agregado entre execuções.

***

### API da Apify

Execute via API:

```bash
curl -s "https://api.apify.com/v2/acts/<SEU_USUARIO>~cnae-market-intelligence/run-sync-get-dataset-items?token=<SEU_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "cnaes":["56","6201501"],
    "ufs":["SP"],
    "detalharNovas":true,
    "maxResults":20
  }'
```

Substitua:

```text
<SEU_USUARIO>
<SEU_TOKEN>
```

pelos seus dados da Apify.

***

### Integrações

Use com:

- Apify API;
- Tasks;
- Schedules;
- webhooks;
- n8n;
- Make;
- Google Sheets;
- bancos de dados;
- BI;
- dashboards;
- CRM;
- aplicações internas.

***

### Agendamento

A cadência natural é:

```text
mensal
```

depois da disponibilidade de uma nova fotografia no índice.

A execução mensal permite criar uma série como:

```text
tamanho
ativos
novos entrantes
distribuição geográfica
porte das novas empresas
```

***

### Cobrança

Este Actor usa:

```text
Pay Per Event
```

O modelo de publicação contém:

```text
apify-actor-start
cnae-profile
```

#### `apify-actor-start`

É o evento sintético de início da Apify.

Ele é configurado na aba **Pricing** e cobrado automaticamente pela plataforma.

O código não faz uma segunda cobrança customizada de início.

#### `cnae-profile`

É cobrado por `CNAE_PROFILE` entregue.

Um perfil pode representar:

```text
um CNAE específico
```

ou:

```text
um prefixo inteiro
```

A aba **Pricing** é sempre a fonte autoritativa do preço vigente.

***

### O que é gratuito

Não gera cobrança de `cnae-profile`:

- CNAE inexistente na classificação;
- `RUN_SUMMARY`;
- pedido além de `maxResults`;
- execução sem perfil entregue.

Um CNAE existente com zero no recorte continua sendo um perfil entregue/cobrado porque o zero é a resposta.

***

### Controle de custo

Principais controles:

```text
cnaes
maxResults
detalharNovas
ufs
maxRuntimeMs
```

#### Perfil rápido

Use:

- poucos CNAEs;
- UFs específicas;
- `detalharNovas: false` quando não precisa de porte.

#### Análise mais completa

Use:

- múltiplos CNAEs;
- Brasil inteiro;
- detalhe das novas empresas.

A parte de porte pode exigir leituras adicionais dos chunks mensais.

***

### Health e transparência

O Actor não converte falha do índice em resposta de mercado.

Ele diferencia:

- índice indisponível;
- contrato do índice alterado;
- CNAE inexistente;
- zero legítimo;
- detalhe de porte parcial;
- staleness;
- cap de execução.

Os avisos ficam em:

```text
RUN_SUMMARY
STATS
```

***

### Limites honestos

#### Frescor mensal

Este não é um produto de tempo real.

#### O estoque total inclui matriz e filial

`totalEstabelecimentos` não é o total de empresas-matriz.

#### O estoque total inclui diferentes situações

Use `estabelecimentosAtivos` quando quiser o subconjunto ativo.

#### Porte só existe nas novas empresas detalhadas

O Actor não possui distribuição de porte do estoque total.

#### Novas empresas são matrizes ativas

A métrica mensal não inclui filiais novas.

#### O filtro de porte não muda o perfil agregado

Ele apenas calcula a contagem das novas entrantes dentro dos portes selecionados.

#### Prefixos podem cobrir muitos CNAEs

Um prefixo como:

```text
47
```

representa um agrupamento amplo.

#### `cnaesNaClassificacao` é do escopo selecionado

O valor conta os códigos CNAE distintos encontrados dentro das UFs do perfil, não necessariamente todos os códigos existentes nacionalmente fora desse escopo.

#### Não entrega lista de empresas

Use o Actor de empresas novas quando precisar dos leads individualmente.

#### Reexecução repete o perfil

O Actor é stateless entre runs.

#### O índice é uma dependência de dados JM Forge

Se o índice mensal estiver indisponível, o Actor não consegue reconstruir o snapshot bruto dentro da mesma execução.

#### O índice pode ficar atrasado

O output marca:

```text
stale: true
```

quando o mês disponível está atrás do esperado.

#### Mês antigo depende de retenção

Um mês explícito funciona somente enquanto as chaves daquele índice mensal estiverem disponíveis.

#### Nenhum dado de contato

O perfil não inclui telefone, e-mail, site ou sócios.

***

### Perguntas frequentes

#### De onde vêm os dados?

Dos dados abertos oficiais do CNPJ da Receita Federal, transformados em um índice mensal mantido pela JM Forge.

#### É scraping do site da Receita?

Não.

#### Preciso de chave da Receita Federal?

Não.

#### Posso informar um CNAE completo?

Sim.

#### Posso informar só a divisão CNAE?

Sim.

Exemplo:

```json
{
  "cnaes": [
    "56"
  ]
}
```

#### Quantos CNAEs posso pedir?

Até:

```text
200
```

por execução.

#### Posso escolher estados?

Sim.

#### Lista de UFs vazia significa o quê?

Brasil inteiro.

#### O que é `totalEstabelecimentos`?

Estoque total de estabelecimentos nas células agregadas do recorte.

#### Inclui filiais?

Sim.

#### O que é `estabelecimentosAtivos`?

O subconjunto em situação ativa.

#### O que significa `novasMatrizesAtivasNoMes`?

Matrizes ativas com início de atividade no mês de referência.

#### O Actor mostra porte?

Das novas empresas, quando o detalhe está ativado.

Não do estoque total.

#### Posso filtrar o estoque total por porte?

Não nesta versão.

#### O que acontece se o CNAE não existir?

Não é entregue/cobrado como perfil; fica indicado no resumo.

#### E se existir, mas tiver zero em SP?

O perfil é entregue com zero e é cobrado.

#### Posso pedir um mês anterior?

Sim, quando o índice daquele mês ainda estiver disponível.

#### Como sei se os dados estão atrasados?

Leia:

```text
staleness
```

#### O resumo é cobrado?

Não.

#### Posso agendar?

Sim.

Mensal é a cadência natural.

#### Pelo que eu pago?

Pelo evento `cnae-profile` para cada perfil entregue, além do evento sintético de início configurado na Apify.

#### Este Actor é oficial da Receita Federal?

Não.

É uma ferramenta comunitária independente construída sobre dados públicos oficiais.

***

### Suporte

Para bugs, dúvidas ou solicitação de campos:

```text
johnatan291303@gmail.com
```

Use também a aba **Issues** na página do Actor.

***

### Parte da suíte JM Forge

Também do mesmo desenvolvedor:

- **Empresas Novas por CNPJ, CNAE, UF e Porte** — leads individuais de novas matrizes ativas do mês.
- **Consulta CNPJ Brasil e Empresas por CNAE** — consulta cadastral e descoberta de empresas.
- **Monitor de Mudanças Cadastrais de CNPJ** — mudanças em dados de CNPJ.
- **Validador de CNPJ Alfanumérico — Lote e Migração** — validação estrutural em lote.
- **Triagem CNPJ — CEIS, CNEP, CEPIM e Leniência** — triagem factual de sanções federais.

Os Actors permanecem ferramentas independentes.

Use este Actor para **inteligência agregada de mercado**.

Use os outros produtos quando precisar das empresas ou eventos individuais.

# Actor input Schema

## `cnaes` (type: `array`):

Um perfil por CNAE informado: código completo (7 dígitos) ou prefixo — "56" perfila toda a divisão de alimentação. Obrigatório pelo menos um.

## `ufs` (type: `array`):

Estados desejados (siglas). Lista vazia = Brasil inteiro.

## `portes` (type: `array`):

01 = Micro Empresa · 03 = Pequeno Porte · 05 = Demais. Aplica-se ao detalhe das empresas novas do mês (o estoque total do índice não tem porte). Lista vazia = todos.

## `detalharNovas` (type: `boolean`):

Lê as empresas novas do mês no escopo e agrega distribuição por porte no perfil.

## `mes` (type: `string`):

Vazio = mês mais recente disponível no índice (recomendado).

## `maxResults` (type: `integer`):

Cerca de entrega: além do teto nada é entregue nem cobrado.

## `maxRuntimeMs` (type: `integer`):

Cerca dura da run.

## `debug` (type: `boolean`):

Log detalhado.

## Actor input object example

```json
{
  "cnaes": [
    "56"
  ],
  "ufs": [
    "SP"
  ],
  "portes": [],
  "detalharNovas": true,
  "mes": "",
  "maxResults": 10,
  "maxRuntimeMs": 300000,
  "debug": false
}
```

# Actor output Schema

## `resultados` (type: `string`):

Dataset padrão contendo CNAE\_PROFILE e o RUN\_SUMMARY gratuito.

## `estatisticas` (type: `string`):

Registro STATS com versão do índice, requests, cobrança, qualidade, runtime, limites e métricas operacionais.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "cnaes": [
        "56"
    ],
    "ufs": [
        "SP"
    ],
    "portes": [],
    "detalharNovas": true,
    "mes": "",
    "maxResults": 10,
    "maxRuntimeMs": 300000,
    "debug": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnatan029/cnae-market-intelligence").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "cnaes": ["56"],
    "ufs": ["SP"],
    "portes": [],
    "detalharNovas": True,
    "mes": "",
    "maxResults": 10,
    "maxRuntimeMs": 300000,
    "debug": False,
}

# Run the Actor and wait for it to finish
run = client.actor("johnatan029/cnae-market-intelligence").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "cnaes": [
    "56"
  ],
  "ufs": [
    "SP"
  ],
  "portes": [],
  "detalharNovas": true,
  "mes": "",
  "maxResults": 10,
  "maxRuntimeMs": 300000,
  "debug": false
}' |
apify call johnatan029/cnae-market-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,johnatan029/cnae-market-intelligence"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1pMqTcnvUN1Giki7A/builds/wGdFp6D06VgpjzPhN/openapi.json
