Fotocasa Spain Sale & Rental Listings Scraper
Search Fotocasa listings for sale or rent across Spain by city, property type, price range, and bedrooms. Each result includes price, size, bedrooms, bathrooms, location, images, and the listing URL.
Open in Apify Store$0.99 / 1K on Free
Short answer
Fotocasa Spain Sale & Rental Listings Scraper is an Apify Store Actor for Fotocasa data that returns 10 published output fields, including price, surface, bedrooms, bathrooms. It lists $0.99 per 1,000 results on the Free plan (pay per event), $0.49 on the Business plan. It takes 26 input settings; one is required (mode). It covers 6 of the 7 core Fotocasa fields this site tracks. Last updated Nov 4, 2026.
From the public Store listing and published build schema, synced 2026-11-12.What it returns
10 fields from the published dataset schema. Export as JSON, CSV or Excel, or read the dataset through the Apify API.
titlepricesurfacebedroomsbathroomspropertySubtypecityneighborhoodagencyNamepropertyUrl
Not in the schema among the core Fotocasa fields: address. The field matrix shows which other tools return them.
Input
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| mode | string | Yes | search | How to find listings: search by location, scrape Fotocasa search URLs, or scrape individual property URLs/IDs. |
| location | string | No | – | City, province, district, neighborhood, street or ZIP code, e.g. Madrid, Barcelona, Sitges, 28001. Used in Search by location mode. |
| locationType | string | No | auto | Narrow ambiguous place names to a level. Auto picks the best match (usually the municipality). |
| operation | string | No | sale | Sale, rent, room share, rent-to-buy or business transfer. |
| propertyType | string | No | homes | Property category. Subtypes such as penthouses, studios and duplex are preserved instead of being collapsed into homes. |
| minPrice | integer | No | – | Server-side minimum sale price or monthly rent. |
| maxPrice | integer | No | – | Server-side maximum sale price or monthly rent. |
| minRooms | integer | No | – | Server-side minimum number of bedrooms. |
| maxRooms | integer | No | – | Server-side maximum number of bedrooms. |
| minBathrooms | integer | No | – | Server-side minimum number of bathrooms. |
Show the other 16 settings
| Setting | Type | Required | Default | What it does |
|---|---|---|---|---|
| maxBathrooms | integer | No | – | Server-side maximum number of bathrooms. |
| minSurface | integer | No | – | Server-side minimum built surface. |
| maxSurface | integer | No | – | Server-side maximum built surface. |
| features | array | No | [] | Only listings with these features. Multiple selections are combined (AND). Leave empty for no feature filter. |
| publishedSince | string | No | any | Only keep listings published inside this window. Searches newest-first and stops at the cutoff. |
| rentalType | string | No | any | For rent searches only: long-term or temporary rental. Uses Fotocasa's rental path filter. |
| ownerType | string | No | any | Private owners or professional agencies. Private-only uses Fotocasa's particulares path. |
| onlyPriceDrops | boolean | No | false | Only emit listings that show a price reduction. |
| sortBy | string | No | relevance | Verified Fotocasa sort orders. |
| maxItems | integer | No | 100 | Hard cap on emitted listings (1–10,000). Above ~9,900 rows the actor automatically splits the search into price buckets. |
| startUrls | array | No | – | Fotocasa search URLs to scrape. Filters in each URL win over the form fields. Property URLs found here are routed to detail mode. |
| propertyUrls | array | No | – | Individual Fotocasa detail URLs, new-construction project URLs, or numeric property IDs. |
| fetchDetails | boolean | No | false | Fetch each listing's detail page to add energy certificate, agency phone and registrations, exact street, ground surface and extra features. Slower and more requests. |
| maxDetails | integer | No | 100 | Limit detail requests when Fetch details is on. 0 means all emitted listings. |
| monitorMode | boolean | No | false | Emit only new listings and listings whose price changed, using Actor state between runs. The state key is namespaced by monitorKey or the search filters. |
| monitorKey | string | No | – | Optional namespace for monitor state. Leave empty to derive it from the search filters. |
Example input
Built from the input form's published example values and defaults.
{
"mode": "search",
"location": "madrid",
"locationType": "auto",
"operation": "sale",
"propertyType": "homes",
"features": [],
"publishedSince": "any",
"rentalType": "any",
"ownerType": "any",
"onlyPriceDrops": false,
"sortBy": "relevance",
"maxItems": 3,
"fetchDetails": false,
"maxDetails": 0,
"monitorMode": false
} Run it from code or an AI agent
The same run through the Apify API, with the example input. You need an Apify API token; the run is billed to your account at the Store price.
Python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"mode": "search",
"location": "madrid",
"locationType": "auto",
"operation": "sale",
"propertyType": "homes",
"features": [],
"publishedSince": "any",
"rentalType": "any",
"ownerType": "any",
"onlyPriceDrops": False,
"sortBy": "relevance",
"maxItems": 3,
"fetchDetails": False,
"maxDetails": 0,
"monitorMode": False
}
run = client.actor("vexaloom-labs/fotocasa-spain-sale-and-rental-listings-scraper").call(run_input=run_input)
if run is None:
raise RuntimeError("The Actor run was not found.")
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item) pip install apify-client
JavaScript
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_APIFY_TOKEN>" });
const input = {
"mode": "search",
"location": "madrid",
"locationType": "auto",
"operation": "sale",
"propertyType": "homes",
"features": [],
"publishedSince": "any",
"rentalType": "any",
"ownerType": "any",
"onlyPriceDrops": false,
"sortBy": "relevance",
"maxItems": 3,
"fetchDetails": false,
"maxDetails": 0,
"monitorMode": false
};
const run = await client.actor("vexaloom-labs/fotocasa-spain-sale-and-rental-listings-scraper").call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items); npm install apify-client
cURL
curl -X POST "https://api.apify.com/v2/actors/vexaloom-labs~fotocasa-spain-sale-and-rental-listings-scraper/run-sync-get-dataset-items" -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" -d '{"mode":"search","location":"madrid","locationType":"auto","operation":"sale","propertyType":"homes","features":[],"publishedSince":"any","rentalType":"any","ownerType":"any","onlyPriceDrops":false,"sortBy":"relevance","maxItems":3,"fetchDetails":false,"maxDetails":0,"monitorMode":false}' Waits for the run and returns the dataset items (runs over 300 seconds return HTTP 408; start an async run instead).
MCP (AI agents)
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=vexaloom-labs/fotocasa-spain-sale-and-rental-listings-scraper",
"headers": {
"Authorization": "Bearer <YOUR_APIFY_TOKEN>"
}
}
}
} Adds this Actor as a tool in an MCP client that takes a remote server URL (Cursor, VS Code, Claude Code) through Apify's hosted MCP server. OAuth sign-in also works without the header. Clients that only start local servers can wrap the URL with npx mcp-remote.
What a run costs
The result rate falls on higher Apify plans. Each figure is the published per-result rate times the number of results.
| Apify plan | Per 1,000 | 10,000 results | 100,000 results |
|---|---|---|---|
| Free plan | $0.99 | $9.90 | $99 |
| Starter plan | $0.82 | $8.20 | $82 |
| Scale plan | $0.66 | $6.60 | $66 |
| Business plan | $0.49 | $4.90 | $49 |
- Every run also has a start event, charged per GB of memory (minimum one): $0.10 on Free, $0.03 on Business. At its default memory of 4 GB a run starts at $0.40 on Free. Fewer, larger runs keep this small.
- The Free plan includes $5 of monthly usage (Apify pricing, checked 2026-11-11); at the Free rate that covers at most about 5,050 results, less start events and platform usage.
- Worked example: 10,000 results in one run on the Free plan cost $10.30 ($9.90 for results + $0.40 start), plus Apify platform usage (compute), billed separately by Apify.
- Pay per event. Platform usage (compute) is billed by Apify on top of the event prices. Compare other tools in the cost estimator.
Where it fits among Fotocasa routes
It ranks 1 of 1 catalogue Actors for Fotocasa on the published formula (fields, price, reliability, freshness). Its line is highlighted on the map.
- 1 Fotocasa Spain Sale & Rental Listings Scraper 10 output fields, pay per event 6 of 7 core fields
$0.99 / 1K - + 8 other Store tools, combined Reference only 6 of 7 core fields
from $0.99 / 1K - API No public listing API No open API fields not compared
Stops are fields. A ring means the field is in that route's published output schema; no ring means the line passes without it. Bold labels are the core fields for this website, the rest are fields that differ between routes. A white capsule means every data line stops there. The red line is the official API; its field coverage is not compared. A crossed red line means there is no open official API.
Official route: No public listing API
No open API. Fotocasa does not publish a general public property API. Access is through the public site and partner arrangements.
Not applicable.
Other Store tools for Fotocasa
Reference only, from their public listings.
| Tool | Fields | Price / 1K |
|---|---|---|
| Fotocasa Property Scraper · Spain Real Estate Listings | 12 | $0.99 |
| Fotocasa Scraper | 10 | $6.00 |
| Fotocasa Scraper | 12 | $1.00 |
| Fotocasa Property Details Scraper | 30 | $4.00 |
| Fotocasa Property Search Scraper | 55 | $4.00 |
What people use it for
- Find properties for sale
- Find rental listings
Similar Actors
Brazil Rental & Sale Listings by City (QuintoAndar)
Search Brazilian rental and sale property listings by city and transaction type: price breakdown, bedrooms, bathrooms, area, furnishing, and…
Redfin Sale, Rental & Sold Listings Scraper
Scrape Redfin real estate listings - search properties for sale, recently sold, and rental listings across the US. Extracts price, beds, baths,…
Apartments.com Rental Listing & Floor Plan Scraper
Search Apartments.com rentals by city, bedroom count, price, property type, pet policy, and amenities, or scrape specific listing URLs directly.…
Century 21 Listings & Property Detail Finder
Find Century 21 homes for sale or rent by city, county, neighborhood, or ZIP with price and size filters, or look up a property by address with…
Crexi Commercial Property Listings & Pricing Extractor
Collects active commercial real estate listings from Crexi across any US state and 14 property types, with asking price, square footage, location,…
Idealista Search Listings Price & Feature Scraper
Pull real estate search-result listings from Idealista for Spain, Italy, and Portugal: price, size, rooms, address, thumbnail, feature flags, and…
Questions people ask
How much does Fotocasa Spain Sale & Rental Listings Scraper cost?
The published result rate depends on your Apify plan: $0.99 per 1,000 on Free, $0.82 per 1,000 on Starter, $0.66 per 1,000 on Scale, $0.49 per 1,000 on Business. So 10,000 results cost about $9.90 on the Free plan and $4.90 on Business, plus a start fee of $0.10 per run per GB of memory on Free. Platform usage is billed separately.
What data does Fotocasa Spain Sale & Rental Listings Scraper return?
Its published output schema lists 10 fields: title, price, surface, bedrooms, bathrooms, propertySubtype, city, neighborhood, agencyName, propertyUrl. A listed field is not guaranteed to be filled in every row.
What input does Fotocasa Spain Sale & Rental Listings Scraper need?
Required: mode. Optional settings include location, locationType, operation, propertyType, minPrice, maxPrice.
How do I run Fotocasa Spain Sale & Rental Listings Scraper from Python or the API?
Use the Apify API client: in Python, ApifyClient(token).actor("vexaloom-labs/fotocasa-spain-sale-and-rental-listings-scraper").call(run_input=...), then read the run's default dataset (run.default_dataset_id); in JavaScript the same call is client.actor("vexaloom-labs/fotocasa-spain-sale-and-rental-listings-scraper").call(input). Without a client, POST the input JSON to https://api.apify.com/v2/actors/vexaloom-labs~fotocasa-spain-sale-and-rental-listings-scraper/run-sync-get-dataset-items with your API token. Ready-to-paste code with the example input is on this page.
Sources
- Fotocasa Spain Sale & Rental Listings Scraper on Apify Store
- Published build with input and output schema (JSON)
- No public listing API documentation
Cite this page
Scraper Finder. "Fotocasa Spain Sale & Rental Listings Scraper." https://scraperfinder.com/catalogue/fotocasa-spain-sale-and-rental-listings-scraper/ (data checked 2026-11-12).
Run Fotocasa Spain Sale & Rental Listings Scraper
$0.99 per 1,000 results. Paste the example input above, set your Fotocasa query, then export the dataset. Still choosing? Compare every Fotocasa route.