# Spotahome Scraper - Mid-Term Rentals, Rooms & Prices in Europe (`normdata/spotahome-scraper`) Actor

Scrape Spotahome mid-term rentals in 228 European cities: rent, bills, deposit, rooms, size, amenities, map position, photos and landlord score. Add views, favorites, fees, monthly prices, booked dates and landlord stats. 21 filters, all cities in one run, only new listings. For rent market study.

- **URL**: https://apify.com/normdata/spotahome-scraper.md
- **Developed by:** [Norm Data](https://apify.com/normdata) (community)
- **Categories:** Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $13.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 🏠 Spotahome Scraper - Mid-Term Rentals, Rooms & Prices in Europe

Extract rental listings from **Spotahome**, the mid-term rental platform with about 69,000 apartments, rooms, studios and residences in **228 cities** across Spain, Italy, France, Portugal, Germany, the UK, Ireland, Belgium, the Netherlands, Austria, Poland and more. For each listing you get the **monthly rent, currency, bills included, bedrooms, bathrooms, size, tenants, discounts, street, postal code, map position, amenities, bed types, who it is for, photos, move-in date and the landlord's score and bookings**. Turn on **listing details** to also get **views, favorites and interested tenants, deposit, admin fee, one-time fees, bills cost and total monthly cost, rent for every month, minimum and maximum stay, booked periods, house rules, heating and A/C, required documents, other rooms in the flat, and the landlord's name, listings, response time and response rate**. Search with **21 filters** in one city, several or all of them, or paste links, and run it on a schedule to get **only new listings**.

### 🎯 Who uses it?

#### 📊 Rental market analysts and proptech teams

Track mid-term rents, bills, deposits and discounts by city, neighbourhood, property type and size, across 20+ countries in one dataset.

#### 🏢 Landlords, property managers and coliving operators

Benchmark your prices and conditions against the listings next door, and see which ones get the most views, favorites and requests.

#### 🎓 Relocation agencies, universities and HR teams

Build shortlists of verified, bills-included rooms and flats for students, interns and new hires, with move-in dates and required documents.

#### 🤝 B2B sales teams

Find professional landlords with many listings and fast response times, by city.

### ✨ What it does

- **Every Spotahome city.** Pick one city, several, or leave it empty for all 228, biggest first.
- **21 filters.** Property type, rent range, bedrooms, bathrooms, number of tenants, size, available by, amenities, bills included, all bills included, suitable for, tenant gender, bed type, pets, smoking, and only checked by Spotahome, instant booking, no deposit, best choice, long-term contract or with a discount.
- **Newest or lowest price first.**
- **Listing details add-on:** reads each listing page for demand numbers, full costs, monthly prices, booked dates, house rules and landlord stats.
- **Or paste links.** Searches copied from the site (with their filters and page) and listing pages. Filters are not used with links.
- **Monitoring:** run it on a schedule with **Only new listings**, and each run saves only the listings you haven't received yet.

### 🏆 Why this scraper

- **Fast.** 1,000 listings in about 17 seconds, or about 45 seconds with listing details.
- **Demand signals.** How many people viewed, saved, asked about and shared each listing, plus booked periods to measure occupancy.
- **The real monthly cost.** Rent, fixed bills on top, total a month, deposit in money and months, admin fee, one-time fees and the rent for every month when it changes by season.
- **Landlord quality.** Spotahome score, closed bookings, listings, booking requests, response time and rate, years on the site.
- **Clean, flat, typed data.** Prices, sizes and counts are numbers, dates are ISO, yes/no fields are true or false, amenities and bills are readable names in English. 100 fields, one row per listing.
- **Nothing to set up.** No proxy, no login.

### ⚖️ How it compares

| | **This Actor** | [fatihtahta/spotahome-scraper](https://apify.com/fatihtahta/spotahome-scraper) | [studio-amba/spotahome-scraper](https://apify.com/studio-amba/spotahome-scraper) |
| --- | --- | --- | --- |
| Cities in one run | ✅ any or all 228 | One location | One city |
| Filters | ✅ 21 | Price, type, beds, amenities, bills, suitability, dates | Property type |
| Views, favorites and interested per listing | ✅ | ❌ | ❌ |
| Deposit, admin fee, one-time fees, total monthly cost | ✅ | ❌ | ❌ |
| Booked periods and rent for every month | ✅ | ❌ | ❌ |
| Landlord response time, rate and listings | ✅ | ❌ | ❌ |
| Flat rows | ✅ 100 fields | Nested JSON | ✅ about 35 fields |
| Only new listings (monitoring) | ✅ | ❌ | ❌ |

Checked on the Apify Store in October 2026.

### 📦 What data you get

| Field | Description |
| --- | --- |
| `imageUrl` | Main photo. |
| `title` | Listing title. |
| `propertyType` | Apartment, Room, Studio or Residence. |
| `price`, `maxPrice` | Monthly rent (the lowest when it changes by month or room) and the highest, in the city currency. |
| `maxMonthPrice` | *(Listing details)* Rent in the dearest month, when the rent changes by month. |
| `currency` | Currency code, like EUR, GBP, PLN or CHF. |
| `billsIncluded` | Bills in the rent: All, Some or None. |
| `monthlyBills`, `totalMonthlyCost` | *(Listing details)* Fixed bills paid on top of the rent each month, and rent plus those bills. |
| `depositAmount`, `depositMonths` | *(Listing details)* Security deposit, as an amount and in months of rent (0 = no deposit). |
| `adminFeeAmount`, `adminFeePercent` | *(Listing details)* Landlord's admin fee: a fixed amount or a percent of the whole contract (0 = no fee). |
| `discountPercent`, `discount` | Best discount for longer stays, and its terms, like "10% off for stays of 60 to 120 days". |
| `minStayDays`, `maxStayDays` | *(Listing details)* Shortest and longest stay the landlord accepts, in days. |
| `rentCalculation` | *(Listing details)* How rent is counted for part months: by full months, half months or days. |
| `cancellationPolicy` | *(Listing details)* Standard, Flexible or Strict. |
| `bedrooms`, `bathrooms` | Bedrooms and bathrooms in the property (for rooms: in the shared flat). |
| `areaM2`, `roomAreaM2` | Size of the property and of the room, in square meters. |
| `floor` | *(Listing details)* Floor of the property. |
| `maxTenants` | Most people who can live there. Empty for listing links. |
| `unitsInListing` | Units offered under this listing (residences and buildings with many alike flats). |
| `gender` | Who can live there: Any, Only females or Only males. |
| `airConditioning`, `heatingSystem`, `waterHeating`, `washingMachine`, `dryer`, `energyCertificate` | *(Listing details)* A/C, heating and water heating type, washing machine and dryer (private or in common areas), energy certificate. |
| `description` | Short description from the search results. |
| `fullDescription`, `landlordDescription` | *(Listing details)* Full description and the landlord's own words. |
| `address`, `postalCode`, `city`, `citySlug`, `country` | Street (no house number), postal code, city, city slug and country code. |
| `latitude`, `longitude` | Map position. |
| `landlordName`, `landlordType` | *(Listing details)* Landlord name and type (Professional or Private). |
| `landlordScore`, `landlordBookings` | Spotahome's landlord score and the landlord's closed bookings. |
| `landlordListings`, `landlordBookingRequests`, `landlordResponseTime`, `landlordResponseRate`, `landlordYearsOnSite` | *(Listing details)* Listings and booking requests the landlord has had, response time and rate (%), years on Spotahome. |
| `views`, `favorites`, `interested`, `shares` | *(Listing details)* How many people viewed, saved, asked about and shared the listing (demand signal). |
| `landlordId`, `id` | Spotahome landlord ID (same for all of a landlord's listings) and listing ID. |
| `verified` | A Spotahome homechecker visited and photographed it. |
| `instantBooking` | Can be booked without waiting for the landlord. |
| `noDeposit`, `depositProtection` | No security deposit, and whether the deposit is protected. |
| `bestChoice` | Marked "Best choice" by Spotahome. |
| `permanentContract` | Also offers a permanent (long-term) contract. |
| `petsAllowed`, `smokingAllowed`, `couplesAllowed`, `overnightGuests`, `landlordLivesThere`, `registrationAllowed` | *(Listing details)* House rules: pets, smoking, couples, overnight guests, landlord living there, official address registration. |
| `tenantVetting` | *(Listing details)* Landlord checks tenants before accepting. |
| `hasFloorPlan`, `has360Photos` | *(Listing details)* Has a floor plan and 360° photos on the site. |
| `url` | Link to the listing. |
| `amenities` | Amenities on the search card, like "Elevator", "Equipped kitchen", "Private bathroom". |
| `billsIncludedList` | Bills the rent includes, like "Wi-Fi" or "Water". |
| `suitableFor` | Who it is open to: Students, Professionals, Couples. |
| `bedTypes` | Bed types, like "Double bed". |
| `offers` | Every discount offer, as text. |
| `highlights`, `thingsToKnow`, `propertyDetails`, `transport` | *(Listing details)* What the homechecker liked, things to keep in mind, property details and nearby transport. |
| `requiredDocuments`, `moveInTimes` | *(Listing details)* Documents the landlord asks for, and move-in time slots. |
| `oneTimeFees` | *(Listing details)* Other fees, like final cleaning or contract registration: name, amount, when and how often. |
| `pricesByMonth` | *(Listing details)* Rent for each month of the year, when it changes by month. |
| `otherRooms` | *(Listing details)* Other rooms in the same flat: title, rent, available from and link. |
| `moveInWindows`, `bookedPeriods` | *(Listing details)* Next move-in date ranges (no end date = open), and periods already booked (occupancy). |
| `videoUrls` | *(Listing details)* Video tour links. |
| `photos` | Photo links from the search card. |
| `allPhotos` | *(Listing details)* Every photo of the listing. |
| `availableFrom` | First day you can move in. |
| `verifiedAt`, `landlordSince`, `availabilityUpdatedAt` | *(Listing details)* When it was checked by Spotahome, when the landlord joined, and when the availability was last updated. |
| `scrapedAt` | When this row was saved. |
| `error` | Only present when a row failed. The fields that loaded are still there. |

Fields marked *Listing details* only appear when that add-on is on.

#### Example row (trimmed)

```json
{
  "imageUrl": "https://photos.spotahome.com/smww_768_verified_ur_6_50/48cd1071fb9683473910d838bea911d87fe932f35f9310457381853d.jpg",
  "title": "Room in 4-bedroom flat in Tower Hamlets, London",
  "propertyType": "Room",
  "price": 650,
  "currency": "GBP",
  "billsIncluded": "Some",
  "monthlyBills": 50,
  "totalMonthlyCost": 700,
  "depositAmount": 650,
  "depositMonths": 1,
  "adminFeeAmount": 0,
  "adminFeePercent": 0,
  "minStayDays": 120,
  "rentCalculation": "Daily (rent by the day)",
  "cancellationPolicy": "Strict",
  "bedrooms": 4,
  "bathrooms": 1,
  "areaM2": 52,
  "roomAreaM2": 5,
  "maxTenants": 4,
  "gender": "Any",
  "airConditioning": "No",
  "heatingSystem": "Central property",
  "waterHeating": "Central property",
  "washingMachine": "Private",
  "dryer": "No",
  "description": "There are rooms to rent in this cozy 52 m² 4-bedroom, 1-bathroom apartment on Jamaica Street in Tower Hamlets. The modern kitchen can be found on the ground floor of this 2 story ...",
  "fullDescription": "There are rooms to rent in this cozy 52 m² 4-bedroom, 1-bathroom apartment on Jamaica Street in Tower Hamlets. The modern kitchen can be found on the ground floor of this 2 story ...",
  "address": "Jamaica Street",
  "postalCode": "E1 3HU",
  "city": "London",
  "citySlug": "london",
  "country": "GB",
  "latitude": 51.5189,
  "longitude": -0.0499,
  "landlordName": "Access London",
  "landlordType": "Professional",
  "landlordScore": 380,
  "landlordBookings": 251,
  "landlordListings": 28,
  "landlordBookingRequests": 532,
  "landlordResponseTime": "9-15h",
  "landlordResponseRate": 80,
  "landlordYearsOnSite": 9,
  "views": 1038,
  "favorites": 147,
  "interested": 3,
  "shares": 3,
  "landlordId": "654a4263-34b9-4ac2-8668-42cdbfaf5277",
  "id": "140682",
  "verified": true,
  "instantBooking": false,
  "noDeposit": false,
  "depositProtection": false,
  "bestChoice": false,
  "permanentContract": false,
  "petsAllowed": false,
  "smokingAllowed": false,
  "couplesAllowed": false,
  "tenantVetting": false,
  "hasFloorPlan": true,
  "has360Photos": false,
  "url": "https://www.spotahome.com/london/for-rent:rooms/140682",
  "amenities": ["Furnished", "Washing machine", "Equipped kitchen"],
  "billsIncludedList": ["Wi-Fi", "Central heating", "Council tax"],
  "suitableFor": ["Professionals", "Students"],
  "bedTypes": ["Single bed"],
  "highlights": ["The apartment is close to public transport.", "Each room has a large window to let in lots of natural light.", "The kitchen comes with everything you need to cook including plates and pots."],
  "thingsToKnow": ["There is only one shared bathroom.", "Although there is a washing machine, there is no dryer so clothes will need to be hung up to dry."],
  "propertyDetails": ["Property type: apartment", "Floor area: 52 m²", "Number of bathrooms: 1"],
  "transport": [
    "Stepney Green station is a 7-minute walk away, and services the District and Hammersmith & City lines. Stepney Green is in travelcard zone 2.",
    "The bus stops near Stepney Green station service lines 25, 205, and N205."
  ],
  "requiredDocuments": ["ID or passport", "Proof of income", "Work contract"],
  "moveInTimes": ["Mon, Tue, Wed, Thu, Fri 10:00-19:00"],
  "oneTimeFees": [{ "name": "gas allowance for 2 bed flat", "amount": 15, "when": "On move-in", "frequency": "once", "estimated": false }],
  "otherRooms": [{ "title": null, "price": 845, "availableFrom": "2026-12-13", "url": "https://www.spotahome.com/london/for-rent:rooms/163769" }],
  "moveInWindows": [{ "from": "2026-12-14", "to": "2027-02-12" }],
  "bookedPeriods": [{ "from": "2023-02-06", "to": "2026-12-12" }],
  "videoUrls": ["https://youtu.be/AAurCI9zB6Q"],
  "photos": [
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/48cd1071fb9683473910d838bea911d87fe932f35f9310457381853d.jpg",
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/fc2f2583feb5a1f75ab9fa0bd94b68673ac4431aafe1ff655c3824d6.jpg",
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/a09df20542fb0739f3c71969d3161ec45cde14ddaa82b4b152500a2c.jpg"
  ],
  "allPhotos": [
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/48cd1071fb9683473910d838bea911d87fe932f35f9310457381853d.jpg",
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/fc2f2583feb5a1f75ab9fa0bd94b68673ac4431aafe1ff655c3824d6.jpg",
    "https://photos.spotahome.com/fsobscalew_1600_900_verified_ur_15_50/a09df20542fb0739f3c71969d3161ec45cde14ddaa82b4b152500a2c.jpg"
  ],
  "availableFrom": "2026-12-14",
  "verifiedAt": "2017-08-17T16:00:00.000Z",
  "landlordSince": "2016-12-05T23:42:38.000Z",
  "availabilityUpdatedAt": "2023-08-01T08:09:33.000Z",
  "scrapedAt": "2026-10-19T02:22:23.134Z"
}
```

### 💡 Use cases

**Rooms in Barcelona under 600 EUR with bills included, for students:**

```json
{
  "cities": ["barcelona"],
  "propertyTypes": ["room"],
  "maxPrice": 600,
  "allBillsIncluded": true,
  "suitableFor": ["students"]
}
```

**Every apartment in Lisbon and Porto with 2 bedrooms, with full costs and demand numbers:**

```json
{
  "cities": ["lisbon", "porto"],
  "propertyTypes": ["apartment"],
  "bedrooms": ["2"],
  "includeDetails": true
}
```

**Cheapest pet-friendly listings with an elevator and A/C in Madrid:**

```json
{
  "cities": ["madrid"],
  "sortBy": "lowestPrice",
  "petsAllowed": true,
  "amenities": ["elevator", "airConditioning"]
}
```

**The whole site, all 228 cities (about 69,000 listings):**

```json
{}
```

**New listings in London every day (schedule this run):**

```json
{
  "cities": ["london"],
  "onlyNew": true,
  "monitorName": "london-daily"
}
```

**Links (filters are not used):**

```json
{
  "startUrls": [
    { "url": "https://www.spotahome.com/s/lisbon/for-rent:apartments?features[]=elevator" },
    { "url": "https://www.spotahome.com/madrid/for-rent:rooms/91623" }
  ],
  "includeDetails": true
}
```

### ⚙️ How the input is organised

| Section | What it's for |
| --- | --- |
| **Maximum results** | Always first, caps the whole run. Empty means no limit. |
| **What to scrape** | Cities, property types, sort by and listing details (views, favorites, fees, monthly prices, landlord). |
| **Filters** | Minimum monthly rent, maximum monthly rent, bedrooms, bathrooms, number of tenants, minimum size (m²), available by, amenities, bills included, only all bills included, suitable for, tenant gender, bed type, pets allowed, smoking allowed, only checked by Spotahome, only instant booking, only no deposit, only best choice, only long-term contract and only with a discount. |
| **Monitoring** | Only new listings and monitor name. |
| **Links** | Links instead of the fields above. Filters are ignored with links. |

### 💰 Pricing

Pay-per-event: a one-time **$0.003** when the run starts, plus a price per listing saved to your dataset. The price depends on your Apify plan tier:

| Your Apify plan | Price per listing |
| --- | --- |
| Free | $0.019 |
| Bronze | $0.017 |
| Silver | $0.015 |
| Gold / Platinum / Diamond | $0.013 |

Approximate total cost:

| Listings collected | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| 100 | $1.90 | $1.70 | $1.50 | $1.30 |
| 1,000 | $19.00 | $17.00 | $15.00 | $13.00 |
| 10,000 | $190.00 | $170.00 | $150.00 | $130.00 |

**Listing details add-on:** when **Listing details** is on, each listing whose page was read adds one more charge:

| Your Apify plan | Listing details, per listing |
| --- | --- |
| Free | $0.008 |
| Bronze | $0.007 |
| Silver | $0.0065 |
| Gold / Platinum / Diamond | $0.006 |

Listings whose page could not be read pay only the base price, and listings left out by filters are free. New Apify accounts start with $5 in free credit. On the Free plan, a run saves up to 10 listings.

### 🚀 Run it

1. Create a free Apify account with $5 in credit.
2. Open the Spotahome Scraper.
3. Pick a city (or keep it empty for all of them), add filters, then click **Start**.
4. Export the results as CSV, Excel, JSON or XML from the Dataset tab.

### 🤖 Use with AI agents (MCP)

Connect the [Apify MCP server](https://mcp.apify.com) to Claude, ChatGPT, Cursor or any MCP client, then ask in plain words, for example: *"Get every Spotahome room in Milan under 700 EUR with bills included, with deposit and total monthly cost"*. The agent runs this Actor and reads the results.

### 🔧 Troubleshooting

- **Few or no results.** Every filter must match, so loosen one. Rare filters (like wheelchair accessible or bunk beds) read the whole city to find matches, so they take longer.
- **Maximum tenants is empty.** Listing links have no search card, so that number is unknown for them.
- **Highlights, transport and "checked on" are empty.** Spotahome writes them only for listings its homecheckers visited. Tick **Only checked by Spotahome** to get them on most rows.
- **A search link gives different results than the site.** The site's default order reshuffles between pages, so links are read newest first (or lowest price first when the link asks for it). Every listing appears once.
- **Prices are in different currencies.** Each city uses its own currency (EUR, GBP, PLN, CHF...). The `currency` field says which.

### ❓ FAQ

**How many listings are there?** About 69,000 in 228 cities as of October 2026. Madrid, Milan, Lisbon, Barcelona, Paris and Rome have the most.

**Does the rent include bills?** `billsIncluded` says All, Some or None, and `billsIncludedList` lists them. With listing details, `monthlyBills` and `totalMonthlyCost` give the money.

**Can I pick several bedrooms, types or cities?** Yes. Any listing matching one of the values you pick is kept, and duplicates are removed.

**Do I need a proxy?** No.

### 🛡️ Limits & responsible use

This Actor collects rental listings that Spotahome publishes on its website. It reads only pages the site's robots.txt allows (rent and move-in date filters are applied by the Actor, not sent to the site) and keeps a moderate pace. The landlord name is the public name shown on the listing. Use the data in line with Spotahome's terms and data protection law (GDPR).

### 📧 Contact

Questions, bugs or a field you need: norm.data.scrapers@gmail.com

### 🧪 Local development

```bash
bun install
bun scripts/gen-schemas.mjs
sh test/run.sh first '{"maxItems":10,"cities":["madrid"]}'
```

# Actor input Schema

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

Stop after this many listings in total. Leave empty for no limit. The Apify Free plan is always capped at 10.

## `cities` (type: `array`):

Spotahome cities to search. Empty = all 228 cities, biggest first.

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

Empty = every type.

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

Order of the listings inside each city. Empty = newest first.

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

Also read each listing page for its views, favorites and interested tenants, full description, highlights, minimum and maximum stay, deposit, admin fee, one-time fees, bills cost and total monthly cost, price for every month, booked dates and move-in windows, floor, heating, A/C, house rules, required documents, other rooms in the flat, all photos, videos, and the landlord name, type, listings, response time and rate. Charged per listing as an add-on.

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

In the city currency (EUR, GBP, PLN, CHF...). Checks the lowest monthly price.

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

In the city currency. Checks the lowest monthly price.

## `bedrooms` (type: `array`):

Bedrooms in the property (for rooms: in the shared flat).

## `bathrooms` (type: `array`):

Bathrooms in the property.

## `tenants` (type: `integer`):

Keep only listings that take at least this many people (2 to 10).

## `minAreaM2` (type: `integer`):

Size of the property, in square meters. Listings without a size are left out.

## `availableBy` (type: `string`):

Keep only listings you can move into on or before this date, like 2027-01-15 or "1 month" from today.

## `amenities` (type: `array`):

Keep only listings with all of these.

## `billsIncluded` (type: `array`):

Keep only listings whose rent includes all of these.

## `allBillsIncluded` (type: `boolean`):

Keep only listings whose rent includes every bill.

## `suitableFor` (type: `array`):

Keep only listings open to all of these.

## `gender` (type: `string`):

Empty = any.

## `bedTypes` (type: `array`):

Keep only listings with one of these beds.

## `petsAllowed` (type: `boolean`):

Keep only listings that allow pets.

## `smokingAllowed` (type: `boolean`):

Keep only listings that allow smoking.

## `verifiedOnly` (type: `boolean`):

Keep only listings a Spotahome homechecker visited and photographed.

## `instantBookingOnly` (type: `boolean`):

Keep only listings you can book without waiting for the landlord.

## `noDepositOnly` (type: `boolean`):

Keep only listings with no security deposit.

## `bestChoiceOnly` (type: `boolean`):

Keep only listings Spotahome marks as "Best choice".

## `permanentContractOnly` (type: `boolean`):

Keep only listings that also offer a permanent (long-term) contract.

## `discountOnly` (type: `boolean`):

Keep only listings with a discount for longer stays.

## `onlyNew` (type: `boolean`):

Skip listings saved by earlier runs with the same monitor name.

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

Runs with the same name share their history. Use a different name for each schedule.

## `startUrls` (type: `array`):

Searches copied from the site (https://www.spotahome.com/s/lisbon/for-rent:apartments?features\[]=elevator) or listing pages (https://www.spotahome.com/madrid/for-rent:rooms/91623).

## Actor input object example

```json
{
  "maxItems": 10,
  "cities": [
    "madrid"
  ]
}
```

# 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 = {
    "maxItems": 10,
    "cities": [
        "madrid"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/spotahome-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 = {
    "maxItems": 10,
    "cities": ["madrid"],
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/spotahome-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 '{
  "maxItems": 10,
  "cities": [
    "madrid"
  ]
}' |
apify call normdata/spotahome-scraper --silent --output-dataset

```

## MCP server setup

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