CNPJ Lookup Scraper: Consulta CNPJ from Excel avatar

CNPJ Lookup Scraper: Consulta CNPJ from Excel

Pricing

from $0.45 / 1,000 company returneds

Go to Apify Store
CNPJ Lookup Scraper: Consulta CNPJ from Excel

CNPJ Lookup Scraper: Consulta CNPJ from Excel

Look up Brazilian CNPJs in bulk (consulta CNPJ em lote): paste a list or an Excel column, even one that lost its leading zeros, and get each company's Receita Federal entry: status, names, activities, address, phones, tax regime. Reads the new alphanumeric CNPJs. No key, no login.

Pricing

from $0.45 / 1,000 company returneds

Rating

0.0

(0)

Developer

Pradio Actors

Pradio Actors

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Categories

Security

Limited permissions

Share

CNPJ: Bulk Receita Federal Lookup from Excel

What does CNPJ Lookup Scraper do?

CNPJ Lookup Scraper looks up Brazilian CNPJs in bulk and returns each company's public Receita Federal registry entry, one row per company. Give it a list of numbers or a column pasted straight out of a spreadsheet, and it brings back the legal and trade name, the registration status and the reason behind it, the activities, the address, the phone lines and the tax regime. $0.85 per 1,000 companies, and a number it cannot resolve costs nothing.

{"cnpjs": ["33.683.111/0002-80", "00776574000156", "60.701.190/0001-04"]}

The first number lost its leading zeros on the way out of a spreadsheet, and it still resolves. The alphanumeric CNPJs Receita Federal has issued since July 2026 are read too. On a test list of 79 numbers, every one of them came back with its company's row.

Who uses it

BuyerWhat they run it for
Procurement and finance teamsChecking a supplier's registration status before a payment goes out
Data and sales operationsFilling the company details on a file they already hold
Accountants and lawyersConfirming a counterparty's legal name, address and tax regime
DevelopersAnswering "which company is registered under this CNPJ" from a script

Features

  • Excel columns as they come. A number a spreadsheet stripped of its leading zeros is recovered from its check digits, so nothing is lost to the paste.
  • Three ways to bring a list. Numbers typed one per entry, a pasted CSV column with one company per line, or the registry links you saved in your browser.
  • The new CNPJ format. Twelve letters or digits and two check digits, for companies registered since July 2026.
  • A run against your last one. Point it at an earlier run and each company comes back marked new, unchanged or changed, with the fields that moved named.
  • One request per company. A plain read of a public JSON endpoint. No browser, no cookies, no account.
  • Ten thousand a run. Raise the cap to 10,000 numbers; entries past it are named for you rather than dropped in silence.

What you can count on

  • You pay only for rows with an answer. Anything it cannot answer comes back as a free row naming what you gave it and why.
  • Every row is charged only after it is written to your dataset, so what you see is what is billed.
  • A run that finds nothing returns one row saying so, never an empty dataset.
  • A spending limit stops the run cleanly, with a last row saying how many rows came back and how many did not.
  • Every run saves a summary of what it read, what it returned and what it charged, so a short run is easy to tell from a broken one.
  • If the registry refuses a read or answers with an error, the run stops and says so in the log rather than returning empty rows.
  • No value is invented. A field the entry does not show comes back null, and the table below says which.

Why this one

CNPJ Lookup ScraperMost-used alternative
Company rows returned71
Start charge per run$0.00005up to $0.10
Price per 1,000 companies$0.85$0.90

One shared CNPJ from our example list, run on 2026-10-10. Some sellers on this shelf charge as much as $0.10 before the first row; this one charges the platform's $0.00005 and nothing of its own.

What data does CNPJ Lookup Scraper return?

One real row, for Serpro's Brasília branch (CNPJ 33.683.111/0002-80). Its nine secondary activities are trimmed to the first three:

