# Mapa de Filiais por CNPJ — Rede Empresarial (`johnatan029/branch-network`) Actor

Mapeie as filiais de uma empresa pela raiz do CNPJ usando dados abertos oficiais da Receita Federal. Receba CNPJ completo, UF, município, CNAE, situação e data de início por filial, além de totais por UF e status. Aceita CNPJ numérico ou alfanumérico e declara o frescor mensal.

- **URL**: https://apify.com/johnatan029/branch-network.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 $10.00 / 1,000 mapa de filiais

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

### Mapeie toda a rede de filiais de uma empresa pela raiz do CNPJ

Informe a **raiz do CNPJ** ou um CNPJ completo e receba o mapa das filiais presentes na fotografia mensal dos dados abertos da Receita Federal.

Cada `BRANCH_MAP` pode incluir:

- CNPJ completo de cada filial;
- UF;
- código do município;
- CNAE principal;
- situação cadastral;
- data de início;
- total de filiais;
- total de filiais ativas;
- distribuição por UF;
- distribuição por situação cadastral.

O Actor também calcula deterministicamente o CNPJ da matriz como:

```text
raiz + 0001 + dígitos verificadores
```

e deixa claro que esse CNPJ da matriz foi **calculado pela regra**, não observado no índice de filiais.

Aceita CNPJ numérico e o novo formato alfanumérico. O frescor mensal é declarado em cada resultado.

#### Principais recursos

- **Mapa de filiais por raiz de CNPJ**
- **Raiz de 8 posições ou CNPJ completo**
- **CNPJ numérico e alfanumérico**
- **Validação de DV para CNPJ completo**
- **CNPJ completo de cada filial**
- **CNPJ da matriz calculado pela norma**
- **Total de filiais**
- **Filiais ativas**
- **Distribuição por UF**
- **Distribuição por situação cadastral**
- **UF de cada filial**
- **Código do município**
- **CNAE principal**
- **Situação cadastral**
- **Data de início**
- **Versão mensal dos dados**
- **Alerta de índice atrasado**
- **Entradas inválidas gratuitas**
- **Deduplicação por raiz dentro da execução**
- **RUN\_SUMMARY gratuito**
- **Leitura eficiente por shards**
- **Até 1.000 raízes por execução**
- **Pay Per Event por mapa entregue**

> **Actor comunitário não-oficial. Sem afiliação com a Receita Federal do Brasil ou qualquer órgão público.** A origem são os dados abertos oficiais do CNPJ, pré-processados em um índice mensal mantido pela JM Forge. Este índice lista filiais. Uma raiz sem filiais no índice não deve ser interpretada automaticamente como inexistente.

***

### Para que este Actor serve

A pergunta central é:

> Quais filiais esta raiz de CNPJ possui na fotografia mensal, onde elas estão e qual a situação de cada uma?

Casos de uso:

- mapeamento de grupos empresariais;
- homologação de fornecedores;
- pesquisa de redes;
- análise territorial;
- cobertura comercial;
- inteligência de contas;
- auditoria cadastral;
- análise de expansão;
- integração de CRM/ERP;
- pesquisa B2B;
- consolidação por raiz de CNPJ.

***

### Para quem é

#### Vendas B2B e account intelligence

Descubra a dimensão operacional de uma conta antes de planejar cobertura comercial.

#### Compliance e procurement

Mapeie estabelecimentos associados à mesma raiz e analise a situação de cada filial como um dado cadastral complementar.

#### Logística e expansão

Veja a distribuição regional da rede por UF.

#### Consultorias e pesquisa

Crie análises de redes empresariais sem abrir cada CNPJ individualmente.

#### Automação e dados

Conecte os resultados a:

- Apify API;
- n8n;
- Make;
- Google Sheets;
- CRM;
- ERP;
- bancos de dados;
- BI;
- aplicações internas.

***

### O que significa "raiz do CNPJ"

A raiz são as primeiras 8 posições do CNPJ.

Exemplo:

```text
34.028.316/0001-03
```

Raiz:

```text
34028316
```

A mesma raiz identifica a família de estabelecimentos que compartilha o número básico.

***

### Formatos aceitos

#### Raiz direta

```json
{
  "cnpjs": [
    "34028316"
  ]
}
```

#### CNPJ completo

```json
{
  "cnpjs": [
    "34.028.316/0001-03"
  ]
}
```

#### CNPJ alfanumérico completo

O validador interno também suporta as 12 primeiras posições alfanuméricas conforme o formato novo, mantendo os dois DVs finais numéricos.

