Idealista Commercial Scraper — Offices, Naves & Terrenos avatar

Idealista Commercial Scraper — Offices, Naves & Terrenos

Pricing

from $20.00 / 1,000 result scrapeds

Go to Apify Store
Idealista Commercial Scraper — Offices, Naves & Terrenos

Idealista Commercial Scraper — Offices, Naves & Terrenos

Scrape commercial real estate and land listings from Idealista in Spain (idealista.com), Italy (idealista.it), and Portugal (idealista.pt). Offices, retail premises, industrial units, and terrenos with prices, EUR/m2 rates, surfaces, and addresses for sale or rent.

Pricing

from $20.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

Idealista Commercial Scraper

Extract commercial property and land listings from Idealista, the leading property portal in Southern Europe. One actor covers the commercial categories of idealista.com (Spain), idealista.it (Italy), and idealista.pt (Portugal): offices, retail premises, industrial units, and land.

What does this actor do?

You pick a market (Spain, Italy, or Portugal), a segment (office, retail, industrial, or land), sale or rent, and a city. The actor returns structured JSON for every listing in that search: headline, address, price with its unit, the EUR/m2 rate where Idealista quotes one, surface, land zoning for plots, photos, and the listing URL.

It scrapes the same categories a manual visitor sees:

  • Spain: oficinas, locales, naves industriales, terrenos
  • Italy: uffici, negozi, capannoni, terreni
  • Portugal: escritórios, espaços comerciais, armazéns, terrenos

Why use it?

  • Market research. Track office rents per m2 across Madrid, Milano, and Lisboa from one dataset with consistent fields.
  • Site sourcing. Pull every industrial unit or buildable plot in a city into your own pipeline instead of paging through results by hand.
  • Investment screening. Sale listings in the retail category include units sold with sitting tenants ("en rentabilidad"), and land listings carry their zoning classification.
  • Cross-border coverage. The record shape is identical for all three countries, so a Spain + Italy + Portugal comparison needs no field mapping.

Commercial listings quote prices in several ways. This actor keeps that intact: the parsed number, the original display string, and the unit are separate fields. Price-on-application listings get a null price instead of a made-up number.

How to scrape Idealista commercial data

  1. Create a free Apify account and open this actor.
  2. Choose the market: es (idealista.com), it (idealista.it), or pt (idealista.pt).
  3. Choose the segment: office, retail, industrial, or land.
  4. Choose sale or rent and enter a city, in the local spelling or English (Madrid, Valencia, Milano, Lisboa, Porto).
  5. Optionally set price and size bounds.
  6. Run it. Results land in the dataset as JSON, downloadable as CSV, Excel, or through the API.

The actor handles the cookie-consent wall and Idealista's anti-bot protection through a scraping browser with country-matched residential exits. You do not need to configure a proxy.

Input options

FieldTypeDefaultDescription
marketstringeses (idealista.com), it (idealista.it), or pt (idealista.pt).
segmentstringofficeoffice, retail, industrial, or land.
listingTypestringsalesale or rent.
searchQuerystringmarket capitalCity or area, e.g. Madrid, Valencia, Sevilla, Milano, Torino, Lisboa, Porto.
minPrice / maxPriceinteger(none)Price bounds in EUR. Total for sale, per month for rent.
minSize / maxSizeinteger(none)Surface bounds in m2.
maxResultsinteger100Hard cap on returned listings (1 to 1,800). Idealista serves at most ~60 result pages per search, so narrow the location or add filters for full coverage of a large market.

Example input

{
"market": "es",
"segment": "office",
"listingType": "rent",
"searchQuery": "Madrid",
"maxResults": 100
}

Land plots for sale around València:

{
"market": "es",
"segment": "land",
"listingType": "sale",
"searchQuery": "Valencia",
"maxResults": 50
}

Warehouses in Lisboa:

{
"market": "pt",
"segment": "industrial",
"listingType": "rent",
"searchQuery": "Lisboa",
"maxResults": 50
}

A note on retail and industrial

