
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape public Fotocasa.es property listings in Spain from search URLs, listing URLs, or a place name with filters. Get price, rooms, bathrooms, m², floor, address, coordinates, photos, agency and energy certificate.
Turn Fotocasa.es search results into clean, structured property data for Spain. Paste any Fotocasa search URL, or type a place such as Madrid, Sevilla or Eixample and pick your filters, and get price, bedrooms, bathrooms, m², floor, full address, GPS coordinates, every photo, the agency and, optionally, the energy certificate for each listing. No Fotocasa account needed, and it costs $0.60 per 1,000 listings.
| Field | What it does |
|---|---|
startUrls | Fotocasa search pages (filters and sort kept, pages followed automatically) or single listing pages. |
location | A city, province, district or neighbourhood. Fotocasa's own place search picks the best match; locationType can prefer a province or district. |
maxItems | Total listings to save. Default 20. 0 means no limit. |
maxItemsPerSearch | Optional cap for each URL or location, handy when you paste many searches. |
operation, propertyType, sortBy | Buy, rent, share, rent to buy, transfer; homes, flats, houses, penthouses, garages, offices, land and more. |
| Filters | minPrice, maxPrice, minSurface, maxSurface, minRooms, maxRooms, minBathrooms, publicationDate, features, rentalType, newConstruction, and a radius (latitude, longitude, distanceKm). |
fetchDetails | Opens each listing page for the energy certificate, construction type, agency reference and website, and decoded features. |
monitorMode, monitorKey | Save only new or changed listings compared with earlier runs. |
{
"location": "Valencia",
"operation": "rent",
"propertyType": "flats",
"minPrice": 700,
"maxPrice": 1400,
"minRooms": 2,
"features": ["elevator", "terrace"],
"sortBy": "newest",
"maxItems": 200
}
One row per listing.
| Field | Example |
|---|---|
id, url, title | 190000001, listing link, Piso en venta en Calle Mayor |
price, priceText, pricePerSqm, priceDrop, periodicity | 249000, 249.000 €, 4980, 10000, monthly (rentals) |
transactionType, propertyType, propertySubtype | buy, Flat, Flat |
rooms, bathrooms, surface, floor, conservation, age, orientation | 2, 1, 50, 1, Needs renovation, 50-70 years, South |
address, street, neighborhood, district, city, province, region, zipCode, latitude, longitude | full location |
features, amenities_* | ["balcony", "elevator"], amenities_elevator: true |
thumbnail, photos, photoCount, videoUrls, floorPlanUrls, virtualTourUrl | media links |
agencyName, agencyType, agencyUrl, agencyLogo, phone | advertiser (public business details) |
isNewConstruction, isOccupied, isAuctioned, isRentedWithTenants, isTemporaryRental, ... | listing flags |
listedDate | 2026-09-28T19:12:14.170Z |
With fetchDetails | energyRating, energyValue, environmentImpactRating, environmentImpactValue, constructionType, reference, agencyWebsite, extraFeatures, detailFeatures, subsidies |
Sample row (fictional values, real shape):
{
"id": "190000001",
"url": "https://www.fotocasa.es/es/comprar/vivienda/madrid-capital/calefaccion/190000001/d",
"transactionType": "buy",
"propertyType": "Flat",
"title": "Piso en venta en Calle Mayor",
"price": 249000,
"priceText": "249.000 €",
"pricePerSqm": 4980,
"rooms": 2,
"bathrooms": 1,
"surface": 50,
"floor": "1",
"conservation": "Needs renovation",
"address": "Calle Mayor, Carabanchel",
"neighborhood": "Comillas",
"district": "Carabanchel",
"city": "Madrid",
"province": "Madrid",
"zipCode": "28019",
"latitude": 40.3916,
"longitude": -3.7131,
"features": ["balcony", "heating"],
"amenities_elevator": false,
"amenities_balcony": true,
"thumbnail": "https://static.fotocasa.es/images/ads/00000000-0000-0000-0000-000000000000?rule=original",
"photoCount": 26,
"agencyName": "Inmobiliaria Ejemplo Madrid",
"agencyType": "professional",
"phone": "+34910000000",
"listedDate": "2026-09-28T19:12:14.170Z",
"energyRating": "E",
"energyValue": 270,
"constructionType": "secondHand",
"detailFetched": true
}
You pay $0.60 per 1,000 listings saved ($0.0006 per listing), plus the platform usage of the run (compute and proxy traffic), which is small for this actor because it reads Fotocasa's lightweight page data. Example: 1,000 listings cost $0.60 in listing fees plus about one cent of usage (measured: about 9 MB of proxy traffic and under a minute of compute). Opening each listing page (fetchDetails) has no extra listing fee; it only adds a little usage.
Is it legal? It collects only publicly visible listing data. Make sure your use complies with Fotocasa's terms, the GDPR and the laws that apply to you, especially if you store contact details.
Do I need a login or my own proxy? No. The built-in proxy is used automatically: datacenter addresses first, residential addresses if Fotocasa refuses them.
How many listings can I get? Fotocasa shows at most about 10,000 listings per search. For bigger areas, split the search with price ranges or by district; duplicates across searches are removed within one run.
Why is a field empty? Advertisers fill in different fields. Bedrooms, floor or the exact street are missing when the advertiser did not publish them. Energy fields need fetchDetails.
Can I schedule it or use the API? Yes. Schedule a task in the console and turn on monitor mode to get only new or changed listings, or start runs and read datasets through the API.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalFotocasa URLs
Fotocasa search pages (any filters you set on the site are kept) or single listing pages. Example: https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l
locationstringOptionalLocation
City, province, district or neighbourhood in Spain, such as Madrid, Sevilla, Eixample or Marbella. Fotocasa's own place search picks the best match. Uses the Search and Filters settings below.
maxItemsintegerOptionaldefault 20Max listings
How many listings to save in total. 0 means no limit. Fotocasa shows at most about 10,000 listings per search.
Used with Location. Search URLs keep their own settings.
operationenumOptionaldefault "buy"Operation
Buy, rent, share a flat, rent to buy, or business transfer.
propertyTypeenumOptionaldefault "homes"Property type
What kind of property to search for.
locationTypeenumOptionaldefault "auto"Location type
Prefer a place of this kind when the name is ambiguous, for example Province to get Madrid province instead of Madrid city.
sortByenumOptionaldefault "relevance"Sort by
Order of the results.
Used with Location. To filter a search URL, set the filters on fotocasa.es and paste the URL.
minPriceintegerOptionalMin price (€)
Lowest price in euros (monthly rent for rentals).
maxPriceintegerOptionalMax price (€)
Highest price in euros.
minSurfaceintegerOptionalMin surface (m²)
Smallest built surface in square metres.
maxSurfaceintegerOptionalMax surface (m²)
Largest built surface in square metres.
minRoomsintegerOptionalMin bedrooms
Fewest bedrooms.
maxRoomsintegerOptionalMax bedrooms
Most bedrooms.
minBathroomsintegerOptionalMin bathrooms
Fewest bathrooms.
publicationDateenumOptionaldefault "any"Published
Only listings published in this period.
featuresarrayOptionalMust have
Only listings with all of these features.
rentalTypeenumOptionaldefault "any"Rental type
Rent searches only: long-term or temporary rentals.
newConstructionbooleanOptionaldefault falseNew builds only
Only new-construction homes.
latitudestringOptionalRadius centre latitude
Keep only listings within Distance of this point, for example 40.4168. Use with Longitude and a Location or URL that covers the area.
longitudestringOptionalRadius centre longitude
For example -3.7038.
distanceKmintegerOptionaldefault 20Distance (km)
Radius around the point above.
maxItemsPerSearchintegerOptionaldefault 0Max listings per search
Cap for each URL or location on its own, so one big search does not use up Max listings. 0 means no per-search cap.
fetchDetailsbooleanOptionaldefault falseOpen each listing page
Adds the energy certificate (rating and value), construction type, agency reference and website, decoded features (lift, furnished, occupancy) and the exact street when published. One extra page per listing, so runs take longer.
monitorModebooleanOptionaldefault falseOnly new or changed listings
For scheduled runs: remembers every listing and saves only listings that are new or changed price since an earlier run with the same settings. Adds monitorStatus and previousPrice.
monitorKeystringOptionalMonitor name
Optional name for the remembered list, so different tasks can share or separate it. Empty means one list per set of search settings.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter addresses are tried first; if Fotocasa refuses them, the run switches to residential addresses.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| thumbnail | string | null | |
| price | number | null | |
| transactionType | string | null | |
| propertyType | string | null | |
| rooms | number | null | |
| bathrooms | number | null | |
| surface | number | null | |
| floor | string | null | |
| address | string | null | |
| district | string | null | |
| city | string | null | |
| province | string | null | |
| pricePerSqm | number | null | |
| agencyName | string | null | |
| listedDate | string | null | |
| url | string | null | |
| id | string | null | |
| title | string | null | |
| energyRating | string | null | |
| energyValue | number | null | |
| environmentImpactRating | string | null | |
| constructionType | string | null | |
| conservation | string | null | |
| age | string | null | |
| street | string | null | |
| zipCode | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| reference | string | null | |
| agencyWebsite | string | null | |
| phone | string | null | |
| photos | array | null | |
| features | array | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One Fotocasa listing saved to the dataset | $0.0006 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/fotocasa-scraper').call({
"startUrls": [
"https://www.fotocasa.es/es/comprar/viviendas/madrid-capital/todas-las-zonas/l"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/fotocasa-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/fotocasa-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Rental flats in Barcelona between 800 and 2,000 EUR.
Newest houses in Malaga province with 3 or more rooms.
Listings from a pasted search link, with energy rating and more.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.