Pisos.com Scraper & Property Listings Monitor (Spain) avatar

Pisos.com Scraper & Property Listings Monitor (Spain)

Pricing

from $3.40 / 1,000 listing returneds

Go to Apify Store
Pisos.com Scraper & Property Listings Monitor (Spain)

Pisos.com Scraper & Property Listings Monitor (Spain)

pisos.com homes for sale and for rent in Spain, newest first: price in EUR, price per m², size, rooms, bathrooms, floor, location, agency or private seller, listing date and photos. Watch mode returns only new listings and price drops since your last check. Export to JSON, CSV or Excel.

Pricing

from $3.40 / 1,000 listing returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

A pisos.com scraper with alerts for new listings and price drops in Spain. Get pisos.com homes for sale (venta) and for rent (alquiler) in any Spanish province or city, newest first, as clean rows: price in EUR, price per m², size, rooms, bathrooms, floor, neighbourhood, municipality, province, coordinates, agency or private seller, listing date and photos. Turn on watch mode and schedule it: each run returns only the listings published since your last check and the listings whose price went down, with the previous price.

Built for real estate agencies watching their area, investors looking for new stock before others, and analysts tracking asking prices and rents in Madrid, Barcelona, Sevilla, Málaga or any town on pisos.com.

Export as JSON, CSV or Excel, or push new listings to Slack, email or a sheet with an Apify integration.

What you get

One row per listing:

FieldExampleNotes
listingId, url66708651257.100500, https://www.pisos.com/comprar/...pisos.com's own ID and link
operation, price, currency, pricePeriodventa, 194900, EUR, totalRentals are alquiler with pricePeriod: month. Listings shown as "A consultar" get null (never 0)
pricePerM2, surfaceM2, builtAreaM24331.11, 45, 155Price per m² is price ÷ size
siteDropAmount, siteDropPercent, sitePreviousPrice5000, 3, 199900The price reduction pisos.com itself shows on the listing
rooms, bathrooms, floor, floorNumber, hasElevator3, 2, 3ª planta, 3, trueAs stated by the advertiser
neighborhood, district, municipality, province, latitude, longitudeZona Noreste, Torrejón de Ardoz, MadridOnly what the listing shows publicly
sellerType, agencyName, agencyUrlagency, Princess HomesPrivate sellers are never named
publishedDate, updatedDate2026-10-19From the listing's own page
energyRating, condition, age, orientation, featuresD, Reformado, ["Ascensor", "Terraza", ...]From the listing's own page
description, imageUrl, imageUrls, photoCountPhone numbers and e-mails in the text are replaced with [phone removed] / [email removed]
changeType, previousPrice, priceChange, priceChangePercentnew, price-dropWatch mode only

In a sample of the 90 newest listings for sale in the province of Madrid (2026-10-20): price, size, price per m², municipality, province, coordinates, photos and link were present in 90 of 90; bathrooms in 88; rooms in 85; neighbourhood in 80; floor in 65. 31 of the 90 carried a price reduction shown by pisos.com. The median listing had 23 photos.

How to use it

Plain search: put places in locations as pisos.com writes them, for example Madrid (the province), madrid_capital (the city), Sevilla, barcelona_capital or malaga_capital. Choose operation (venta or alquiler), and set maxListings to how many listings you want per place (up to 1000). includeDetails (on by default) opens each listing for its date, all photos, full description, energy rating and agency name; turn it off for list data only.

{ "locations": ["Sevilla", "malaga_capital"], "operation": "alquiler", "maxListings": 100, "maxPrice": 1500 }

Or paste a pisos.com list address in searchUrls, with the filters you set on pisos.com:

{ "searchUrls": ["https://www.pisos.com/venta/pisos-madrid/"] }

Filters: minPrice, maxPrice, minBedrooms, maxBedrooms, minBathrooms, minSizeM2, maxSizeM2, sellerType (agency / private), requirePrice, onlyReduced. Every returned row is checked against them, so a row that does not match is never returned.

Watch mode: set monitoringMode to true and schedule the same input (hourly or daily). The first run returns the newest listings and remembers them. Later runs return:

  • new: listings published after the watch started that you have not received yet;
  • price-drop: listings you already received whose price went down, with previousPrice and priceChange (turn this off by setting includePriceDrops to false).

To start a watch again from scratch, run it once with resetMonitoringState set to true. Each run checks the newest watchPages pages (30 listings each, default 3). For a busy place such as the whole province of Madrid, raise watchPages or narrow the place to a city. Use watchName to keep separate watches of the same search.

Pricing

You pay per listing returned. Rows that explain why nothing was returned are free, so a watch run that finds nothing new costs nothing. The first run of a watch is a normal paid result (it returns the newest listings).

When nothing is returned

You always get a row that says why, and it is not charged:

  • not-found: pisos.com has no such place (check the spelling in a pisos.com address);
  • no-results / none-matching-filters: pisos.com has nothing for that search or those filters;
  • no-new-listings: watch mode, nothing new and no price drops since the last check;
  • not-allowed-by-robots-txt: pisos.com's robots.txt does not allow that address;
  • blocked, unreadable, incomplete: pisos.com could not be read; nothing is guessed.

Limitations

  • One search returns at most the 3,000 newest listings (100 pages of 30), the most pisos.com lists for one search.
  • Agency and private seller phone numbers are not collected.
  • The Actor does not log in and does not get past check pages; if pisos.com shows one, the row says blocked.

Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

  • Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
  • Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.