{
"cnpj": "33683111000280",
"razao_social": "SERVICO FEDERAL DE PROCESSAMENTO DE DADOS (SERPRO)",
"nome_fantasia": "REGIONAL BRASILIA-DF",
"matriz_filial": "FILIAL",
"situacao_cadastral": "ATIVA",
"situacao_cadastral_motivo": "SEM MOTIVO",
"data_abertura": "1967-06-30",
"cnae_principal_codigo": "6204000",
"cnae_principal_descricao": "Consultoria em tecnologia da informação",
"natureza_juridica": "Empresa Pública",
"capital_social": 1786196100,
"municipio": "BRASILIA",
"uf": "DF",
"partners_officers_count": 7,
"ultima_atualizacao": "2026-09",
"source_url": "https://minhareceita.org/33683111000280",
"row_type": "ROW"
}

Every field a row can carry. The percentage is how often the field was filled on a test list of 79 CNPJs.

FieldWhat it holdsFilled
cnpjThe registry number: fourteen digits, or twelve letters and digits and two check digitsevery row
razao_socialThe registered legal nameevery row
nome_fantasiaThe trade name the company does business under59.5%
matriz_filialHead office (MATRIZ) or branch (FILIAL)every row
situacao_cadastral, situacao_cadastral_motivo, situacao_cadastral_motivo_codigoRegistration status such as ATIVA or BAIXADA, the reason behind it, the registry's code for that reasonevery row
data_situacao_cadastralThe date the status last changed97.5%
data_aberturaThe date the company was registeredevery row
cnae_principal_codigo, cnae_principal_descricaoMain activity code as seven digits with any leading zero kept, and what it meansevery row
cnaes_secundariosThe secondary activities, each a code and a description81%
natureza_juridica, natureza_juridica_codigoLegal nature in words, for example Empresa Pública, and its codeevery row
porte, porte_codigoThe size class the registry gives the company, and its codeevery row
orgao_publicoTrue when the legal nature sits in public administration. A state-owned company sits outside that group and reads falseevery row
capital_socialRegistered share capital in BRLevery row
tipo_logradouro, logradouro, numeroStreet type and street, then the street number88.6%
complementoThe address complement line58.2%
bairro, municipio, municipio_codigo_ibge, municipio_codigo_siafi, uf, cepDistrict, city with its IBGE and SIAFI codes, state, postcodeevery row
paisCountry, filled only for a company registered abroad3.8%
ente_federativoThe federal, state or municipal body responsible for a public company3.8%
telefone1, telefone2, faxPhone lines with their area code, as filed82.3%, 7.6%, 29.1%
simples_nacional, data_opcao_simples, data_exclusao_simplesWhether the company is on the Simples regime, and when it joined or leftevery row; 36.7% and 12.7%
mei, data_opcao_mei, data_exclusao_meiWhether the company is an individual micro-entrepreneur, and when it joined or leftevery row; 6.3% and 5.1%
situacao_especial, data_situacao_especialA special situation such as judicial recovery, and the day it began3.8%
regime_tributario, regime_tributario_atual, regime_tributario_anoTax regime by year as the registry lists it, then the latest one and its year63.3%
partners_officers_countHow many partners and officers the entry lists. The people themselves stay at the registryevery row
ultima_atualizacaoThe month Receita Federal extracted the data this row was read fromevery row
source_urlThe address the row was read fromevery row
row_state, changed_fieldsWith change tracking on, whether the company is new, unchanged or changed, and which fields movedon a tracked run
row_type, status, reason, rowsFetched, rowsReturned, rowsRemainingWhat kind of row this is, its verdict, the detail behind it and the run's counterssee Output

A value the entry does not carry comes back null, never guessed. Sparse fields are sparse because the registry leaves them empty, not because the run skipped them.

How much does it cost?

$0.85 per 1,000 companies returned. Each company row is one charge of $0.00085, written after the row lands in your dataset, and the platform adds a $0.00005 start charge once a run.

CNPJs in one runYou pay for the companies
100$0.085
1,000$0.85
10,000$8.50

On a paid Apify plan each row costs less: $0.70 per 1,000 on Bronze, $0.55 on Silver, $0.45 on Gold and above. Your own rate shows next to the Start button. Only company rows are billed: a number the registry cannot answer, a duplicate and the rows that close a run are free.

How do I use CNPJ Lookup Scraper?

  1. Press Try for free. Seven real CNPJs are already in the box, so a first run needs nothing typed.
  2. Replace them with your own numbers, or paste a column into Paste a CSV column.
  3. For a long list, set Maximum items to its length, up to 10,000.
  4. Press Start. Rows land in your dataset as they are read.

