🇧🇷 Brasil · fuente pública

Receita Federal: cnpj

CNPJ — padrón completo de personas jurídicas inscritas en Brasil, todos los estados (Ativa, Baixada, Inapta, Suspensa, Nula). EI/MEI (natureza_jurídica 2135) excluidos por política jurídicas-only de Latinfo.

01 · origenReceita Federal do Brasil — Ministério da FazendaURL primaria
02 · procesoValidación y normalizaciónSin inferir datos ausentes
03 · evidenciaAPI con procedenciaFuente y fecha identificables

Cobertura publicada

Registros
27,313,523
Última actualización
01 ago. 2026
Frecuencia
monthly
Frescura
DELAYED
Identificador
cnpj
Búsqueda por nombre
No publicada

Conteo y frescura consultados desde api.latinfo.dev/sources durante el build del 2026-09-28.

Fuente primaria

Cómo se procesa

El dataset está partido en dos tipos de archivo que deben unirse por CNPJ_BASICO (8 dígitos):

Flujo (src/imports/br-receita-cnpj.ts):

  1. Descargar los 10 ZIPs de Estabelecimentos vía WebDAV y emitir TSV: cnpj_basico \t cnpj_14 \t situacao \t nome_fantasia \t uf \t municipio \t cnae_principal → estab.tsv.
  2. Sort externo por cnpj_basico → estab-sorted.tsv.
  3. Descargar los 10 ZIPs de Empresas.
  4. Parsear CSV con soporte de delimitadores, comillas y saltos de línea dentro de campos; emitir TSV: cnpj_basico \t razao_social \t natureza_juridica → empresas.tsv.
  5. Sort externo por cnpj_basico → empresas-sorted.tsv.
  6. En Gate 1, tomar 500 establecimientos y buscar únicamente sus empresas correspondientes; la sobremuestra compensa la exclusión de EI/MEI y debe producir al menos 100 sociedades. El import completo procesa ambos padrones íntegros.
  7. Streaming merge-join (inner join) por cnpj_basico:
  1. Sort por cnpj_14 → sorted.tsv.
  2. buildBinaryFiles() → .bin (12 shards × ~201 MB) + .idx (1.5 MB, prefix 5).
  3. buildSearchIndex() V3 + buildMphfFromIdx() y uploadWithManifest() a R2 mediante swap atómico.

Los ZIP validados se cachean en Mint bajo un directorio separado por mes. Los gates posteriores reutilizan el mismo snapshot, mientras que una publicación mensual nueva usa otra ruta y no puede mezclar archivos. El import completo predescarga hasta cuatro ZIP simultáneamente; cada archivo usa rangos HTTP de ~64 MB y se verifica por tamaño, ETag y CRC antes de parsearse. El miembro CSV se enumera con unzip -Z1: el importer exige exactamente un .EMPRECSV o .ESTABELE seguro y lee esa ruta, sin depender del mtime de extracciones anteriores.

El merge-join streaming opera sobre archivos ya ordenados, sin cargar en memoria. Necesario porque V8 cap a ~2^24 (~16.7M entradas en Map) es insuficiente para 71M registros.

Campos publicados

FieldTypeExampleNotes
cnpjstring(14)00000000000191Primary ID. Las 12 primeras posiciones admiten números/letras y las 2 últimas son dígitos verificadores. Solo personas jurídicas.
razao_socialstringBANCO DO BRASIL SARazón social según Receita Federal
situacaostringATIVAStatus — valores: ATIVA, BAIXADA, INAPTA, SUSPENSA, NULA
nome_fantasiastringBANCO DO BRASILNombre de fantasía (puede estar vacío)
ufstring(2)DFEstado (UF) de la sede
municipiostring9701Código oficial de municipio publicado por Receita. No se presenta como nombre sin cruzarlo con el catálogo oficial correspondiente.
cnae_principalstring6422100Código CNAE de la actividad económica principal

Limitaciones conocidas