Brazil Company Finder (CNPJ, English industry labels) avatar

Brazil Company Finder (CNPJ, English industry labels)

Pricing

$3.00 / 1,000 company results

Go to Apify Store
Brazil Company Finder (CNPJ, English industry labels)

Brazil Company Finder (CNPJ, English industry labels)

Search every active Brazilian company (CNPJ) by industry (CNAE), state, city, size, age and share capital. Pre-cleaned Receita Federal data with English CNAE labels, HTTP-verified websites and an accountant-contact filter. No 25 GB raw download.

Pricing

$3.00 / 1,000 company results

Rating

0.0

(0)

Developer

LatSouth Data

LatSouth Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Brazil Company Finder: every active Brazilian company (CNPJ), filterable, in English

Search 10.6 million active Brazilian companies and branches by industry, state, city, size, age and share capital. You get clean records with English industry labels, an HTTP-verified website, the registered phone and e-mail, and a filter that removes accountant contacts. No 25 GB government download, no Portuguese codebook, no ETL.

Built from the official open-data release of Brazil's federal tax authority (Receita Federal, Cadastro Nacional da Pessoa Jurídica). It is the same registry that powers every Brazilian B2B list, already cleaned and indexed.

Who it's for

  • Sales and SDR teams going into Brazil who need an account list by industry and region: "software companies in São Paulo with a corporate website", "dental clinics in Minas Gerais opened since 2022".
  • Market sizing and TAM analysis: every run reports total_matching, the number of companies that match your filters, even if you only pull a sample.
  • Data enrichment: start from a CNPJ list in a CNAE (industry) segment and feed it to your enrichment waterfall or CRM.

Why not just download the raw Receita dump?

Raw Receita open dataThis actor
Size~7 GB of zips that unpack to ~25 GB of CSV, which you then have to joinQuery in seconds, pay per row
Format30 unnamed columns, latin-1, ;-separated, split across shardsNamed English fields, JSON/CSV/Excel
Industry codesCodes only, with Portuguese labels in a separate tablecnae_label_en in English, plus division and section in English, and the Portuguese original
StatusActive, suspended, closed and void companies all mixed togetherActive companies only (situação cadastral 02)
Individual entrepreneurs / MEIIncluded, with personal names and CPF numbersExcluded (only legal entities are kept)
WebsiteNot providedwebsite: the corporate e-mail domain, checked over HTTP (live, not parked, not for sale), with the check date. The unchecked website_guess is kept too
Accountant contactsMany companies register their accountant's e-mail/phone, so you end up calling the accountantis_likely_accountant_contact flag, excluded by default
PhonesDDD and number in separate fields, mixed formatsNormalized +55DDNNNNNNNN

Input examples

Software companies in São Paulo with a verified website

{
"cnae_divisions": ["62"],
"states": ["SP"],
"only_with_verified_website": true,
"max_results": 500
}

New dental clinics in Minas Gerais and Rio de Janeiro (opened since 2023), head offices only

{
"cnae_codes": ["8630504", "8630505"],
"states": ["MG", "RJ"],
"opened_after": "2023-01-01",
"headquarters_only": true
}

Logistics companies with at least BRL 1M share capital, matched by keyword

{
"keyword": "freight",
"min_share_capital": 1000000,
"company_size": ["other"],
"sort_by": "share_capital_desc"
}
FieldWhat it does
cnae_divisions2-digit CNAE divisions of the main activity (62 = IT services, 47 = retail, 86 = health...)
cnae_codes7-digit CNAE subclasses (6201501 or 6201-5/01), or shorter prefixes
include_secondary_cnaesAlso match companies that have the code as a secondary activity
keywordSubstring in the English activity label or the legal/trade name
states, citiesState (UF) codes and city names (accents optional)
company_sizemicro, small, other (Receita porte)
opened_after, opened_beforeOpening date range
min_share_capitalMinimum declared share capital (BRL)
only_with_verified_websiteOnly companies whose website passed the HTTP check (see field notes)
only_with_website, only_with_email, only_with_phoneContact completeness filters (only_with_website = has a website_guess, checked or not)
exclude_accountant_contactsDefault true. Leaves out companies whose contact is an accountant's
headquarters_onlyOnly head offices (matriz), no branches
sort_byshare_capital_desc (default), opening_date_desc, opening_date_asc, cnpj
max_resultsDefault 1000

Output sample

Illustrative rows. The companies, names and contacts below are made up.