Worked examples

Use it to check a supplier's status before you pay:

{
"cnpjs": ["02.558.157/0001-62", "00776574000156", "11.396.633/0001-87"]
}

Use it for a consulta CNPJ em lote from a spreadsheet column:

{
"cnpjText": "cnpj;nome\n33683111000280;SERPRO\n191;Banco do Brasil\n60.701.190/0001-04;Itau Unibanco"
}

Use it to re-check a list monthly and see only what moved:

{
"cnpjs": ["00.000.000/0001-91", "33.000.167/0001-01", "60.701.190/0001-04"],
"maxItems": 500
}

Zapier, Make, Google Sheets and webhooks plug in, a schedule re-checks a list on its own, and the dataset exports to CSV, Excel or JSON. Over the API, one POST to the run endpoint starts a run.

Input

InputDefaultWhat it does
CNPJ numbers (cnpjs)seven real CNPJsThe numbers to look up. Punctuated or bare, one company per entry, and several may share an entry
Paste a CSV column (cnpjText)emptyA column or a whole CSV from a spreadsheet, one company per line, header lines skipped
Saved links to company pages (startUrls)emptyRegistry links you saved at minhareceita.org; bare numbers work too
Track changes since your last run (prevDatasetId)emptyAn earlier run's results. Each company comes back marked new, unchanged or changed
Maximum items (maxItems)100The most CNPJs one run looks up, up to 10,000

The three lists add up in one run, and the cap covers all three together.

Output

Every number you send comes back as a row, up to Maximum items. A resolved number is a company row, and those are the rows you pay for. Anything else is a row of its own that says which case it was.

status on that rowIt means
not_foundThe registry holds no company under that number, or refused it as malformed
bad_input, bad_urlThe entry or the link carried no CNPJ. Fix it and run it again
fetch_failedThe read failed, for example a timeout or a server error. Run it again
blockedThe registry refused this number or an earlier one, and the run stopped there
duplicateAn earlier entry already gave you this CNPJ. Its company row carries the answer
removedThe holder asked to be left out, so the number is never looked up
over_limitOne row naming every entry past Maximum items, none of them looked up

A run that reads nothing returns a single row saying so. A run cut short by your spending limit closes with the counts of what came back and what did not, and the run's key-value store keeps a summary either way. To work with the companies alone, filter the dataset on row_type = ROW.

What can you do with the data?

Screen a supplier file before a payment run. Every row carries the registration status, the reason behind it and the date it last changed, so a BAIXADA or suspensa company is visible without opening a single page by hand.

Fill a company record you already hold. The legal name, the trade name, the address as separate parts, the postcode and the phone lines land in a CRM or an accounting system as fields a pipeline can key on, rather than as one flattened string.

Check what a counterparty really is. The legal nature, the size class and the share capital tell you whether you are dealing with a sole trader, a limited company or a public body before anyone signs.

Watch a list over time. Run the same list again with your earlier run selected and each company comes back new, unchanged or changed, with the fields that moved named on the row.

Use CNPJ Lookup Scraper with AI agents

Give an agent the Actor and it can run a lookup from the conversation:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=Pradio/brazil-cnpj-receita-federal"

The same Actor answers a POST to its run endpoint, so no key and no login of your own are needed on the registry side.

Personal data

Each row reproduces one company's entry in the public Receita Federal CNPJ registry, and the purpose here is looking up a company's registration. The records are the Receita Federal's CNPJ open data, published under the Lei de Acesso à Informação (Lei 12.527/2011) and Decreto 8.777/2016, and read through the Minha Receita mirror (minhareceita.org). Reuse of this open data requires crediting the source. Rows for sole traders (MEI and individual entrepreneurs) can carry a natural person's name, their business address, which is often a home, and their phone numbers (telefone1, telefone2, fax). Those are filed business contacts, and under the LGPD your use of the rows has to fit the purpose the register published them for. Every row carries source_url. The address each value was read from is on the row; on a miss row it is the entry as you typed it.

A CPF written inside a company name comes back masked, and the partners list stays at the registry: rows carry a count and no names. Nothing is kept or resold here.

