# Plusvalia Ecuador Real Estate Scraper & Monitor (`datamole/plusvalia-scraper`) Actor

Extract Plusvalía listings in Ecuador for rent and sale with price in dollars, alícuota, monthly cost, price per m², bedrooms, parking, GPS, WhatsApp and photos. Filter by sector, city, pool, BBQ, security, pets or direct owners, and track new listings and price drops.

- **URL**: https://apify.com/datamole/plusvalia-scraper.md
- **Developed by:** [DataMole](https://apify.com/datamole) (community)
- **Categories:** Real estate, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

![DataMole](https://raw.githubusercontent.com/YoiderD/datamole-assets/main/banner.png)

## 🏙️ Plusvalía Ecuador Real Estate Scraper & Monitor

> **Extrae propiedades de Plusvalía (alquiler y venta) con precio en dólares, alícuota, costo mensual total, precio por m², habitaciones, estacionamientos, GPS, WhatsApp del anunciante y fotos.** Filtra por sector, piscina, BBQ, guardianía, mascotas o dueño directo, y recibe solo las propiedades nuevas y las bajas de precio.

> 🕒 **Last updated:** 2026-10-20 · **50+ campos** por propiedad · **filtros reales de Plusvalía** · **todo Ecuador** (Quito, Cumbayá, Guayaquil, Samborondón, Cuenca...)

**Plusvalía Ecuador Real Estate Scraper** convierte las búsquedas de Plusvalía, el portal inmobiliario más grande de Ecuador, en una base de datos lista para analizar. Escribe sectores o ciudades como `Cumbayá`, `La Carolina`, `Samborondón` o `Guayaquil`, o pega una URL de búsqueda de plusvalia.com. Usa los mismos filtros que la web y puede **monitorear** una búsqueda para traerte solo lo nuevo.

| 🎯 Para quién | 💡 Para qué |
|---|---|
| Inversionistas, inmobiliarias y corredores, constructoras, peritos avaluadores, proptech | Estudios de mercado, precio por m² por sector, alertas de propiedades nuevas, captación de dueños directos, seguimiento de bajas de precio, comparables |

### 📋 Qué hace

- 💵 **Todo en dólares**, como el mercado ecuatoriano.
- 🧾 **Alícuota y costo mensual total:** en alquileres, `totalMonthlyCostUSD` suma alquiler + alícuota.
- 📐 **Precio por m²** sobre la superficie cubierta.
- 🛏️ **Habitaciones, baños, medios baños, estacionamientos, superficie cubierta y total, y antigüedad.**
- 📍 **GPS, dirección, sector, ciudad y provincia.**
- 📲 **WhatsApp del anunciante** cuando Plusvalía lo publica, sin costo extra.
- 🔎 **Todos los filtros reales de Plusvalía:**
  - Alquiler, venta, temporal/vacacional y traspaso.
  - 15 tipos de propiedad: suite, hacienda o quinta, parqueadero, proyecto vertical y más.
  - Precio, alícuota, habitaciones, baños, estacionamientos, superficie y antigüedad.
  - **Generales** (piscina, amoblado, ascensor, permite mascotas, vista al mar), **exteriores** (área de BBQ, canchas de pádel o tenis, piscina al aire libre), **servicios** (guardianía, control de accesos, gimnasio, generador eléctrico) y **ambientes** (suite, vestidores, sala comunal).
  - **Dueño directo**, fecha de publicación y multimedia.
- 🏗️ **Proyectos:** fecha de entrega, total de unidades y etapa.
- 📉 **Orden "Bajaron de precio"** y el % que bajó cada propiedad.
- 👀 **Modo monitoreo:** corre la misma búsqueda cada día y recibe solo las propiedades **nuevas** y las que **cambiaron de precio**.
- 🔍 **Detalle completo (opcional):** todas las comodidades, antigüedad, teléfono, dirección, descripción completa y fecha de publicación.

> ℹ️ **Plan gratis de Apify:** cada corrida devuelve una muestra de hasta 10 propiedades. Cualquier plan pago de Apify desbloquea todos los resultados.

### ⚙️ Input

| Campo | Qué hace |
|---|---|
| `locations` | Sectores, ciudades o provincias como aparecen en Plusvalía. |
| `operation` | `alquiler`, `venta`, `temporal-vacacional` o `traspaso`. |
| `propertyTypes` | Uno o varios de los 15 tipos de Plusvalía. |
| `searchUrls` | URLs de búsqueda de plusvalia.com con tus filtros aplicados. |
| `minPrice` / `maxPrice` | Rango de precio en USD. |
| `minHoaFee` / `maxHoaFee` | Rango de alícuota en USD. |
| `minBedrooms`, `minBathrooms`, `minParking`, `minArea`, `maxArea`, `antiquity` | Características. |
| `general`, `outdoor`, `services`, `roomTypes` | Filtros de comodidades del portal. |
| `publisherType`, `publishedWithin`, `multimedia`, `keyword`, `sort` | Anunciante (dueño directo), fecha, multimedia, palabra clave y orden. |
| `includeDetails` | Suma el detalle completo (costo adicional). |
| `monitorMode` / `monitorName` | Solo propiedades nuevas y cambios de precio entre corridas. |
| `maxItems` / `maxPagesPerSearch` | Límites de la corrida. |

**Ejemplo: departamentos en venta en Cumbayá con piscina y más de 150 m²**

```json
{
    "locations": ["Cumbayá"],
    "operation": "venta",
    "propertyTypes": ["departamento"],
    "general": ["piscina"],
    "minArea": 150
}
```

**Ejemplo: monitoreo diario de alquileres en Samborondón que permiten mascotas**

```json
{
    "locations": ["Samborondón"],
    "operation": "alquiler",
    "general": ["permite-mascotas"],
    "monitorMode": true
}
```

### 📊 Output

Propiedad real de una corrida (con detalle completo, listas acortadas):

```json
{
    "id": "151394440",
    "url": "https://www.plusvalia.com/propiedades/clasificado/veclapin-departamento-en-venta-en-la-comarca-cumbaya-151394440.html",
    "title": "Departamento en Venta en La Comarca, Cumbayá | Exclusividad, Amplitud y Confort",
    "operationType": "Venta",
    "propertyType": "Departamentos",
    "price": 429500,
    "currency": "USD",
    "hoaFee": 450,
    "pricePerM2USD": 2603,
    "coveredArea": 165,
    "totalArea": 242,
    "bedrooms": 3,
    "bathrooms": 3,
    "halfBathrooms": 1,
    "parking": 2,
    "ageYears": 9,
    "address": "Av. Pampite | Yoo Cumbayá",
    "sector": "Cumbayá",
    "city": "Quito",
    "province": "Pichincha",
    "latitude": -0.2740071,
    "longitude": -78.542455,
    "amenities": ["Ascensor: 2", "Jardín", "Cocina integral"],
    "hasVideo": true,
    "publisherName": "eXp Realty Ecuador",
    "publisherType": "Inmobiliaria",
    "whatsapp": "+593999936379",
    "publishedAt": "2026-10-19T17:43:22Z",
    "hasDetails": true
}
```

Sin detalle completo, cada propiedad igual trae precio, alícuota, superficies, habitaciones, GPS, WhatsApp, fotos y descripción. Las comodidades completas, el teléfono y la fecha de publicación llegan con `includeDetails`.

Campos que pueden venir vacíos:

- `hoaFee` cuando el anuncio no informa la alícuota.
- En proyectos, las superficies y habitaciones, porque varían por unidad. En ese caso vienen `developmentDelivery`, `developmentUnits` y `developmentStage`, y el precio es el "desde".
- El teléfono en anuncios que lo ocultan. El actor nunca devuelve números incompletos.

### ✨ Por qué este

- ✅ **Costo mensual real** (alquiler + alícuota) y **precio por m²** listos para comparar sectores.
- ✅ **WhatsApp incluido** en el resultado.
- ✅ **Todos los filtros de comodidades de Plusvalía** (más de 90 opciones reales del portal).
- ✅ **Monitoreo de propiedades nuevas y bajas de precio** para correrlo programado cada día.
- ✅ **Datos reales:** si un dato no está en Plusvalía, queda vacío.

### ❓ Preguntas frecuentes

**¿Cómo funciona el monitoreo?** La primera corrida guarda todas las propiedades de tu búsqueda. Las siguientes devuelven solo las nuevas y las que cambiaron de precio, con `previousPrice` y `priceChangePercent`.

**¿Qué ubicaciones acepta?** Las del buscador de Plusvalía: sectores (Cumbayá, La Carolina), ciudades (Quito, Guayaquil, Cuenca) y provincias.

**¿Necesito proxy?** El actor usa por defecto proxy residencial de Ecuador de Apify. No hace falta configurar nada.

### 🔌 Integraciones

Funciona con la API de Apify, schedules, webhooks, Google Sheets, Make, Zapier, n8n, Slack y cualquier herramienta que lea JSON.

### 🕳️ Más de DataMole

| Actor | Qué hace |
|---|---|
| [Adondevivir Peru Real Estate Scraper](https://apify.com/datamole/adondevivir-scraper) | Propiedades de Adondevivir con soles y dólares |
| [Zonaprop Argentina Real Estate Scraper](https://apify.com/datamole/zonaprop-scraper) | Avisos de Zonaprop con dólar blue/MEP y monitoreo |
| [Company Enrichment](https://apify.com/datamole/company-enrichment) | Perfil de empresa a partir de su dominio |

**¿Necesitas un campo o filtro que no está?** Abre un issue en este actor. Leemos todo.

### ⚖️ Disclaimer

Este actor recopila información pública de plusvalia.com. No está afiliado ni respaldado por Plusvalía ni Navent. Usa los datos de forma responsable y conforme a las leyes aplicables (incluida la Ley Orgánica de Protección de Datos Personales del Ecuador) y a los términos del sitio.

# Actor input Schema

## `locations` (type: `array`):

Sectores, ciudades o provincias como aparecen en Plusvalía, por ejemplo Cumbayá, La Carolina, Samborondón, Guayaquil o Cuenca.

## `operation` (type: `string`):

Alquiler, Venta, Temporal / vacacional, Traspaso.

## `propertyTypes` (type: `array`):

Uno o varios tipos.

## `searchUrls` (type: `array`):

Opcional. Pegá cualquier búsqueda del portal con tus filtros ya aplicados. Se recorren todas sus páginas.

## `maxItems` (type: `integer`):

Tope para toda la corrida. Vacío = sin tope.

## `maxPagesPerSearch` (type: `integer`):

Cada página trae 30 avisos. Vacío = todas.

## `minPrice` (type: `integer`):

Precio mínimo

## `maxPrice` (type: `integer`):

Precio máximo

## `minHoaFee` (type: `integer`):

Alícuota mínimo.

## `maxHoaFee` (type: `integer`):

Alícuota máximo.

## `minBedrooms` (type: `integer`):

Habitaciones.

## `minBathrooms` (type: `integer`):

Baños (mínimo)

## `minParking` (type: `integer`):

Estacionamientos.

## `minArea` (type: `integer`):

Superficie cubierta.

## `maxArea` (type: `integer`):

Superficie cubierta.

## `antiquity` (type: `string`):

Antigüedad máxima del inmueble.

## `general` (type: `array`):

Piscina, amoblado, ascensor, jardín, permite mascotas, vista al mar y más. Se exigen todas las elegidas.

## `outdoor` (type: `array`):

Área de BBQ, balcón, canchas de pádel, tenis o squash, piscina al aire libre y más. Se exigen todas las elegidas.

## `services` (type: `array`):

Guardianía, control de accesos, gimnasio, generador eléctrico, parrilla y más. Se exigen todas las elegidas.

## `roomTypes` (type: `array`):

Suite, vestidores, sala comunal, piscina cubierta, urbanización privada y más. Se exigen todas las elegidas.

## `publisherType` (type: `string`):

Todos, inmobiliaria / dueño directo.

## `publishedWithin` (type: `string`):

Solo avisos publicados en este período.

## `multimedia` (type: `array`):

Solo avisos con video, recorrido 360 o planos.

## `keyword` (type: `string`):

Buscador de palabras del portal. Es estricto y devuelve pocos avisos: para comodidades usá los filtros de comodidades.

## `sort` (type: `string`):

Más recientes recorre la búsqueda completa sin repetidos. Bajaron de precio muestra primero las rebajas.

## `includeDetails` (type: `boolean`):

Abre cada aviso para sumar todas las comodidades, antigüedad, teléfono del anunciante, dirección exacta, descripción completa y fecha de publicación. Es más lento y tiene un costo adicional por aviso.

## `monitorMode` (type: `boolean`):

Recuerda los avisos entre corridas y devuelve solo los nuevos y los que cambiaron de precio, con el precio anterior y el % de cambio. La primera corrida devuelve todo.

## `monitorName` (type: `string`):

Opcional. Usá el mismo nombre para compartir la memoria entre configuraciones. Vacío = se identifica por los filtros.

## `proxyConfiguration` (type: `object`):

El portal exige IP residencial del país. Dejalo como está.

## Actor input object example

```json
{
  "locations": [
    "Cumbayá"
  ],
  "operation": "alquiler",
  "propertyTypes": [
    "departamento"
  ],
  "publisherType": "todos",
  "sort": "more_recent",
  "includeDetails": false,
  "monitorMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "EC"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "Cumbayá"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "EC"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datamole/plusvalia-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "locations": ["Cumbayá"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "EC",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("datamole/plusvalia-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "Cumbayá"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "EC"
  }
}' |
apify call datamole/plusvalia-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datamole/plusvalia-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/8zZTFTWM3K4OXn141/builds/iVHRqDTWrPX2XXCmV/openapi.json
