# Changelog of Inmuebles24 Monitor (`datamech/inmuebles24-monitor`) Actor

- **URL**: https://apify.com/datamech/inmuebles24-monitor/changelog.md
- **Full Actor documentation**: https://apify.com/datamech/inmuebles24-monitor.md

## Changelog

### 1.0.5

- Decodifica entidades HTML (`&sup2;`, `&aacute;`, `&ntilde;`, `&amp;`, `&#243;`, `&nbsp;`, etc.) en los campos de texto del dataset (`title`, `description`, `address`, `location`, `agencyName`, `publishedText`, `propertyType`, `phone`, `operation`) tanto en el listado HTTP como en la ficha (`includeDetails` / `propertyUrls`). Recorta espacios repetidos y `&nbsp;` residuales.

### 1.0.3

- Modo `propertyUrls`: parsea la ficha real de Inmuebles24 (`avisoInfo`, `publisher`, `pictures`, `mapLatOf`/`mapLngOf` en base64, `antiquity`, JSON-LD). Rellena address, agencyName, description, lat, lng, phone, photoCount y publishedAt.
- `RUN_SUMMARY.detailFieldsMissing`: suma de esos 7 campos que siguen vacíos en los avisos cobrados.

### 1.0.2

- Modo `propertyUrls` / ficha: cada item emite **todas** las llaves del dataset schema (`address`, `lat`, `lng`, `description`, `phone`, `photoCount`, `agencyName`, etc.); `null` si el HTML/JSON no las trae.
- `publishedText` se limpia de comillas sobrantes (`hace 37 días'` → `hace 37 días`).
- Se quitó `views`: Inmuebles24 no lo publica en el HTML HTTP (solo JS en el navegador).
- `includeDetails: true` ya no abre todas las fichas: pide la ficha HTTP solo si falta address/lat/lng/photoCount/agencyName, reutiliza sesión/cookies y no usa navegador salvo Cloudflare. Más lento que el listado; objetivo operacional <$0.60/1,000.

### 1.0.1

- `propertyUrls` solo ya no dispara la búsqueda de ejemplo (se quitó `default` de `searchUrls`; el ejemplo solo aplica si ambos arrays están vacíos).
- `description` se llena desde JSON/tarjeta del listado; el texto de la ficha requiere `includeDetails: true`.
- `views` se lee de `N visualizaciones` en la tarjeta (y del JSON si existe). `publishedText` es siempre relativo (`hace X días`); `publishedAt` queda en ISO.

### 1.0.0

- Extracción desde las **tarjetas / JSON embebido del listado** (~30 avisos por página): precio, moneda, m², recámaras, baños, estacionamientos, ubicación, agencia, miniatura, publicación y vistas.
- Nuevo `includeDetails` (default `false`): las fichas solo se visitan si se pide.
- **HTTP primero** (Cheerio / got-scraping). Busca `__PRELOADED_STATE__` o la API interna de Navent. Paginación `-pagina-N.html`.
- Chromium solo como fallback ante Cloudflare: bloquea imágenes/fuentes/media y reutiliza cookies.
- Concurrencia 3–5 con session pool. `actor.json`: `defaultMemoryMbytes` 512, `minMemoryMbytes` 256, timeout default 3600 s.
- Input vacío (`{}`) usa `https://www.inmuebles24.com/casas-en-venta-en-culiacan.html` y 10 avisos (prefill + default en INPUT_SCHEMA).
- Cobro 1:1: un `pushData` / evento `apify-default-dataset-item` por aviso **completo**. Nada por incompletos o bloqueados.
- Campos extra: `lat`, `lng`, `photoCount`, `publishedAt` (ISO), `address`, `description`; `phone` solo si es visible sin login. En terrenos `bathrooms` y `parkingSpaces` son `null`.
- `RUN_SUMMARY` en el KV default (`ok`, `blocked`, `incomplete`, `charged`, `pages`, `proxyType`, `residentialMB`, `durationMs`).
- Parada ordenada en `eventChargeLimitReached` y ~90 s antes del timeout.
- Tests con fixtures de listado, ficha y bloqueo Cloudflare.

### 0.9.4

- Versión inicial: Playwright por ficha, concurrencia baja, proxies residenciales.
