Fotocasa Scraper - Spain Property Listings & Prices avatar

Fotocasa Scraper - Spain Property Listings & Prices

Pricing

from $0.79 / 1,000 property searches

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

Fotocasa Scraper - Spain Property Listings & Prices

Scrape fotocasa.es property listings across Spain: asking price, m2, rooms, GPS, zip code, photos, full description and the listing agency's phone number.

Pricing

from $0.79 / 1,000 property searches

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Fotocasa Scraper: Spain Property Listings, Prices & Agency Contacts 🏠

Actor Coverage Pricing Support

🇪🇸 Type a Spanish place name. Get the listings.

Every other Fotocasa scraper makes you build a search on the site and paste the URL back. This one takes Madrid.

Fotocasa is one of Spain's three big property portals. This actor turns any Spanish place into clean listing rows: a city, a province, a district, a single neighbourhood. Asking price, price per square metre, built area, bedrooms, bathrooms, floor, postcode, GPS, the advertiser's full Spanish description, every photo, and the listing agency's phone number.

🔎 What is the Fotocasa Property Scraper — and when should you use it?

The Fotocasa Property Scraper turns Spanish property listings from fotocasa.es, by place name into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: Spanish sale, rent, room-share, business-transfer or rent-to-own listings with asking price, price per square metre, built area, bedrooms, bathrooms, floor, postcode, GPS coordinates, the advertiser's full Spanish description and every photo. The listing agency's name, phone number and fotocasa profile come attached to each row at no extra charge. Input is a plain place name (a city, province, district or neighbourhood), so no search URL has to be built first. A separate agency mode returns everything one estate agency currently has on the market.

Use something else when: you need a different European market. Use Immobiliare Property Scraper for Italian sale and rent listings with price, surface, rooms and agency contacts. Use SeLoger Property Scraper for French sale and rent listings across every departement. Use ImmobilienScout24 Property Scraper for German sale and rent listings with Kaltmiete, Wohnflaeche and energy data. This actor covers fotocasa.es only, which is Spain only.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/fotocasa-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Spanish property listings from Fotocasa using the Apify Actor `sian.agency/fotocasa-property-scraper`.
Use it when I need: Spanish sale, rent, room-share, business-transfer or rent-to-own listings with asking price, price per square metre, built area, bedrooms, bathrooms, floor, postcode, GPS coordinates, the advertiser's full Spanish description and every photo. The listing agency's name, phone number and fotocasa profile come attached to each row at no extra charge. Input is a plain place name (a city, province, district or neighbourhood), so no search URL has to be built first. A separate agency mode returns everything one estate agency currently has on the market.
Don't use it when: you need a different European market — use immobiliare-property-scraper or seloger-property-scraper or immobilienscout24-property-scraper instead.
How to call it: pick an `operation`: `search` (a place name or a pasted fotocasa search URL) or `agency` (fotocasa agency page URLs); set `location` to any Spanish place (`Madrid`, `Barcelona`, `Malaga`, `Barrio de Salamanca`) and add more in `locations`; choose `transactionType` (`sale`, `rent`, `share`, `transfer`, `rent-to-own` or `all`); narrow with `propertyType`, `minPrice`/`maxPrice`, `minRooms`, `minBathrooms`, `minSurface`/`maxSurface` or `newConstruction`; order with `sortBy` and cap the run with `maxResults`.
Start with this input:
{
"operation": "search",
"location": "Madrid",
"transactionType": "sale",
"propertyType": "homes",
"minPrice": 200000,
"maxPrice": 500000,
"maxResults": 120
}
Ask me which Spanish place, and whether they want listings for sale, to rent, room shares, or one agency's whole portfolio, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Pull flats for sale in Barrio de Salamanca between 500k and 800k and rank them by price per square metre.
  • Compare median rent per square metre across Madrid, Barcelona and Valencia.
  • Build a contact list of estate agencies advertising in Marbella, with their phone numbers.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/fotocasa-property-scraper.md.

📋 Overview

Give it a place and a market. It resolves the place against Fotocasa's own location index, pages through the results, and writes one row per listing.

