Fotocasa.es $1💰 Buy, Rent & Property Details avatar

Fotocasa.es $1💰 Buy, Rent & Property Details

Pricing

from $1.00 / 1,000 listing scrapeds

Go to Apify Store
Fotocasa.es $1💰 Buy, Rent & Property Details

Fotocasa.es $1💰 Buy, Rent & Property Details

From $1/1K. Scrape Spain property listings from fotocasa.es. Get price, surface, rooms, baths, address, GPS, agency, phone, energy rating, photos and 140+ fields. Buy and rent, all regions, all property types.

Pricing

from $1.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

2 days ago

Last modified

Share

Fotocasa.es Scraper

Extract property listings from fotocasa.es, Spain's leading property portal, at scale. Search by location and filters or paste direct search URLs, and get clean, structured records with price, surface, rooms, bathrooms, full address, GPS coordinates, agency and contact details, energy rating, photos and 140+ fields per listing. Forward-walking pagination, optional per-listing detail enrichment, and ready-to-use exports to your apps.

Why This Scraper?

  • 140+ fields per listing - far more than typical alternatives, including both camelCase and snake_case field names so the output drops into any existing pipeline.
  • Buy and rent, every region, every property type - flats, houses, duplexes, penthouses, studios, lofts, new construction, garages, offices, land and more.
  • Rich location data - city, neighborhood, full address and precise latitude/longitude for every listing.
  • Agency and contact details - agency name, alias, type, phone, and (with detail enrichment) agent name, email and listing reference.
  • Two input modes - search by location with filters, or feed direct fotocasa.es search URLs.
  • Powerful filters - price, rooms, bathrooms and surface ranges, plus operation, property type and sort order.
  • Export anywhere - pipe results into Notion, Airtable, Linear or other apps via MCP connectors, with the full record always kept in the dataset.

Data You Get

Sample shape - values are illustrative placeholders, not from a live listing.

FieldExample
id1_000000000
propertyId000000000
titleC/ de Ejemplo, Centro
rawPrice295000
currencyEUR
pricePerSqm4538.46
surface65
rooms3
baths2
floor4
propertyType2
propertySubtype1
operationsale
cityMadrid
neighborhoodCentro
latitude40.4168
longitude-3.7038
agencyNameExample Agency SL
phone+34000000000
referenceREF-00000
energyCertificate{"energyEfficiencyRatingType": "C"}
images["https://static.fotocasa.es/images/ads/0000?rule=original"]
urlhttps://www.fotocasa.es/es/comprar/vivienda/madrid-capital/centro/000000000/d

How to Use

Search a city for homes to buy:

{
"mode": "search",
"locations": ["madrid-capital"],
"operation": "comprar",
"propertyType": "viviendas",
"maxListings": 50
}

Search with filters and sorting:

{
"mode": "search",
"locations": ["barcelona-capital"],
"operation": "alquiler",
"minPrice": 800,
"maxPrice": 1500,
"minRooms": 2,
"sortBy": "price_asc",
"maxListings": 100
}

Scrape direct URLs with full detail enrichment:

{
"mode": "url",
"urls": ["https://www.fotocasa.es/es/comprar/viviendas/valencia-capital/todas-las-zonas/l"],
"fetchDetails": true,
"maxListings": 200
}

Input Parameters

