Fotocasa Scraper - Spain Property Listings, Prices & Agents
Pricing
from $0.36 / 1,000 listings
Fotocasa Scraper - Spain Property Listings, Prices & Agents
Scrape Fotocasa.es listings for sale or rent anywhere in Spain: price, price drops, €/m², rooms, baths, m², decoded floor, 8-level location, GPS, photos, agency and phone. Optional energy certificate, street and agency leads. Search by place or URL, past the 10,000 cap, monitor mode. No login.
Pricing
from $0.36 / 1,000 listings
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
What does Fotocasa Scraper do?
Fotocasa Scraper extracts property listings from fotocasa.es, Spain's large real estate portal, for sale, rent, room share, rent-to-buy and business transfer. Type a place ("Madrid", "Chamberí", "Marbella") or paste a Fotocasa search URL, and every listing becomes one row: price and price drops, €/m², bedrooms, bathrooms, m², floor, the full location tree with coordinates, photos, and the agency with its phone. Built for investors, agencies, valuers, proptech teams and market researchers.
Fotocasa scraper · Fotocasa API alternative · Spain property data · pisos en venta y alquiler
- Every listing field Fotocasa publishes: price, previous price and drop, €/m², rooms, baths, m², floor, condition, lift, air conditioning, heating, terrace, balcony, garden, pool, parking, photos with room tags, videos, virtual tours, floor plans
- The location tree, not just a town name: neighbourhood, district, municipality, comarca, province and autonomous community, with Fotocasa's ids for each level, plus latitude/longitude
- Floors you can sort by: Fotocasa stores the floor as a code (8 means 3rd floor); this actor decodes it to
"3rd floor"andfloorNumber: 3 - Past the 10,000-result cap: Fotocasa serves at most ~9,800 rows of one search; bigger searches are split into districts (then price bands) and each piece is read completely (Madrid city: 12,184 of 12,184 listings in one run)
- Optional details per listing: energy certificate (letter, kWh/m², CO₂), street and number, agency reference, legal agency name, website and email, construction type, heating and hot-water fuel, building age, orientation, occupancy, furnished, full equipment list
- Agency leads: one row per agency in your searches with its phone, profile, listing counts and price range
- Monitor mode: schedule it and get only new listings and price changes, plus the ids of listings that disappeared
- No login, no cookies, no browser: reads Fotocasa's own JSON gateway; ~1 request per 200 listings
- Export anywhere: JSON, CSV, Excel, XML; API, schedules, webhooks, Make, Zapier, n8n, Google Sheets, MCP
What data can you get from Fotocasa?
| 🔗 Listing URL and id | 💶 Price (`price`), currency, rent period | 📉 Previous price, drop, drop % |
| 📐 Size m², €/m² (`pricePerM2`) | 🛏️ Bedrooms, 🛁 bathrooms | 🏢 Floor + floor number |
| 🏠 Type and subtype (flat, attic, duplex…) | 🔧 Condition, new build | ✅ Lift, A/C, heating, terrace, pool… |
| 📍 Address, street, zip code | 🗺️ Neighbourhood → autonomous community | 🧭 Latitude, longitude, exact or approximate |
| 📝 Description | 📅 Published at, days on portal | 🖼️ Photos with room tags, videos, tours, plans |
| 🏢 Agency name, id, profile, logo | ☎️ Agency phone | 👤 Agency or private seller |
| ⚡ Energy rating, kWh/m², CO₂ (details) | 🔖 Agency reference, legal name, web, email (details) | 🔥 Heating, hot water, age, orientation (details) |
| 🏗️ Development name and units | 🔁 Monitor: new / priceDrop / priceRise | 📇 Agency leads rows |
How to scrape Fotocasa with Fotocasa Scraper
- Create a free Apify account (it comes with monthly free credit).
- Open Fotocasa Scraper and type one or more places in Locations, or paste Fotocasa search URLs.
- Pick the operation (buy, rent…), property type and any filters: price, size, bedrooms, features, condition, published within.
- Set Max listings and switch on Listing details or Agency leads if you need them.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
⬇️ Input
| Parameter | Type | What it does |
|---|---|---|
locations | list | Place names as you type them on Fotocasa, or URL slugs (madrid-capital, barcelona-capital/eixample). One search each. Prefill: ["Madrid"] |
locationType | select | Which match to use when a name fits several places (city vs province…). Default: Fotocasa's first suggestion |
startUrls | list | Fotocasa search URLs; their own operation, type and filters are used |
listingUrls | list | Single listing links or ids, read in full with the details block |
operation | select | buy (default), rent, share, rentBuyOption, transfer |
propertyType | select | home (default), newHome, premises, garages, office, boxRoom, land, building |
propertySubtypes | list | flat, apartment, house, semi-detached, terraced, attic, duplex, penthouse duplex, loft, studio, ground floor with garden, country house |
minPrice / maxPrice | integer | Euros (monthly rent for rentals) |
minSize / maxSize | integer | m² |
minRooms / maxRooms, minBathrooms / maxBathrooms | integer | Bedrooms / bathrooms |
publicationDate | select | Any, last 24 h, 48 h, week, month |
features | list | Must have: lift, terrace, A/C, pool, parking, storage room, furnished, sea views… (19) |
conditions | list | almost new, very good, good, to renovate, refurbished |
priceDropOnly, subsidizedOnly, withVideoOrTourOnly | boolean | Fotocasa's own "bajada de precio", "con ayudas", video/tour filters |
keyword | text | Fotocasa's text search inside the ads, e.g. piscina |
agencyIds | list | One agency's listings (its agencyId, or its Fotocasa page URL) |
rentalTypes | list | Rentals: long-term or temporary |
occupancy | list | Homes for sale: available, occupied, with tenant, bare ownership, auction |
sortBy | select | rating (default), latest, cheapest, mostExpensive, cheapestPerM2, biggest, smallest |
sellerType | select | All, agencies only, private sellers only |
latitude, longitude, distanceKm | number | Keep listings within a radius of a point (rows get distanceKm) |
includeDetails | boolean | Add the details block to each listing (charged per row that carries it) |
includeAgencyLeads, maxAgencyLeads | boolean, integer | Also deliver agency rows (default 100 max) |
monitorMode, monitorKey, webhookUrl | boolean, text | Only new and re-priced listings; optional memory name and a webhook |
maxItems | integer | Most listing rows per run. Default 100, prefill 20 |
maxItemsPerSearch | integer | Most rows per place / URL / agency. 0 = no per-search cap |
splitLargeSearches | boolean | Read past the ~9,800-row cap of one search (default on) |
compact | boolean | Core fields only (no photo list, description, links, location ids) |
proxyConfiguration | proxy | Optional. Default: a direct connection; only when Fotocasa refuses it does the actor move to a datacenter proxy (where available), then Spanish residential proxies, then Apify's Unblocker |
Input JSON
{"locations": ["Valencia"],"operation": "buy","maxPrice": 500000,"minRooms": 2,"features": ["lift", "terrace"],"includeDetails": true,"maxItems": 100}
Pick the place the way Fotocasa does
A name can match several places: "Madrid" is a city, a province and a region. The actor takes Fotocasa's first suggestion (the city) and lists the others in the log. Set Location type to province for the whole province, or paste the search URL you see in your browser, which always resolves exactly.
Filters that read search pages
Rental duration and occupancy are applied by Fotocasa's search pages, not its JSON gateway, so those searches read 30 listings per request instead of 200. Every other filter runs inside Fotocasa before anything is read.
⬆️ Output
One row per listing (type: "listing"); with Agency leads on, also one row per agency (type: "agency"). A real row from a 100-listing Valencia run with Listing details on (2026-10-14, trimmed):
{"id": "189788009","operation": "buy", "propertyType": "home", "propertySubtype": "flat","price": 440000, "previousPrice": 445000, "priceDrop": 5000, "pricePerM2": 6470.59,"rooms": 2, "bathrooms": 2, "sizeM2": 68, "floor": "1st floor", "floorNumber": 1,"address": "C. de Campos Crespo, Patraix", "zipCode": "46014","neighborhood": "Safranar", "district": "Patraix", "municipality": "Valencia Capital", "province": "Valencia","latitude": 39.455276, "longitude": -0.39774883,"publishedAt": "2026-05-26T17:02:30.050Z", "daysOnPortal": 140, "imageCount": 43,"advertiserType": "agency", "agencyName": "aProperties Real Estate Valencia", "agencyPhone": "+34960179239","energyRating": "A", "energyConsumptionKwhM2": 13, "energyCertificateStatus": "available","agencyReference": "VV2605056", "agencyLegalName": "APROPERTIES REAL ESTATE ASSETS VALENCIA","heating": "electricity", "buildingAge": "1-5 years", "orientation": "southeast", "occupancyStatus": "available","equipment": ["air conditioning", "private garage", "private garden", "terrace", "storage room", "lift", "community pool"]}
Fields and how often they are filled
Measured on local runs on 2026-10-14: Madrid, 1,000 listings for sale (no details) and Valencia, 100 for sale + Barcelona, 100 for rent (details on). A field is empty when the ad does not publish it.
| Field | Madrid 1,000 | Valencia / Barcelona with details |
|---|---|---|
| id, url, price, sizeM2, address, zipCode, neighbourhood → province, latitude, longitude, publishedAt, images | 99-100% | 100% |
| rooms / bathrooms | 98% / 99% | 94-100% / 98-99% |
| floor (decoded) | 83% | 69-86% |
| previousPrice / priceDrop | 36% | 15-35% |
| agencyName / agencyPhone (agency ads) | 100% / 94% | 100% / 85-100% |
| hasLift / hasAirConditioning / hasHeating | 75% / 65% / 85% | 71-82% / 63-94% / 76-91% |
| condition | 54% | 27-42% |
| videoUrls / virtualTourUrls | 39% / 23% | 54-62% / 17-27% |
| energyRating + kWh/m² (details) | - | 34% / 76% (the rest: certificate not provided) |
| agencyReference / agencyLegalName (details) | - | 99-100% |
| agencyWebsite / agencyEmail (details) | - | 38-93% / 0-8% |
| street / streetNumber (details) | - | 57-75% / 2-13% |
| heating, hot water, building age, orientation (details) | - | 21-74% |
| furnished / equipment (details) | - | 47-85% / 99% |
Fotocasa shows a missing or pending energy certificate as "G" with a value of 999. Those rows get energyRating: null and energyCertificateStatus: "not provided" instead of a G that was never issued. Private sellers publish only a first name, so for them agencyName and agencyPhone stay empty.
How can I use Fotocasa data?
- 📈 Investors and analysts: price per m², price drops and days on portal by district, for comps and yield models
- 🏢 Agencies: watch competitors' stock (
agencyIds), new listings in your zone every morning (monitor mode) - 🧮 Valuers and banks: energy rating, building age, floor and condition next to the asking price
- 📇 Proptech sales teams: agency leads with phone, website and listing volume per city
- 🗺️ Data teams: location ids and coordinates join cleanly with INE, cadastre or your own maps
- 🤖 AI agents: compact rows through the API or MCP for "find me 3-bedroom flats under €400k in Valencia"
How much does it cost to scrape Fotocasa?
Pay per result, no start fee:
| Event | Price | When |
|---|---|---|
| Listing | $0.00036 per listing ($0.36 per 1,000) | every listing row |
| Listing details | $0.00072 per listing | only rows that carry the details block (Listing details on, or a listing link) |
| Agency lead | $0.0018 per agency | only with Agency leads on |
| Run | Cost |
|---|---|
| 20 listings (the prefilled demo) | $0.0072 |
| 100 listings | $0.036 |
| 100 listings with details | $0.108 |
| 1,000 listings | $0.36 |
The free monthly credit on an Apify account covers thousands of listings.
Integrations, API, scheduling and MCP
Run it on a schedule (daily at 08:00, for example) with monitor mode to receive only new and re-priced listings. Send results to Google Sheets, Slack, Make, Zapier or n8n, or use webhooks. Call it from your code with the Python or JavaScript client, or connect AI assistants through the MCP server.
More real estate scrapers
- 🇪🇸 Kyero Property Scraper — Spanish property for international buyers, with estate-agent contacts
- 🇬🇧 Rightmove Scraper — UK listings and agents
- 🇺🇸 Trulia Scraper — US listings, agents and prices
- 🔨 Habitissimo Spain Contractors Scraper — Spanish renovation contractors with phones
- 🏢 Crexi Scraper — commercial real estate listings and brokers
All our actors: apify.com/scrapersdelight.
Limits and empty runs
- One Fotocasa search serves about 9,800 listings. With Read past the 10,000 cap on (default), bigger searches are split into sub-places, then price bands. A few listings with no price and no sub-place can stay out;
RUN_SUMMARYsays how many. - Speed on a direct connection: 1,000 listings in about 10 seconds; details add one request per listing (100 in about 2 seconds).
- Radius and seller-type filters are applied to the listings Fotocasa returns, so a narrow filter reads more pages before it fills Max listings.
- An empty run (no listing matches) costs nothing.
RUN_SUMMARYlists, per search, Fotocasa's own count, the rows read and delivered, and places that could not be found. - Agency emails come from the ad itself; the actor does not crawl agency websites.
- If only Apify's Unblocker reaches Fotocasa during a run, listings are delivered without the details block, and the details event is not charged for them.
❓ FAQ
How much does Fotocasa Scraper cost?
$0.36 per 1,000 listings, plus $0.72 per 1,000 for the optional details block and $1.80 per 1,000 agency rows. There is no start fee.
How many listings can Fotocasa Scraper get?
As many as Fotocasa lists for your search. A single search returns up to ~9,800; with splitting on, the whole of Madrid city (12,184 homes for sale on 2026-10-14) came back complete in one run.
Can Fotocasa Scraper monitor new listings and price drops?
Yes. Turn on Monitor mode and schedule the run. Each run delivers only listings that are new or whose price changed since the last run (changeType, previousSeenPrice), and lists removed listings in the run's OUTPUT record.
Does Fotocasa Scraper need a login, cookies or an API key?
No. It reads the same public data a visitor sees, with no account.
Can I use Fotocasa Scraper with the Apify API?
Yes. Start runs and read datasets with the Apify API or its Python and JavaScript clients; every input field above is a JSON key.
Can AI agents use Fotocasa Scraper through MCP?
Yes. Add it to the Apify MCP server and let your assistant run searches; the compact option keeps rows short.
Why did Fotocasa Scraper return no results?
Usually the filters exclude everything, or the place name matched a different place. Open RUN_SUMMARY: it shows Fotocasa's own count per search and any place it could not find. Paste a Fotocasa search URL to be exact.
Does Fotocasa Scraper get the energy certificate?
Yes, with Listing details on: letter, kWh/m² and CO₂. When the advertiser has not provided one, the row says "not provided" instead of copying Fotocasa's placeholder G.
Does Fotocasa Scraper return private sellers' contacts?
No. Private sellers publish only a first name and no phone on Fotocasa; those fields stay empty. Agency names and phones are included.
Is it legal to scrape Fotocasa?
Web scraping may be subject to legal restrictions (for example GDPR for personal data in the EU). Make sure your use has a legitimate purpose and follows Fotocasa's terms; when in doubt, ask your legal advisor.
Your feedback
Found a bug or need a field? Open an issue on the Issues tab; we read every one.