Habitaclia.com Spain Scraper — Property Data
Pricing
from $2.00 / 1,000 results
Habitaclia.com Spain Scraper — Property Data
Scrape Habitaclia.com Spain listings without an API. Export property data to CSV/JSON. Habitaclia API alternative for real estate research.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
72
Total users
7
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Habitaclia.com Spain Property Scraper — Spanish Real Estate Listings to JSON/CSV/Excel

Scrape real estate listings from Habitaclia.com — one of Spain's leading property portals, part of the Adevinta network (the group behind Fotocasa). This Habitaclia scraper extracts apartments, houses, attics, duplexes, offices, commercial premises, land and parking spaces from any Spanish province or city, returning clean structured data ready to export to JSON, CSV or Excel.
Search by Spanish location slug and filter by price (EUR), surface area, room count and advertiser type. Every listing card returns 30+ fields — address, neighborhood, price per m², specs, energy class, image URLs and amenity flags — making it ideal for property analysts, investors, market researchers and proptech teams who want reliable Spain real estate data without managing browsers, captchas or proxy rotation.
✨ What this Actor does / Key features
- Scrapes Habitaclia.com — Spain's major property portal, with especially deep coverage in Catalonia (Barcelona, Girona, Tarragona, Lleida) and strong nationwide inventory.
- All 10 property types — apartments, all-residential housing, houses, attics/penthouses, duplexes, offices, commercial premises, industrial, land and parking.
- Sale and rent — scrape
comprar(sale) oralquiler(rent) listings. - Rich data per listing — 30+ fields: price, price per m², area, rooms, bathrooms, floor, year built, energy class, full parsed address, coordinates, images and advertiser details.
- Amenity flags — booleans for elevator, parking, terrace, pool, sea view, furnished, luxury and more.
- Client-side filters — narrow by price (EUR), area (m²), room count, advertiser type (agency / private) and keyword.
- Robust crawling — HTTP-only fetching with Apify RESIDENTIAL ES proxy, exponential backoff retries, pagination-loop and thin-page detection.
- Structured, export-ready output — flat JSON, perfect for dashboards, data warehouses and ML pipelines.
🔍 Input
| Field | Type | Description |
|---|---|---|
transactionType | string (enum) | sale (Comprar) or rent (Alquiler). Default sale. |
propertyType | string (enum) | Property category: apartment, housing (all residential), house, attic, duplex, office, commercial, industrial, land, parking. Default apartment. |
location | string | Habitaclia location slug, lowercase ASCII with underscores for spaces (e.g. barcelona, madrid, valencia, palma_de_mallorca, sant_cugat_del_valles). Province slugs do province-wide searches; town slugs target one municipality. Default barcelona. |
minPrice / maxPrice | integer | Price range filter in EUR (client-side). |
minArea / maxArea | integer | Surface area filter in m² (client-side). |
minRooms / maxRooms | integer | Room-count filter (client-side), 0–20. |
advertiserType | string (enum) | all, agency or private (client-side). Default all. |
keyword | string | Optional substring filter on title and description. |
maxListings | integer | Hard cap on number of listings saved. Default 200. |
maxPages | integer | Maximum search pages to crawl (Habitaclia shows ~25 listings per page). Default 20. |
proxyConfiguration | object | Apify proxy settings. RESIDENTIAL group with country ES is recommended and set by default. |
🚀 Example input
{"transactionType": "sale","propertyType": "apartment","location": "barcelona","minPrice": 200000,"maxPrice": 600000,"minRooms": 3,"advertiserType": "agency","maxListings": 500,"maxPages": 35,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "ES"}}
Madrid rentals between €1,000 and €1,800:
{"transactionType": "rent","propertyType": "apartment","location": "madrid","minPrice": 1000,"maxPrice": 1800,"maxListings": 200,"maxPages": 20,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "ES" }}
📦 Output
One JSON record per listing, written to the default Apify dataset. Below are the main fields (the full record includes 30+ fields, including all amenity booleans).
| Field | Description |
|---|---|
adId | Habitaclia listing identifier. |
detailUrl | URL of the full listing detail page. |
title / shortDescription | Listing title and short description. |
transactionType / propertyType / advertType | Sale or rent, property category, advert type. |
price / priceCurrency / pricePerSqm | Price, currency (EUR) and price per m². |
priceDropValue / hasPriceDrop | Price-drop amount and whether a price drop occurred. |
areaSqm / usableAreaSqm / terrainAreaSqm | Built, usable and terrain surface areas in m². |
rooms / roomsLabel / bathrooms / floor | Room count, room label, bathrooms and floor. |
buildingCondition / yearBuilt | Building condition and year built. |
energyClass / energyConsumption / energyEmissions / orientation | Energy certificate data and orientation. |
country / province / city / district / neighborhood / street | Parsed location hierarchy. |
fullAddress / latitude / longitude | Full address string and coordinates. |
mainImageUrl / imageUrls / imageCount | Main image, all image URLs and image count. |
advertiserId / advertiserName / advertiserUrl / advertiserType | Advertiser details (agency or private). |
hasElevator, hasParking, hasTerrace, hasPool, hasSeaView, isFurnished, isLuxury, … | Amenity and property boolean flags. |
datePosted / labels | Posting date and listing labels. |
searchTransaction / searchPropertyType / searchLocation / searchKeyword / searchUrl | Provenance of the search that produced the record. |
scrapedAt | ISO timestamp of when the record was scraped. |
Example output record
{"adId": "10899004377662","detailUrl": "https://www.habitaclia.com/comprar-piso-...-i10899004377662.htm","title": "Piso en Calle aragó 79","transactionType": "sale","propertyType": "apartment","price": 599000,"priceCurrency": "EUR","pricePerSqm": 4792,"areaSqm": 125,"rooms": 4,"bathrooms": 2,"country": "ES","province": "Barcelona","city": "Barcelona","neighborhood": "La Nova Esquerra de l'Eixample","fullAddress": "Calle aragó 79, La Nova Esquerra de l'Eixample, Barcelona","mainImageUrl": "https://images.habimg.com/imgh/10899-4377662/...jpg","scrapedAt": "2026-05-15T11:46:40.892Z"}
Additional output fields
These fields are also present in the dataset:
| Field | Type | Description |
|---|---|---|
hasGarage | boolean | Has garage |
hasBalcony | boolean | Has balcony |
hasAirConditioning | boolean | Has air conditioning |
hasHeating | boolean | Has heating |
hasGarden | boolean | Has garden |
hasStorage | boolean | Has storage |
hasFittedWardrobes | boolean | Has fitted wardrobes |
isExterior | boolean | Is exterior |
isFeatured | boolean | Is featured |
advertiserPhone | string | advertiserPhone |
advertiserEmail | string | advertiserEmail |
updatedAt | string | updatedAt |
propertySubtype | string | propertySubtype |
floorLabel | string | floorLabel |
adReference | string | adReference |
energyEmissionsClass | string | energyEmissionsClass |
💡 Use cases
- Market research & price benchmarking — track median €/m² across neighborhoods and compare districts over time.
- Investment due diligence — surface new listings matching specific yield, area, room or location criteria.
- Lead generation for real estate agencies — feed CRM systems with curated, region-specific inventory.
- Academic & journalistic research — quantify Spanish housing-market dynamics, supply and pricing trends.
- Real estate ML training data — collect labeled property records for valuation and recommendation models.
- Proptech supply mapping — populate map-based apps with current Spanish listings, complementing Idealista and Fotocasa data.
❓ Frequently Asked Questions
Do I need a proxy or login?
No login is required. Habitaclia tolerates clean datacenter traffic for small runs, but the Apify RESIDENTIAL proxy pinned to country ES is strongly recommended for runs above ~100 listings — and the input is pre-configured this way by default.
Is it legal to scrape Habitaclia?
Use the Actor only for publicly accessible data you have a lawful basis to collect under GDPR and Spanish data-protection law. Respect Habitaclia's Terms of Service and robots.txt, and handle any personal data (advertiser names) accordingly. This Actor is independent and not affiliated with Habitaclia or Adevinta.
How much data can I get and how fast?
Set maxListings and maxPages to control volume. Typical throughput is around 200 listings in roughly 90 seconds on a 1 GB instance, with each record carrying 30+ fields.
How do I find the right location slug?
Use lowercase ASCII with underscores for spaces — e.g. barcelona, madrid, palma_de_mallorca, sant_cugat_del_valles. Province slugs run province-wide searches; specific town slugs target a single municipality.
Can I filter by price, area or rooms?
Yes. minPrice/maxPrice (EUR), minArea/maxArea (m²), minRooms/maxRooms, advertiserType and keyword are all applied as client-side filters.
How fresh is the data? Real-time. Each run fetches live listing pages directly — no caching and no third-party feed.
Does it scrape full detail pages? The Actor is optimized for card-level extraction, which already returns 30+ fields per listing. Detail-page enrichment (full description, all photos, agency contact) is a planned extension.
What does the housing property type mean?
Habitaclia's viviendas bucket combines apartments, houses, attics and duplexes — use it when you want all residential inventory regardless of subtype.
⏰ Scheduling & integration
Schedule this Actor on Apify to run daily or weekly for a continuously updated Spanish real estate dataset. Export results to JSON, CSV, Excel or XML, pull them via the Apify API, or stream the dataset into Google Sheets, BigQuery, Snowflake, Postgres or webhooks for automated market monitoring.
*Maintained: last verified 2026-11-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Related scrapers
Other Actors from the same collection:
Habitaclia.com Spain scraping — frequently asked questions
Do I need a Habitaclia.com Spain API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export Habitaclia.com Spain data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this Habitaclia.com Spain scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the rows you care about really do change that fast.
How many rows can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping Habitaclia.com Spain legal?
This Actor collects only information that Habitaclia.com Spain publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if Habitaclia.com Spain blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
Legal and compliance
This Actor collects publicly available information from Habitaclia.com Spain only. It does not log in, does not circumvent access controls, and collects no private data. You are responsible for using the output lawfully, including under GDPR and comparable regimes where the rows contain personal data, and for respecting Habitaclia.com Spain's terms where they apply to you.
📝 Changelog
2026-11-01
- Monthly health check (2026-11-01): a live run on the current build completed successfully and returned data. Input options, output fields and pricing are unchanged.
- README refreshed: documented 16 additional output fields.
2026-10-15
- Every request now has a hard time limit, so a proxy connection that stalls can no longer hold up the run or push it past its timeout.
- A run that reaches its maximum cost per run now stops cleanly with its results saved and a status message, instead of ending as aborted.
- A proxy group your account cannot use no longer stops the run at start-up; it falls back to the default Apify Proxy.
2026-10-12
- Fixed the
advertiserTypefilter: "agency" never matched (Habitaclia labels agencies differently), so such runs ended with no rows and failed. The advertiser column now reports professional listings correctly. - Locations with accents, apostrophes or spaces now work ("Sant Cugat del Vallès" → sant_cugat_del_valles); an unknown location ends with a clear status message.
- Anti-bot pages are detected and retried on a fresh IP (they used to end the run with no rows); datacenter-first routing with Spanish residential as fallback.
- The time budget follows the run's real timeout; filters that exclude every listing now end successfully with a status message instead of failing.
- Every Actor process now caps the JavaScript heap at ~70 % of the run's memory. The platform default lets the heap grow until the container is killed (exit 137), which showed up as random failed runs.
2026-09-24
- Fixed runs that finished successfully with an empty dataset. A crawl that is blocked and a search that genuinely has no results both produce an empty file; the Actor now fails with an explicit
NO_ROWSerror and writes aSUMMARYrecord instead of reporting success. - Diagnosis: Habitaclia now serves an anti-bot shim instead of listings; the page arrives but carries no adverts.
- Retry later, or narrow the search. The source currently withholds listings from automated clients and the Actor will report this rather than return an empty file.
2026-09-23
- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Run reliability reviewed: 99.4% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.
2026-09-01
- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.