Fotocasa Scraper & Property Listings Monitor (Spain)
Pricing
from $0.70 / 1,000 listing returneds
Fotocasa Scraper & Property Listings Monitor (Spain)
For agencies, investors and price trackers: Fotocasa homes for sale and for rent in Spain, newest first, with price in EUR, m², rooms, bathrooms, address, coordinates, agency and photos. Watch mode returns only new listings and price drops since your last check. Export as JSON, CSV or Excel.
Pricing
from $0.70 / 1,000 listing returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
A Fotocasa scraper with alerts for new listings and price drops in Spain. Get Fotocasa homes for sale and for rent in any Spanish city, district or neighbourhood, newest first, as clean rows: price in EUR, price per m², size, rooms, bathrooms, address, neighbourhood, coordinates, agency name, publication 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.
Built for real estate agencies watching their area, investors looking for new stock before others, and analysts tracking asking prices in Madrid, Barcelona, Valencia or any town on Fotocasa.
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:
| Field | Example | Notes |
|---|---|---|
listingId, url | 191065003, https://www.fotocasa.es/es/comprar/vivienda/... | Fotocasa's own ID and link |
price, currency, pricePerM2 | 615000, EUR, 8311 | Price as published. Listings without a published price get null (never 0) |
siteReducedBy | 20000 | The price reduction Fotocasa itself shows for the listing, in EUR |
surfaceM2, rooms, bathrooms | 74, 2, 2 | As stated by the advertiser |
floorCode, hasElevator | 7, true | floorCode is Fotocasa's own floor code, passed through untranslated |
address, neighborhood, district, city, province, region, zipCode, latitude, longitude | Calle de Alonso del Barco, Arganzuela | Only what the listing shows publicly |
sellerType, agencyName, agencyId | agency, La Casa Agency ... | Private sellers are never named |
publishedAt, publishedAtLocal | 2026-10-08T17:57:45.813Z, 2026-10-08 19:57:45 | The date Fotocasa sorts "newest" by. Fotocasa gives Spanish local time marked as UTC; publishedAt is converted to real UTC, publishedAtLocal is the Madrid time as shown |
description, imageUrl, imageUrls | Phone numbers and e-mails in the text are replaced with [phone removed] / [email removed] | |
changeType, previousPrice, priceChange | new, price-drop | Watch mode only |
In a sample of 90 listings from Madrid (2026-10-09): price, size, address, neighbourhood, postcode, coordinates, photos and link were present in 90 of 90; rooms in 88; bathrooms in 85; floor code in 76; agency name in 86 (the other 4 were private sellers). The median listing had 21 photos.
How to use it
Plain search: put places in locations exactly as they appear in Fotocasa addresses, for example madrid-capital, barcelona-capital, valencia-capital, or a district such as madrid-capital/chamberi. Choose buy or rent, and how many listings you want per place (up to 1000).
{ "locations": ["madrid-capital", "barcelona-capital"], "operation": "rent", "maxResultsPerSearch": 100, "maxPrice": 1500 }
Or paste a Fotocasa list address (page 1, without the part after ?):
{ "searchUrls": ["https://www.fotocasa.es/es/comprar/viviendas/valencia-capital/todas-las-zonas/l"] }
Filters: minPrice, maxPrice, minRooms, maxRooms, minSurface, maxSurface, minBathrooms, sellerType (agency / private). They are sent to Fotocasa and every returned row is checked again, so a row that does not match is never returned.
Watch mode: set onlyNew: 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, withpreviousPriceandpriceChange.
A listing re-published with an old ID is remembered but not sold to you as new. Each run checks the newest watchPages pages (30 listings each, default 3). For a busy place such as all of Madrid, raise watchPages or narrow the place to a district.
Pricing
You pay per listing returned. In watch mode, a check that finds nothing new costs one small search-checked event, so you know the watch ran. Rows that explain why nothing was returned are free. 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: Fotocasa has no such place (check the spelling in a Fotocasa address);no-results/none-matching-filters: Fotocasa 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: Fotocasa's robots.txt does not allow that address (for example/madrid/; usemadrid-capital);blocked,unreadable,incomplete: Fotocasa could not be read; nothing is guessed.
How it works
For each search the Actor reads page 1 of the Fotocasa list (to confirm the place exists and how many listings it has), then reads the listings newest first from the data Fotocasa's own pages use, 30 at a time. It follows Fotocasa's robots.txt on every address it requests, does not log in, and does not solve or bypass check pages. Phone numbers of agencies and private sellers are not collected.
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.