Brazil CNPJ Lookup - Receita Federal Company Data avatar

Brazil CNPJ Lookup - Receita Federal Company Data

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Brazil CNPJ Lookup - Receita Federal Company Data

Brazil CNPJ Lookup - Receita Federal Company Data

Bulk CNPJ lookup (consulta CNPJ em lote) for Brazilian companies from Receita Federal open data: razão social, nome fantasia, situação cadastral, CNAE, address, phone, capital and partners (QSA). No proxy, no API key. Export to JSON, CSV or Excel, or call via API. $1.50 per 1,000 results.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

1rrock

1rrock

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What is Brazil CNPJ Lookup?

Brazil CNPJ Lookup is a bulk CNPJ lookup (consulta CNPJ em lote) tool that turns a list of Brazilian CNPJ numbers into clean company records from the Receita Federal open data (Cadastro Nacional da Pessoa Jurídica). Paste one or thousands of CNPJs and get the razão social, nome fantasia, situação cadastral, main CNAE activity, address, phone, share capital and partners (QSA) for each company, ready to export as JSON, CSV or Excel or to pull through the Apify API.

It does not search companies by name, sector or city. It looks up CNPJs you already have, which is what you need for KYC, supplier checks and CRM enrichment.

  • ✅ Official open data: Receita Federal CNPJ data, served by the open-source BrasilAPI / Minha Receita APIs.
  • ✅ No proxy, no API key, no login: runs in seconds with the default input.
  • ✅ Any CNPJ format: 00.000.000/0001-91, 00000000000191 or mixed. Punctuation is ignored.
  • ✅ One row per CNPJ: invalid or unknown numbers come back as an error row, so you can reconcile every input.
  • ✅ Cheap and predictable: $1.50 per 1,000 results, platform usage included.

What data can you get for a CNPJ?

FieldExampleMeaning
cnpj, cnpj_formatted00.000.000/0001-91CNPJ (digits / formatted)
razao_socialBANCO DO BRASIL SALegal name (razão social)
nome_fantasiaDIRECAO GERALTrade name
situacao_cadastral, data_situacao_cadastralATIVA, 2005-11-03Registration status (ativa, baixada, inapta, suspensa…) and its date
data_inicio_atividade1966-08-01Opening date
natureza_juridica, porteSociedade de Economia Mista, DEMAISLegal nature and company size
capital_social120000000000Share capital (BRL)
cnae_fiscal, cnae_fiscal_descricao6422100, Bancos múltiplos…Main CNAE activity code and description
uf, municipio, bairro, logradouro, numero, complemento, cepDF, BRASILIA…Address
ddd_telefone_1, email6134939002Contact data, when published
opcao_pelo_simples, opcao_pelo_meifalseSimples Nacional / MEI flags
identificador_matriz_filialMATRIZHead office or branch
qsa_count, cnaes_secundarios_count41, 1Number of partners and secondary CNAEs
raw{ … }Full source record, including the QSA partner list and all secondary CNAEs
source, fetched_atbrasilapiWhich API answered and when

Use cases for bulk CNPJ lookup

  • 🔎 KYC / KYB and onboarding: confirm a Brazilian customer or merchant exists and is ATIVA before you approve them.
  • 🏭 Supplier and vendor verification: check status, legal nature and partners before you pay invoices or sign contracts.
  • 📈 B2B lead enrichment: add CNAE, size, capital, city and phone to a lead list that only has CNPJs.
  • 🗂️ CRM and ERP data cleaning: refresh legal names and addresses and flag companies that are BAIXADA or INAPTA.
  • 🧾 Tax and invoice compliance: validate the CNPJs printed on invoices (NF-e) and contracts.

How to look up CNPJs in bulk

  1. Click Try for free (or Start) on this page. The free Apify plan is enough to test.
  2. Paste your CNPJ numbers into CNPJ numbers, one per line. Any format works.
  3. Click Start. With the default delay the Actor processes about one CNPJ per second.
  4. Open the Output tab to see the table, or export the dataset as JSON, CSV, Excel, XML or HTML.
  5. To automate it, schedule the Actor or call it from the API (see below).

Input example

{
"cnpjs": ["00.000.000/0001-91", "19.131.243/0001-97"],
"delaySeconds": 0.8,
"preferSource": "brasilapi"
}
FieldDescription
cnpjsRequired. List of CNPJs (14 digits, with or without punctuation).
delaySecondsPause between requests (default 0.8 s). Keep it ≥ 0.5 s to stay within the fair-use limits of the free public APIs.
preferSourcebrasilapi (default) or minhareceita. The other one is used automatically as a fallback.

Output example

One item per CNPJ (the raw object is shortened here):

{
"cnpj": "00000000000191",
"cnpj_formatted": "00.000.000/0001-91",
"razao_social": "BANCO DO BRASIL SA",
"nome_fantasia": "DIRECAO GERAL",
"situacao_cadastral": "ATIVA",
"data_situacao_cadastral": "2005-11-03",
"data_inicio_atividade": "1966-08-01",
"porte": "DEMAIS",
"natureza_juridica": "Sociedade de Economia Mista",
"capital_social": 120000000000,
"cnae_fiscal": 6422100,
"cnae_fiscal_descricao": "Bancos múltiplos, com carteira comercial",
"cnaes_secundarios_count": 1,
"qsa_count": 41,
"uf": "DF",
"municipio": "BRASILIA",
"bairro": "ASA NORTE",
"logradouro": "SAUN QUADRA 5 BLOCO B TORRE I, II, III",
"numero": "SN",
"cep": "70040912",
"ddd_telefone_1": "6134939002",
"email": null,
"opcao_pelo_simples": false,
"opcao_pelo_mei": false,
"identificador_matriz_filial": "MATRIZ",
"source": "brasilapi",
"fetched_at": "2026-10-07T01:27:31.895584+00:00",
"raw": { "qsa": [{ "nome_socio": "…", "qualificacao_socio": "Diretor", "data_entrada_sociedade": "2023-05-17" }], "cnaes_secundarios": [] }
}

