Fotocasa Property Listings Scraper avatar

Fotocasa Property Listings Scraper

Pricing

from $0.19 / 1,000 listing exporteds

Go to Apify Store
Fotocasa Property Listings Scraper

Fotocasa Property Listings Scraper

Extract public Fotocasa Spain property listings, prices, features, locations, media, and advertiser details from search and listing URLs.

Pricing

from $0.19 / 1,000 listing exporteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Fotocasa API & Property Listings Scraper

Use this Fotocasa API alternative to export public residential property listings from Fotocasa Spain into structured JSON, CSV, Excel, XML, or RSS. The Fotocasa scraper accepts search-result URLs to collect many homes or individual listing URLs for focused monitoring.

The Actor preserves Fotocasa data such as listing prices, descriptions, locations, coordinates, photos, property characteristics, and public advertiser details in one consistent dataset.

Who is it for?

This Actor is built for property analysts, real estate teams, investors, researchers, and data engineers who need repeatable Fotocasa exports without manual copy-and-paste.

Typical use cases

  • Build a market dataset for a Spanish city or neighborhood
  • Compare sale and rental prices over time
  • Monitor newly published listings with scheduled runs
  • Feed public property data into spreadsheets, BI tools, databases, or AI agents
  • Research inventory, agencies, and property characteristics

Input example

{
"startUrls": [
{ "url": "https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l" }
],
"maxListings": 100,
"maxPages": 5,
"changedSince": "2026-08-01T00:00:00Z"
}

Output example

{
"id": "190235067",
"url": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/example/190235067/d",
"title": "Flat in Madrid",
"description": "Bright home with parking and storage.",
"operation": "sale",
"propertyType": "Flat",
"price": 390000,
"pricePerSquareMeter": 4875,
"area": 80,
"rooms": 2,
"bathrooms": 1,
"floor": "3",
"address": "Madrid, 28022",
"location": "Madrid",
"latitude": 40.4241,
"longitude": -3.6014,
"features": ["Parking", "Lift"],
"images": ["https://static.fotocasa.es/images/ads/example"],
"imageCount": 12,
"agencyName": "Example agency",
"agencyPhone": "+34910000000",
"energyRating": "C",
"publishedAt": "2026-08-06T10:00:00Z",
"sourceUrl": "https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l",
"pageNumber": 1,
"scrapedAt": "2026-08-06T12:00:00Z",
"changeStatus": "new"
}

Fields that Fotocasa does not expose for a particular listing are returned as null; arrays remain arrays.

Input settings

FieldTypeDescription
startUrlsarrayOne or more public Fotocasa search-result or individual property URLs.
maxListingsintegerGlobal maximum number of unique listings to export.
maxPagesintegerMaximum result pages visited for each search URL. Individual property URLs use one page.
changedSinceISO date/timeOptional timestamp used to label recently published records as new.

Output fields

FieldDescription
idFotocasa listing identifier.
urlCanonical public property URL.
titleListing headline.
descriptionPublic listing description.
operationSale or rent operation.
propertyTypeProperty type or subtype.
priceAdvertised price in euros.
pricePerSquareMeterAdvertised or available price per square metre.
areaProperty area when available.
roomsNumber of rooms or bedrooms.
bathroomsNumber of bathrooms.
floorFloor label.
addressPublic address or area label.
locationMunicipality, district, neighborhood, or location label.
latitude, longitudePublic listing coordinates.
featuresPublic property features and amenities.
imagesPublic image URLs.
imageCountNumber of images.
agencyNamePublic advertiser or agency name.
agencyPhonePublic advertiser phone number.
energyRatingEnergy rating when available.
publishedAtPublication or update timestamp when available.
sourceUrlInput or pagination URL that produced the row.
pageNumberSearch page number.
scrapedAtUTC extraction timestamp.
changeStatusnew when publication metadata is newer than changedSince; otherwise current.

Ready-to-run examples

Open a public example to inspect its input, run it, or reuse it as a task:

Collect Madrid homes for sale

Use a Fotocasa Madrid sale-results URL with maxListings: 100 and maxPages: 5.

Monitor rental inventory

Use a rental search URL, set changedSince to your prior collection timestamp, and schedule the Actor daily.

Export selected properties

Pass multiple individual listing URLs in startUrls and set maxListings to the number of URLs.

Pricing

The Actor uses pay-per-event pricing: one start event and one result event per exported listing. Higher Apify plans receive volume discounts. See the live Pricing tab for current rates. You can cap spend with maxListings and maxPages.

API usage

cURL

curl -X POST "https://api.apify.com/v2/acts/fetch_cat~fotocasa-property-listings-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"}],"maxListings":20,"maxPages":2}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/fotocasa-property-listings-scraper').call({
startUrls: [{ url: 'https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l' }],
maxListings: 20,
maxPages: 2,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/fotocasa-property-listings-scraper').call(run_input={
'startUrls': [{'url': 'https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l'}],
'maxListings': 20,
'maxPages': 2,
})
items = client.dataset(run['defaultDatasetId']).list_items().items

MCP and AI agents

Connect through Apify MCP, or add it to Claude CLI:

$claude mcp add apify --transport http "https://mcp.apify.com?tools=fetch_cat/fotocasa-property-listings-scraper"

Example MCP configuration:

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com?tools=fetch_cat/fotocasa-property-listings-scraper"
}
}
}

Try asking these example prompts through MCP:

  • “Run the Fotocasa scraper and export 20 Madrid sale listings from this Fotocasa URL.”
  • “Use the Fotocasa API Actor to compare prices and floor area in this Fotocasa dataset.”
  • “Scrape Fotocasa listings for rent from this Barcelona search URL and return CSV-ready rows.”

Provide an explicit Fotocasa URL and a conservative result limit.

Tips and limits

  • Start with a low maxListings value while validating a new URL.
  • Use canonical public Fotocasa search or property URLs.
  • Results reflect the public page at run time; removed or unavailable listings cannot be exported.
  • Some optional fields differ by listing and may be null.
  • Respect Fotocasa's terms, applicable law, and personal-data requirements. Do not use output for unsolicited contact.

FAQ

How can I export Fotocasa listings?

Supply a public search URL, choose a result limit, and download the resulting dataset in JSON, CSV, Excel, XML, or RSS.

Is there a Fotocasa API for property data?

This Actor provides an API-accessible workflow for public Fotocasa property data through Apify clients, REST endpoints, schedules, integrations, and MCP.

How can I monitor Fotocasa prices?

Schedule repeat runs for the same search URL and compare the price, pricePerSquareMeter, and changeStatus fields over time.

Can I scrape rental and sale listings?

Yes. Supply the corresponding public Fotocasa search or listing URL.

Does it paginate search results?

Yes. maxPages bounds pages per search, while maxListings caps the total unique rows.

Can I run it on a schedule?

Yes. Create an Apify schedule and use changedSince to classify recently published listings when the source provides publication metadata.

Can I use the results through an API or MCP?

Yes. Every run can be started through the Apify API, JavaScript/Python clients, webhooks, integrations, or Apify MCP.

Why are some fields null?

Fotocasa does not expose every attribute for every property. The Actor preserves truthful source availability instead of inventing values.

Is this an official Fotocasa product?

No. This independent Actor extracts information available on public pages.

Support

Open an issue from the Actor's Apify Console page with the failing public URL, expected result, and run ID. Do not include credentials or private personal data.