Sourcefotocasa.es (Spain)
OperationsProperty Search · Agency Listings
MarketsFor sale · For rent · Room share · Business transfer · Rent to own · All at once
Property typesHomes · Garages · Land · Commercial premises · Offices · Storage rooms · Whole buildings
Rows per request30
Ceiling505 pages (~15,150 listings) per query. Fotocasa's own limit, not ours
SetupNone. No key, no login, no proxy

✨ Features

  • Place names, not URLs. Madrid, Málaga, Palma de Mallorca, Barrio de Salamanca. The run log prints which place matched, so you can see it picked the right one before you trust the data.
  • The agency's phone number on every row. Name, phone, Fotocasa profile and whether the seller is an agency, a developer or a private owner. Included, not an add-on.
  • The full Spanish description. The advertiser's own text, untrimmed and untranslated. That is where the energy rating, the community fees and the "reformado en 2019" usually live.
  • All five markets. Sale and rent are table stakes. Fotocasa also runs room share, with over 14,000 live ads in Madrid alone, plus business transfers and rent-to-own. Or set one option and take every market at once.
  • Every photo, room-tagged. A typical listing carries 20–30 images.
  • Price per square metre, computed. Asking price ÷ built area, already in the row.
  • Multi-place runs. Add as many places as you like; they run in one job and land in one dataset.
  • Agency portfolios. Paste an agency's Fotocasa page and get everything they have listed.
  • Honest totals. The log reports how many listings actually match, so you know when a query is bigger than Fotocasa will serve in one search.

🎬 Quick Start

{ "operation": "search", "location": "Madrid", "transactionType": "sale", "maxResults": 90 }

That is a complete input. Press Start and you get 90 Madrid properties for sale.

🚀 Getting Started (3 Simple Steps)

Step 1: Name a place

Type it into 📍 Place in Spain: Valencia, Marbella, Bilbao, Barrio de Salamanca. Add more places in 🗺️ More places and they all run in the same job. A Fotocasa search URL works too: paste it and the place and market are read straight off it.

Step 2: Choose the market and narrow it

🤝 Sale or rent picks the market. Then set whatever matters: price band, minimum bedrooms, minimum size, property type, new builds only.

Step 3: Press Start

Rows appear as they arrive. Set 🔢 Max listings to cap what you spend.

📥 Input Configuration

FieldTypeDefaultWhat it does
operationselectsearchsearch for listings by place, agency for one agency's portfolio
locationstringMadridAny Spanish place name, or a fotocasa.es search URL
locationsarray[]More places, searched in the same run
agencyUrlsarray[]Fotocasa agency pages, used by the Agency Listings operation
transactionTypeselectsalesale, rent, share, transfer, rent-to-own, or all
propertyTypeselectallHomes, garages, land, commercial, offices, storage, buildings
newConstructionbooleanfalseNew builds only
minPrice / maxPriceinteger0Price band in EUR. For rentals this is monthly rent. 0 = no bound
minRoomsinteger0Fewest bedrooms
minBathroomsinteger0Fewest bathrooms
minSurface / maxSurfaceinteger0Built area in m². 0 = no bound
sortByselectrelevancerelevance, newest, price-low, price-high
maxResultsinteger90Stop after this many listings across every place

There is nothing to configure about how the actor fetches. No proxy picker, no concurrency, no retry counts. Those are our decisions and they are already made.

📤 Output

One row per listing. A sale listing in Madrid:

{
"propertyId": 189625641,
"listingUrl": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/.../189625641/d",
"propertyType": "Home",
"propertySubtype": "Penthouse",
"transactionType": "For sale",
"price": 1620000,
"pricePerSqm": 12462,
"surfaceSqm": 130,
"rooms": 3,
"bathrooms": 2,
"floor": 12,
"listingDescription": "Ático situado en Madrid, en la exclusiva zona de Salamanca…",
"publishedAt": "2026-05-08T15:08:35.443Z",
"address": "Alcalá, Barrio de Salamanca",
"neighborhood": "Goya",
"district": "Barrio de Salamanca",
"city": "Madrid Capital",
"province": "Madrid",
"region": "Madrid, Zona de",
"zipCode": "28006",
"latitude": 40.427853,
"longitude": -3.6726794,
"agencyName": "ESPÍGUL IMMOBILIARIA",
"agencyPhone": "+34913439848",
"agencyId": 9202775531783,
"agencyUrl": "https://www.fotocasa.es/inmobiliarias/espigul-immobiliaria-9202775531783",
"advertiserType": "Estate agency",
"isNewConstruction": false,
"isFeatured": true,
"hasVirtualTour": false,
"features": { "rooms": 3, "bathrooms": 2, "surface": 130, "floor": 12, "elevator": 1, "terrace": 1, "air_conditioner": 1, "heater": 1, "conservationState": 1 },
"imageUrl": "https://static.fotocasa.es/images/ads/f8a5ccd4-…?rule=original",
"imageCount": 28,
"searchedLocation": "Madrid, Madrid",
"status": "success"
}
FieldNotes
priceAsking price in EUR. For rentals, the amount per pricePeriod
pricePeriodmonth on rentals; absent on sales
pricePerSqmComputed from price and built area
featuresFotocasa's own raw feature map: lift, terrace, heating, air conditioning, condition code
agencyPhonePresent wherever Fotocasa publishes one
imageUrlsEvery photo on the listing
errorMessageOnly on status: "error" rows. Says what to change

Export as JSON, CSV, Excel or XML, or read it from the API.

💼 Use Cases & Examples

1. Spanish property market analysis

Pull a whole city at one snapshot and compute what the portal will not show you: median €/m² by neighbourhood, how a 2-bed in Salamanca prices against the same flat in Tetuán, how the mix moves month over month when you schedule it.

2. Estate agency lead lists

Every row carries the agency's name, phone and profile. Take a district, dedupe by agencyId, and you have the local agency map with contact details.

3. Investment and yield screening

Run one district twice, once sale and once rent. Price, size and room count are on both rows, so gross yield per neighbourhood falls out of a join.

4. Relocation and comparison tools

Feed a portal or relocation service with live Spanish stock: coordinates, postcode, photos and the full Spanish description, ready to render.

5. Competitor inventory monitoring

Watch a rival agency's listing count, price changes and how long stock sits. Agency Listings with transactionType: "all" returns their whole portfolio.

6. Room-share and student-housing research

Room share is a separate market with its own pricing, and most listing exports skip it entirely. transactionType: "share" puts it in the same schema as everything else.

🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('sian.agency/fotocasa-property-scraper').call({
operation: 'search',
location: 'Barcelona',
transactionType: 'rent',
propertyType: 'homes',
maxPrice: 1500,
maxResults: 300,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const byNeighbourhood = {};
for (const row of items) {
(byNeighbourhood[row.neighborhood] ||= []).push(row.pricePerSqm);
}
console.log(byNeighbourhood);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sian.agency/fotocasa-property-scraper").call(run_input={
"operation": "search",
"location": "Madrid",
"locations": ["Barcelona", "Valencia"],
"transactionType": "sale",
"minSurface": 80,
"maxResults": 600,
})
rows = list(client.dataset(run["defaultDatasetId"]).iterate_items())
agencies = {r["agencyId"]: (r["agencyName"], r.get("agencyPhone")) for r in rows if r.get("agencyId")}
print(f"{len(rows)} listings from {len(agencies)} agencies")

cURL

curl -X POST "https://api.apify.com/v2/acts/sian.agency~fotocasa-property-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation":"search","location":"Marbella","transactionType":"sale","maxResults":90}'

Automation Workflows (N8N / Zapier / Make)

Run it on a schedule and push new listings straight into your own stack. In N8N, an Apify node triggered daily on sortBy: "newest" feeds a Postgres insert or a Slack alert when something under your price ceiling appears. Zapier and Make both connect the same way. The dataset is plain JSON, so any HTTP step can read it.

📊 Performance & Pricing

Pay per listing. Nothing is charged for a row that fails.

FREE Tier

Up to 25 rows per run, so you can see the shape of the data before you commit.

No row cap. One request returns 30 listings, and a run of a few hundred rows finishes in seconds. Volume tiers reduce the per-listing price automatically as your monthly usage grows. See the Pricing tab on the Store page for the current table.

