Idealista Real Estate Scraper (Spain Property Listings) avatar

Idealista Real Estate Scraper (Spain Property Listings)

Pricing

from $18.91 / 1,000 listing results

Go to Apify Store
Idealista Real Estate Scraper (Spain Property Listings)

Idealista Real Estate Scraper (Spain Property Listings)

Scrape Idealista property listings by search URL, location or listing URL. Get price, price per m2, rooms, size, floor, features, geo, energy rating, owner-direct vs agency and agency name. Export to JSON, CSV or Excel.

Pricing

from $18.91 / 1,000 listing results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Idealista Real Estate Scraper (Spain Property Listings)

Idealista Real Estate Scraper (Spain Property Listings)

Here is one real result, with the fields the actor returns when the detail add-on is on:

{
"listingId": "112153132",
"title": "Piso en Calle de las Infantas, Chueca-Justicia, Madrid",
"listingUrl": "https://www.idealista.com/inmueble/112153132/",
"operation": "venta",
"propertyType": "piso",
"priceAmount": 1000000,
"priceCurrency": "EUR",
"pricePerM2": 7407,
"rooms": 2,
"bathrooms": 2,
"sizeM2": 135,
"floor": "4ª planta exterior con ascensor",
"latitude": 40.4199231,
"longitude": -3.6994614,
"locationText": "Chueca-Justicia, Madrid",
"ownerDirect": false,
"isProfessional": true,
"agencyName": "Gilmar Centro",
"agencySlug": "gilmar-centro",
"energyCertificate": "C",
"features": ["135 m² construidos", "2 habitaciones", "2 baños", "Terraza", "Armarios empotrados", "Aire acondicionado"],
"featureCount": 13,
"description": "Atractivo ático dúplex de 135 m² construidos, situado en una cuarta planta exterior con ascensor, en pleno barrio de Justicia...",
"imageCount": 40,
"publishedDate": "17 de agosto",
"aiHighlights": ["Ático dúplex con terraza privada", "Ubicación en el corazón de Justicia"],
"aiCondition": "good",
"aiTargetBuyer": "young professionals or couples",
"aiPricePerM2Assessment": "in line with prime central Madrid",
"source": "idealista.com",
"observedAt": "2026-08-20T03:03:45.019Z"
}

The most complete Idealista scraper available. It returns every listing field on the search results (price, price per m2, rooms, size, floor, property type, the owner-direct vs agency signal, agency name and image), plus an optional detail pass that adds geo coordinates, the full feature list, energy certificate, bathrooms, all images, the full description and the agency profile, plus an optional AI summary, and gives you filters to target exactly the properties you want.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

Point the actor at an Idealista search results URL (the most precise option: apply any filters you like on the site, then copy the URL), or give it a location slug and an operation, or a list of individual listing URLs. It paginates the search, collects every property, and writes one normalized record per listing to the run dataset. Each listing comes back with its price, price per m2, rooms, size in m2, floor, detected property type, the private-owner vs agency signal, the agency name and the main image.

Two optional add-ons enrich each listing further:

  • Contact and full detail enrichment opens each listing page and adds geo coordinates, the complete feature list, energy certificate, bathroom count, every image, the full description, the ad update date, the agency profile and a phone when the page shows one. This is the data most buyers and analysts want. It is off by default and charged only when real detail is returned.
  • AI listing summary produces buyer-facing highlights, a condition assessment, the ideal target buyer and a price-per-m2 value assessment. Off by default, charged only when a usable summary is returned.

A standout field is ownerDirect: it flags listings posted by a private owner (particular) rather than an agency, so you can target owner-direct deals that competitors do not surface. Missing values are returned as null, never invented. Anti-bot handling is fully internal, so you do not configure proxies or supply any login.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 10 properties for sale in Madrid.

{
"startUrl": "https://www.idealista.com/venta-viviendas/madrid-madrid/",
"maxResults": 10
}

To get geo, full features, energy rating and an AI summary, add the two add-ons (a paid Apify plan is required for add-ons):

{
"startUrl": "https://www.idealista.com/alquiler-viviendas/barcelona-barcelona/",
"maxResults": 50,
"minPrice": 900,
"maxPrice": 2000,
"minRooms": 2,
"contactDetails": true,
"aiListingSummary": true
}

Input reference

FieldTypeRequiredExampleDescription
startUrlstringone of thesehttps://www.idealista.com/venta-viviendas/madrid-madrid/An Idealista search results URL. The most precise way to target listings; pagination is followed automatically.
locationstringone of thesebarcelona-barcelonaConvenience alternative to startUrl: an Idealista location slug, combined with operation to build the search. Ignored when startUrl is set.
operationenumnoventaventa (buy) or alquiler (rent). Used with location.
propertyTypeenumnopisoKeep only this type: piso, casa, chalet, atico, duplex, estudio, apartamento, loft. Empty for all.
minPriceintegerno900Keep only listings priced at or above this amount in euros.
maxPriceintegerno2000Keep only listings priced at or below this amount in euros.
minRoomsintegerno2Keep only listings with at least this many rooms.
listingUrlsarray of stringsone of these["https://www.idealista.com/inmueble/112153132/"]Individual listing URLs to scrape directly with full detail.
maxResultsintegerno10Maximum listings to collect across the whole run. Free plans are capped at 10.
contactDetailsbooleannofalsePaid add-on, off by default. Fetch each listing page for geo, full features, energy rating, bathrooms, all images, full description, agency profile and phone. Charged only when real detail is returned.
aiListingSummarybooleannofalsePaid add-on, off by default. AI highlights, condition, target buyer and price-per-m2 assessment. Charged only when a usable summary is returned.

