Permisos de Edificación
Viviendas autorizadas en unidades y superficie (m²) por comuna y año —total, casas y departamentos— desde las estadísticas de permisos de edificación del Centro de Estudios de Ciudad y Territorio (CEDOC) del MINVU. Serie anual desde 2002.
Fuente y licencia
- Fuente: MINVU — Centro de Estudios de Ciudad y Territorio (CEDOC), en base a permisos otorgados por las Direcciones de Obras Municipales e INE
- Formato de origen: 1 XLSX ("Viviendas unidades y superficie según año y comuna", 6 hojas: número/m² × total/casas/departamentos)
- Reutilización: uso autorizado citando la fuente (política del CEDOC desde 2023)
- URL: https://centrodeestudios.minvu.gob.cl/repositorio/categoria/permisos-de-edificacion
Modo de extracción (monthly)
El archivo se sirve desde catalogo.minvu.cl, que bloquea a los runners de
GitHub (medido 2026-09-25): el TCP conecta pero el handshake TLS se corta para
todos los clientes probados — curl/requests (OpenSSL), curl_cffi (Firefox,
Safari, Chrome, Edge, Tor) y browsers stealth de scrapling
(StealthyFetcher/DynamicFetcher). Es filtrado por IP de origen, no por
fingerprint: ninguna librería cliente lo sortea.
Por eso el extractor reutiliza un snapshot crudo versionado en
data/raw/minvu_permisos_edificacion_anual_*.xlsx y lo publica con
source_mode: monthly (fuente genuina no re-fetcheada en cada build diario,
mismo contrato que finanzas_municipales). La frescura usa la fecha del
snapshot (política de 1080 h); si la descarga live vuelve a funcionar desde el
runner, el modo regresa solo a live. Para refrescar el snapshot desde una red
sin bloqueo: python src/extractors/permisos_edificacion_extractor.py y
commitear el XLSX nuevo en data/raw/.
Esquema
anio, codigo_region, codigo_comuna, nombre_comuna, unidades_total, superficie_m2_total, unidades_casas, superficie_m2_casas, unidades_departamentos, superficie_m2_departamentos, estado_dato (definitivo | provisional), fuente, url_fuente, fecha_fuente
Grano: una fila por (año, comuna). unidades_total es siempre la suma exacta de casas + departamentos (igual en superficie); la validación lo exige como invariante.
Uso
from chile_hub import ChileHub
import polars as pl
hub = ChileHub()
df = hub.load_polars("permisos_edificacion")
# Actividad constructora por comuna 2023 (proxy de dinamismo local)
top = df.filter(pl.col("anio") == 2023).sort("unidades_total", descending=True).head(10)
print(top)
SELECT anio, sum(unidades_total) AS viviendas_autorizadas
FROM 'data/normalized/permisos_edificacion.parquet'
GROUP BY 1 ORDER BY 1;
Limitaciones
- Solo vivienda residencial: cubre casas y departamentos autorizados; no incluye edificación no habitacional (industria, comercio, servicios). Para actividad constructora total, complementar con INE.
- Intención de construir, no construcción efectiva: el permiso mide la intención (Formulario Único de Edificación); una fracción no se ejecuta o se ejecuta años después.
- Años provisionales: los años marcados
(*)en la fuente y el último año de la serie (aún en curso) van conestado_dato = "provisional"y se revisan al alza en versiones siguientes. No mezclar con definitivos sin ponderar. - Serie histórica de Ñuble: las comunas de Ñuble aparecen bajo "Biobío" y bajo "Ñuble (ex-Biobío)" con series complementarias (corte 2018); el extractor las fusiona sumando. Los totales nacionales se reconcilian contra la fila "Total País" del archivo.
- Año parcial en curso: el último año trae datos a julio (~7 meses); comparar contra años completos subestima la actividad.
Registro de cambios
- v1 (2026-09-15): Primera versión. Serie 2002-2026, 346 comunas, cobertura total verificada contra totales nacionales del archivo.
Schema (auto-generado desde contracts/datasets/permisos_edificacion.schema.json)
| Columna | Tipo | Ejemplo | Requerida | Nota |
|---|---|---|---|---|
anio |
INTEGER |
2023 |
Sí | PK |
codigo_region |
VARCHAR(2) |
"13" |
Sí | — |
codigo_comuna |
VARCHAR(5) |
"13101" |
Sí | PK |
nombre_comuna |
VARCHAR |
"Santiago" |
Sí | — |
unidades_total |
INTEGER |
2451 |
Sí | — |
superficie_m2_total |
INTEGER |
187320 |
Sí | — |
unidades_casas |
INTEGER |
312 |
Sí | — |
superficie_m2_casas |
INTEGER |
24810 |
Sí | — |
unidades_departamentos |
INTEGER |
2139 |
Sí | — |
superficie_m2_departamentos |
INTEGER |
162510 |
Sí | — |
estado_dato |
VARCHAR |
"definitivo" |
Sí | — |
fuente |
VARCHAR |
"MINVU — Centro de Estudios de Ciudad y Territorio (CEDOC)" |
Sí | — |
url_fuente |
VARCHAR |
"https://catalogo.minvu.cl/cgi-bin/koha/opac-retrieve-file.pl?id=..." |
Sí | — |
fecha_fuente |
VARCHAR |
"2026-09-15" |
Sí | — |