Quando um CNPJ completo é fornecido, o Actor valida o DV antes de convertê-lo em raiz.

***

### Importante: raiz de 8 posições não tem DV próprio

Uma raiz fornecida diretamente possui apenas 8 posições.

Ela não contém os dígitos verificadores do CNPJ completo.

Por isso o Actor consegue verificar:

- comprimento;
- caracteres aceitos;

mas não consegue confirmar por DV, somente com a raiz, que existe uma matriz real.

O índice de filiais é então consultado para essa raiz.

***

### Importante: o índice contém filiais

O índice mensal usado por este produto foi construído para responder rapidamente:

> Quais filiais pertencem a esta raiz?

Ele não é o cadastro completo da matriz.

O `BRANCH_MAP` possui:

```text
raizAtestadaPeloIndice
```

#### Quando é `true`

Existe pelo menos uma filial dessa raiz no índice mensal.

#### Quando é `false`

Nenhuma filial dessa raiz foi observada no snapshot.

Isso **não é o mesmo que provar que a raiz não existe**.

Uma empresa pode existir somente com matriz e zero filiais.

Uma raiz estrutural de 8 posições também pode ter sido informada sem um CNPJ completo validado.

Quando você precisa confirmar a existência cadastral da matriz, use um produto independente de consulta CNPJ.

***

### CNPJ da matriz é calculado

O índice de filiais não fornece ao produto os dados cadastrais da matriz.

O Actor calcula:

```text
raiz + 0001 + DV
```

e retorna:

```text
cnpjMatrizCalculado
cnpjMatrizFormatado
```

O campo é deliberadamente chamado de:

```text
calculado
```

para não sugerir que a matriz foi observada no índice.

***

### Situação cadastral das filiais

O Actor traduz os códigos previstos na implementação para:

```text
01 = NULA
02 = ATIVA
03 = SUSPENSA
04 = INAPTA
08 = BAIXADA
```

O registro também preserva:

```text
situacaoCodigo
```

para auditoria.

***

### Fonte dos dados

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

O fluxo do produto é:

```text
dados abertos oficiais do CNPJ
        ↓
índice mensal JM Forge — RFB-INDEX
        ↓
shards por prefixo da raiz
        ↓
BRANCH_MAP
```

O runtime não precisa processar o snapshot bruto inteiro em cada consulta.

***

### Por que existe um índice mensal

A base oficial do CNPJ é grande.

Para tornar consultas por raiz rápidas, a JM Forge constrói mensalmente um índice específico de filiais.

O runtime lê apenas os shards necessários para as raízes solicitadas.

Exemplo:

```text
raiz 34028316
prefixo de shard 34
```

Se várias raízes do lote começam por `34`, o shard correspondente é lido uma única vez e reutilizado.

***

### Frescor mensal

Este produto não é tempo real.

O resultado informa:

```text
versaoDosDados
staleness
```

para deixar explícita a fotografia usada.

***

### `versaoDosDados`

O índice pode fornecer:

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

#### `snapshotMonth`

Mês do snapshot oficial usado para construir o índice.

#### `referenceMonth`

Mês de referência operacional do índice.

#### `builtAt`

Momento de construção do índice.

***

### `staleness`

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

Exemplo:

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

Quando o índice está atrás:

```text
stale: true
```

e o `RUN_SUMMARY` recebe um aviso.

***

### Input

#### Exemplo recomendado

```json
{
  "cnpjs": [
    "34028316",
    "34.028.316/0001-03"
  ],
  "mes": "",
  "maxResults": 100,
  "maxRuntimeMs": 300000
}
```

As duas entradas do exemplo representam a mesma raiz.

Ela será consultada uma única vez.

#### Campos de input

| Campo | Default | Descrição |
|---|---:|---|
| `cnpjs` | obrigatório | Raízes de 8 posições ou CNPJs completos. Máximo 1.000 entradas. |
| `mes` | vazio | `AAAA-MM`; vazio = mês mais recente disponível. |
| `maxResults` | `100` | Máximo de BRANCH\_MAP entregues/cobrados. |
| `maxRuntimeMs` | `300000` | Teto de runtime. |
| `debug` | `false` | Logs adicionais. |

***

### Deduplicação de entrada

A deduplicação ocorre pela:

```text
raiz normalizada
```

Exemplo:

```json
{
  "cnpjs": [
    "34028316",
    "34.028.316/0001-03",
    "34028316000103"
  ]
}
```

