Brazil CNPJ Company Registry Scraper - Partners & Contacts
Pricing
from $17.00 / 1,000 results
Brazil CNPJ Company Registry Scraper - Partners & Contacts
Look up Brazilian companies by CNPJ and get legal name, trade name, registration status, main and secondary activities (CNAE), legal nature, share capital, size, full address, phone, email and the list of partners and shareholders (QSA) with their roles. Export to JSON, CSV or Excel.
Pricing
from $17.00 / 1,000 results
Rating
5.0
(2)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 days ago
Last modified
Categories
Share
Brazil CNPJ Company Registry Scraper - Partners & Contacts
Here is one real result, with every field the actor returns (the partners list is trimmed to 3 of 41 real entries for length; every value shown is real):
{"cnpj": "00.000.000/0001-91","cnpjDigits": "00000000000191","legalName": "BANCO DO BRASIL SA","tradeName": "DIRECAO GERAL","registrationStatus": "ATIVA","registrationStatusReason": "SEM MOTIVO","statusDate": "2005-11-03","startDate": "1966-08-01","legalNature": "Sociedade de Economia Mista","companySize": "DEMAIS","shareCapital": 120000000000,"mainActivityCode": "6422100","mainActivity": "Bancos múltiplos, com carteira comercial","secondaryActivities": [{ "code": "6499999", "description": "Outras atividades de serviços financeiros não especificadas anteriormente" }],"headquartersOrBranch": "MATRIZ","street": "QUADRA SAUN QUADRA 5 BLOCO B TORRE I, II, III","number": "SN","complement": "ANDAR T I SL S101 A S1602 T II SL C101 A C1602 TIII SL N101 A N1602","district": "ASA NORTE","city": "BRASILIA","state": "DF","zipCode": "70040912","phone": "6134939002","phone2": null,"fax": "6134931040","email": null,"isSimplesNacional": false,"simplesNacionalSince": "2007-07-01","isMEI": false,"meiSince": "2009-07-01","taxRegime": "LUCRO REAL","taxRegimeYear": 2024,"taxRegimeHistory": [{ "year": 2023, "taxation": "LUCRO REAL" },{ "year": 2024, "taxation": "LUCRO REAL" }],"specialStatus": null,"specialStatusDate": null,"responsibleQualification": "10","ibgeCode": "5300108","stateRegistrations": [],"partners": [{ "name": "TARCIANA PAULA GOMES MEDEIROS", "role": "Presidente", "entryDate": "2023-01-26", "ageRange": "Entre 41 a 50 anos", "country": null, "legalRepresentative": null, "taxId": "***128734**" },{ "name": "ALAN CARLOS GUEDES DE OLIVEIRA", "role": "Diretor", "entryDate": "2023-05-17", "ageRange": "Entre 41 a 50 anos", "country": null, "legalRepresentative": null, "taxId": "***550179**" },{ "name": "ANELIZE LENZI RUAS DE ALMEIDA", "role": "Conselheiro de Administração", "entryDate": "2023-05-16", "ageRange": "Entre 41 a 50 anos", "country": null, "legalRepresentative": null, "taxId": "***195641**" }],"partnerCount": 41,"source": "Brazil CNPJ Registry","observedAt": "2026-08-14T05:43:53.340Z","cnpjRoot": "00000000","branchNumber": "0001","isHeadquarters": true,"ageYears": 60,"startDateISO": "1966-08-01","isActive": true,"fullAddress": "QUADRA SAUN QUADRA 5 BLOCO B TORRE I, II, III, SN, ANDAR T I SL S101 A S1602 T II SL C101 A C1602 TIII SL N101 A N1602, ASA NORTE, BRASILIA, DF, 70040912","phones": ["+556134939002"],"aiCompanySummary": null,"aiRiskFlags": null,"aiRiskLevel": null,"aiIndustry": null,"aiIndustryCode": null}
The most complete Brazil CNPJ company registry scraper available. It returns every field the federal CNPJ registry exposes for a company (legal and trade name, status, activities, tax regime, full address, phones and email), the complete list of partners and shareholders (QSA) with roles, plus derived KYB fields, and it takes a plain list of CNPJ numbers so you can enrich exactly the companies you need.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Quickstart
- Input reference
- Output reference
- Example output record
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
The actor takes one or more Brazilian CNPJ numbers, looks each one up in the federal company registry, and writes one normalized record per company to the run's dataset. Digits-only or formatted CNPJs both work. Each record carries the legal and trade name, registration status and reason, start date, legal nature, company size, share capital, main and secondary activities (CNAE), tax regime and Simples/MEI status, the full address, phone numbers and email, and the complete list of partners and shareholders (QSA) with their roles and entry dates.
On top of the raw registry values, a set of derived fields (cnpjRoot, branchNumber, isHeadquarters, ageYears, startDateISO, isActive, fullAddress, phones) is computed so you can segment and dedupe without extra parsing. Optional paid AI add-ons (company summary, KYB risk flags, industry classification) are off by default and billed per record only when they return usable output.
Quickstart
Open the actor, paste this into the input, and press Run. It looks up two well-known companies by CNPJ.
{"cnpjNumbers": ["00000000000191","19131243000197"],"maxCompanies": 10}
You can also pass a single CNPJ with the cnpj shortcut field. One record is returned per company.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
cnpjNumbers | string[] | no | (empty) | One or more CNPJ numbers to look up. Digits only (00000000000191) or formatted (00.000.000/0001-91) both work. One record is returned per company. |
cnpj | string | no | (empty) | A single CNPJ to look up, as a shortcut instead of the list. Added to the front of the queue. |
maxCompanies | integer | no | 10 | Maximum number of companies to look up (1 to 1000000). Free Apify plans are capped at 10 per run. |
withAiCompanySummary | boolean | no | false | Paid add-on. Generates a concise plain-English business summary from the record. Requires a paid Apify plan; billed only when a summary is produced. |
withAiRiskFlags | boolean | no | false | Paid add-on. Surfaces KYB red flags (suspended/inactive status, status reason, entity age, MEI/size). Requires a paid Apify plan; billed only when flags are produced. |
withAiIndustry | boolean | no | false | Paid add-on. Normalizes and classifies the company's industry with a CNAE/NAICS-style tag. Requires a paid Apify plan; billed only when a classification is produced. |
Only valid 14-digit CNPJs are looked up; anything else is dropped. If no valid CNPJ is provided, the actor writes a single item with a populated error field and does not charge.
Output reference
One dataset item per company. Types: string, integer, number, boolean, object[], string[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
cnpj | string | Formatted CNPJ (00.000.000/0001-91). |
cnpjDigits | string | CNPJ as 14 digits, no punctuation. |
legalName | string | Registered legal name (razão social). |
tradeName | string | Trade name (nome fantasia), or null. |
registrationStatus | string | Registration status, for example ATIVA, BAIXADA, SUSPENSA. |
registrationStatusReason | string | Reason for the current status. |
statusDate | string | Date the status was set (YYYY-MM-DD). |
startDate | string | Activity start date (YYYY-MM-DD). |
legalNature | string | Legal nature (natureza jurídica). |
companySize | string | Company size band, for example ME, EPP, DEMAIS. |
shareCapital | number | Registered share capital in BRL. |
mainActivityCode | string | Main activity CNAE code. |
mainActivity | string | Main activity description. |
secondaryActivities | object[] | Secondary activities, each { code, description }. |
headquartersOrBranch | string | MATRIZ (headquarters) or FILIAL (branch). |
street | string | Street type and name. |
number | string | Street number. |
complement | string | Address complement, or null. |
district | string | District / neighborhood (bairro). |
city | string | City (município). |
state | string | Two-letter state code (UF). |
zipCode | string | Postal code (CEP), digits only. |
phone | string | Primary phone, digits only. |
phone2 | string | Secondary phone, or null. |
fax | string | Fax number, or null. |
email | string | Registered email, or null. |
isSimplesNacional | boolean | Whether the company opted into Simples Nacional. |
simplesNacionalSince | string | Simples Nacional opt-in date, or null. |
isMEI | boolean | Whether the company is registered as MEI. |
meiSince | string | MEI opt-in date, or null. |
taxRegime | string | Latest known tax regime (forma de tributação), or null. |
taxRegimeYear | integer | Year of the latest tax regime, or null. |
taxRegimeHistory | object[] | Tax regime by year, each { year, taxation }. |
specialStatus | string | Special status (situação especial), or null. |
specialStatusDate | string | Special status date, or null. |
responsibleQualification | string | Qualification code of the responsible person. |
ibgeCode | string | IBGE municipality code. |
stateRegistrations | object[] | State registrations, each { number, state, active }. |
partners | object[] | Partners and shareholders (QSA), each { name, role, entryDate, ageRange, country, legalRepresentative, taxId }. |
partnerCount | integer | Number of partners in partners. |
source | string | Data source label (Brazil CNPJ Registry). |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
cnpjRoot | string | First 8 digits of the CNPJ (company root shared across branches). |
branchNumber | string | Branch order number (digits 9 to 12). |
isHeadquarters | boolean | true when the branch number is 0001. |
ageYears | integer | Whole years since startDate, or null. |
startDateISO | string | Start date normalized to YYYY-MM-DD. |
isActive | boolean | true when the status contains ATIVA. |
fullAddress | string | Single-line postal address, ready for CRM or mapping. |
phones | string[] | Phones normalized to +55 E.164 form. |
aiCompanySummary | string | AI business summary when the add-on is enabled, else null. |
aiRiskFlags | string[] | AI KYB risk flags when the add-on is enabled, else null. |
aiRiskLevel | string | AI risk level (low/medium/high) when enabled, else null. |
aiIndustry | string | AI industry label when the add-on is enabled, else null. |
aiIndustryCode | string | AI industry code when the add-on is enabled, else null. |
Companies that are not found return a record with notFound: true; requests that error return a record with a populated error field. Neither is charged.
Example output record
Real record from a live run (input {"cnpjNumbers": ["00000000000191"]}, partners trimmed to 2 of 41 for length):
{"cnpj": "00.000.000/0001-91","cnpjDigits": "00000000000191","legalName": "BANCO DO BRASIL SA","tradeName": "DIRECAO GERAL","registrationStatus": "ATIVA","registrationStatusReason": "SEM MOTIVO","startDate": "1966-08-01","legalNature": "Sociedade de Economia Mista","companySize": "DEMAIS","shareCapital": 120000000000,"mainActivityCode": "6422100","mainActivity": "Bancos múltiplos, com carteira comercial","headquartersOrBranch": "MATRIZ","city": "BRASILIA","state": "DF","zipCode": "70040912","phone": "6134939002","fax": "6134931040","isSimplesNacional": false,"isMEI": false,"taxRegime": "LUCRO REAL","taxRegimeYear": 2024,"partners": [{ "name": "TARCIANA PAULA GOMES MEDEIROS", "role": "Presidente", "entryDate": "2023-01-26", "ageRange": "Entre 41 a 50 anos", "country": null, "legalRepresentative": null, "taxId": "***128734**" },{ "name": "MARCO GEOVANNE TOBIAS DA SILVA", "role": "Diretor", "entryDate": "2023-03-22", "ageRange": "Entre 51 a 60 anos", "country": null, "legalRepresentative": null, "taxId": "***225791**" }],"partnerCount": 41,"isHeadquarters": true,"ageYears": 60,"isActive": true,"fullAddress": "QUADRA SAUN QUADRA 5 BLOCO B TORRE I, II, III, SN, ..., ASA NORTE, BRASILIA, DF, 70040912","phones": ["+556134939002"],"source": "Brazil CNPJ Registry","observedAt": "2026-08-14T05:43:53.340Z"}
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~brazil-cnpj-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"cnpjNumbers":["00000000000191","19131243000197"],"maxCompanies":10}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~brazil-cnpj-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"cnpj":"00000000000191"}'
Apify CLI:
apify call scrapers_lat/brazil-cnpj-scraper \--input '{"cnpjNumbers":["19131243000197"]}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per company record returned (
resultevent). See the pricing tab for the current per-result price. - No charge on failure. If a lookup errors or the CNPJ is not found, the actor writes a record with an
errorornotFoundflag and does not charge for it. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 records per run. Upgrade for higher
maxCompanies. - AI add-ons require a paid Apify plan and are billed per record only when they return usable output.
FAQ and troubleshooting
Which CNPJ formats are accepted?
Both digits only (00000000000191) and formatted (00.000.000/0001-91). The actor strips punctuation and keeps only valid 14-digit numbers.
A CNPJ returned notFound. Why?
The number is not present in the registry (mistyped, or never issued). Not-found lookups are not charged.
Do I get the partners and shareholders?
Yes. The partners array lists the QSA (quadro de sócios e administradores) with each person's name, role, entry date, and age range when the registry exposes them. partnerCount gives the total.
How do I look up a whole company group?
Look up each branch CNPJ. All branches of a company share the same cnpjRoot (first 8 digits); isHeadquarters is true for the 0001 branch.
Do I need the AI add-ons? No. They are off by default and require a paid Apify plan. The core registry, contact, and partner fields are always returned without them.
Is this an official government tool? No. This actor is independent and has no affiliation with the Brazilian government or Receita Federal. It reads only publicly available CNPJ registry data.
Related scrapers
- Argentina Companies Scraper: Argentine company records by CUIT with registration details.
- Mexico Companies Directory Scraper: Mexican company directory records.
- Chile Companies Registry Scraper: Chilean company registry records.
- Colombia RUES Scraper: Colombian company registry (RUES) records.
- GLEIF LEI Company Records Scraper: Global Legal Entity Identifier records.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Independent tool, not affiliated with the Brazilian government or Receita Federal. Accesses only publicly available CNPJ registry data.
