# Consulta CNPJ — Receita Federal Scraper (`memo23/cnpj-scraper`) Actor

Consulta CNPJ em massa na Receita Federal: empresas por estado, CNAE, cidade (nome ou código IBGE) ou natureza jurídica — 55M+ CNPJs com sócios (QSA), flags fiscais, capital e telefone quando o cadastro tem. Filtro só ATIVA, vários estados numa run, lookup KYC de um CNPJ.

- **URL**: https://apify.com/memo23/cnpj-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 15 total users, 15 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $1.00 / 1,000 company records

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

## Consulta CNPJ — Receita Federal (dados abertos)

O registro oficial de qualquer empresa brasileira — ou milhares de empresas de uma vez, por estado, CNAE, cidade, natureza jurídica ou sócio. Cobre os 55M+ CNPJs da Receita Federal, em JSON estruturado.

**Ache as empresas; não só confirme um CNPJ que você já tem.** A maioria das ferramentas pede o CNPJ e devolve um registro. Esta faz o caminho inverso: CNAE + estado, e percorre o cadastro até entregar cada empresa correspondente — sócios, flags fiscais, endereço e telefone quando a Receita publica. A cobertura de contato é a do cadastro; veja [Cobertura medida](#-cobertura-medida) antes de dimensionar uma campanha.

![Como o scraper de CNPJ funciona](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-brazil-cnpj.png)

#### Por que usar este scraper?

- **Descoberta em massa, não só enriquecimento** — varre o cadastro por UF, CNAE, município, natureza jurídica ou CPF de sócio; ou consulta CNPJs pontuais.
- **Filtros com vários valores** — `"uf": "SP,RJ,MG"` varre três estados na mesma run. Cada filtro aceita lista separada por vírgula.
- **Saída estruturada** — QSA e CNAEs secundários vêm como objetos JSON, não como strings achatadas.
- **Só empresas ativas** — `situacaoCadastral: "ATIVA"` descarta CNPJs mortos antes de irem para o dataset (e não são cobrados).
- **Cidade pelo nome** — `municipio: "São Paulo"` ou `"Tatuí"` resolve para o código IBGE. Código de 7 dígitos continua valendo.
- **Grafo de sócios sob demanda** — lookups pontuais podem anexar a rede de participação.
- **CPF mascarado por padrão** — a Receita grava o CPF completo do empresário individual no nome (`JOAO SILVA 02898774073`). O Actor mascara para `JOAO SILVA ***.987.740-**` e marca `cpf_masked: true`.
- **Cobertura medida, não prometida** — telefone e endereço são esparsos no cadastro; as taxas reais estão abaixo.
- **Sem proxy, sem captcha, sem browser** — API JSON pública.
- **Paginação por cursor** — não pula registros depois da marca de 10 mil, como scrapers por offset.

#### Casos de uso

| Quem | O que faz com os dados |
|---|---|
| Prospecção B2B | Puxa cada empresa de um CNAE + estado para o CRM, sem comprar lista |
| Fintechs e KYC | Confere o CNPJ do cliente e o quadro de sócios para AML |
| Consultorias tributárias | Filtra Simples / MEI e o histórico de regime |
| Seguradoras de crédito | Pré-preenche status, capital, abertura e sócios |
| Pesquisa e jornalismo | Mapeia cadeias de sócios pelo CPF mascarado e pelo grafo |
| Marketplaces | Valida CNPJ do seller na entrada e monitora a situação cadastral |

#### Entradas aceitas

**Consulta direta** — um ou mais CNPJs (pontuação é ignorada):

```json
{ "cnpj": ["00.000.000/0001-91", "33683111000280"] }
```

**Busca em massa** — pelo menos um filtro; todos aceitam vários valores:

```json
{ "uf": "SP", "cnae": "6209100", "maxItems": 5000 }
```

| Filtro | Significado | Exemplo |
|---|---|---|
| `uf` | Sigla(s) de estado | `"SP"` ou `"SP,RJ,MG"` |
| `cnae` | Código(s) CNAE (atividade principal e secundárias) | `"6209100"` (suporte de TI) |
| `municipio` | Nome da cidade ou código IBGE/SIAFI | `"São Paulo"`, `"Tatuí"`, `"3550308"` |
| `naturezaJuridica` | Código(s) de natureza jurídica | `"2135"` (empresário individual) |
| `partnerCpf` | CPF mascarado `***123456**` ou CNPJ no QSA | `"***456789**"` |

**O que não entra:** busca por razão social (a API da Receita não tem), CPF sem máscara no `partnerCpf`, e varredura do cadastro inteiro sem filtro (estoura timeout upstream e é recusada na entrada).

#### Como funciona

1. Escolha o modo: CNPJs para lookup, ou pelo menos um filtro para busca.
2. O scraper consulta a API aberta de CNPJ ([minhareceita.org](https://minhareceita.org)), espelho mensal dos dumps da Receita.
3. Nomes de cidade em `municipio` viram código IBGE pela tabela oficial (5.571 municípios). Nomes repetidos em vários estados pedem `uf` ou o código.
4. A busca anda no cursor, até 1.000 registros por chamada, até `maxItems` ou o fim dos resultados.
5. Dedup por CNPJ, filtro opcional de situação, máscara de CPF, e o registro vai para o dataset. JSON, CSV ou Excel na saída.

#### Parâmetros de entrada

| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
| `cnpj` | array | — | CNPJs para lookup (pontuação ignorada). Anula os filtros. |
| `uf` | string | — | UF(s), vírgula para várias. Também desambigua cidade homônima. |
| `cnae` | string | — | CNAE(s). Casa principal e secundárias. |
| `municipio` | string | — | Nome da cidade ou código IBGE/SIAFI. |
| `naturezaJuridica` | string | — | Código(s) de natureza jurídica. |
| `partnerCpf` | string | — | CPF/CNPJ no QSA. CPF no formato `***123456**`. |
| `situacaoCadastral` | select | ALL | Só um status: `ATIVA`, `BAIXADA`, `INAPTA`, `SUSPENSA` ou `NULA`. |
| `includeGraph` | boolean | `false` | Só no lookup: anexa o grafo (`grafo`). Uma chamada extra por CNPJ. |
| `unmaskSoleProprietorCpf` | boolean | `false` | **Desligado.** Devolve o CPF completo do EI em `razao_social`. Só ligue com base legal na LGPD. |
| `maxItems` | integer | `100` | Teto de registros salvos. |
| `pageSize` | integer | `1000` | Registros por página da API (1–1000). |
| `maxConcurrency` | integer | `5` | Paralelismo no lookup de vários CNPJs. |

**TI em São Paulo, só ativas:**

```json
{ "uf": "SP", "cnae": "6209100", "situacaoCadastral": "ATIVA", "maxItems": 5000 }
```

**KYC com grafo:**

```json
{ "cnpj": ["00.000.000/0001-91"], "includeGraph": true }
```

**Empresários individuais em Brasília, pelo nome da cidade:**

```json
{ "municipio": "Brasília", "naturezaJuridica": "2135", "maxItems": 1000 }
```

**Tatuí-SP (nome que sem UF seria ambíguo em outros cadastros):**

```json
{ "uf": "SP", "municipio": "Tatuí", "maxItems": 200 }
```

#### Visão da saída

Uma linha por empresa. Os nomes de campo seguem o dicionário da Receita. `qsa` é array de objetos, `cnaes_secundarios` é `{codigo, descricao}`, `regime_tributario` traz o histórico por ano.

- `razao_social` de empresário individual (código `2135`) é o nome + CPF. O Actor mascara — `JOAO SILVA 02898774073` vira `JOAO SILVA ***.987.740-**` — e marca `cpf_masked: true`. `unmaskSoleProprietorCpf: true` devolve o valor cru se você tiver base legal.
- `email` existe no schema, mas **na prática está vazio**: o dump público da Receita não publica e-mail. Em três amostras de 1.000 registros (dump 2026-07), **0 e-mails**. Não planeje campanha de e-mail em cima deste campo.

#### Amostra de saída

Linha real do Banco do Brasil (`00000000000191`):

```json
{
  "cnpj": "00000000000191",
  "razao_social": "BANCO DO BRASIL SA",
  "cpf_masked": false,
  "nome_fantasia": "DIRECAO GERAL",
  "matriz_filial": "MATRIZ",
  "situacao_cadastral": "ATIVA",
  "situacao_cadastral_motivo": "SEM MOTIVO",
  "data_situacao_cadastral": "2005-11-03",
  "data_abertura": "1966-08-01",
  "cnae_principal_codigo": "6422100",
  "cnae_principal_descricao": "Bancos múltiplos, com carteira comercial",
  "cnaes_secundarios": [
    { "codigo": "6499999", "descricao": "Outras atividades de serviços financeiros não especificadas anteriormente" }
  ],
  "natureza_juridica_codigo": "2038",
  "natureza_juridica": "Sociedade de Economia Mista",
  "porte": "DEMAIS",
  "capital_social": 120000000000,
  "logradouro": "QUADRA SAUN QUADRA 5 BLOCO B TORRE I, II, III",
  "numero": "SN",
  "bairro": "ASA NORTE",
  "municipio": "BRASILIA",
  "codigo_municipio_ibge": "5300108",
  "uf": "DF",
  "cep": "70040912",
  "telefone1": "6134939002",
  "email": null,
  "simples_nacional": false,
  "mei": false,
  "regime_tributario": [
    { "ano": 2021, "forma_de_tributacao": "LUCRO REAL" }
  ],
  "orgao_publico": false,
  "qsa": [
    {
      "nome": "ALAN CARLOS GUEDES DE OLIVEIRA",
      "qualificacao": "Diretor",
      "cnpj_cpf": "***550179**",
      "data_entrada": "2023-05-17",
      "faixa_etaria": "Entre 41 a 50 anos"
    }
  ],
  "qsa_count": 41,
  "data_atualizacao_base": "2026-07",
  "source_url": "https://minhareceita.org/00000000000191"
}
```

Empresário individual numa varredura, com CPF mascarado e contato típico (vazio):

```json
{
  "cnpj": "41985107000113",
  "razao_social": "JOAO FERNANDES DE LIMA ***.381.448-**",
  "cpf_masked": true,
  "nome_fantasia": null,
  "natureza_juridica_codigo": "2135",
  "natureza_juridica": "Empresário (Individual)",
  "porte": "MICRO EMPRESA",
  "telefone1": null,
  "email": null,
  "qsa": [],
  "qsa_count": 0
}
```

#### Cobertura medida

O cadastro é jurídico, não uma base de contato. Contagens reais da fonte (extração 2026-07), 1.000 registros por amostra:

| Amostra | `email` | `telefone1` | `logradouro` |
|---|---|---|---|
| `uf: "SP"` — sem outro filtro | **0 / 1000** | 369 / 1000 (37%) | 409 / 1000 (41%) |
| `uf: "MG"` — sem outro filtro | **0 / 1000** | 302 / 1000 (30%) | 330 / 1000 (33%) |
| `uf: "SP", cnae: "6201501"` (software) | **0 / 1000** | 854 / 1000 (85%) | 862 / 1000 (86%) |

Na prática:

- **E-mail não existe na fonte.** O campo fica no schema, mas é `null`.
- **Varredura de estado sem CNAE é pobre de contato.** Cerca de um terço são EI parados e cascas sem telefone nem rua. Em `uf: "SP"`, 240 de 1.000 eram empresário individual.
- **CNAE + UF é rico de contato.** Indústria real mais que dobra o telefone (85%). Para lead, junte `uf` + `cnae` + `situacaoCadastral: "ATIVA"`.
- Nada é inventado, adivinhado ou enriquecido.

#### Campos principais

- **Identidade** — `cnpj`, `razao_social` (CPF embutido mascarado), `cpf_masked`, `nome_fantasia`, `matriz_filial`
- **Status** — `situacao_cadastral` (+ motivo e data), `data_abertura`, `situacao_especial`
- **Atividade** — `cnae_principal_codigo` / `cnae_principal_descricao`, `cnaes_secundarios[]`
- **Jurídico** — `natureza_juridica` (+ código), `porte`, `capital_social` (BRL), `orgao_publico`
- **Endereço** — `logradouro`, `numero`, `complemento`, `bairro`, `municipio`, `codigo_municipio_ibge`, `uf`, `cep`
- **Contato** — `telefone1`, `telefone2`, `fax` (esparsos), `email` (sempre `null` na prática)
- **Tributário** — `simples_nacional`, `mei`, `regime_tributario[]`
- **Sócios** — `qsa[]`, `qsa_count`, `grafo[]` opcional
- **Proveniência** — `data_atualizacao_base`, `source_url`

#### FAQ

**Os dados são de quando?**
A Receita solta dumps mensais e o espelho recarrega a partir deles. Em geral 0–45 dias atrás da fonte oficial. Cada linha traz `data_atualizacao_base`.

**Preciso de proxy?**
Não. API JSON pública atrás de CDN.

**Dá para buscar por razão social?**
Não. Descubra por CNAE, UF, município, natureza ou CPF de sócio.

**Posso passar o nome da cidade?**
Sim. `municipio: "São Paulo"` ou `"Tatuí"`. Acento é opcional. Se o nome existe em mais de um estado (Bom Jesus, por exemplo), informe `uf` ou o código IBGE.

**CPF de sócio é legal de usar?**
A própria Receita publica o QSA já mascarado (`***123456**`). O scraper repassa assim.

**Algum CPF completo chega no dataset?**
Não, com o padrão. O vazamento da fonte é o EI: o nome legal vem `NOME 02898774073`. Isso é cerca de um quarto de uma varredura de estado sem filtro.

A Receita não pontua igual — aparece `02898774073`, `490.722.426-53`, `082725916-69`, `CPF: 013.636.826-36`. O Actor mascara todos no formato `NOME ***.987.740-**` e marca `cpf_masked: true`. Conferido em 4.000 registros de MG, SP, RJ e BA: 1.227 nomes tinham CPF e todos saíram mascarados, sem nome de empresa mascarado por engano. O valor cru exige `unmaskSoleProprietorCpf: true` e base legal na LGPD.

**Tem e-mail da empresa?**
Não. Três amostras de 1.000 deram 0 e-mails. Veja a [tabela de cobertura](#-cobertura-medida).

**A run acabou com 0 registros — quebrou?**
Não. Termina `SUCCEEDED`. O log tem `[RESULT]` e a mensagem de status diz o motivo: CNPJ fora do cadastro, dígitos inválidos, filtro sem match, ou tudo cortado por `situacaoCadastral`. A taxa de início da run ainda vale.

**Busca só por CPF de sócio estourou timeout?**
É pesado no upstream. Junte `partnerCpf` com `uf`.

**O que é `orgao_publico`?**
`true` quando a natureza jurídica é administração pública (códigos 1000–1999).

**Como ficar só com ativas?**
`situacaoCadastral: "ATIVA"`. As descartadas não entram em `maxItems` e não são cobradas.

**Como limitar o custo?**
`maxItems`. A run para de gravar no teto; você paga por registro no dataset.

#### Suporte

- Issues: aba Issues na página do Actor no Console da Apify.
- Site: <https://muhamed-didovic.github.io/>
- E-mail: <muhamed.didovic@gmail.com>

#### Serviços extras

- Formato de saída customizado ou dataset pontual: <muhamed.didovic@gmail.com>
- Outras fontes brasileiras (imóveis, marketplaces, reviews): mesmo e-mail.
- Acesso via API (sem taxa Apify, só uso da API): <muhamed.didovic@gmail.com>

#### Outros scrapers

Outros actors em [memo23 na Apify](https://apify.com/memo23) — imóveis no Brasil (VivaReal, ZAP Imóveis), vagas, reviews.

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/cnpj-scraper`).

**Purpose:** look up Brazilian company registry records by CNPJ, or bulk-discover companies from Receita Federal open data by state, CNAE, municipality (city name or IBGE code), legal form, or partner CPF.

**Minimal input:**

```json
{ "uf": "DF", "cnae": "6209100", "maxItems": 25 }
```

**City-name input (resolved to IBGE):**

```json
{ "uf": "SP", "municipio": "Tatuí", "maxItems": 25 }
```

**Output:** one dataset row per company — `cnpj`, `razao_social`, `cpf_masked`, `nome_fantasia`, `matriz_filial`, `situacao_cadastral`, `data_abertura`, `cnae_principal_codigo`, `cnae_principal_descricao`, `cnaes_secundarios [{codigo, descricao}]`, `natureza_juridica`, `porte`, `capital_social`, `logradouro`, `numero`, `bairro`, `municipio`, `codigo_municipio_ibge`, `uf`, `cep`, `telefone1`, `email`, `simples_nacional`, `mei`, `regime_tributario [{ano, forma_de_tributacao}]`, `orgao_publico`, `qsa [{nome, qualificacao, cnpj_cpf, data_entrada}]`, `qsa_count`, `grafo` (opt-in), `data_atualizacao_base`, `source_url`.

**Behaviors an agent should know:**

- Always set `maxItems` — the registry holds 55M+ CNPJs.
- `cnpj` overrides every search filter; bulk mode needs at least one of `uf`, `cnae`, `municipio`, `naturezaJuridica`, `partnerCpf`.
- Filters accept comma-separated multi-values (`"uf": "SP,RJ"`).
- `municipio` accepts a city name (`São Paulo`, `Tatuí`, accents optional) or a 7-digit IBGE / 4-digit SIAFI code. Ambiguous names need `uf` or the numeric code.
- `situacaoCadastral: "ATIVA"` drops non-active companies; filtered rows are never charged.
- `includeGraph: true` only on direct CNPJ lookups.
- Billing is per saved dataset record plus a run-start fee. Empty runs still pay the start fee.
- No company-name search. Partner CPFs use the masked `***123456**` format.
- **`email` is always `null`** in the public dump (0 hits in three 1,000-record samples).
- Contact coverage is filter-dependent: unfiltered `uf` ≈37% phone; `uf`+`cnae` ≈85% phone.
- Sole-proprietor CPFs in `razao_social` are masked unless `unmaskSoleProprietorCpf: true`. Do not enable that on a user's behalf without their instruction.
- A 0-record run still ends `SUCCEEDED`; read the status message and the `[RESULT]` log line.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Receita Federal do Brasil, the Brazilian federal government, or the minhareceita.org open-data project. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available company-registry data that Receita Federal releases under Brazil's Access to Information Law (Lei de Acesso à Informação) — no authenticated endpoints, no logins, no paywalled sources.

On personal data: partner CPFs in `qsa` and `grafo` are published pre-masked by Receita Federal itself and are passed through unchanged. For sole proprietors the registry appends the person's complete 11-digit CPF to `razao_social`. **In the default configuration this Actor masks that CPF** and flags the row with `cpf_masked: true`. The optional `unmaskSoleProprietorCpf` input (off by default) returns the raw value; enabling it means you are choosing to process a private individual's national tax ID, and you must have a lawful basis for doing so.

Users are responsible for ensuring their use complies with applicable data-protection law (LGPD, GDPR, CCPA, etc.) and any contractual obligations of their own organization.

***

### SEO Keywords

consulta cnpj, consulta cnpj em massa, scraper cnpj, scrape cnpj, cnpj API, cnpj scraper, receita federal scraper, dados abertos cnpj, cadastro nacional pessoa juridica, empresas por cnae, empresas por estado, quadro societário QSA, simples nacional, lista MEI, leads B2B brasil, KYC brasil, brazil company registry, cnpj bulk lookup, brazil AML data, extração cnpj

# Actor input Schema

## `cnpj` (type: `array`):

Um ou mais CNPJs de 14 dígitos (pontos, barras e hífens são ignorados, ex.: `00.000.000/0001-91`). Anula todos os filtros de busca abaixo.

## `uf` (type: `string`):

Sigla(s) de estado, vírgula para várias: `SP` ou `SP,RJ,MG`. Também desambigua cidade homônima. Válidas: AC, AL, AP, AM, BA, CE, DF, ES, GO, MA, MT, MS, MG, PA, PB, PR, PE, PI, RJ, RN, RS, RO, RR, SC, SP, SE, TO.

## `cnae` (type: `string`):

Código(s) CNAE, vírgula para vários. Casa a atividade principal e as secundárias. Exemplo: `6209100` (suporte de TI) ou `6209100,6201501`.

## `municipio` (type: `string`):

Nome(s) de cidade ou código(s) IBGE/SIAFI, vírgula para vários. Nomes resolvem pela tabela oficial do IBGE (acento opcional): `São Paulo`, `Tatuí`, `Brasilia`. Código IBGE de 7 dígitos (`3550308`) e SIAFI de 4 dígitos também valem. Se o nome existe em mais de um estado (ex.: Bom Jesus), informe `uf` ou o código IBGE.

## `naturezaJuridica` (type: `string`):

Código(s) de natureza jurídica, vírgula para vários. Exemplo: `2135` (Empresário Individual), `2062` (Sociedade Empresária Limitada / LTDA).

## `partnerCpf` (type: `string`):

CPF ou CNPJ de pessoa/empresa no quadro de sócios (QSA), vírgula para vários. Para CPF use o formato mascarado da Receita `***123456**` (asteriscos nos três primeiros e nos dois últimos dígitos, sem pontos nem hífen). Dica: busca só por sócio pode estourar timeout; junte um `uf`.

## `situacaoCadastral` (type: `string`):

Grava só empresas com esta situação — ex.: `ATIVA` para pular CNPJs mortos em prospecção. Registros filtrados não são cobrados. Aplicado no Actor; `ALL` mantém tudo. String vazia ainda vale como sinônimo de `ALL`, para tarefas antigas.

## `includeGraph` (type: `boolean`):

Na consulta direta de CNPJ, adiciona o campo `grafo` com as ligações do quadro de sócios (API aberta grafo.minhareceita.org). Uma chamada HTTP extra por CNPJ; ignorado na busca em massa.

## `unmaskSoleProprietorCpf` (type: `boolean`):

Desligado por padrão. A Receita grava o nome do EI como `NOME 02898774073` — o CPF completo de 11 dígitos. Por padrão este Actor mascara para `NOME ***.987.740-**` e marca `cpf_masked: true`. Ligue só se tiver base legal na LGPD para tratar o CPF cru — o número é dado pessoal de pessoa física, e a responsabilidade passa a ser sua.

## `maxItems` (type: `integer`):

Teto de registros de empresa gravados na run. O cadastro tem 55M+ CNPJs — deixe baixo nas primeiras runs para validar a saída.

## `pageSize` (type: `integer`):

Registros pedidos por página da API (1–1000). O padrão 1000 é o máximo do upstream e o mais rápido; baixe só se estourar timeout em filtros muito pesados.

## `maxConcurrency` (type: `integer`):

Requisições em paralelo ao consultar vários CNPJs. Mantida baixa por padrão — minhareceita.org é um espelho comunitário.

## Actor input object example

```json
{
  "uf": "SP",
  "situacaoCadastral": "ALL",
  "includeGraph": false,
  "unmaskSoleProprietorCpf": false,
  "maxItems": 100,
  "pageSize": 1000,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Registros de CNPJ no dataset padrão.

# 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 = {
    "uf": "SP"
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/cnpj-scraper").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 = { "uf": "SP" }

# Run the Actor and wait for it to finish
run = client.actor("memo23/cnpj-scraper").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 '{
  "uf": "SP"
}' |
apify call memo23/cnpj-scraper --silent --output-dataset

```

## MCP server setup

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

```

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/3QaMNALtXfM7Odnzg/builds/nPXIZhlrpLWlYB5hc/openapi.json