as três entradas representam a mesma raiz.

O Actor processa:

```text
1 raiz
```

e gera no máximo:

```text
1 branch-map
```

para ela.

***

### Entradas inválidas são gratuitas

Quando um CNPJ completo possui:

- comprimento errado;
- caracteres inválidos;
- DV inválido;

ele é listado nos avisos do resumo e não gera `BRANCH_MAP`.

Se todas as entradas forem inválidas, o input é rejeitado.

***

### Mês específico

Mês mais recente:

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

Mês específico, se ainda retido no índice:

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

O mês precisa estar no formato:

```text
AAAA-MM
```

com mês entre:

```text
01–12
```

***

### Output

O Dataset contém:

```text
BRANCH_MAP
RUN_SUMMARY
```

`BRANCH_MAP` é o registro cobrado.

`RUN_SUMMARY` é gratuito.

***

### Exemplo de `BRANCH_MAP`

```json
{
  "recordType": "BRANCH_MAP",
  "raiz": "34848473",
  "entradaOriginal": "34848473",
  "cnpjMatrizCalculado": "34848473000165",
  "cnpjMatrizFormatado": "34.848.473/0001-65",
  "raizAtestadaPeloIndice": true,
  "totalFiliais": 2,
  "filiaisAtivas": 2,
  "porUf": {
    "SC": 1,
    "SP": 1
  },
  "porSituacao": {
    "ATIVA": 2
  },
  "filiais": [
    {
      "cnpj": "34848473000246",
      "cnpjFormatado": "34.848.473/0002-46",
      "uf": "SC",
      "municipioCodigo": "8161",
      "cnaePrincipal": "4761003",
      "situacaoCodigo": "02",
      "situacao": "ATIVA",
      "dataInicio": "2026-02-13"
    },
    {
      "cnpj": "34848473000327",
      "cnpjFormatado": "34.848.473/0003-27",
      "uf": "SP",
      "municipioCodigo": "7107",
      "cnaePrincipal": "4761003",
      "situacaoCodigo": "02",
      "situacao": "ATIVA",
      "dataInicio": "2026-03-13"
    }
  ],
  "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-09-01T00:33:52.755Z"
}
```

O exemplo ilustra o shape do produto.

Os dados reais dependem da raiz e da fotografia mensal usada.

***

### Campos principais de `BRANCH_MAP`

| Campo | Descrição |
|---|---|
| `recordType` | `BRANCH_MAP`. |
| `raiz` | Raiz normalizada com 8 posições. |
| `entradaOriginal` | Primeira entrada original associada à raiz. |
| `cnpjMatrizCalculado` | CNPJ da matriz calculado pela regra. |
| `cnpjMatrizFormatado` | Matriz calculada com máscara. |
| `raizAtestadaPeloIndice` | True quando o índice contém pelo menos uma filial dessa raiz. |
| `totalFiliais` | Quantidade de filiais observadas. |
| `filiaisAtivas` | Quantidade de filiais ativas. |
| `porUf` | Contagem por UF. |
| `porSituacao` | Contagem por situação cadastral. |
| `filiais` | Lista completa das filiais. |
| `versaoDosDados` | Versão da fotografia mensal. |
| `staleness` | Diagnóstico do frescor mensal. |
| `observedAt` | Timestamp da entrega. |

***

### Campos de cada filial

Dentro de:

```text
filiais[]
```

podem aparecer:

```text
cnpj
cnpjFormatado
uf
municipioCodigo
cnaePrincipal
situacaoCodigo
situacao
dataInicio
```

***

### Código do município

O Actor retorna:

```text
municipioCodigo
```

conforme a codificação usada na base CNPJ.

Esta versão não transforma o código no nome do município.

Faça o mapeamento downstream quando precisar do nome.

***

### Raiz sem filiais

Exemplo de shape:

```json
{
  "recordType": "BRANCH_MAP",
  "raiz": "12345678",
  "cnpjMatrizCalculado": "123456780001XX",
  "raizAtestadaPeloIndice": false,
  "totalFiliais": 0,
  "filiaisAtivas": 0,
  "filiais": []
}
```

O exemplo acima é conceitual.

O ponto importante é:

```text
0 filiais
```

é uma resposta válida do mapa.

Mas:

```text
raizAtestadaPeloIndice: false
```

significa que o índice de filiais não confirmou essa raiz por observação de uma filial.

***

### Uma matriz sem filiais é cobrada?

Sim.

O produto vendido é:

```text
mapa da rede de filiais da raiz
```

