Fotocasa Scraper - Spain Property Listings, Prices & Agents avatar

Fotocasa Scraper - Spain Property Listings, Prices & Agents

Pricing

from $0.36 / 1,000 listings

Go to Apify Store
Fotocasa Scraper - Spain Property Listings, Prices & Agents

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

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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" and floorNumber: 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

  1. Create a free Apify account (it comes with monthly free credit).
  2. Open Fotocasa Scraper and type one or more places in Locations, or paste Fotocasa search URLs.
  3. Pick the operation (buy, rent…), property type and any filters: price, size, bedrooms, features, condition, published within.
  4. Set Max listings and switch on Listing details or Agency leads if you need them.
  5. Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.

⬇️ Input

ParameterTypeWhat it does
locationslistPlace names as you type them on Fotocasa, or URL slugs (madrid-capital, barcelona-capital/eixample). One search each. Prefill: ["Madrid"]
locationTypeselectWhich match to use when a name fits several places (city vs province…). Default: Fotocasa's first suggestion
startUrlslistFotocasa search URLs; their own operation, type and filters are used
listingUrlslistSingle listing links or ids, read in full with the details block
operationselectbuy (default), rent, share, rentBuyOption, transfer
propertyTypeselecthome (default), newHome, premises, garages, office, boxRoom, land, building
propertySubtypeslistflat, apartment, house, semi-detached, terraced, attic, duplex, penthouse duplex, loft, studio, ground floor with garden, country house
minPrice / maxPriceintegerEuros (monthly rent for rentals)
minSize / maxSizeintegerm²
minRooms / maxRooms, minBathrooms / maxBathroomsintegerBedrooms / bathrooms
publicationDateselectAny, last 24 h, 48 h, week, month
featureslistMust have: lift, terrace, A/C, pool, parking, storage room, furnished, sea views… (19)
conditionslistalmost new, very good, good, to renovate, refurbished
priceDropOnly, subsidizedOnly, withVideoOrTourOnlybooleanFotocasa's own "bajada de precio", "con ayudas", video/tour filters
keywordtextFotocasa's text search inside the ads, e.g. piscina
agencyIdslistOne agency's listings (its agencyId, or its Fotocasa page URL)
rentalTypeslistRentals: long-term or temporary
occupancylistHomes for sale: available, occupied, with tenant, bare ownership, auction
sortByselectrating (default), latest, cheapest, mostExpensive, cheapestPerM2, biggest, smallest
sellerTypeselectAll, agencies only, private sellers only
latitude, longitude, distanceKmnumberKeep listings within a radius of a point (rows get distanceKm)
includeDetailsbooleanAdd the details block to each listing (charged per row that carries it)
includeAgencyLeads, maxAgencyLeadsboolean, integerAlso deliver agency rows (default 100 max)
monitorMode, monitorKey, webhookUrlboolean, textOnly new and re-priced listings; optional memory name and a webhook
maxItemsintegerMost listing rows per run. Default 100, prefill 20
maxItemsPerSearchintegerMost rows per place / URL / agency. 0 = no per-search cap
splitLargeSearchesbooleanRead past the ~9,800-row cap of one search (default on)
compactbooleanCore fields only (no photo list, description, links, location ids)
proxyConfigurationproxyOptional. 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.

FieldMadrid 1,000Valencia / Barcelona with details
id, url, price, sizeM2, address, zipCode, neighbourhood → province, latitude, longitude, publishedAt, images99-100%100%
rooms / bathrooms98% / 99%94-100% / 98-99%
floor (decoded)83%69-86%
previousPrice / priceDrop36%15-35%
agencyName / agencyPhone (agency ads)100% / 94%100% / 85-100%
hasLift / hasAirConditioning / hasHeating75% / 65% / 85%71-82% / 63-94% / 76-91%
condition54%27-42%
videoUrls / virtualTourUrls39% / 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:

EventPriceWhen
Listing$0.00036 per listing ($0.36 per 1,000)every listing row
Listing details$0.00072 per listingonly rows that carry the details block (Listing details on, or a listing link)
Agency lead$0.0018 per agencyonly with Agency leads on
RunCost
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

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_SUMMARY says 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_SUMMARY lists, 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.

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.