❓ Frequently Asked Questions

Do I need an API key, a login or a proxy? No. Type a Spanish place name and press Start.

What can I put in the place field? Any Spanish place: a city (Madrid), a province (Málaga), a region, a district (Barrio de Salamanca) or a neighbourhood. A Fotocasa search URL also works. The run log prints which place was matched.

How many listings can one search return? Fotocasa serves at most 505 pages of 30, so about 15,150 rows per query. Madrid alone has more than 15,000 flats for sale, so for a whole big city split the run by district or price band. The log reports the true match count, so you always know when that applies.

Is the agency's phone number really included? Yes, on every row where Fotocasa publishes one, at no extra charge. It is part of the listing record, not a separate step.

How do I get everything one agency has listed? Put their Fotocasa agency page URL in 🏢 Agency page URLs, switch 🎯 Operation to Agency Listings, and set 🤝 Sale or rent to Every market. You get their sales, rentals and room shares in one dataset.

Does it cover rentals and room shares as well as sales? All five markets Fotocasa runs: sale, rent, room share, business transfer and rent-to-own.

Are the descriptions in Spanish? Yes. It is the advertiser's own text exactly as it appears on Fotocasa, neither translated nor trimmed.

Can I get energy certificates or cadastral references? No. Those live on surfaces this actor does not read. What you get is what the listing record carries, and the features map shows exactly which attributes Fotocasa published for each property.

Does it return sold prices or price history? Fotocasa publishes live asking prices only. Build a history by scheduling this actor and keeping the snapshots. One run cannot produce a past.

🔧 Troubleshooting

"Fotocasa has no place called …" The place name did not match Fotocasa's index. Try the city or province on its own, without the region: Malaga, not Malaga province. Accents are optional.

Zero rows and a "no listings match" row The filters are too tight for that place. Widen the price band, drop the minimum size, or switch property type to Everything. A district plus a narrow price band plus a bedroom minimum can genuinely have no stock.

Fewer rows than I asked for Either the search has fewer matches than your maxResults, or you hit Fotocasa's 505-page ceiling. The log prints the real match count, so compare it against what you asked for.

Rows returned but no agencyPhone Fotocasa does not publish a number for every advertiser, mostly on private-owner ads. Check advertiserType to see which kind of seller it is.

A run stopped at 25 rows That is the FREE tier cap. Add a payment method in Apify Console → Billing.

"Fotocasa is rate limiting right now" It retries on its own with backoff. If a whole run fails this way, wait a few minutes and re-run; running several large jobs at once against the same source is the usual cause.

Fotocasa is a trademark of Adevinta Spain S.L.U. This actor is not affiliated with, endorsed by, or sponsored by Fotocasa or Adevinta.

This actor reads listing data that Fotocasa publishes openly, with no login and no paywall. You are responsible for how you use it: respect the GDPR when handling advertiser contact details, do not use agency phone numbers for unsolicited marketing where local law forbids it, and check Fotocasa's terms before republishing listing content or photos. Data is provided as-is; asking prices change constantly and a snapshot is a snapshot.

💬 Support

Other property portals in the same family: SeLoger (France), Immobiliare (Italy), ImmobilienScout24 (Germany), Funda (Netherlands), Rightmove (UK).


Keywords for LLM Discovery

fotocasa scraper, fotocasa api, scrape fotocasa, fotocasa data extraction, spain real estate scraper, spanish property listings, spain property data, pisos en venta, pisos de alquiler, casas en venta españa, inmobiliaria scraper, spain housing data, madrid property listings, barcelona property data, valencia real estate, marbella property listings, malaga property data, sevilla real estate, bilbao property listings, spanish rental market data, spain property prices, price per square metre spain, spanish estate agency contacts, real estate lead generation spain, property investment spain, rental yield spain, room share spain, habitacion en alquiler, obra nueva españa, new build spain, spanish property market analysis, real estate scraper, property listings api, european property data, iberian real estate data, spain relocation data, costa del sol property, balearic property listings, spanish property comparables, fotocasa alquiler, fotocasa venta