Idealista groups retail premises and industrial units into one category per market ("Locales o naves" in Spain, "Locali o capannoni" in Italy, "Espaços comerciais ou armazéns" in Portugal). The actor reads the typology from each listing and returns only the type you asked for. The propertyType field carries that per-listing classification, so a retail run tells you exactly what each record is. An industrial run scans more result pages than other segments to fill your maxResults, because industrial units are the minority type in the shared category.

Output fields

FieldTypeExample
titlestring"Oficina en Calle de Almagro, 21, Almagro, Madrid"
segmentstring"office", "retail", "industrial", "land"
propertyTypestringPer-listing typology: "office", "retail", "industrial", "land", "building", "other"
listingTypestring"sale" or "rent"
pricenumber or null24000 (null when price on application)
currencystring"EUR" (always)
priceUnitstring or null"EUR" for sale totals, "EUR/month" for rents
priceTextstring or null"24.000€/mes", "305.000€", "4.200€/mês"
pricePerM2number or null40 (for rents: EUR per m2 per month)
pricePerM2Textstring or null"40,00 €/m²"
surfacenumber or null600 (m2)
landClassificationstring or null"Urbanizable", "Edificabile", "Urbano" (land listings)
detailsTextarrayAll detail chips verbatim, e.g. ["600 m²", "40,00 €/m²"]
addressstring or null"Calle de Almagro, 21, Almagro, Madrid"
descriptionstring or nullListing description snippet
imageUrlstring or nullFirst photo URL
imageCountnumber or nullNumber of photos
agencyNamestring or nullAdvertising agency, when branded
propertyCodestring"99679609" (Idealista listing ID)
market / countrystring"es" / "ES"
sourcestring"www.idealista.com"
urlstringCanonical listing URL
scrapedAtstringISO timestamp

Example output

{
"title": "Oficina en Calle de Almagro, 21, Almagro, Madrid",
"segment": "office",
"propertyType": "office",
"listingType": "rent",
"price": 24000,
"currency": "EUR",
"priceUnit": "EUR/month",
"priceText": "24.000€/mes",
"pricePerM2": 40,
"pricePerM2Text": "40,00 €/m²",
"surface": 600,
"landClassification": null,
"address": "Calle de Almagro, 21, Almagro, Madrid",
"propertyCode": "99679609",
"market": "es",
"country": "ES",
"source": "www.idealista.com",
"url": "https://www.idealista.com/inmueble/99679609/",
"scrapedAt": "2026-08-18T14:00:00.000Z"
}

Cost per result

The actor charges per dataset item plus a small run-start fee. A run pays for the anti-bot browser infrastructure needed to reach Idealista reliably; expect a typical 100-listing run to finish in a few minutes. A run's usage cost only settles after the run reports SUCCEEDED, so read the final cost after the run finishes rather than mid-run.

Limits and behavior worth knowing

  • Idealista caps any single search at roughly 60 result pages (~1,800 listings). For complete coverage of a large market, run per district or with price/size bands.
  • price is null for price-on-application listings. That is normal in this vertical, and it is why the price assertions in your own pipeline should tolerate nulls.
  • For rent listings the per-m2 rate Idealista quotes is per month.
  • Sale prices are totals; the land category also shows zoning (landClassification) straight from the card.
  • If a location is not recognized, the actor falls back to the market's capital rather than returning nothing, and says so in the log.
  • Idealista Scraper — residential listings (pisos, casas) on the same three markets, with detail-page enrichment and an FSBO filter.

FAQ

Which countries does this cover? Spain, Italy, and Portugal — the three markets Idealista operates.

Does it scrape listing detail pages? No. It reads search result cards, which carry the commercially relevant fields (price, rate per m2, surface, zoning, address). That keeps runs fast and the per-result cost low.

Can I get both retail and industrial in one run? Run segment=retail and segment=industrial separately, or use retail and read the propertyType field — the shared category is classified per listing.

Is scraping Idealista legal? The actor collects publicly visible listing data only. You are responsible for using the data in compliance with applicable law and Idealista's terms.