{
  "openapi": "3.0.1",
  "info": {
    "title": "Plusvalia Ecuador Real Estate Scraper & Monitor",
    "description": "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.",
    "version": "1.0",
    "x-build-id": "iVHRqDTWrPX2XXCmV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/datamole~plusvalia-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-datamole-plusvalia-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/datamole~plusvalia-scraper/runs": {
      "post": {
        "operationId": "runs-sync-datamole-plusvalia-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/datamole~plusvalia-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-datamole-plusvalia-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "locations": {
            "title": "Ubicaciones",
            "type": "array",
            "description": "Sectores, ciudades o provincias como aparecen en Plusvalía, por ejemplo Cumbayá, La Carolina, Samborondón, Guayaquil o Cuenca.",
            "items": {
              "type": "string"
            }
          },
          "operation": {
            "title": "Operación",
            "enum": [
              "alquiler",
              "venta",
              "temporal-vacacional",
              "traspaso"
            ],
            "type": "string",
            "description": "Alquiler, Venta, Temporal / vacacional, Traspaso.",
            "default": "alquiler"
          },
          "propertyTypes": {
            "title": "Tipo de propiedad",
            "type": "array",
            "description": "Uno o varios tipos.",
            "items": {
              "type": "string",
              "enum": [
                "casa",
                "departamento",
                "terreno-lote",
                "oficina-comercial",
                "local-comercial",
                "hacienda-quinta",
                "edificio-hotel-fabrica",
                "bodega-galpon",
                "suite",
                "consultorio",
                "quinta-vacacional",
                "habitacion",
                "parqueadero",
                "proyecto-horizontal",
                "proyecto-vertical"
              ],
              "enumTitles": [
                "Casa",
                "Departamento",
                "Terreno / Lote",
                "Oficina comercial",
                "Local comercial",
                "Hacienda-Quinta",
                "Edificio-Hotel-Fabrica",
                "Bodega-Galpón",
                "Suite",
                "Consultorio",
                "Quinta vacacional",
                "Habitación",
                "Parqueadero",
                "Proyecto horizontal",
                "Proyecto vertical"
              ]
            },
            "default": [
              "departamento"
            ]
          },
          "searchUrls": {
            "title": "URLs de búsqueda",
            "type": "array",
            "description": "Opcional. Pegá cualquier búsqueda del portal con tus filtros ya aplicados. Se recorren todas sus páginas.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Máximo de avisos",
            "minimum": 1,
            "type": "integer",
            "description": "Tope para toda la corrida. Vacío = sin tope."
          },
          "maxPagesPerSearch": {
            "title": "Máximo de páginas por búsqueda",
            "minimum": 1,
            "type": "integer",
            "description": "Cada página trae 30 avisos. Vacío = todas."
          },
          "minPrice": {
            "title": "Precio mínimo",
            "minimum": 0,
            "type": "integer",
            "description": "Precio mínimo"
          },
          "maxPrice": {
            "title": "Precio máximo",
            "minimum": 0,
            "type": "integer",
            "description": "Precio máximo"
          },
          "minHoaFee": {
            "title": "Alícuota mínimo (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Alícuota mínimo."
          },
          "maxHoaFee": {
            "title": "Alícuota máximo (USD)",
            "minimum": 0,
            "type": "integer",
            "description": "Alícuota máximo."
          },
          "minBedrooms": {
            "title": "Habitaciones (mínimo)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Habitaciones."
          },
          "minBathrooms": {
            "title": "Baños (mínimo)",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "Baños (mínimo)"
          },
          "minParking": {
            "title": "Estacionamientos (mínimo)",
            "minimum": 0,
            "maximum": 4,
            "type": "integer",
            "description": "Estacionamientos."
          },
          "minArea": {
            "title": "Superficie mínima (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Superficie cubierta."
          },
          "maxArea": {
            "title": "Superficie máxima (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Superficie cubierta."
          },
          "antiquity": {
            "title": "Antigüedad",
            "enum": [
              "en-construccion",
              "a-estrenar",
              "hasta-5",
              "hasta-10",
              "hasta-20",
              "hasta-50",
              "mas-de-50"
            ],
            "type": "string",
            "description": "Antigüedad máxima del inmueble."
          },
          "general": {
            "title": "Generales",
            "type": "array",
            "description": "Piscina, amoblado, ascensor, jardín, permite mascotas, vista al mar y más. Se exigen todas las elegidas.",
            "items": {
              "type": "string",
              "enum": [
                "amoblado",
                "anden-para-carga-y-descarga",
                "ascensor",
                "caseta-de-guardia",
                "jardin",
                "piscina",
                "terraza",
                "bano-de-servicio",
                "galpon-industrial",
                "cuartos-de-servicio",
                "jacuzzi",
                "seguridad",
                "centros-comerciales-cercanos",
                "escuelas-cercanas",
                "parques-cercanos",
                "permite-mascotas",
                "vista-a-la-ciudad",
                "vista-al-mar",
                "vista-panoramica",
                "cocina-integral",
                "acceso-para-personas-con-movilidad-reducida",
                "acceso-tercera-edad",
                "zona-industrial",
                "recepcion",
                "tendedero-de-ropa",
                "zona-residencial",
                "av-acceso-asfaltada",
                "duplex",
                "cerca-de-hospitales",
                "en-condominio",
                "walk-in-closet",
                "triplex",
                "vista-al-parque",
                "frente-a-parque",
                "balcon-con-verja-de-seguridad",
                "tanque-de-reserva-de-agua",
                "corriente-trifasica",
                "muro-perimetral",
                "vista-al-lago"
              ],
              "enumTitles": [
                "Amoblado",
                "Andén para carga y descarga",
                "Ascensor",
                "Caseta de guardia",
                "Jardín",
                "Piscina",
                "Terraza",
                "Baño de servicio",
                "Galpón industrial",
                "Cuartos de servicio",
                "Jacuzzi",
                "Seguridad",
                "Centros comerciales cercanos",
                "Escuelas cercanas",
                "Parques cercanos",
                "Permite mascotas",
                "Vista a la ciudad",
                "Vista al mar",
                "Vista panorámica",
                "Cocina integral",
                "Acceso para personas con movilidad reducida",
                "Acceso tercera edad",
                "Zona industrial",
                "Recepción",
                "Tendedero de ropa",
                "Zona residencial",
                "Av. acceso asfaltada",
                "Dúplex",
                "Cerca de hospitales",
                "En condominio",
                "Walk in closet",
                "Triplex",
                "Vista al parque",
                "Frente a parque",
                "Balcón con verja de seguridad",
                "Tanque de reserva de agua",
                "Corriente trifásica",
                "Muro perimetral",
                "Vista al lago"
              ]
            }
          },
          "outdoor": {
            "title": "Exteriores",
            "type": "array",
            "description": "Área de BBQ, balcón, canchas de pádel, tenis o squash, piscina al aire libre y más. Se exigen todas las elegidas.",
            "items": {
              "type": "string",
              "enum": [
                "arboles",
                "area-de-bbq",
                "rio",
                "balcon",
                "cancha",
                "laguna",
                "campo-de-golf",
                "cancha-de-paddle",
                "cancha-de-squash",
                "cancha-de-tenis",
                "estacionamiento-de-visitas",
                "piscina-al-aire-libre",
                "asoleadero",
                "jardin-privado",
                "playa",
                "garaje-techado"
              ],
              "enumTitles": [
                "Árboles",
                "Área de BBQ",
                "Río",
                "Balcón",
                "Cancha",
                "Laguna",
                "Campo de golf",
                "Cancha de paddle",
                "Cancha de squash",
                "Cancha de tenis",
                "Estacionamiento de visitas",
                "Piscina al aire libre",
                "Asoleadero",
                "Jardín privado",
                "Playa",
                "Garaje techado"
              ]
            }
          },
          "services": {
            "title": "Servicios",
            "type": "array",
            "description": "Guardianía, control de accesos, gimnasio, generador eléctrico, parrilla y más. Se exigen todas las elegidas.",
            "items": {
              "type": "string",
              "enum": [
                "gas-centralizado",
                "gimnasio",
                "internet-wifi",
                "aire-acondicionado",
                "altillo",
                "guardiania-seguridad-privada",
                "sala-de-conferencia",
                "control-de-accesos",
                "video-vigilancia",
                "sistema-de-alarma-de-seguridad",
                "calefon",
                "extractor-de-olores",
                "generador-electrico",
                "servicios-basicos-agua-luz",
                "planta-de-emergencia",
                "area-de-juegos-infantiles",
                "spa",
                "calefaccion",
                "estufa",
                "parrilla",
                "agua-corriente",
                "agua-potable",
                "sala-de-reuniones",
                "areas-verdes",
                "canchas-deportivas",
                "espacio-de-co-working"
              ],
              "enumTitles": [
                "Gas centralizado",
                "Gimnasio",
                "Internet/Wifi",
                "Aire acondicionado",
                "Altillo",
                "Guardianía/Seguridad privada",
                "Sala de conferencia",
                "Control de accesos",
                "Video vigilancia",
                "Sistema de alarma de seguridad",
                "Calefón",
                "Extractor de olores",
                "Generador eléctrico",
                "Servicios básicos (agua/luz)",
                "Planta de emergencia",
                "Área de juegos infantiles",
                "Spa",
                "Calefacción",
                "Estufa",
                "Parrilla",
                "Agua corriente",
                "Agua potable",
                "Sala de reuniones",
                "Áreas verdes",
                "Canchas deportivas",
                "Espacio de co-working"
              ]
            }
          },
          "roomTypes": {
            "title": "Ambientes",
            "type": "array",
            "description": "Suite, vestidores, sala comunal, piscina cubierta, urbanización privada y más. Se exigen todas las elegidas.",
            "items": {
              "type": "string",
              "enum": [
                "bodega",
                "patio",
                "sala-comunal",
                "sauna",
                "urbanizacion-privada",
                "area-deportiva",
                "atico",
                "vestidores",
                "cuarto-de-juegos",
                "salon-de-usos-multiples",
                "piscina-cubierta",
                "sala-de-entretenimiento",
                "suite",
                "area-de-servicios",
                "area-para-desayunador",
                "oficina"
              ],
              "enumTitles": [
                "Bodega",
                "Patio",
                "Sala comunal",
                "Sauna",
                "Urbanización privada",
                "Área deportiva",
                "Ático",
                "Vestidores",
                "Cuarto de juegos",
                "Salón de usos múltiples",
                "Piscina cubierta",
                "Sala de entretenimiento",
                "Suite",
                "Área de servicios",
                "Área para desayunador",
                "Oficina"
              ]
            }
          },
          "publisherType": {
            "title": "Anunciante",
            "enum": [
              "todos",
              "inmobiliaria",
              "dueno-directo"
            ],
            "type": "string",
            "description": "Todos, inmobiliaria / dueño directo.",
            "default": "todos"
          },
          "publishedWithin": {
            "title": "Publicado",
            "enum": [
              "hoy",
              "desde-ayer",
              "ultima-semana",
              "ultimos-15-dias",
              "ultimos-30-dias",
              "ultimos-45-dias"
            ],
            "type": "string",
            "description": "Solo avisos publicados en este período."
          },
          "multimedia": {
            "title": "Multimedia",
            "type": "array",
            "description": "Solo avisos con video, recorrido 360 o planos.",
            "items": {
              "type": "string",
              "enum": [
                "video",
                "recorrido-360",
                "planos"
              ],
              "enumTitles": [
                "Video",
                "Recorrido 360",
                "Planos"
              ]
            }
          },
          "keyword": {
            "title": "Palabra clave",
            "type": "string",
            "description": "Buscador de palabras del portal. Es estricto y devuelve pocos avisos: para comodidades usá los filtros de comodidades."
          },
          "sort": {
            "title": "Orden",
            "enum": [
              "more_recent",
              "relevance",
              "low_price",
              "high_price",
              "most_lowered_price"
            ],
            "type": "string",
            "description": "Más recientes recorre la búsqueda completa sin repetidos. Bajaron de precio muestra primero las rebajas.",
            "default": "more_recent"
          },
          "includeDetails": {
            "title": "Detalle completo (con costo extra)",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "monitorMode": {
            "title": "Modo monitoreo",
            "type": "boolean",
            "description": "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.",
            "default": false
          },
          "monitorName": {
            "title": "Nombre del monitoreo",
            "type": "string",
            "description": "Opcional. Usá el mismo nombre para compartir la memoria entre configuraciones. Vacío = se identifica por los filtros."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "El portal exige IP residencial del país. Dejalo como está.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "EC"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}