A CNPJ that cannot be resolved returns an error row instead, for example {"cnpj": "11111111111111", "error": "http_400", "message": "{\"message\":\"CNPJ 11.111.111/1111-11 inválido.\", …}", "source": "brasilapi", "ok": false} (other codes: not_found, invalid_cnpj_length). Lookups that fail because both public APIs are temporarily unreachable (timeouts, HTTP 429/5xx) are not written to the dataset; see the pricing section below.

How much does a CNPJ lookup cost?

This Actor uses pay-per-result pricing: $1.50 per 1,000 results ($0.0015 per CNPJ), with Apify platform usage already included. Apify also charges a tiny Actor start fee of $0.00005 per run per GB of memory.

  • What counts as a result? Every item written to the dataset: one per input CNPJ that was found, plus one error row per invalid or not-found CNPJ (those are charged too, so remove obvious duplicates and malformed numbers first).
  • Temporary failures are not charged. If a lookup fails because of a temporary problem at the data source or on our side (network errors, timeouts, HTTP 429/5xx from both public APIs), no dataset item is written and nothing is charged. These inputs are listed under failedLookups in the run summary (key-value store record OUTPUT, linked as Run summary in the run's Output tab) so you can run them again later. If every lookup in a run fails this way, the run is marked as failed.
  • How many CNPJs fit in one run? There is no maxItems cap: every CNPJ you paste is looked up, one at a time. With the default 0.8 s delay a lookup takes about 1–2 s, so one run with the default 30-minute timeout handles roughly 1,000–1,500 CNPJs.
  • Examples: 100 CNPJs ≈ $0.15 (one run, a few minutes). 10,000 CNPJs ≈ $15, but that takes about 3–5 hours: either raise the run timeout (e.g. to 6 hours in the run options) or split the list into about 8–10 runs of ~1,000–1,200 CNPJs.
  • Free plan: Apify's free plan includes $5 of monthly usage, which covers about 3,000 CNPJ lookups.

Use the CNPJ lookup API from Python, JavaScript or no-code tools

Everything you can do in the UI also works through the Apify API.

Python (apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("1rrock/brazil-cnpj-lookup").call(
run_input={"cnpjs": ["00.000.000/0001-91", "19.131.243/0001-97"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("cnpj_formatted"), item.get("razao_social"), item.get("situacao_cadastral"))

JavaScript / Node.js (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('1rrock/brazil-cnpj-lookup').call({
cnpjs: ['00.000.000/0001-91', '19.131.243/0001-97'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

HTTP (one call, returns the results):

curl -X POST "https://api.apify.com/v2/acts/1rrock~brazil-cnpj-lookup/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"cnpjs": ["00000000000191"]}'

No-code: connect the Actor to Zapier, Make, Google Sheets (with Google Sheets Import & Export), webhooks, Slack and other integrations. You can also run it on a schedule or let AI agents call it through the Apify MCP server.

FAQ

Yes. CNPJ registry data is published by the Receita Federal as Brazilian government open data (dados abertos) for reuse. See dados.gov.br. Partner (QSA) records contain names of people, so handle them in line with the LGPD and your own compliance rules.

Where does the data come from?

From the Receita Federal open CNPJ data, served by BrasilAPI (primary; its CNPJ endpoint uses Minha Receita) with Minha Receita as a fallback. This Actor is not an official Receita Federal service.

How fresh is the data?

The data is as fresh as the last Receita Federal open data release imported by Minha Receita (releases are monthly). It is not a real-time query of the Receita Federal website, so status changes from the last few weeks may not show yet.

Can I search companies by name, CNAE or city?

Not with this Actor. It is a CNPJ-to-record lookup. To find companies by segment you need a full-database search tool.

Are there limits?

There is no cap on input size, but the run timeout is: at the defaults (30 minutes, 0.8 s delay) one run handles roughly 1,000–1,500 CNPJs. For bigger lists, raise the run timeout or split the list into several runs. The free public APIs ask for fair use, so keep the default delay (≥ 0.5 s) rather than lowering it to go faster. The Actor currently accepts numeric 14-digit CNPJs.

Something went wrong. What should I do?

Check the error rows (error field) and the run summary (OUTPUT record, which lists lookups that failed temporarily and were not charged) first. For bugs or feature requests, open an issue in the Issues tab and I'll take a look.

Data source and license

License / terms (brief):

  • Underlying registry data: Brazilian government dados abertos (Receita Federal CNPJ) — public open data for reuse; cataloged on dados.gov.br.
  • BrasilAPI project: MIT (per brasilapi.com.br docs). Terms ask for organic/person-like use — no bulk crawling of the whole space; cache responses.
  • Do not hammer community endpoints; for high volume, host Minha Receita yourself or ingest official dumps.

Other actors by 1rrock

Official open-data company lookups, all at $1.50 per 1,000 results: