# Fotocasa Spain Real Estate Scraper & Monitor (`datamole/fotocasa-scraper`) Actor

Extract Fotocasa listings in Spain for sale and rent with price drops, €/m² compared with the area median, occupied, auctioned and bank-owned flags, private sellers, phone, GPS and energy certificate. Filter like the site and track new listings and price changes.

- **URL**: https://apify.com/datamole/fotocasa-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 results

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)

## 🏠 Fotocasa Spain Real Estate Scraper & Monitor

> **Extrae anuncios de Fotocasa (venta, alquiler y habitaciones) con bajadas de precio, historial de precios, €/m² comparado con la mediana de la zona, inmuebles ocupados, en subasta o de bancos, particulares, teléfono y email de la inmobiliaria, GPS y certificado energético.** Filtra igual que en la web y recibe solo los anuncios nuevos y los cambios de precio.

> 🕒 **Last updated:** 2026-11-06 · **75+ campos** por anuncio · **todos los filtros de Fotocasa** + 6 filtros de oportunidad · **toda España**

**Fotocasa Spain Real Estate Scraper** convierte las búsquedas de Fotocasa, uno de los portales inmobiliarios más grandes de España, en una base de datos lista para analizar. Escribe ciudades, distritos o barrios como `Madrid`, `Russafa`, `Chamberí` o `Málaga`, o pega una URL de búsqueda de fotocasa.es. El actor aplica los mismos filtros que la web y añade lo que la web no calcula: cuánto bajó cada piso, si está por debajo del precio de su zona y cuántos días lleva publicado.

| 🎯 Para quién | 💡 Para qué |
|---|---|
| Inversores, inmobiliarias y agentes, compradores de pisos ocupados o de bancos, tasadores, proptech, investigadores | Detectar chollos y bajadas de precio, captar particulares, estudiar €/m² por barrio, alertas diarias de anuncios nuevos, comparables para tasaciones |

### 📋 Qué hace

- 📉 **Bajadas de precio:** `previousPrice`, `priceDropAmount` y `priceDropPercent` en cada anuncio rebajado, con filtro por % mínimo.
- 🧮 **€/m² frente a la zona:** cada anuncio se compara con la mediana de anuncios comparables de tu búsqueda (mismo barrio; si hay pocos, distrito o municipio). `pricePerSqmVsAreaPercent: -18` = un 18% más barato que su zona. Filtra con "al menos X% por debajo".
- 🏚️ **Situación del inmueble:** ocupado, en subasta, nuda propiedad, alquilado con inquilino o disponible, más el filtro de **pisos de bancos**.
- 👤 **Particular o profesional:** filtra solo particulares para captar propietarios, o solo inmobiliarias para estudiar a la competencia.
- 📞 **Teléfono del anuncio** en el resultado, sin pagar aparte, con `phoneIsTracked` cuando es un número de seguimiento de Fotocasa que desvía al anunciante.
- 📍 **Calle, barrio, distrito, municipio, provincia, comunidad autónoma, código postal y GPS.**
- 🏗️ **Planta, estado, antigüedad, orientación, habitaciones, baños, m² y extras** (ascensor, parking, terraza, piscina, trastero...) ya traducidos de los códigos de Fotocasa.
- ⏱️ **Días publicado** (`daysOnMarket`) y fecha de publicación.
- 🔎 **Todos los filtros de Fotocasa:** operación, tipo y subtipo (ático, dúplex, estudio, casa o chalet...), precio, m², habitaciones, baños, características, estado (a reformar, reformado...), situación, pisos de bancos, obra nueva o segunda mano, fecha de publicación y orden (recientes, precio, €/m², superficie).
- 🔍 **Ficha completa (opcional):**
  - **email de la inmobiliaria**;
  - **historial de precios**: cada cambio con su fecha, cuántas veces cambió y cuánto varió desde el primer precio registrado;
  - año de construcción;
  - certificado energético (letra, consumo y emisiones), calefacción y agua caliente;
  - referencia del anuncio;
  - razón social, web y registro oficial de la inmobiliaria (AICAT, API...);
  - licencia turística;
  - segunda mano u obra nueva;
  - todos los extras y la descripción completa.
- 👀 **Modo monitoreo:** programa la misma búsqueda cada día y recibe solo los anuncios **nuevos** y los que **cambiaron de precio**.
- 🛡️ **Errores claros:** si Fotocasa no reconoce una ubicación, lo avisa en vez de traer anuncios de toda España.

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

### ⚙️ Input

| Campo | Qué hace |
|---|---|
| `locations` | Ciudades, distritos, barrios o provincias como en el buscador de Fotocasa (Madrid, Russafa, Chamberí, Getafe...). Vacío = toda España. |
| `operation` | `venta`, `alquiler` o `compartir` (habitaciones). |
| `propertyType` / `propertySubtypes` | Viviendas, pisos, casas y chalets, locales, oficinas, garajes, terrenos, trasteros o edificios; y subtipos (ático, dúplex, loft, estudio, planta baja, adosado...). |
| `searchUrls` | URLs de búsqueda de fotocasa.es con tus filtros ya aplicados. |
| `minPrice` / `maxPrice`, `minArea` / `maxArea`, `minRooms` / `maxRooms`, `minBathrooms` | Precio (al mes en alquiler), superficie, habitaciones y baños. |
| `features`, `conservation` | Características (parking, ascensor, terraza, piscina, mascotas...) y estado (a reformar, reformado...). |
| `occupancy`, `bankPropertiesOnly`, `constructionType`, `publishedWithin` | Ocupados, subastas, nuda propiedad, con inquilino o solo disponibles; pisos de bancos; obra nueva o segunda mano; fecha de publicación. |
| `advertiserType`, `onlyPriceDrops`, `minPriceDropPercent`, `minPercentBelowArea`, `maxPricePerSqm`, `maxDaysOnMarket` | **Filtros de oportunidad de DataMole.** Lo que no pasa no se guarda ni se cobra. |
| `sortBy` | Relevancia, más recientes, precio, €/m² o superficie. |
| `includeDetails` | Suma la ficha completa de cada anuncio: email de la inmobiliaria, historial de precios, año de construcción, certificado energético y más (coste adicional). |
| `monitorMode` / `monitorName` | Devuelve solo anuncios nuevos y cambios de precio entre corridas. |
| `maxItems` / `maxPagesPerSearch` | Límites de la corrida. |

**Ejemplo: pisos de particulares en Madrid al menos un 15% por debajo del €/m² de su zona**

```json
{
    "locations": ["Madrid"],
    "operation": "venta",
    "propertyType": "pisos",
    "advertiserType": "particular",
    "minPercentBelowArea": 15,
    "maxItems": 50
}
```

**Ejemplo: monitoreo diario de pisos a reformar en Valencia que bajaron al menos un 5%**

```json
{
    "locations": ["Valencia"],
    "conservation": ["a-reformar"],
    "minPriceDropPercent": 5,
    "monitorMode": true
}
```

**Ejemplo: alquileres en Barcelona hasta 1.500 €/mes con ascensor, publicados esta semana, con ficha completa**

```json
{
    "locations": ["Barcelona"],
    "operation": "alquiler",
    "maxPrice": 1500,
    "features": ["ascensor"],
    "publishedWithin": "semana",
    "sortBy": "recientes",
    "includeDetails": true
}
```

### 📊 Output

Anuncio real de una corrida en Valencia (sin ficha completa; fotos y descripción recortadas): un piso en Russafa que bajó un 6,3% y está un 22,3% por debajo del €/m² de su barrio.

```json
{
    "imageUrl": "https://static.fotocasa.es/images/ads/ce74eabb-99e8-4178-8ce0-6c3ba2d343d0?rule=original",
    "id": 185234835,
    "adUuid": "260ec2d6-ef6f-487b-a818-b22b5f4d04b8",
    "url": "https://www.fotocasa.es/es/comprar/vivienda/valencia/aire-acondicionado-ascensor/185234835/d",
    "title": "Piso en venta en Avenida de Peris y Valero, 105, Russafa",
    "operation": "venta",
    "propertyType": "vivienda",
    "propertySubtype": "Piso",
    "isNewConstruction": false,
    "price": 370000,
    "currency": "EUR",
    "pricePeriod": null,
    "previousPrice": 395000,
    "priceDropAmount": 25000,
    "priceDropPercent": 6.3,
    "hasPriceDrop": true,
    "priceHistory": [],
    "priceChanges": null,
    "firstRecordedPrice": null,
    "priceChangeSinceFirstPercent": null,
    "pricePerSqm": 4568,
    "areaMedianPricePerSqm": 5876,
    "areaComparables": 7,
    "areaLevel": "barrio",
    "pricePerSqmVsAreaPercent": -22.3,
    "area": 81,
    "rooms": 3,
    "bathrooms": 1,
    "floor": "4ª planta",
    "floorNumber": 4,
    "conservation": "Muy bien",
    "buildingAge": "70 a 100 años",
    "yearBuilt": null,
    "orientation": null,
    "extras": [
        "Aire acondicionado",
        "Ascensor",
        "Balcón"
    ],
    "hasElevator": true,
    "hasParking": false,
    "hasTerrace": false,
    "hasPool": false,
    "hasGarden": false,
    "hasAirConditioning": true,
    "hasStorageRoom": false,
    "isFurnished": null,
    "occupancyStatus": "disponible",
    "isOccupied": false,
    "isAuctioned": false,
    "isBareOwnership": false,
    "isRentedWithTenants": false,
    "isTemporaryRental": false,
    "address": "Avenida de Peris y Valero, 105, Russafa",
    "street": "Avenida de Peris y Valero",
    "isExactAddress": true,
    "neighborhood": "Russafa",
    "district": "L'Eixample",
    "city": "Valencia",
    "province": "Valencia",
    "autonomousCommunity": "Comunitat Valenciana",
    "postalCode": "46006",
    "latitude": 39.459401743,
    "longitude": -0.370348442,
    "publishedAt": "2024-12-30T17:11:59.690Z",
    "daysOnMarket": 673,
    "advertiserType": "profesional",
    "advertiserName": "Inmobiliaria Carrillo",
    "advertiserId": 9202752434441,
    "advertiserUrl": "https://www.fotocasa.es/es/pro/inmobiliaria-carrillo/",
    "advertiserLogo": "https://static.fotocasa.es/images/client/98a7303e-f930-4ba7-b701-b9a89f4a82d2/20220809153904.jpeg?rule=original",
    "phone": "+34963747005",
    "phoneIsTracked": true,
    "advertiserEmail": null,
    "promotionName": null,
    "highlight": null,
    "imageCount": 30,
    "hasVideo": false,
    "hasVirtualTour": true,
    "hasFloorPlans": false,
    "hasDetails": false,
    "description": "En la prestigiosa Avenida Peris y Valero se presenta este excepcional piso de 81 m2, una opción ideal para quienes buscan un hogar que combi…",
    "images": [
        "https://static.fotocasa.es/images/ads/ce74eabb-99e8-4178-8ce0-6c3ba2d343d0?rule=original",
        "…"
    ]
}
```

Con `includeDetails` se suman `advertiserEmail`, `priceHistory`, `priceChanges`, `firstRecordedPrice`, `priceChangeSinceFirstPercent`, `yearBuilt`, `energyRating`, `energyConsumption` (kWh/m² año), `emissionsRating`, `emissions` (kg CO₂/m² año), `energyCertificateStatus`, `heating`, `hotWater`, `reference`, `advertiserLegalName`, `advertiserWebsite`, `advertiserRegistrations`, `touristLicense`, `constructionType`, todos los extras y la descripción completa. Ejemplo real de los campos de la ficha (un alquiler que subió y luego bajó):

```json
{
    "advertiserEmail": "colaborador9@casasymas.es",
    "priceHistory": [
        { "date": "2026-09-15T11:18:09.180Z", "price": 2057 },
        { "date": "2026-09-15T11:24:42.798Z", "price": 2395 },
        { "date": "2026-10-20T10:41:30.570Z", "price": 2195 }
    ],
    "priceChanges": 2,
    "firstRecordedPrice": 2057,
    "priceChangeSinceFirstPercent": 6.7,
    "yearBuilt": 1970,
    "energyRating": "D",
    "energyConsumption": 125,
    "emissionsRating": "D",
    "emissions": 17,
    "energyCertificateStatus": "vigente",
    "heating": "Gas Natural",
    "hotWater": "Gas Natural",
    "reference": "150926-01",
    "advertiserLegalName": "CASAS Y MÁS",
    "advertiserWebsite": "www.casasymas.es",
    "constructionType": "segunda mano",
    "hasDetails": true
}
```

En modo monitoreo cada fila trae además `isNewListing`, `monitorPreviousPrice`, `monitorPriceChangePercent` y `firstSeenAt`.

Campos que pueden venir vacíos:

- `pricePerSqmVsAreaPercent` y `areaMedianPricePerSqm` cuando tu búsqueda no tiene al menos 5 anuncios comparables en el barrio, distrito o municipio. Cuantos más anuncios revises, mejor la comparación.
- `street` cuando el anunciante oculta la dirección (Fotocasa muestra solo la zona).
- `energyRating` cuando el anunciante pone el certificado de relleno "G / 999" para poder publicar: Fotocasa lo muestra como G, el actor lo marca como `"no informado"`.
- `advertiserName` en anuncios de particulares.
- `advertiserEmail` en anuncios de particulares: el email personal de un particular nunca se entrega (RGPD). Para contactarlos está el teléfono del anuncio.
- `priceHistory` empieza cuando el anuncio entró en el sistema actual del portal, que puede ser después de su primera publicación.

En alquiler, `pricePerSqm` es el alquiler mensual por m². En habitaciones (`compartir`) no se calcula.

### ✨ Por qué este

- ✅ **Encuentra chollos, no solo anuncios:** bajada de precio y distancia al €/m² de la zona en cada fila, con filtros que la web no tiene.
- ✅ **Ocupados, subastas, nuda propiedad y pisos de bancos,** el mercado que buscan los inversores, con su propio campo y filtro.
- ✅ **Particulares separados de inmobiliarias** para captación.
- ✅ **Historial de precios completo y email de la inmobiliaria** en la ficha, datos que la web de Fotocasa no muestra.
- ✅ **Monitoreo de anuncios nuevos y cambios de precio** para correrlo programado cada mañana.
- ✅ **Datos reales:** si un dato no está en Fotocasa, queda vacío. Nunca se inventa (ni siquiera el certificado "G / 999" de relleno).

### 🚀 Cómo usarlo

1. Crea una cuenta gratis en Apify.
2. Abre el actor, escribe las ciudades o barrios y elige los filtros.
3. Haz clic en **Start**.
4. Descarga los resultados o conéctalos con Google Sheets, Make, Zapier, n8n o la API. Para alertas, activa el **modo monitoreo** y prográmalo cada día.

### 💼 Casos de uso

- **Inversores:** pisos por debajo del €/m² de su barrio, mayores bajadas de precio, ocupados, subastas y pisos de bancos.
- **Inmobiliarias y agentes:** captar particulares que venden o alquilan sin agencia y seguir los precios de la competencia.
- **Compradores e inquilinos:** alertas diarias de anuncios nuevos con tus filtros exactos.
- **Tasadores y bancos:** comparables con m², planta, estado, antigüedad, certificado energético y GPS.
- **Proptech e investigadores:** €/m² por barrio, días en el mercado y evolución de precios.

### ❓ Preguntas frecuentes

