🇵🇪 Perú · fuente pública
SUNAT: ciiu
Padrón RUC completo — a diferencia del padrón reducido (pe-sunat-padron), trae la actividad económica (CIIU) principal y secundaria, nº de trabajadores, condición de comercio exterior, tipo de contribuyente y sistema de contabilidad.
Cobertura publicada
- Registros
- 904,451
- Última actualización
- 20 set. 2026
- Frecuencia
- monthly
- Frescura
- CURRENT
- Identificador
ruc- Búsqueda por nombre
- Disponible
Conteo y frescura consultados desde api.latinfo.dev/sources durante el build del 2026-09-28.
Fuente primaria
- Institution: SUNAT — Superintendencia Nacional de Aduanas y de Administración Tributaria (publicado vía Plataforma Nacional de Datos Abiertos, PCM)
- Data: Padrón RUC completo — a diferencia del padrón reducido (
pe-sunat-padron), trae la actividad económica (CIIU) principal y secundaria, nº de trabajadores, condición de comercio exterior, tipo de contribuyente y sistema de contabilidad. - Format: CSV
,-delimitado, latin1, dentro de un ZIP (~255 MB comprimido, ~3.5 GB expandido), 16 columnas con header. - Registered: sí — datosabiertos.gob.pe, dataset "Padrón RUC SUNAT". Descarga oficial diseñada para distribución (sin auth, sin CAPTCHA).
Cómo se procesa
- Pipeline: script custom (
src/imports/pe-sunat-ciiu.ts), patrónpe-oefa-sanctions+ helpers de easypipe. - Auto-discovery de URL mensual:
resolveLatestUrl()consulta el endpoint CKAN, recorreresult.resources[], matcheaPadronRUC_(\d{6})y elige elYYYYMMmayor. No hay URL hardcodeada → cuando SUNAT publica el mes nuevo, el import lo toma solo. - Descarga:
downloadVerifiedconUser-Agentde browser (datosabiertos está tras CloudWAF y rechaza UAs no-browser). - Parse: lee el CSV como
latin1directo vía readline stream (evita iconv sobre 3.5 GB). Descarta header y filas con<16columnas. - Filtro jurídicas:
^20\d{9}$. Se excluyen además los RUC enNATURAL_PERSON_20_DENYLIST(src/compliance.ts) — 11 personas naturales con RUC 20\* legacy (cola de los 90s) verificadas por razón social. - ⚠ NO se filtra por la columna
Tipodel CSV (col 3): es no confiable, mal-etiqueta como "PERSONA NATURAL CON NEGOCIO" a 23 empresas reales (S.A.C./E.I.R.L. con RUC nuevo 204-206xx). Filtrar porTipobloqueó esas 23 empresas (bug 2026-06-03, ej. ALTEC S.A.C., MERCADO PET). La señal confiable es la razón social del padrón reducido. - Transformaciones:
clean()colapsa whitespace y mapeaNO DISPONIBLE→''.ciiu_principalusa rev4 con fallback a rev3 (clean(c[6]) || clean(c[4])). - Build: sort por RUC →
buildBinaryFiles(sharded) →buildSearchIndexsobreciiu_principal(searchFieldIndex 1 = posición en el array de fields servidos) → MPHF →uploadWithManifest. - Prefijo de índice:
prefix_length: 5. Debe mantenerse alineado con el.idxpublicado; subirlo a 6 requiere reimportar la fuente completa antes de desplegar runtime. - Lake: el mismo TSV canónico produce
pe_company_activityen Parquet, con raw ZIP content-addressed y manifest atómico. - Single-record por RUC. Lookup en
/pe/sunat/ciiu/ruc/:id. - Universal profile:
/v1/companies/PE/:rucconsulta esta fuente en paralelo
con el padrón reducido. El texto principal se resuelve contra pe-inei-ciiu para entregar el código CIIU Rev. 4 y el label oficial ISIC en inglés cuando existe un match verificable. Una falla de este enriquecimiento no bloquea la identidad.
Campos publicados
Columnas del CSV upstream (0-indexed, con header) y su mapeo al binario:
| Col CSV | Campo (upstream) | Field (binario) | Type | Example | Notes |
|---|---|---|---|---|---|
| 0 | RUC | ruc | string(11) | 20100075009 | Primary ID (solo 20\*) |
| 3 | Tipo Contribuyente | tipo_contribuyente | string | SOCIEDAD ANONIMA CERRADA | ⚠ no confiable como señal natural/jurídica |
| 6 → 4 | Actividad CIIU rev4 / rev3 Principal | ciiu_principal | string | CONSULTORIA DE INFORMATICA... | Searchable. rev4 con fallback rev3 |
| 4 | Actividad CIIU rev3 Principal | ciiu_r3_principal | string | CONSULTORES PROGRAMAS Y SUMINISTROS INFORMATICOS | rev3 cruda |
| 5 | Actividad CIIU rev3 Secundaria | ciiu_secundaria | string | ALQUILER OTROS TIPOS MAQUINARIA... | puede estar vacío |
| 7 | Nº Trabajadores | nro_trabajadores | string | 241 | declarado a SUNAT |
| 10 | Comercio Exterior | comercio_exterior | string | IMPORTADOR/EXPORTADOR | SIN ACTIVIDAD / IMPORTADOR / EXPORTADOR / IMPORTADOR/EXPORTADOR |
| 9 | Tipo Contabilidad | sistema_contabilidad | string | COMPUTARIZADO | MANUAL / COMPUTARIZADO / MANUAL/COMPUTARIZADO |
| 1 | Estado | estado | string | ACTIVO | mismo dominio que pe-sunat-padron |
| 2 | Condición | condicion | string | HABIDO | HABIDO / NO HABIDO / ... |
| 12 | Departamento | departamento | string | LIMA | nombre (el padrón reducido solo da ubigeo) |
| 13 | Provincia | provincia | string | LIMA | nombre |
| 14 | Distrito | distrito | string | LA MOLINA | nombre |
| 11 | UBIGEO | ubigeo | string(6) | 150114 | código INEI |
13 campos servidos + ruc. Columnas CSV no servidas: 8 (TipoFacturacion), 15 (PERIODO_PUBLICACION).
Solapamiento con pe-sunat-padron
estado, condicion, ubigeo y ruc se solapan con pe-sunat-padron (mismo origen SUNAT). Se sirven igual para que el record sea auto-contenido en una sola llamada API. La card de /lookup los oculta para no duplicarlos visualmente — muestra solo lo exclusivo de esta fuente (CIIU, nº trabajadores, comercio exterior, tipo, contabilidad, nombres de depto/prov/distrito). Lo único de pe-sunat-padron: razón social + dirección de calle (tipo vía, número, etc.).
Limitaciones conocidas
- Columna
Tipono confiable: mal-etiqueta 23 empresas reales como "PERSONA NATURAL CON NEGOCIO". No usarla como señal de filtro (ver How it works). La denylist se mantiene a mano (11 RUC verificados por razón social); regenerarla requiere cruzarTipo=PERSONA NATURALcontra la razón social del padrón reducido y quedarse con los sin sufijo societario. - CIIU rev3 vs rev4: SUNAT está migrando de la revisión 3 a la 4 del CIIU.
ciiu_principalprefiere rev4 y cae a rev3 si rev4 está vacío. Se conservaciiu_r3_principalcrudo para trazabilidad. ciiu_secundariafrecuentemente vacío: muchas empresas declaran solo actividad principal.- Campos vacíos:
NO DISPONIBLEdel upstream se normaliza a string vacío. Una empresa puede traer CIIU vacío si SUNAT no lo registró. - Estados no-ACTIVO incluidos: política Latinfo = devolver todo (no filtrar por estado). Cliente filtra si quiere.
Estado de revisión y alcance
No se publica todavía una opinión jurídica específica aprobada para esta fuente. La ficha documenta procedencia y transformaciones; Latinfo limita su producto a entidades jurídicas.
Latinfo no está afiliado, certificado ni respaldado por la institución de origen. Para decisiones formales, verifica la evidencia en la fuente primaria. Consulta Privacidad y Términos.