A company or sole trader can ask to be left out: open an issue on this page's Issues tab with the CNPJ. That CNPJ goes on a removal list every run reads before it looks anything up, and from then on it is never read again. The same tab takes a request to correct or delete what a run produced.

Limits

  • At most 10,000 numbers a run across the three lists together. Split a longer list into runs.
  • It looks up the CNPJs you bring and does not find companies: no search by state, activity, status or name, and it never walks neighbouring numbers. Filter the dataset on the fields each row carries.
  • The registry publishes no request quota and no daily limit. The run takes one company at a time, and a refusal ends it.
  • A row is the registry's current entry, not its history. The mirror's own docs say entries can lag Receita Federal's releases by days, so confirm anything you would act on at the address on the row.
  • A company registered since July 2026 has twelve letters or digits in its number instead of fourteen digits. Expect that in your data and in any join you build on it.
  • Sparse fields stay sparse. The table above says how often each one was filled.

Troubleshooting

I sent 50 numbers and got fewer company rows. The rest came back as rows of their own: a duplicate, a miss or one row naming everything past Maximum items. Read the status column and the numbers add up.

My run returned nothing. It returns a single row saying so rather than an empty dataset. That happens when no entry was read at all, not when the companies were missing.

The run stopped part way. The registry refused a read, so the run stopped at that number with nothing retried past it. Run the unread numbers again later. A run cut short by your spending limit looks different: it closes with a row carrying the counts.

A number came back as not found. Check the digits. A number that keeps its check digits is looked up even without its leading zeros; one that does not is only answered if the registry recognises it.

FAQ

Can I use integrations with CNPJ Lookup Scraper? Yes. Zapier, Make, Google Sheets and webhooks all work, a schedule re-checks a list without you, and the dataset exports to CSV, Excel or JSON.

Can I use CNPJ Lookup Scraper with the Apify API? Yes. One POST to the run endpoint starts a run with your input, and the rows land in a dataset you can fetch. No separate key or login is needed for the registry itself.

Can I use CNPJ Lookup Scraper through an MCP server? Yes. Add it to any MCP client with the command above, and the agent can run a lookup and read the rows.

Do I need proxies or an account? No. It reads public JSON with no account, no cookies and no proxies. A refused read ends the run rather than retrying past it.

Do I need an API key or a login from another platform? No. Nothing is asked of you but the list. Your own Apify account starts the run and keeps the rows, and the registry is read as the open public mirror anyone can open for themselves.

How much does a typical run cost? A run of 1,000 companies that returns 1,000 rows costs $0.85, plus the platform's $0.00005 start charge. A list longer than the mirror's coverage is billed for the rows that came back, not for the length of the list.

Is it legal to use this? It reads a public registry mirror and nothing else: no login, no paywall, no data beyond what the register itself publishes about a company. Sole traders are why the input is a list of CNPJ numbers and not a filter across the whole register, because a sole trader's company name is often their own name. Anyone who asks to be left out goes on a removal list, and CPF numbers inside company names are masked on the way out.

How fresh is the data? Rows are the mirror's copy of the federal register, which can trail Receita Federal's own releases by days. The source_url on each company row takes you to the live entry.

How do I get support? Open an issue on this Actor's Issues tab and it is answered within two days.

Release notes

  • 2026-10-10: a repeated number is named on a free duplicate row, and pasted lines with odd spacing or typographic dashes are read.
  • 2026-09-30: change tracking marks each company new, unchanged or changed and names the fields that moved.
  • 2026-09-28: a removal list for anyone who asks to be left out, CPFs masked inside company names, and the cap raised to 10,000 a run.
  • 2026-09-15: first release. One row per CNPJ, misses unbilled, a summary on every run.

See also

Feedback

Something off, a number that parses wrong, a field you expected and did not get? Open an issue on this Actor's Issues tab and it is answered within two days. If the Actor saved you time, a review on the Store helps other buyers find it.

Not affiliated

This Actor is not affiliated with, endorsed by or sponsored by Receita Federal, the Brazilian government or Minha Receita. It reads the same public registry mirror anyone can open at minhareceita.org. Company names and marks belong to their owners.