e:

```text
zero filiais no snapshot
```

é uma resposta possível.

Por isso um `BRANCH_MAP` com zero filiais é cobrado.

Se você precisa saber primeiro se a matriz existe, faça validação/lookup cadastral antes de chamar este Actor.

***

### Shards indisponíveis

As raízes são agrupadas por prefixo.

Se um shard sofre falha de rede ou fonte, o Actor não devolve:

```text
0 filiais
```

para aquelas raízes.

As unidades correspondentes ficam como falha/indisponíveis no resumo.

Isso evita transformar erro de infraestrutura em veredito de negócio.

***

### `RUN_SUMMARY`

O resumo final é gratuito.

Ele pode incluir:

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

***

### `report`

O bloco gratuito pode incluir:

```text
indexMonth
staleness
raizesSolicitadas
raizesEntregues
entradasInvalidas
filiaisEntregues
skippedByCap
shards
totalFiliaisNoIndice
```

***

### `STATS`

O Key-Value Store padrão recebe:

```text
STATS
```

com informações como:

- requests HTTP;
- registros entregues;
- cobrança;
- runtime;
- staleness;
- warnings;
- qualidade;
- custo computacional;
- limites.

***

### API da Apify

Execute via API:

```bash
curl -s "https://api.apify.com/v2/acts/<SEU_USUARIO>~branch-network/run-sync-get-dataset-items?token=<SEU_TOKEN>" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "cnpjs":[
      "34028316",
      "34.028.316/0001-03"
    ],
    "maxResults":100
  }'
```

Substitua:

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

pelos seus dados da Apify.

***

### Integrações

Use com:

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

***

### Agendamento

A fonte é mensal.

Uma cadência natural é:

```text
mensal
```

depois da atualização da fotografia.

O Actor é **stateless** entre execuções.

Se você rodar a mesma raiz duas vezes no mesmo mês, o mapa pode ser entregue e cobrado novamente.

***

### Comparando redes entre meses

O Actor não gera um evento automático de:

```text
filial adicionada
filial removida
filial alterada
```

Mas você pode salvar os mapas mensais downstream e comparar:

```text
filiais[]
```

entre meses.

Para monitoramento cadastral específico, use um Actor independente de mudanças.

***

### Cobrança

Este Actor usa:

```text
Pay Per Event
```

O modelo de publicação contém:

```text
apify-actor-start
branch-map
```

#### `apify-actor-start`

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

O código não chama um segundo evento customizado de start.

Não configure:

```text
actor-start
```

como evento customizado adicional.

#### `branch-map`

É cobrado para cada:

```text
BRANCH_MAP
```

entregue.

Isso inclui mapas com:

```text
totalFiliais: 0
```

porque zero filiais é um resultado do produto.

***

### O que é gratuito

Não gera cobrança de `branch-map`:

- CNPJ completo inválido;
- entrada descartada por deduplicação de raiz;
- raiz não processada depois do cap;
- `RUN_SUMMARY`;
- warnings;
- falha de shard que impede a conclusão da raiz.

O evento sintético de início da Apify pode continuar se aplicando à execução.

***

### Controle de custo

Principais controles:

```text
cnpjs
maxResults
maxRuntimeMs
mes
```

#### Mais eficiente

Agrupe várias raízes na mesma execução.

Raízes com o mesmo prefixo reutilizam o mesmo shard de dados.

#### Menor cobrança

Use:

```text
maxResults
```

para limitar quantos mapas podem ser entregues.

***

### Health e transparência

O Actor diferencia:

- raiz com zero filiais;
- entrada inválida;
- shard indisponível;
- índice indisponível;
- staleness;
- cap;
- contrato de fonte alterado.

Problemas aparecem em:

```text
RUN_SUMMARY
STATS
```

e não são convertidos silenciosamente em mapas vazios.

***

### Limites honestos

#### O índice é de filiais

Não é o cadastro completo da matriz.

#### `raizAtestadaPeloIndice=false` não prova inexistência

Significa zero filiais observadas para a raiz no índice.

#### A matriz é calculada

`cnpjMatrizCalculado` não é um campo cadastral observado.

#### Frescor mensal

Não é tempo real.

#### Código do município, não nome

O Actor retorna `municipioCodigo`.

#### CNAE é o principal da filial

Esta versão não lista CNAEs secundários.

#### Não traz endereço completo

O produto não promete:

- logradouro;
- número;
- bairro;
- CEP;
- telefone;
- e-mail.

#### Não traz razão social da matriz

