Fotocasa Scraper [$0.8/1K💰] | Madrid→Málaga | Price per m²
Pricing
from $0.80 / 1,000 results
Fotocasa Scraper [$0.8/1K💰] | Madrid→Málaga | Price per m²
Scrape Fotocasa.es property listings across Spain — price, €/m², rooms, surface, full address, GPS, photos, agency & phone. Ideal for Spanish market research, price monitoring & real estate leads. Buy & rent.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Fotocasa Scraper — Spanish Property Listings Data for $0.8 / 1,000
Scrape property listings from Fotocasa.es — Spain's #2 property portal with ~1.5M active listings — for Spanish real estate market research, price-per-m² monitoring, rental yield analysis and real estate agency lead generation. One structured row per property: price, €/m², rooms, surface, full address, GPS, photos and agency phone.
💰 From $0.8 per 1,000 properties — a 100-listing crawl costs roughly $0.03. Nearly every competing Fotocasa scraper charges $0.9–$6 per 1,000 results. Free to try: 15 properties per run on a free Apify account.
Scrape Spanish Property Listings for Market Research
Paste any Fotocasa.es search URL (buy or rent) and the actor returns one structured row per listing — with automatic pagination, on-site filters honoured, and 30+ fields per property. Works for every Spanish city, province and region.
Who uses it:
- Property investors & buy-to-let buyers — rental yield analysis by district, price-per-m² benchmarking
- Real estate analysts & PropTech — market data feeds, valuation models, price trend tracking
- Relocation / expat buyer agents — client shortlists across Spanish cities
- Marketers & brokers — inmobiliaria and agency contact leads
Build Spanish Real Estate Datasets Without an Official API
Fotocasa has no public API. This actor is the practical Fotocasa API alternative: it reads the same structured JSON that powers the website itself (server-rendered React state, no DOM parsing), so you get clean property data — price, €/m², address hierarchy, GPS, agency contacts — ready to export as JSON, CSV, Excel or HTML.
Track Spanish Property Prices & Price per Square Meter
Monitor asking prices and €/m² across districts, cities and provinces over time. Fields include price, rawPrice, pricePerSqm, rooms, surface, neighborhood, district, city and province — everything needed for a Spanish housing market dashboard or price index. Schedule daily or weekly runs to catch price drops and new listings early.
Generate Real Estate Agency Leads from Fotocasa
Every listing row includes the listing agency name, agency ID, agency URL and phone number. Build lead lists of active inmobiliarias in any Spanish city — filtered by which agencies currently list properties matching your criteria (price range, property type, district).
Why use Fotocasa Scraper?
- 💰 From $0.8 per 1,000 properties — a 100-item crawl costs ~$0.03. One of the lowest prices on Apify for Fotocasa data.
- Pure HTTP, no browser — parses Fotocasa's server-rendered property JSON directly: fast and cheap to run.
- Buy and rent — works on any
comprar(buy) oralquiler(rent) search URL with all on-site filters honoured. - Rich output — 30+ fields per property: coordinates, photos, agency, address hierarchy, listed date.
- Automatic parallel pagination — crawls every result page in parallel (concurrency up to 20) until your
maxItemscap. - Apify proxy included — routes traffic through Apify's residential proxy to bypass CloudFront/DataDome anti-bot protection.
How to scrape Fotocasa listings
- Go to Fotocasa.es and run a property search (e.g. flats for sale in Madrid).
- Copy the search URL from your browser's address bar.
- Open Fotocasa Scraper in Apify Console and paste the URL into Start URLs.
- Set Maximum Items and click Start.
- Wait for the run to finish, then download your dataset as JSON, CSV, Excel or HTML.
Input: Configure a Fotocasa Property Search
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | array | no* | — | Full Fotocasa.es search-result URLs; each is auto-paginated in parallel. Takes priority over all filter fields below. |
location | string | no | Madrid | City or area in Spain (provincial capitals auto-resolve — Barcelona → barcelona-capital). Used only when startUrls is empty. |
operation | string | no | comprar | comprar (buy) or alquiler (rent). Used only when startUrls is empty. |
propertyType | string | no | viviendas | viviendas, pisos, casas, atico, duplex, estudio, garajes, oficinas, locales, naves, terrenos, trasteros, edificios… |
rooms | integer | no | – | Exact bedroom count (1–6). Only ONE of Rooms / Feature / publishedLast48h per search. |
feature | string | no | – | One Fotocasa feature: terraza, ascensor, piscina, jardin, obra-nueva, amueblado, con-vistas-al-mar, lujo, chollo… |
publishedLast48h | boolean | no | false | Only listings published in the last 48 h (new-listing alerts). |
sortBy | string | no | relevance | relevance, newest, cheapest, most-expensive, largest, smallest, cheapest-per-m2. |
minPrice / maxPrice | integer | no | – | Price range filter (EUR). |
minSurface / maxSurface | integer | no | – | Surface range filter (m²). |
maxItems | integer | no | 10000 | Hard cap on total listings collected. |
maxPages | integer | no | 200 | Max search-result pages to crawl (~30 listings each). |
maxConcurrency | integer | no | 20 | Pages fetched in parallel. |
maxRequestRetries | integer | no | 5 | Retries before giving up on a failed page. |
debug | boolean | no | false | Saves raw HTML of the first page to the key-value store. |
*Either startUrls (paste a search URL) or the convenience filter fields (location + operation + filters) — the actor builds the Fotocasa URL for you.
Fotocasa URL patterns:
- Buy:
https://www.fotocasa.es/es/comprar/viviendas/{location}/todas-las-zonas/l - Rent:
https://www.fotocasa.es/es/alquiler/viviendas/{location}/todas-las-zonas/l
Output: One Structured Row per Property
| Field | Description |
|---|---|
id / url | Fotocasa listing ID and direct link |
title | Listing headline (derived from property type + location when Fotocasa provides none) |
description | Property description text |
price / rawPrice | Display price (text) and numeric EUR value |
pricePerSqm | Price per m² (EUR) |
rooms / bathrooms | Bedroom and bathroom counts |
surface | Living area in m² |
floor | Floor level |
propertyType | e.g. Flat, House, Penthouse |
transactionType | buy or rent |
address* | Full address hierarchy: street → neighborhood → district → city → municipality → province → zip → country |
latitude / longitude | GPS coordinates |
photos / photoCount | Image URLs and count |
agency / agencyId / agencyUrl / phone | Listing agency name, ID, profile URL and phone |
listedDate | When the listing was published |
energyRating | Energy certificate (A–G, when available) |
isNewConstruction | New-build flag |
features | Property feature keys |
scrapedAt | ISO timestamp of the scrape |
Example Output
{"portal": "fotocasa","id": "190021901","url": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/.../190021901/d","title": "Luminoso piso en pleno centro de Madrid","price": "350.000 €","rawPrice": 350000,"pricePerSqm": 11290,"rooms": 1,"bathrooms": 1,"surface": 31,"propertyType": "Flat","transactionType": "buy","addressNeighborhood": "Goya","addressDistrict": "Barrio de Salamanca","addressCity": "Madrid","addressProvince": "Madrid","addressZipCode": "28001","latitude": 40.423670774665496,"longitude": -3.679176002780123,"photoCount": 18,"agency": "ENGEL & VÖLKERS MADRID","phone": "+34912774500","listedDate": "2026-06-19T13:13:47.600Z","energyRating": null,"features": ["surface", "rooms", "bathrooms"]}
How It Works (technical)
The actor uses a CheerioCrawler (pure HTTP — no browser) with Apify's residential proxy (Spain country code):
- Fetches each search-result page over HTTP through the Apify residential proxy. Direct datacenter IPs get a 403 "Request blocked" — the residential group is required.
- Primary data source — embedded JSON: Fotocasa server-side renders its React state into a
<script type="application/json" id="__initial_props__">tag. The actor parses this JSON and reads the property array atinitialSearch.result.realEstates(31 listings per page) — complete camelCase objects (rawPrice,address.zipCode,coordinates,multimedia[],features[],dateOriginal.timestamp), no DOM scraping. - Fallbacks (in order):
initialSearch.result.resultsV2.items,__NEXT_DATA__,__NUXT__, inline JSON patterns, then DOM parsing of property cards. - Auto-paginates by URL pattern inference (
/l→/l/2→/l/3…) up to the item cap. - Pushes one normalized row per property to the Apify dataset.
Integrations & Automation: Schedule Property Price Monitoring
This actor is fully API-callable (REST API, Apify SDK, Apify API client for Python/JS). Connect it to:
- Apify schedules — run daily or weekly to monitor Spanish property prices and catch new listings
- Webhooks / Zapier / Make — push new listings into Slack, Sheets, CRM or a database
- apify-client — build automated Spanish real estate data pipelines
For price monitoring, start with a daily schedule with maxItems capped to your budget — e.g. 1,000 listings/day ≈ $0.8/day. For weekly market snapshots, a Monday run is enough. Recurring usage also keeps your datasets continuously fresh for dashboards.
Related Actors: European Real Estate Data
- Idealista Scraper — Spain's #1 portal (Spain, Italy & Portugal). Pair with Fotocasa to cover ~90% of available Spanish listings (the two overlap only ~60%).
- Rightmove Scraper — UK property listings & sold prices.
- SeLoger Scraper — French property listings data.
- Immowelt Scraper — German property listings with EPC.
- Immobiliare.it Scraper — Italian property data.
Build a cross-country European real estate dataset by running the Spain, Italy, France, Germany and UK scrapers on the same schedule.
FAQ
Why use this actor instead of an official Fotocasa API?
Fotocasa does not offer a public API. The only ways to get structured property data from the portal are improving scrapers like this one. This actor reads Fotocasa's own server-rendered JSON — the same data that powers the website — so you get clean, normalized records without building or maintaining a scraper yourself.
What are the alternatives to this actor for Spanish property data?
- Idealista data — via Idealista Scraper (Spain, Italy, Portugal). Idealista is Spain's #1 portal (~50M monthly visits vs Fotocasa's ~14–16M). Best practice: run both — they share ~60% agency listings, so each carries ~40% exclusives.
- Fotocasa vs Idealista — which has more unique listings? Fotocasa is particularly strong on private-landlord (particular) listings and new-build (obra nueva) inventory; Idealista has the larger overall inventory and stronger filters. Around 40% of Fotocasa listings never appear on Idealista — mostly private landlords who publish on only one portal.
- Other portals: Pisos.com, Habitaclia (Adevinta sister portal, ~93% overlap with Fotocasa) — cover niche inventory.
- Commercial providers: PropAPIS/WebScrapingHub-style managed APIs (subscription).
What property types can I scrape?
Anything Fotocasa indexes: apartments/flats (pisos), houses (casas), penthouse (ático), duplex, studios (estudios), new construction (obra nueva), garages, offices, commercial premises (locales), warehouses (naves), land (terrenos) — for both buy (comprar) and rent (alquiler).
Can I find newly listed properties fast?
Yes — use publishedLast48h: true or paste a sortBy=newest search URL. Combined with a daily schedule, this acts as a new-listing alert system for competitive markets (Madrid, Barcelona, Costa del Sol), where good flats get inquiries within minutes of going live.
Do my on-site filters work?
Yes — any filter you set on Fotocasa.es (price range, rooms, neighborhood, province) is encoded in the URL and honoured by the scraper.
Do I need a proxy?
Apify's residential proxy is included and recommended. Datacenter IPs (including the default Apify proxy group) receive a 403 "Request blocked" from CloudFront/DataDome — the residential group routes around it.
What about individual listing detail pages?
This scraper focuses on search-result pages (30+ fields per listing). Individual detail-page extras (energy certificate, exact street, construction type) can be added as a follow-up enhancement — like every field already delivered above, nothing is invented.
SEO Keywords
fotocasa scraper, fotocasa es scraper, spanish property scraper, spain real estate data, fotocasa api alternative, idealista alternative, madrid property listings, pisos en venta madrid, barcelona apartments for sale, spanish rental listings, alquiler viviendas, costa del sol property, malaga real estate data, price per square meter spain, spanish property price monitoring, rental yield analysis spain, buy to let spain, inmobiliaria leads, real estate agency leads spain, obra nueva listings, new construction spain, spanish housing market data, fotocasa vs idealista, property data spain city, spanish address gps property
For AI Agents & LLM Apps
Purpose: Returns structured property listings from Fotocasa.es search results — one dataset row per listing with 30+ fields (price, €/m², rooms, surface, address hierarchy, GPS, photos, agency + phone).
Minimal input:
{"startUrls": ["https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"],"maxItems": 100}
Alternative inputs — search mode (no URL needed):
{ "location": "Barcelona", "operation": "alquiler", "propertyType": "viviendas", "maxItems": 100 }
{ "location": "madrid-capital", "operation": "comprar", "rooms": 2, "minPrice": 200000, "maxPrice": 500000, "publishedLast48h": true, "maxItems": 50 }
Output fields: id, url, title, description, price, rawPrice, pricePerSqm, rooms, bathrooms, surface, floor, propertyType, transactionType, addressStreet, addressNeighborhood, addressDistrict, addressCity, addressMunicipality, addressProvince, addressZipCode, addressCountry, latitude, longitude, photos, photoCount, agency, agencyId, agencyUrl, phone, listedDate, energyRating, isNewConstruction, features, scrapedAt.
Behaviors an agent should know:
startUrlstake priority — when one or more search URLs are provided, thelocation/operation/propertyType/filter convenience fields are ignored. SetstartUrlsor the filter fields, not both.- If
startUrlsis empty andmaxItemsis unset, the actor defaults to 10,000 items — setmaxItemsto bound cost. Each result costs $0.0008 (≈$0.8/1,000). maxConcurrencydefault 20 pages in parallel;maxPagesdefault 200 (~30 listings/page) — lower both for gentler runs.- Only ONE of
rooms/feature/publishedLast48hcan be set at a time (Fotocasa constraint); setting two may produce no results. - Filters (price range, surface, rooms) encode into the generated Fotocasa URL only in search mode (empty
startUrls). - Runs require Apify residential proxy (already configured); datacenter IPs get 403-blocked.
- The actor charges pay-per-result — budget
maxItemsbefore scheduling repeated runs.
Billing: pay-per-result — USD 0.0008 per property listing (~$0.8 per 1,000) + small run-start fee per GB memory.
Legal & Compliance Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Fotocasa (Adevinta).
It accesses only publicly available Fotocasa.es search-result pages — no login bypass, no CAPTCHA solving, no private data. It collects the same public property-listing information any visitor can see in their browser.
Users are responsible for their own compliance with Fotocasa's Terms of Service and applicable data-protection law (including GDPR for personal data such as agency contact details and phone numbers). Listing-agency contact data should not be used for unsolicited commercial outreach in violation of applicable law (e.g. CAN-SPAM, GDPR, Spain's LOPDGDD). This text is not legal advice.