# Consulta CNPJ Brasil e Empresas por CNAE (`johnatan029/cnpj-empresas-brasil-scraper`) Actor

Consulte CNPJs numéricos e alfanuméricos em lote por lista ou CSV e encontre empresas por CNAE, UF e município. Retorna razão social, situação, CNAEs, endereço, capital, contatos e QSA. Lookup usa fallback entre fontes públicas; Discovery usa a busca filtrada da Minha Receita.

- **URL**: https://apify.com/johnatan029/cnpj-empresas-brasil-scraper.md
- **Developed by:** [Johnn Mottin](https://apify.com/johnatan029) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 97 total users, 40 monthly users, 99.3% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

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 Brasil e Empresas por CNAE

**Sua lista de prospecção B2B começa com um CNAE e termina com um CRM cheio.** Consulte dados cadastrais públicos de empresas brasileiras pelo CNPJ **em lote** ou encontre empresas por **CNAE, UF e município** — sem conta ou chave de API de serviços externos.

Um Actor, dois modos:

- **Lookup — consulta em lote:** envie uma lista ou texto/CSV com CNPJs e receba um registro cadastral estruturado para cada empresa encontrada. CNPJs são normalizados, validados e deduplicados.
- **Discovery — descoberta por filtros:** informe CNAE e, opcionalmente, UF, código IBGE do município e situação cadastral para receber as empresas correspondentes.

### Casos de uso

- **Encontre empresas por CNAE, UF e município** — prospecção B2B sem depender de listas prontas.
- **Consulte CNPJ em lote e enriqueça o CRM** — transforme uma lista de CNPJs em registros empresariais estruturados.
- **Mapeie empresas por atividade econômica e localização** — pesquisa de mercado com dados cadastrais públicos.
- **Consulte situação cadastral, capital e quadro societário (QSA)** — triagem cadastral/KYB como etapa inicial de análise. Este Actor não substitui due diligence, análise jurídica ou de crédito.

### Qual modo usar?

| Você tem | Você quer | Modo |
|---|---|---|
| Uma lista de CNPJs | Consultar os dados cadastrais de cada empresa | `Lookup` |
| Um CNAE e uma região | Encontrar empresas que correspondem aos filtros | `Discovery` |

### Início rápido

#### Lookup

```json
{
  "mode": "lookup",
  "cnpjs": [
    "47.960.950/0001-21",
    "00000000000191"
  ]
}
```

#### Discovery por CNAE, UF e município

```json
{
  "mode": "discovery",
  "cnae": "4713004",
  "uf": "SP",
  "municipio": "3525904",
  "situacao": "ATIVA",
  "maxResults": 10
}
```

Use um `maxResults` pequeno no primeiro teste para conferir o resultado e controlar o custo.

### Inputs

| Campo | Modo | Descrição | Exemplo |
|---|---|---|---|
| `mode` | ambos | `lookup` ou `discovery`; obrigatório | `"lookup"` |
| `cnpjs` | lookup | Lista de CNPJs com ou sem formatação | `["47.960.950/0001-21"]` |
| `cnpjInput` | lookup | Texto ou CSV; os CNPJs são extraídos, validados e deduplicados | `"empresa,cnpj\nMagalu,47960950000121"` |
| `cnae` | discovery | CNAE principal; obrigatório em Discovery | `"4713004"` |
| `uf` | discovery | Sigla do estado; opcional | `"SP"` |
| `municipio` | discovery | Código IBGE do município; opcional | `"3525904"` |
| `situacao` | discovery | Situação cadastral; opcional | `"ATIVA"` |
| `maxResults` | discovery | Limite de resultados retornados | `100` |

### Suporte ao CNPJ alfanumérico (2026)

A partir de julho de 2026 a Receita Federal passou a emitir **CNPJs alfanuméricos**
(IN RFB nº 2.229/2024). Este actor aceita os dois formatos no modo Lookup — CNPJs
numéricos continuam funcionando exatamente como antes.

| Regra da norma | Como o actor aplica |
|---|---|
| 14 posições: 1–12 alfanuméricas (0–9, A–Z), 13–14 sempre numéricas | Validação estrutural antes de qualquer request |
| Dígitos verificadores: valor ASCII − 48, módulo 11, pesos clássicos; resto 0 ou 1 → DV 0 | DV conferido localmente; entrada com DV errado é rejeitada **de graça** |
| Letras maiúsculas | Minúsculas são normalizadas para maiúsculas automaticamente (as fontes retornam 404 para minúsculas) |
| Máscara `SS.SSS.SSS/SSSS-NN` | Aceita com ou sem máscara |

Exemplos aceitos: `00000000E08G12` (primeiro CNPJ alfanumérico real), `12ABC34501DE35`
(exemplo oficial da norma), `00.000.000/E08G-12`, `00000000e08g12`.

Entradas que não seguem a norma (prefixos como `cnpj:`, parênteses, letras sobrando)
são rejeitadas com aviso `INVALID_INPUT`, sem gastar requests. Um 404 da fonte é
reportado como `NOT_FOUND_AT_SOURCE` — significa que o registro não está na fonte
consultada, sem afirmar inexistência da empresa.

Precisa apenas validar/normalizar CNPJs em lote (sem consultar cadastro)? Veja o
[CNPJ Alphanumeric Validator](https://apify.com/johnatan029/cnpj-alphanumeric-validator),
do mesmo desenvolvedor.

### Output

O dataset recebe um item por empresa encontrada. Exemplo abreviado com dados empresariais:

```json
{
  "cnpj": "47960950000121",
  "razaoSocial": "MAGAZINE LUIZA S/A",
  "nomeFantasia": "MAGAZINE LUIZA",
  "situacaoCadastral": "ATIVA",
  "cnaePrincipal": "4713004",
  "cnaeDescricao": "Lojas de departamentos ou magazines, exceto lojas francas (Duty free)",
  "naturezaJuridica": "Sociedade Anônima Aberta",
  "capitalSocial": 14202162000,
  "porte": "DEMAIS",
  "endereco": {
    "municipio": "FRANCA",
    "uf": "SP",
    "cep": "14400490"
  },
  "source": "minhareceita",
  "scrapedAt": "2026-07-21T22:01:09.370Z"
}
```

Campos que podem ser retornados:

| Campo | Descrição |
|---|---|
| `cnpj` | CNPJ com 14 dígitos |
| `razaoSocial` / `nomeFantasia` | Identificação empresarial |
| `situacaoCadastral` / `dataSituacao` | Situação cadastral e respectiva data |
| `cnaePrincipal` / `cnaeDescricao` | CNAE principal e descrição |
| `cnaesSecundarios` | Lista de CNAEs secundários |
| `naturezaJuridica` / `capitalSocial` / `porte` | Características cadastrais da empresa |
| `opcaoSimples` / `opcaoMei` | Informação disponível na fonte ou `null` |
| `endereco` | Logradouro, número, bairro, município, UF e CEP, quando disponíveis |
| `telefones` / `email` | Contatos quando constam na fonte pública |
| `socios` | QSA com nome, qualificação, faixa etária, documento mascarado e data de entrada, quando disponíveis |
| `dataAbertura` | Data de início de atividade |
| `source` | Fonte que retornou o registro |
| `scrapedAt` | Momento da coleta em formato ISO |

Campos não informados pela fonte são retornados como `null`; o Actor não os estima.

### Preço e controle de custo

A cobrança é feita por registro retornado (Pay Per Event): **US$ 0,0015 por empresa — US$ 1,50 por 1.000 registros** — mais uma taxa simbólica por início de run. Consulte a aba Pricing desta página para os valores vigentes.

Use `maxResults` no modo Discovery para limitar o volume. No modo Lookup, faça um primeiro teste com uma lista pequena antes de processar um lote maior.

### Fontes e confiabilidade

#### Lookup

O modo Lookup tenta as fontes públicas nesta ordem:

1. Minha Receita
2. BrasilAPI
3. CNPJ.ws

Quando uma fonte apresenta indisponibilidade, timeout, limite ou erro de servidor, o Actor tenta a seguinte. Uma resposta legítima de CNPJ não encontrado não é tratada como indisponibilidade. O campo `source` identifica qual fonte retornou cada registro.

#### Discovery

O modo Discovery utiliza a busca filtrada da Minha Receita. CNAE, UF e município são enviados para a fonte; a situação cadastral é conferida antes de o resultado ser gravado. Se a fonte estiver indisponível, o run informa a falha em vez de inventar resultados.

Este é um Actor comunitário não-oficial, sem afiliação com a Receita Federal ou qualquer órgão do governo brasileiro. Os dados vêm de espelhos públicos do cadastro nacional (Minha Receita, BrasilAPI, CNPJ.ws).

### Limitações

- As fontes utilizadas espelham dados públicos do cadastro de CNPJ e podem apresentar atraso de atualização; não trate o resultado como informação em tempo real.
- A disponibilidade e o preenchimento dos campos dependem das fontes públicas.
- Telefone, e-mail, QSA, Simples e MEI podem estar ausentes ou retornar `null`.
- O Actor não fornece dívida ativa, processos judiciais, sanções, análise de crédito ou histórico societário completo.
- O resultado não substitui validação jurídica, fiscal, de crédito ou de compliance.

### Uso responsável

O Actor consulta informações empresariais disponíveis em fontes públicas. O usuário é responsável por definir uma finalidade legítima, aplicar as regras de proteção de dados e respeitar políticas contra spam e abordagens comerciais indevidas. Para decisões jurídicas ou regulatórias, procure orientação profissional qualificada.

### FAQ

#### Preciso fornecer chave de API ou login de outra plataforma?

Não. O Actor é executado pela sua conta Apify e não solicita credenciais de serviços externos.

#### Qual é a diferença entre Lookup e Discovery?

Use Lookup quando você já possui os CNPJs. Use Discovery quando possui um CNAE e quer encontrar empresas de determinada região.

#### O fallback entre fontes funciona nos dois modos?

Não. O fallback entre Minha Receita, BrasilAPI e CNPJ.ws é utilizado no modo Lookup. O modo Discovery utiliza a busca filtrada da Minha Receita.

#### Posso exportar os resultados?

Sim. O dataset da Apify pode ser exportado nos formatos oferecidos pela plataforma, incluindo JSON, CSV e Excel.

#### Os dados são em tempo real?

Não. Mudanças cadastrais recentes podem ainda não estar refletidas nas fontes públicas.

### Validação técnica

O build `1.0.4` foi validado em 21 de julho de 2026 com testes de:

- consulta individual por CNPJ;
- lista com normalização, validação e deduplicação;
- entrada por texto/CSV;
- Discovery por CNAE, UF e situação;
- Discovery por CNAE, UF, município e situação.

O teste de regressão do filtro municipal retornou três de três registros correspondentes ao município solicitado.

### Changelog

#### 1.0.11 — 1º de setembro de 2026

- **Suporte ao CNPJ alfanumérico** (IN RFB nº 2.229/2024) no modo Lookup: validação
  pela norma (DV ASCII − 48, módulo 11), normalização de minúsculas para maiúsculas
  e preservação da inscrição alfanumérica no output. CNPJs numéricos permanecem
  idênticos — mesma validação, mesmo output, mesmo preço.
- Rejeição honesta de entrada fora da norma (`INVALID_INPUT`, sem custo) e vocabulário
  de 404 mais preciso (`NOT_FOUND_AT_SOURCE`).

#### 1.0.4 — 21 de julho de 2026

- Corrigido o parâmetro enviado à fonte de Discovery para aplicar corretamente o filtro pelo código IBGE do município.
- Adicionado teste automatizado para impedir regressão do parâmetro municipal.

#### 1.0

- Primeira versão com Lookup e Discovery.
- Validação e deduplicação de CNPJs.
- Fallback entre fontes no modo Lookup.
- Paginação, controle de volume e detecção de indisponibilidade.

### Parte da suíte JM Forge

Do mesmo desenvolvedor:

- [Licitações PNCP Brasil — Contratações e Contratos Públicos](https://apify.com/johnatan029/pncp-licitacoes-brasil) — monitore licitações, pregões e contratos do PNCP (Lei 14.133) por período, modalidade, UF e palavras-chave.
- [Google Maps Business Scraper](https://apify.com/johnatan029/google-maps-business-scraper) — extraia leads de empresas do Google Maps: nome, categoria, endereço, telefone, site, avaliação e coordenadas.
- [ATS Hiring Signals Monitor — Greenhouse, Lever & Ashby](https://apify.com/johnatan029/ats-hiring-signals-monitor) — novas vagas por empresa a partir das APIs públicas de job board Greenhouse, Lever e Ashby.
- [Company Tech Stack Monitor — Change Events + Firmographics](https://apify.com/johnatan029/company-stack-monitor) — eventos de mudança no stack de empresas: ferramentas adotadas ou removidas e trocas de provedor de e-mail.

***

### English summary

#### Brazil CNPJ API — Bulk Lookup & CNAE Search

Look up public Brazilian company registry data by CNPJ in bulk, or discover companies by CNAE, state, city IBGE code, and registration status. The Actor runs through your Apify account and does not require external API credentials.

- **Lookup:** accepts a CNPJ list or CSV/text, validates and deduplicates identifiers, and uses a fallback chain across Minha Receita, BrasilAPI, and CNPJ.ws.
- **Discovery:** searches the Minha Receita public mirror by CNAE, state, and city, then applies the requested registration status before saving results.

Use cases include B2B prospecting, CRM enrichment, market research, and initial company/KYB screening. The returned public registry data does not replace legal, tax, credit, or compliance analysis. Unofficial community Actor — not affiliated with Receita Federal or any Brazilian government body; data comes from public registry mirrors.

Pricing is Pay Per Event: **US$ 0.0015 per company record — US$ 1.50 per 1,000 records** — plus a negligible per-run start fee. Check the Pricing tab for current rates, and start with a small input or `maxResults` value.

Public sources may be delayed or unavailable, and some fields can be missing. Missing values are returned as `null` and are never estimated.

### Support

Report issues in the **Issues** tab of this actor — I respond within 24h. Feature requests welcome.

**Suporte (pt-BR):** relate qualquer problema na aba **Issues** deste actor — respondo em até 24h. Sugestões de funcionalidades são bem-vindas.

# Actor input Schema

## `mode` (type: `string`):

LOOKUP: you provide CNPJs, get full records. DISCOVERY: you provide filters (CNAE/UF), get the matching companies.

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

List of CNPJs to look up. Any format — "47.960.950/0001-21" or "47960950000121". Alphanumeric CNPJs (IN RFB 2.229/2024, e.g. "12ABC34501DE35") are supported; lowercase letters are normalized to uppercase. Invalid ones are skipped for free.

## `cnpjInput` (type: `string`):

Paste a CSV or any text containing CNPJs (one per line or a column). Every CNPJ found is extracted, validated and deduplicated — numeric and alphanumeric (2026) formats.

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

Primary CNAE subclass to search, e.g. "4713004" (department stores). Required for discovery.

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

Two-letter state to narrow the search, e.g. "SP". Optional.

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

IBGE municipality code to narrow further. Optional.

## `situacao` (type: `string`):

Keep only companies with this status, e.g. "ATIVA" (active). Discovery returns all statuses by default. Optional.

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

Cap the number of companies returned in discovery, to control volume and cost.

## Actor input object example

```json
{
  "mode": "lookup",
  "cnpjs": [
    "47960950000121"
  ],
  "cnpjInput": "",
  "cnae": "",
  "uf": "",
  "municipio": "",
  "situacao": "",
  "maxResults": 1000
}
```

# 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": [
        "47960950000121"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("johnatan029/cnpj-empresas-brasil-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 = { "cnpjs": ["47960950000121"] }

# Run the Actor and wait for it to finish
run = client.actor("johnatan029/cnpj-empresas-brasil-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 '{
  "cnpjs": [
    "47960950000121"
  ]
}' |
apify call johnatan029/cnpj-empresas-brasil-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,johnatan029/cnpj-empresas-brasil-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/SwKzhRae3im3EgtOb/builds/GKjouJcfZfRWMI8gk/openapi.json