Use um Actor de consulta cadastral quando precisar desse dado.

#### Shard 404 e raiz vazia

O índice é publicado de forma atômica. Um shard opcional ausente representa ausência de filiais naquele prefixo do índice, mas isso ainda não atesta ou nega a existência de uma matriz específica.

#### Reexecução repete o mapa

Não há deduplicação de cobrança entre runs.

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

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

#### Meses antigos dependem de retenção

Um `mes` explícito só funciona enquanto aquele índice permanecer disponível.

***

### Perguntas frequentes

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

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

#### É scraping da Receita?

Não.

#### Posso informar somente a raiz?

Sim.

#### Posso informar o CNPJ completo?

Sim.

#### O CNPJ completo tem DV validado?

Sim.

#### Aceita CNPJ alfanumérico?

Sim.

#### O que acontece se eu repetir a mesma raiz?

Ela é processada uma única vez na execução.

#### Quantas raízes posso enviar?

Até:

```text
1000
```

entradas no input.

#### O que significa `totalFiliais`?

Quantidade de estabelecimentos do tipo filial encontrados para aquela raiz no snapshot mensal.

#### A matriz entra em `totalFiliais`?

Não.

#### O Actor retorna a matriz?

Retorna o CNPJ da matriz **calculado** pela regra.

#### Se `totalFiliais=0`, a empresa não existe?

Não conclua isso.

Leia:

```text
raizAtestadaPeloIndice
```

e use um lookup cadastral quando precisar confirmar a matriz.

#### Retorna filiais baixadas?

Sim, quando elas estão presentes no snapshot.

A situação fica explícita.

#### Posso filtrar só filiais ativas?

O output fornece `filiaisAtivas`, mas esta versão entrega a lista completa observada em vez de possuir um filtro de situação no input.

#### Retorna CNAE da filial?

Sim, o CNAE principal.

#### Retorna nome do município?

Não nesta versão.

#### O resumo é cobrado?

Não.

#### Uma raiz sem filiais é cobrada?

Sim, quando um `BRANCH_MAP` é entregue.

#### Entrada inválida é cobrada?

Não como `branch-map`.

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

Sim, se aquele índice ainda estiver retido.

#### Posso agendar?

Sim.

Mensal é a cadência natural.

#### Pelo que eu pago?

Pelo evento `branch-map` para cada mapa 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:

- **Consulta CNPJ Brasil e Empresas por CNAE** — consulta cadastral e descoberta de empresas.
- **Empresas Novas por CNPJ, CNAE, UF e Porte** — leads de novas matrizes ativas.
- **Inteligência de Mercado por CNAE — Brasil** — perfis agregados de mercado.
- **Validador de CNPJ Alfanumérico — Lote e Migração** — validação estrutural.
- **Monitor de Mudanças Cadastrais de CNPJ** — mudanças cadastrais.
- **Triagem CNPJ — CEIS, CNEP, CEPIM e Leniência** — triagem factual de sanções.

Os Actors permanecem ferramentas independentes.

Use este Actor quando precisar do **mapa da rede de filiais** de uma raiz de CNPJ.

# Actor input Schema

## `cnpjs` (type: `array`):

Raízes de 8 posições ("34028316") ou CNPJs completos ("34.028.316/0001-03" — o DV é conferido pela norma, inclusive alfanumérica). Obrigatório pelo menos um; a mesma raiz repetida conta UMA vez.

## `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
{
  "cnpjs": [
    "34028316"
  ],
  "mes": "",
  "maxResults": 10,
  "maxRuntimeMs": 300000,
  "debug": false
}
```

# Actor output Schema

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

Dataset padrão contendo BRANCH\_MAP 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 = {
    "cnpjs": [
        "34028316"
    ],
    "mes": "",
    "maxResults": 10,
    "maxRuntimeMs": 300000,
    "debug": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnatan029/branch-network").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 = {
    "cnpjs": ["34028316"],
    "mes": "",
    "maxResults": 10,
    "maxRuntimeMs": 300000,
    "debug": False,
}

# Run the Actor and wait for it to finish
run = client.actor("johnatan029/branch-network").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 '{
  "cnpjs": [
    "34028316"
  ],
  "mes": "",
  "maxResults": 10,
  "maxRuntimeMs": 300000,
  "debug": false
}' |
apify call johnatan029/branch-network --silent --output-dataset

```

## MCP server setup

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

```

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/AefgraPGbec4ccoJT/builds/g5GmdYxgkG6BCJMzt/openapi.json
