Brazilian Company Registry Lookup avatar

Brazilian Company Registry Lookup

Pricing

from $3.00 / 1,000 company records

Go to Apify Store
Brazilian Company Registry Lookup

Brazilian Company Registry Lookup

Look up Brazilian companies by CNPJ, or search a municipality by name, legal nature or activity code (CNAE), in the national CNPJ open data. Companies only: no partners, sole traders, addresses or contacts. One record per establishment, values as published. Pay per record.

Pricing

from $3.00 / 1,000 company records

Rating

0.0

(0)

Developer

The Sjöstrand Project

The Sjöstrand Project

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

What this Actor returns

Look up Brazilian companies by CNPJ number, or search one municipality by company name, legal nature or main activity code (CNAE), and get one clean record per establishment (head office or branch). Every record has the same 19 fields, all text, with every value exactly as the national register published it.

  • cnpj, cnpj_base, establishment_type_code: the establishment's number, its company's 8-character base, and whether it is the head office (1) or a branch (2)
  • company_title, legal_nature_code, legal_nature, company_size_code, share_capital: the registered company name, its legal nature (code and label), size code and declared capital
  • registration_status, status_date, opening_date: active (02), suspended (03) or unfit (04), since when, and when the establishment opened
  • main_activity_code, main_activity, postcode, state, municipality_code, municipality: what it does and where it is, down to the postcode
  • source_release, licence: the monthly release the record comes from, and the data's licence

The Actor reads a filtered copy of Brazil's CNPJ open data that is rebuilt every month from Receita Federal's own files. It does not scrape any website, and there is no login.

Who it helps

  • Analysts and sales teams who want a tidy list of the companies of one activity or legal nature in one municipality, ready for a spreadsheet.
  • Developers who want to check or enrich CNPJ numbers inside their own workflow, through the Apify API, without downloading and filtering the monthly files themselves.

Quick start

  1. Open the Input tab and leave the defaults as they are. They look up one large company's head office, so a first run returns one record.
  2. Press Start. Try it on one record first; it costs a fraction of a cent.
  3. Open the Output tab, check the records, then use your own CNPJ numbers, or set "Search by" to place and pick a state and a municipality.

Input

FieldWhat it doesDefault
Search bycnpj looks up the CNPJ list; place searches one municipality, and the CNPJ list is then not used.cnpj
CNPJ numbersUp to 100 numbers per run. An 8-character base returns every establishment of that company; a full 14-character CNPJ returns that one establishment. Dots, slashes, dashes and the new alphanumeric numbers (12 letters or digits, then 2 check digits) are fine.one example company
StateFor a place search: the state (UF). A place search needs both a state and a municipality; there is no state-wide or nationwide search.none
MunicipalityFor a place search: the municipality's name (accents and capitals do not matter) or the register's 4-digit municipality code.empty
Company name containsFor a place search: only names containing this text, accents and capitals ignored.empty
Legal nature codeFor a place search: only this 4-digit legal nature, like 2062 (limited company).empty
Main activity code (CNAE)For a place search: only main activity codes starting with this, like 4711-3/02, or 47 for all retail.empty
Maximum recordsHow many records to return at most, from 1 to 1000.10

Output

One record per establishment. The record below is what the default input returned on 13 October 2026, unchanged apart from one field: licence is left out here, because this page carries no web addresses. In your results every record also has licence, which reads CC BY-ND 3.0 followed by the licence's web address.

{
"cnpj": "00000000000191",
"cnpj_base": "00000000",
"company_title": "BANCO DO BRASIL SA",
"legal_nature_code": "2038",
"legal_nature": "Sociedade de Economia Mista",
"company_size_code": "05",
"share_capital": "120000000000,00",
"establishment_type_code": "1",
"registration_status": "02",
"status_date": "20051103",
"opening_date": "19660801",
"main_activity_code": "6422100",
"main_activity": "Bancos múltiplos, com carteira comercial",
"postcode": "70040912",
"state": "DF",
"municipality_code": "9701",
"municipality": "BRASILIA",
"source_release": "2026-09"
}

Values are kept as published: dates stay YYYYMMDD, the capital keeps its decimal comma, and labels stay in Portuguese. A label the register's lookup tables do not have is null.

What it costs

You pay for up to three events, and only for what you ask:

  • Company record, $0.003 per record returned. Records the Actor leaves out (see below) are never charged.
  • Place search, $0.05 once per place search, charged as soon as the first part of the municipality's index has been read, so a search that cannot reach the index costs nothing. A CNPJ lookup never pays it.
  • CNPJ not found, $0.001 for each number or base in your list that returns no record: not found, or left out by the companies-only rules (see below). It is charged as soon as the part of the index that would hold it has been read. A number that returns a record pays only for its records.

Apify also adds its standard run-start event, $0.00005 per start for an Actor run with up to 1 GB of memory; it is the platform's own event, not ours.

For example, a place search that returns 200 establishments costs $0.05 + $0.60 = $0.65, and a list of 50 numbers of which 45 are found costs 45 × $0.003 + 5 × $0.001 = $0.14. If your Apify plan includes monthly credit, a small run draws on that credit.