Provide at least a startUrl, a location, or one or more listingUrls. The add-ons are disabled on free Apify plans.

Output reference

One dataset item per listing. Types: string, number, integer, boolean, string[], or null when a value is absent.

FieldTypeDescription
listingIdstringIdealista listing id.
titlestringListing title.
listingUrlstringFull listing page URL.
operationstringventa (sale) or alquiler (rent).
propertyTypestringDetected property type (piso, casa, chalet, atico, and so on).
priceAmountintegerPrice in euros.
priceCurrencystringAlways EUR.
pricePerM2integerPrice per square metre in euros, when shown.
roomsintegerNumber of rooms (habitaciones).
bathroomsintegerNumber of bathrooms (detail add-on).
sizeM2integerBuilt size in square metres.
floorstringFloor or storey text, for example 4ª planta exterior con ascensor.
latitudenumberLatitude (detail add-on).
longitudenumberLongitude (detail add-on).
locationTextstringNeighborhood and city text (detail add-on).
ownerDirectbooleantrue when listed by a private owner, not an agency.
isProfessionalbooleantrue when listed by a professional agency.
agencyNamestringAgency or advertiser name.
agencySlugstringAgency profile slug (detail add-on).
phonestringContact phone when the page shows one (detail add-on).
energyCertificatestringEnergy certificate rating A to G (detail add-on).
featuresstring[]Full feature list such as terraza, ascensor, aire acondicionado (detail add-on).
featureCountintegerNumber of features captured (detail add-on).
descriptionSnippetstringShort description from the search card.
descriptionstringFull description (detail add-on).
imagestringFirst listing image URL.
imagesstring[]All listing image URLs (detail add-on).
imageCountintegerNumber of images captured (detail add-on).
publishedDatestringAd updated date (detail add-on).
aiHighlightsstring[]AI buyer-facing highlights (AI add-on).
aiConditionstringAI condition assessment (AI add-on).
aiTargetBuyerstringAI ideal target buyer (AI add-on).
aiPricePerM2AssessmentstringAI price-per-m2 value assessment (AI add-on).
searchUrlstringSearch URL that produced this listing.
sourcestringAlways idealista.com.
observedAtstringISO 8601 timestamp when the record was collected.
errorstringnull on success. On a failed run a single item with a populated error field is written instead.

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~idealista-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://www.idealista.com/venta-viviendas/madrid-madrid/","maxResults":25}'

Start a run asynchronously with the paid add-ons:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~idealista-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"startUrl":"https://www.idealista.com/alquiler-viviendas/valencia-valencia/","maxResults":100,"contactDetails":true,"aiListingSummary":true}'

Apify CLI:

apify call scrapers_lat/idealista-scraper \
--input '{"location":"sevilla-sevilla","operation":"venta","maxResults":50,"minRooms":3}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets.

Billing and limits

  • Pay per result. You are charged one result event per listing returned. A one-time actor-start event is charged when a run begins.
  • Add-ons are opt-in. Contact and full detail enrichment (contact_details) and the AI summary (ai_listing_summary) are off by default. Each is charged only when it produces data: contact_details when real detail is returned, ai_listing_summary when the AI returns a usable summary. Both are disabled on free Apify plans.
  • No charge on failure. If a run errors or matches nothing, the actor writes a single item with a populated error field and does not charge result or any add-on. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 listings per run and cannot use the paid add-ons. Upgrade for higher maxResults.
  • Tiered pricing. Per-event prices step down across Apify plan tiers. See the pricing tab for the current rates.

FAQ and troubleshooting

A run returned 0 listings. Why? The search URL or location matched nothing, or the location slug was not recognized. Copy a working search URL from your browser, or use the provincia-municipio slug format such as madrid-madrid. Zero-result runs are not charged.

How do I filter exactly like on the site? Apply your filters on idealista.com, then paste the resulting URL into startUrl. The actor also applies minPrice, maxPrice, minRooms and propertyType on top, so you can combine a broad URL with precise limits.

How do I find owner-direct (particular) listings? Every record includes ownerDirect. Filter the output for ownerDirect: true to get listings posted by private owners rather than agencies.

Why are geo, features and energy rating empty on some records? Those fields come from the detail page and are only filled when contactDetails is enabled. Without the add-on you still get price, price per m2, rooms, size, floor, type, the owner-direct signal and the agency name from the search results.

Why is phone empty? Idealista often hides the contact phone behind a click, so it is not always present in the page. When it is shown, the detail add-on captures it. Otherwise the agency name and profile let you reach the advertiser.

Do I need a proxy or an Idealista login? No. Anti-bot handling is fully internal. You never configure a proxy or supply any cookies or credentials.

Is this an official Idealista tool? No. This actor is independent and not affiliated with Idealista. It reads only data that is publicly visible on Idealista search and listing pages.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US, European and Latin American public platforms: company registries, government data, finance, real estate, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Idealista. Accesses only publicly available Idealista data. Use in accordance with Idealista's terms of service.