ParameterTypeDescription
modestringsearch (location + filters) or url (direct URLs).
locationsarrayLocation slugs, e.g. madrid-capital, barcelona-capital/centro. Search mode only.
operationstringcomprar (buy) or alquiler (rent). Search mode only.
propertyTypestringProperty category, e.g. viviendas, pisos, casas. Search mode only.
sortBystringrelevance, newest, price_asc, price_desc, surface_asc, surface_desc.
minPrice / maxPriceintegerPrice range filter (EUR).
minRooms / maxRoomsintegerRooms range filter.
minBaths / maxBathsintegerBathrooms range filter.
minSurface / maxSurfaceintegerSurface range filter (m²).
urlsarrayDirect search URLs. URL mode only; filter fields are ignored.
fetchDetailsbooleanAdds energy rating, full features, reference and contact from the listing detail page. Slower and increases cost per listing.
maxPagesintegerOptional safety limit on result pages walked per search. Leave empty (or 0) for unlimited — the walk continues until the site's natural end of results (an empty page) or maxListings is hit; only set a value to hard-stop pagination earlier.
maxListingsintegerThe run's sole cap on total listings scraped. Default 20. 0 = unlimited (walk the whole catalogue, bounded only by maxPages if set).
proxyobjectProxy configuration. Residential proxy with a Spanish (ES) exit is enabled by default, which fotocasa.es requires for reliable access.
residentialCountriesarrayCountry codes used for the residential proxy. fotocasa.es requires a Spanish (ES) exit.
maxResidentialRequestsintegerPer-run residential request budget (default 10000). Set lower to cap cost, or 0 to disable.
backupProxyUrlstringOptional last-resort failover proxy URL used when the Apify proxy is unavailable.
mcpConnectorsarrayMCP connectors to forward a per-listing summary to: notion, linear, airtable, apify. The full record always stays in the dataset.
notionParentPageUrlstringNotion page under which the new database is created (Notion connector only).
maxNotifyListingsintegerMax listings forwarded to MCP connectors per run (default 50).
resumeFromRunIdstringOptional. Paste a previous run ID (or its dataset ID) to continue that run as a delta: listings already saved there are skipped, so this run only adds new ones. Fails fast, before any scraping, if the ID doesn't resolve to a readable run or dataset.

Full-catalogue runs and resuming

To walk an entire search (not just a page or two), set maxListings: 0 and leave maxPages empty (or 0) — the actor then paginates until the site itself runs out of results. If a full-catalogue run is interrupted (platform migration, manual abort, or a fresh run days later to pick up new listings), pass the previous run's ID as resumeFromRunId: the actor pages through that run's dataset, seeds its dedup set with the listing IDs already collected, and then scrapes only new listings. Separately, an interrupted run also survives a platform migration/resurrect on its own — the actor checkpoints its seen-listing state during the run and resumes from it automatically; that checkpoint is cleared once a run finishes cleanly.

Output Example

Sample shape - values are illustrative placeholders, not from a live listing.

{
"id": "1_000000000",
"propertyId": "000000000",
"title": "C/ de Ejemplo, Centro",
"rawPrice": 295000,
"currency": "EUR",
"pricePerSqm": 4538.46,
"surface": 65,
"rooms": 3,
"baths": 2,
"floor": "4",
"propertyType": 2,
"propertySubtype": 1,
"operation": "sale",
"transactionTypeId": 1,
"city": "Madrid",
"neighborhood": "Centro",
"address": { "municipality": "Madrid", "province": "Madrid", "zipCode": "28000" },
"latitude": 40.4168,
"longitude": -3.7038,
"agencyName": "Example Agency SL",
"clientAlias": "Example Agency",
"clientType": "professional",
"phone": "+34000000000",
"reference": "REF-00000",
"energyCertificate": { "energyEfficiencyRatingType": "C" },
"images": ["https://static.fotocasa.es/images/ads/0000?rule=original"],
"photosCount": 12,
"description": "Bright reformed home in a well-connected central area.",
"url": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/centro/000000000/d"
}

Export to Your Apps (MCP Connectors)

Beyond the dataset, this Actor can send a condensed summary of each listing straight into the tools you already use, via Model Context Protocol (MCP) connectors. The full record is always kept in the dataset; the connector receives a readable summary (title plus key fields) per item.

Supported connectors: Notion, Linear, Airtable, and Apify.

  1. Authorize the connector once under Apify → Settings → Integrations.
  2. Select one or more in the mcpConnectors input.
  3. (Notion only) Set notionParentPageUrl to the page the new database should be created under.
  4. Optionally cap how many listings are forwarded with maxNotifyListings (default 50).
{
"mode": "search",
"locations": ["madrid-capital"],
"operation": "comprar",
"maxListings": 50,
"mcpConnectors": ["notion"],
"notionParentPageUrl": "https://www.notion.so/your-workspace/Listings-0000"
}