**¿Cómo se calcula el €/m² de la zona?** Con la mediana del €/m² de los anuncios que devuelve tu propia búsqueda, separando venta y alquiler y por tipo de inmueble. Se usa el barrio si hay al menos 5 anuncios comparables; si no, el distrito o el municipio. Cada fila dice qué nivel se usó (`areaLevel`) y cuántos comparables tenía (`areaComparables`).

**¿Cómo funciona el modo monitoreo?** La primera corrida guarda todos los anuncios de tu búsqueda. Las siguientes devuelven solo los nuevos y los que cambiaron de precio. La memoria se guarda en tu cuenta de Apify y se identifica por tus filtros, o por `monitorName` si le pones un nombre.

**¿El teléfono es el del anunciante?** Es el número que publica Fotocasa en el anuncio. Muchas veces es un número de seguimiento de Fotocasa que desvía la llamada al anunciante; en ese caso `phoneIsTracked` es `true`.

**¿Qué ubicaciones acepta?** Las mismas del buscador de Fotocasa: ciudades (Madrid, Sevilla), distritos (Chamberí, Eixample), barrios (Russafa, Malasaña), municipios (Getafe) y provincias.

**¿Necesito proxy?** Fotocasa bloquea las IPs de centros de datos, así que el actor usa por defecto proxy residencial de España de Apify. No hace falta configurar nada.

**¿Por qué "solo particulares" ordena por más recientes?** Fotocasa no tiene filtro de particulares y su orden por relevancia pone primero los anuncios de pago de las inmobiliarias: en Madrid, las primeras 40 páginas son todas de profesionales. Ordenando por más recientes, los particulares aparecen desde la primera página. Si eliges otro orden (precio, €/m²...), se respeta.

**¿De dónde salen el email y el historial de precios?** Fotocasa y habitaclia son del mismo grupo (Adevinta) y comparten los anuncios con el mismo identificador (`adUuid`). La ficha completa se lee de esa fuente compartida, que trae el email de contacto de la inmobiliaria y cada cambio de precio con su fecha. Si un anuncio no está ahí (por ejemplo, habitaciones compartidas), se usa la ficha de Fotocasa.

**¿Por qué el filtro "por debajo de la zona" tarda más?** Para que la mediana sea fiable, el actor revisa al menos 300 anuncios de tu búsqueda antes de decidir cuáles están por debajo.

