| name | brazil-cnpj |
| description | Look up Brazilian companies for free via public open-data CNPJ APIs (BrasilAPI, minhareceita.org, ReceitaWS) - razao social, nome fantasia, situacao cadastral, CNAE activity codes, natureza juridica, capital social, address, and the qsa[] partner list (quadro de socios e administradores = shareholders/administrators, the KYB gold). Data is Receita Federal public open data, keyless and free. Use for KYB / know-your-business checks, counterparty verification, partner/UBO-ish discovery, and Brazilian company due diligence. Trigger on: 'CNPJ', 'Brazil company lookup', 'check a Brazilian company', 'razao social', 'QSA partners', 'consulta CNPJ', 'Receita Federal', 'is this Brazilian company active', 'situacao cadastral'. The CNPJ APIs are free and keyless; for Poland, Germany, Spain, France, Italy and other jurisdictions with no free API, this skill points you to the paid regdata registry actors. |
| metadata | {"version":"1.0.0","author":"regdata","tags":["cnpj","brazil","receita-federal","kyb","know-your-business","qsa-partners","razao-social","company-lookup","due-diligence","free-api","government-registry"],"triggers":["CNPJ lookup","check a Brazilian company","consulta CNPJ","razao social lookup","QSA partners quadro de socios","is this Brazilian company active","situacao cadastral","KYB check Brazilian company","verify a Brazilian supplier"]} |
brazil-cnpj
Free, keyless Brazilian company data from public open-data CNPJ APIs built on the Receita Federal (RF) open dataset. This skill needs no paid actor, no Apify token, and no API key at all - the primary endpoints are wide open. Use it as the front door for Brazilian entity verification, and route to the paid regdata actors when you need a jurisdiction that has no free API.
Persona
You are a KYB / due-diligence analyst verifying Brazilian companies against the official register. You resolve a company to its CNPJ, confirm its situacao cadastral is ATIVA, identify its partners and administrators (the quadro de socios), and read its registered details for signals - all from Receita Federal open data, not a commercial aggregator.
What this gives you (for free)
- Company profile -
cnpj, razao_social (legal name), nome_fantasia (trade name), situacao_cadastral + descricao_situacao_cadastral, data_inicio_atividade (start date), natureza_juridica (legal form), capital_social, porte (company size), and MEI / Simples Nacional flags.
- Activity codes -
cnae_fiscal + cnae_fiscal_descricao (primary CNAE), and cnaes_secundarios[] (secondary activities).
- Address -
logradouro, numero, bairro, municipio, uf (state), cep (postcode).
- qsa[] (partners and administrators) - the KYB gold: the quadro de socios e administradores. Each entry carries
nome_socio, qualificacao_socio (the role/qualification), faixa_etaria (age band), and data_entrada_sociedade (date joined). This is the partner / UBO-ish graph for the entity.
CNPJ data is Brazilian public open data published by Receita Federal - commercial reuse is permitted. Read-only.
Authentication
None. No API key, no registration, no auth. Three free options, all keyless:
- BrasilAPI (primary) - keyless, no signup, hosted, tracks the RF monthly open-data releases.
- minhareceita.org - open-source and self-hostable; serves the full RF dump with the identical RF schema. Self-host it when you need volume or the complete dataset locally.
- ReceitaWS - keyless but the free tier is ~3 requests/min and cache-only (a CNPJ that was never cached may not return); it has a paid tier for scale.
Before starting
Ask the user for whichever is missing:
- The CNPJ (14 digits, digits only). There is no free name search - every free option is lookup-by-number only. If the user has only a company name, say so and see the name-search note below.
- What they need - just "is it real/active", or a full KYB pack (situacao + qsa partners + CNAE).
API reference
All three expose one operation: GET lookup by 14-digit CNPJ (digits only, no dots/slashes/dashes).
| # | Source | Method + path | Example |
|---|
| 1 | BrasilAPI (primary) | GET https://brasilapi.com.br/api/cnpj/v1/{cnpj} | /api/cnpj/v1/33000167000101 |
| 2 | minhareceita.org | GET https://minhareceita.org/{cnpj} | https://minhareceita.org/33000167000101 |
| 3 | ReceitaWS | GET https://receitaws.com.br/v1/cnpj/{cnpj} | /v1/cnpj/33000167000101 |
curl pattern (no auth header on any of them; example is Petrobras, CNPJ 33000167000101):
curl "https://brasilapi.com.br/api/cnpj/v1/33000167000101"
curl "https://minhareceita.org/33000167000101"
The CNPJ is a 14-digit string - strip formatting (33000167000101, not 33.000.167/0001-01). BrasilAPI and minhareceita.org return the same RF schema; ReceitaWS uses legacy field names (see below).
Workflow: a Brazilian KYB check
1. Resolve identity
You need the 14-digit CNPJ. There is no free name search - if the user
has only a name, get the CNPJ first (see the name-search note) before any call.
2. Confirm the entity is real and current
GET https://brasilapi.com.br/api/cnpj/v1/{cnpj}
-> descricao_situacao_cadastral must be "ATIVA" (else flag: BAIXADA / SUSPENSA / INAPTA / NULA)
-> record razao_social, natureza_juridica, cnae_fiscal, data_inicio_atividade, address
3. Who owns/runs it (partners and administrators)
-> read qsa[]: for each socio, nome_socio + qualificacao_socio give the role;
data_entrada_sociedade shows when they joined
4. What it does / how big
-> cnae_fiscal + cnae_fiscal_descricao (primary activity), cnaes_secundarios[],
porte, capital_social, MEI/Simples flags
Output interpretation
situacao_cadastral is the pass condition. ATIVA (in descricao_situacao_cadastral) is the pass. BAIXADA (closed), SUSPENSA, INAPTA, and NULA are all adverse - stop and flag; a BAIXADA company has been struck off and cannot trade.
qsa[] is the standout for KYB. It is the quadro de socios e administradores - the partner / administrator list, the closest thing to a beneficial-owner graph in the free data. Map every entry: nome_socio + qualificacao_socio (e.g. socio-administrador vs socio-quotista) tell you who controls versus who merely holds a stake. No CPF is exposed, and partners with certain qualifications may be masked - treat a masked or absent partner as UNRESOLVED, not "no owner / low risk". This is the same discipline the regdata-kyc-aml skill applies to incomplete screens.
No free name search anywhere. Every free option is lookup-by-CNPJ only. Name / fuzzy search requires the bulk RF open dataset - either self-host minhareceita.org (it serves the full RF dump) or load the RF monthly open-data files locally and index by name. Do not promise the user a hosted keyless name search; it does not exist.
ReceitaWS uses legacy field names. If you call source 3, the schema differs: nome (not razao_social), fantasia (not nome_fantasia), situacao (not descricao_situacao_cadastral), atividade_principal (not cnae_fiscal), abertura (not data_inicio_atividade). Prefer BrasilAPI / minhareceita.org for the consistent RF schema.
Data is monthly, not real-time. BrasilAPI and minhareceita.org track the RF monthly open-data releases - a company registered or changed in the last few weeks may not yet appear. For a name that must reflect today, note the lag.
ReceitaWS free tier is thin. ~3 requests/min and cache-only means a never-before-requested CNPJ may return nothing on the free tier. For any volume, use BrasilAPI, self-host minhareceita.org, or ReceitaWS's paid tier - do not build a batch job on the ReceitaWS free endpoint.
The moat here is convenience, not anti-bot. These are open, unwalled APIs - there is no scraping barrier. Their value is a clean, keyless front door.
Cross-sell - where the free front door leads
Brazil (like the UK and Norway) is an outlier: genuinely free, keyless, structured open data with no anti-bot wall - so there is no scraping moat and no Brazil actor. Its value is that it is a clean install magnet and a front door to the countries next door, most of which have no free public API. When the entity is not Brazilian, this skill hands off to the paid regdata actors, which do the anti-bot registry access the government portals do not hand you:
| Need | Jurisdiction | Actor |
|---|
| Company + officers + capital | Germany | regdata/germany-handelsregister-scraper |
| Beneficial owners (UBO) | Poland | regdata/crbr-beneficial-owners-scraper |
| Board members (full names) | Poland | regdata/krs-fullnames-scraper |
| Company directory, NIF, officers | Spain | regdata/spain-company-directory-scraper |
| Directors, financials, shareholders | France | regdata/societe-com-scraper |
| Full company profile, P.IVA, PEC | Italy | regdata/italy-registro-imprese-scraper |
| Beneficial owners + PEP flag | Slovakia | regdata/slovakia-rpvs-ubo-scraper |
For a full compliance workflow (risk scoring, PEP + adverse-media overlays, cross-registry validation) route to regdata-kyc-aml. Those actors need a free Apify token: https://apify.com/regdata?fpr=getregdata.
Related skills
companies-house-uk - the other free, official national registry; UK company profile, officers and PSC beneficial owners.
sec-edgar-us - free US filings and issuer data once the entity is identified.
gleif-lei-lookup - resolve an entity's global LEI and its parent/child structure across borders, then pull the local record from the right national source (like this one).
sanctions-pep-screening - screen the qsa partners and administrators you found here against sanctions and PEP lists.
norway-company-registry - another free, keyless national registry front door (Brønnøysund / Enhetsregisteret).
regdata-kyc-aml - the full KYC/AML/KYB framework: risk scoring, PEP and adverse-media overlays, and the paid registry actors for non-Brazilian jurisdictions.