[
{
"cnpj": "12345678000190",
"cnpj_root": "12345678",
"is_headquarters": true,
"legal_name": "EXEMPLO SISTEMAS LTDA",
"trade_name": "EXEMPLO TECH",
"legal_nature_code": "2062",
"legal_nature": "Limited liability company (Ltda.)",
"company_size": "small",
"share_capital_brl": 250000.0,
"opening_date": "2019-03-14",
"cnae_code": "6202300",
"cnae_label_en": "Development and licensing of customizable software",
"cnae_label_pt": "Desenvolvimento e licenciamento de programas de computador customizáveis",
"cnae_division": "62",
"cnae_division_en": "Information technology services (software development and IT consulting)",
"cnae_section": "J",
"cnae_section_en": "Information and communication",
"secondary_cnaes": ["6204000", "6209100"],
"state": "SP",
"city": "CAMPINAS",
"zip": "13000000",
"address": "RUA EXEMPLO, 100 - SALA 1 - CENTRO",
"phone": "+551930000000",
"email": "contato@exemplotech.com.br",
"email_domain": "exemplotech.com.br",
"website_guess": "https://exemplotech.com.br",
"website": "https://www.exemplotech.com.br/",
"website_verified": true,
"website_checked_at": "2026-10-22T14:40:05Z",
"is_likely_accountant_contact": false,
"data_as_of": "2026-10-10"
}
]

The run's key-value store OUTPUT record holds total_matching (all companies matching your filters), pushed, data_as_of of the release that was queried, and whether the run stopped at your spending limit.

Field notes

  • website_guess is https:// plus the domain of the registered e-mail, and only when that domain is corporate. Free-mail and ISP domains (Gmail, Hotmail/Outlook, Yahoo, UOL, BOL, Terra, IG, Globo, iCloud...), their typos, domains with accounting wording, and generic domains shared by many unrelated companies are never used. About 14% of all rows have one. On its own it is unchecked.
  • website / website_verified / website_checked_at: how "verified" works, exactly. Every distinct website_guess domain is checked by an automated script: DNS lookup of the domain (then www.), an HTTP GET to https://<domain>/, then http://<domain>/, then https://www.<domain>/ if the bare domain refuses connections. Up to 5 redirects are followed, with an 8-second timeout per request. Answers of 400 or above get one retry with a regular-browser TLS fingerprint, because many sites block scripts. website_verified is true only when the final answer is HTTP 2xx or 3xx and the first 64 KB of the page don't look like a parked, for-sale, suspended, expired, "under construction" or hosting / web-server default page (title and body patterns, plus redirects to domain marketplaces). website is then the final URL after redirects. It can be on another domain when the company forwards its e-mail domain to a brand site. Otherwise website is null and website_verified is false (dead DNS, no answer, 4xx/5xx, parked page, or not checked yet). website_checked_at (UTC) is when the check ran. Checks are redone every 90 days, and a check older than 90 days when the dataset is built counts as unchecked. The dataset is rebuilt monthly, so a check is at most about 4 months old when you read it. Verified means the site answered at that time. It doesn't mean it is still up today, and it says nothing about the e-mail inbox.
  • is_likely_accountant_contact is true when the same e-mail is registered for more than 4 unrelated companies (different CNPJ roots), the same phone for more than 5, the e-mail looks like an accounting firm's, or the e-mail domain belongs to an accounting firm. In Brazil the accountant often files the registration and puts in their own contact details. About 38% of rows are flagged. The exact rule is documented in the pipeline that builds the data.
  • company_size is the Receita porte: micro (ME), small (EPP), other (everything above EPP). It is null when it wasn't informed.
  • phone is the first valid company phone, in +55 + area code + number format. No digits are added. Older 8-digit mobile numbers are left as registered.

Data freshness

Data comes from the Receita Federal open-data release dated 2026-10-10 (published 2026-10-13). Receita publishes a new release monthly, and this dataset is rebuilt from it; the actor always reads the latest published release. Every row carries data_as_of, and the run log and OUTPUT record show it too. Website checks have their own date, website_checked_at.

Privacy and LGPD

This actor returns company data only, as published by the Brazilian government as open data:

  • Individual entrepreneurs (empresário individual, including MEI) and the other natural-person legal natures (rural producer, individual real-estate enterprise, electoral candidate) are excluded.
  • No shareholder or partner data (QSA), no CPF numbers. CPF-like digit runs at the end of company names are stripped.
  • Contact fields are the company's registered contact details.

You are responsible for using the data lawfully in your jurisdiction. That includes LGPD and anti-spam rules for outreach, and honouring opt-out requests.

Pricing

Pay per event:

EventWhen it's chargedPrice
company-resultOnce per company row returned in the dataset$X.XX per 1,000 results (placeholder)

Set a maximum cost per run in Apify and the actor stops pushing rows when it's reached. You only pay for rows you actually receive.

FAQ

Can I get every company in a segment? Yes. Set max_results high enough, or run once per state. total_matching in OUTPUT tells you how many there are.

Why are some well-known companies missing a website? They registered a free-mail or accountant e-mail with Receita. The company is still returned, just with website_guess and website empty.

Why is website_guess set but website null? The domain failed the check: no DNS, no answer, an error page, or a parked/for-sale/under-construction page. Or it hasn't been checked yet (website_checked_at is null).

Can I look up specific CNPJs? Not in this version. Use the industry and location filters.