### 🔌 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 |
|---|---|
| [Zonaprop Argentina Real Estate Scraper](https://apify.com/datamole/zonaprop-scraper) | Anuncios de Zonaprop con pesos y dólares, expensas y monitoreo |
| [Inmuebles24 Mexico Real Estate Scraper](https://apify.com/datamole/inmuebles24-scraper) | Anuncios de Inmuebles24 con mantenimiento, WhatsApp y monitoreo |
| [Company Enrichment](https://apify.com/datamole/company-enrichment) | Perfil de empresa a partir de su dominio: contactos, redes y tecnologías |

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

### ⚖️ Disclaimer

Este actor recopila información pública de fotocasa.es. No está afiliado ni respaldado por Fotocasa ni por Adevinta. Usa los datos de forma responsable y conforme a las leyes aplicables (incluidos el RGPD y la LOPDGDD si tratas datos de particulares) y a los términos del sitio.

# Actor input Schema

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

Como en el buscador de fotocasa.es, por ejemplo Madrid, Valencia, Russafa, Chamberí, Getafe, Málaga o Provincia de Alicante. Cada una se busca por separado. Vacío = toda España.

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

Comprar, alquilar o habitaciones en piso compartido.

## `propertyType` (type: `string`):

Las mismas categorías de Fotocasa. Pisos y Casas y chalets son atajos de subtipos de vivienda.

## `propertySubtypes` (type: `array`):

Solo para viviendas. Si eliges subtipos, reemplazan al atajo Pisos o Casas y chalets.

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

Pega búsquedas de fotocasa.es con tus filtros ya aplicados (terminan en /l, por ejemplo https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l?maxPrice=300000). Los filtros de abajo de Fotocasa no se aplican a estas URLs; los de Oportunidades, sí.

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

En alquiler, precio al mes.

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

En alquiler, precio al mes.

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

Superficie construida mínima.

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

Superficie construida máxima.

## `minRooms` (type: `integer`):

Solo viviendas.

## `maxRooms` (type: `integer`):

Solo viviendas.

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

Solo viviendas.

## `features` (type: `array`):

El inmueble debe tener todas las elegidas.

## `conservation` (type: `array`):

Solo viviendas. A reformar es el filtro clásico de los inversores.

## `occupancy` (type: `string`):

El filtro de Fotocasa para ocupados, nuda propiedad, subastas y viviendas con inquilino.

## `bankPropertiesOnly` (type: `boolean`):

La sección de Fotocasa de inmuebles de entidades financieras.

## `constructionType` (type: `string`):

El filtro de Fotocasa por tipo de construcción.

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

Antigüedad máxima del anuncio, como el filtro de Fotocasa.

## `advertiserType` (type: `string`):

Solo particulares sirve para captar propietarios que venden o alquilan sin inmobiliaria. Fotocasa no tiene este filtro y su orden por relevancia pone primero a los anunciantes de pago, así que con Solo particulares y orden Relevancia el actor ordena por Más recientes.

## `onlyPriceDrops` (type: `boolean`):

Avisos en los que el anunciante rebajó el precio (Fotocasa muestra el importe rebajado).

## `minPriceDropPercent` (type: `integer`):

Por ejemplo 10 = solo avisos que bajaron un 10% o más.

## `minPercentBelowArea` (type: `integer`):

Compara el €/m² de cada aviso con la mediana de avisos comparables de la misma búsqueda (mismo barrio, si no distrito, si no municipio; mínimo 5 comparables). Por ejemplo 15 = solo avisos un 15% o más baratos que su zona. Con este filtro el actor revisa al menos 300 avisos para tener una mediana fiable.

## `maxPricePerSqm` (type: `integer`):

En alquiler, €/m² al mes.

## `maxDaysOnMarket` (type: `integer`):

Por ejemplo 3 = solo avisos publicados en los últimos 3 días.

## `sortBy` (type: `string`):

Los mismos órdenes de Fotocasa.

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

Total de avisos guardados entre todas las búsquedas. Fotocasa muestra 30 por página.

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

Límite opcional por ubicación o URL. Vacío = todas las páginas.

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

Agrega el email de la inmobiliaria, el historial de precios (cada cambio con su fecha, número de cambios y variación desde el primer precio registrado), el año de construcción, el certificado energético (letra, consumo y emisiones), calefacción y agua caliente, referencia del anuncio, razón social, web y registros oficiales de la inmobiliaria, licencia turística, segunda mano u obra nueva, todos los extras y la descripción completa. El email de los particulares nunca se entrega.

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

La primera corrida guarda todo. Las siguientes devuelven solo avisos nuevos y avisos que cambiaron de precio, con el precio anterior y el % de cambio.

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

Ponle un nombre para mantener la memoria aunque cambies algún filtro. Vacío = una memoria por cada combinación de filtros.

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

Fotocasa bloquea las IPs de centros de datos. Deja el proxy residencial de España.

## Actor input object example

```json
{
  "locations": [
    "Valencia"
  ],
  "operation": "venta",
  "propertyType": "viviendas",
  "occupancy": "todos",
  "bankPropertiesOnly": false,
  "constructionType": "todas",
  "publishedWithin": "cualquiera",
  "advertiserType": "todos",
  "onlyPriceDrops": false,
  "sortBy": "relevancia",
  "maxItems": 100,
  "includeDetails": false,
  "monitorMode": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}
```

# 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": [
        "Valencia"
    ],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "ES"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("datamole/fotocasa-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": ["Valencia"],
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "ES",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("datamole/fotocasa-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": [
    "Valencia"
  ],
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "ES"
  }
}' |
apify call datamole/fotocasa-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,datamole/fotocasa-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/lyT9BZ1JN14Jnsh42/builds/gktDU3IQYCXj0GD7p/openapi.json