Why a search and a miss cost something: every part of the index the Actor reads costs us storage reads, data transfer and compute, whether or not anything matches. We measured the most expensive search, a name search across all of São Paulo that matched nothing, on 13 October 2026: it read 87 index files (52.8 MB) in 104 seconds, for $0.0062 of run usage plus about $0.0110 of reads and transfer from the index, so $0.0172 in all. One search may read up to 96 parts and 56 MiB, about $0.0191 at the same rates. The search price is set at more than twice that, after the platform's 20% share: 2 × $0.0191 ÷ 0.8 = $0.048, rounded up to $0.05. The biggest single part a lookup reads is 0.75 MB, about $0.00022 to read; 2 × $0.00022 ÷ 0.8 = $0.00056, rounded up to $0.001 per number not found.

If the company index cannot be reached, the run stops with a clear status message before any record is returned, so nothing is charged. If part of the index fails mid-run, only what was already charged stands: the search (for a place search, once its first part was read), the records already returned and the numbers already found missing.

If you set a maximum charge per run, a place search needs it to cover the search and one record ($0.053) and a CNPJ lookup needs it to cover one not-found charge ($0.001); below that the Actor reads nothing, charges nothing and its status message names the least maximum charge to set. Once running, the Actor stops reading as soon as the next charge would not fit, and its status message says "stopped at the run's maximum charge" and how much of the index it searched. Numbers in parts it did not read are not charged as not found.

Limits and honest notes

  • Companies only. Sole traders and individual micro-entrepreneurs (MEI), individual limited companies (EIRELI), single-lawyer firms, partnerships whose name is formed from the partners' names, natural-person registrations, notary offices and registrations with no stated legal nature are left out, because their registered name is, or is made from, a person's name.
  • No partners, addresses or contacts. The data has no partners (sócios), no street addresses (the postcode is the finest place), no phones, no emails and no trade names (nome fantasia).
  • Names can still be personal. A company's registered name is free text, and the name of a single-member company, such as a limited company with one owner, can be that owner's personal name.
  • Active, suspended and unfit registrations only. Closed and null registrations are not in the data.
  • Freshness. The register publishes once a month, and each release is about two to six weeks old when it appears. The index serves one release at a time: the index month at the time of writing is 2026-09 (the September 2026 release), and every record's source_release names the release it comes from.
  • A place search covers one municipality. It needs a state and a municipality; there is no state-wide or nationwide search. Searching a very large city reads more of the index, so a name search across São Paulo takes about two minutes. Filters such as a name or an activity code narrow what comes back, not what is read.
  • A read limit per run. One place search reads at most 96 parts of the index and 56 MiB, which covers the whole of São Paulo, the largest municipality (84 parts, 52.6 MB in the 2026-09 release). One lookup takes up to 100 numbers and reads at most 100 parts and 80 MiB. If a run reaches its limit, it stops cleanly and its status message says "searched N of M index parts" and how to narrow the search; numbers in parts it did not read are not charged as not found.
  • Order. Records come in CNPJ order; in a place search, grouped by municipality first.

Questions

Why did my run return fewer records than I asked for? Fewer establishments matched, the number is not in the data (a sole trader, a closed company, or a number that does not exist), or the run reached its read limit (its status message then says how much it searched). Records are charged only when returned; a number that returns no record (not in the data, or left out by the companies-only rules) is charged as not found.

What does the run say when something is wrong? It says what it found and what to try. "Is not a valid CNPJ: its check digits do not match" means a digit is mistyped. "No municipality ... with companies in this dataset" means the spelling or the state is off; try the 4-digit municipality code. "Is left out of this dataset" means that legal nature is one of the person-named forms above. "The company index could not be read" means the data is briefly unavailable; wait a few minutes and run again. "Searched N of M index parts" means the run reached its read limit; give fewer numbers, or one municipality code, per run.

Can I look up a company by its base and get all its branches? Yes. Give the 8-character base, and set Maximum records high enough for all of them.

Does it return the people behind a company? No. Partners and officers are not in the data.

Can I run it on a schedule? Yes, with the Apify scheduler or the API. Each run is independent and charged for what it returns and searches, as above.

Data source and AI note

Data source: Cadastro Nacional da Pessoa Jurídica (CNPJ) open data published by Receita Federal do Brasil, release 2026-09 at the time of writing, licensed under Creative Commons Atribuição-SemDerivações 3.0 Não Adaptada (CC BY-ND 3.0); this tool returns selected records and fields of that data without modification: it does not correct, translate, re-case or re-format any value, and it adds no data from any other source. Two things are derived inside Receita's own release, values unchanged: the labels legal_nature, main_activity and municipality are joined, verbatim, from Receita's own lookup tables of the same release, and cnpj_base is the first 8 characters of cnpj, split from the number; the data has no per-record source_updated_at date, so each record's source_release gives the monthly release it was last updated in.

This tool is not affiliated with, endorsed by or sponsored by Receita Federal or the Government of Brazil.

This tool was built with the help of AI coding assistants.

Help

Questions, a record that looks wrong, or an idea for a field: please open an issue on the Issues tab. Thank you for the report; every one is read.