Idealista Scraper - Real Estate Spain, Portugal, Italy Listings avatar

Idealista Scraper - Real Estate Spain, Portugal, Italy Listings

Pricing

from $0.40 / 1,000 listing scrapeds

Go to Apify Store
Idealista Scraper - Real Estate Spain, Portugal, Italy Listings

Idealista Scraper - Real Estate Spain, Portugal, Italy Listings

Scrape Idealista real estate listings in Spain (idealista.com), Portugal (.pt) and Italy (.it) from any search URL, filters and sort order respected. Price, price drops, size, rooms, floor, agency, photos, energy class, coordinates. New-listings monitoring. From $0.40 per 1,000. JSON, CSV, API.

Pricing

from $0.40 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Amit Aviv

Amit Aviv

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

3

Monthly active users

12 days ago

Last modified

Features

Limited permissions

Share

Idealista Scraper turns any idealista.com (Spain), idealista.pt (Portugal) or idealista.it (Italy) search URL into structured property data: price, price drops, size, rooms, floor, agency and photos for every listing the website shows. Turn on full details to add the description, all features, the energy certificate, map coordinates and every photo. No proxy setup, no cookies, no login; you pay per listing delivered.

What does Idealista Scraper do?

You search on idealista as usual, copy the URL of the results page, and paste it in. The scraper reads the same pages a visitor sees, so the filters and sort order in your URL are respected. Idealista shows at most 1,800 listings per search; ask for more and the scraper reads the search as several price bands to get past that (see Searches with more than 1,800 results).

It works with sale and rent searches, and accepts individual property URLs too.

What data can you extract from Idealista?

Every listing is one record. Search results alone give 36 fields:

GroupFields
Identityid, url, title, site, country
Priceprice, priceText, currency, pricePerM2, previousPrice, priceDropPercent
Propertyrooms, sizeM2, floor, floorText, hasElevator, isExterior, parkingIncluded, detailsText, description (short card text), tags, isNewDevelopment
AdvertiserisProfessional, agencyName, agencyUrl
MediaimageUrl, images, imageCount, hasFloorPlan, has3DTour, hasVideo
OtherisFeatured, onlineBooking, searchUrl, page, scrapedAt

previousPrice and priceDropPercent are filled whenever idealista shows a lowered price on the results card, at no extra cost. In a 90-listing Madrid test run, 26 listings carried a price drop. A card with an extra characteristic that fits none of these fields (for example "Garaje incluido") also carries otherFeatures, a list of those texts.

With Fetch full property details (or for property URLs) each record also gets:

GroupFields
Textdescription (full text), reference, updatedText
Locationlocation (neighbourhood, city), latitude, longitude, addressVisibility
Characteristicstypology, operation, bathrooms, builtYear, features (grouped under idealista's own headings), featureList (flat)
EnergyenergyClass, energyClassCode, energyConsumption, energyEmissions
AdvertiseradvertiserName, advertiserUrl, advertiserType (private or professional; on search results it follows the card's isProfessional flag: 14 of 40 were private in a Lisbon rental test run on 2026-10-11). For private advertisers the name is withheld by default, see below
Mediaimages (all full-size photos), imageLabels (living room, kitchen...), floorPlans
StatusdetailFetched, isBlocked (false on saved records), and detailError when a property page could not be read

Private advertisers. When a listing is published by a private individual and not by an agency, advertiserName and advertiserUrl are null and the record carries "privateDataRedacted": true. Everything about the property itself, including its address and coordinates, is unchanged, and agencies are always returned in full. In a test run on 2026-10-13 with a Valladolid rental search and two property URLs, 14 of 32 detailed records were from private advertisers and redacted; the 18 from agencies were unchanged. To receive the names, turn on Include names of private advertisers; by doing so you confirm that you have a lawful basis under the GDPR for processing them. Free-text descriptions are never altered.

Coordinates. latitude and longitude are filled on detailed records only; search rows without details have none. In test runs on 2026-10-11 they were present on 30 of 30 Spanish, 300 of 300 Portuguese and 9 of 10 Italian detailed listings. addressVisibility says what they mean: EXACT is the address the advertiser published; HIDDEN is idealista's approximate map point, not the real address. Most listings are HIDDEN (27 of 30 in the Spanish run).

How to scrape Idealista

  1. Search on idealista.com, idealista.pt or idealista.it with the filters you want.
  2. Copy the URL of the results list, for example:
    • https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_300000,de-dos-dormitorios/
    • https://www.idealista.pt/arrendar-casas/lisboa/com-preco-max_1500/
    • https://www.idealista.it/vendita-case/milano-milano/
  3. Paste one or more URLs into Idealista search URLs, set Max listings per search URL, and start the run.
  4. Download the results from the Output tab as JSON, CSV, Excel or XML, or read them through the API.

For specific properties, paste URLs such as https://www.idealista.com/inmueble/112110910/, https://www.idealista.pt/imovel/35081413/ or https://www.idealista.it/immobile/35555810/ into Individual property URLs.

A listing is saved and charged once per run, however many searches return it.

Monitor new listings

Turn on Only new listings (onlyNew) and schedule the same input. Each run returns and charges listing events only for the listings that earlier runs have not returned for that search URL. Every run also pays the Actor start fee (see pricing).

  1. Create a task with your search URL, onlyNew: true and a maxItemsPerSearch above the number of new listings you expect between two runs (60 or more is a good start).
  2. Add a schedule in Apify Console (Schedules), for example the cron expression 0 * * * * for every hour or */15 * * * * for every 15 minutes.
  3. Read each run's dataset, or attach a webhook or an integration to the task. A run with nothing new ends SUCCEEDED with the message "0 new listings: ..." and an empty dataset.
{
"searchUrls": ["https://www.idealista.pt/arrendar-casas/lisboa/com-preco-max_1500/"],
"maxItemsPerSearch": 60,
"onlyNew": true
}

How it behaves:

  • First run. Returns and charges the newest listings up to maxItemsPerSearch. It remembers every listing on the results pages it read (30 per page), also the ones beyond the limit: they count as already there. To start silently instead, also set onlyNewSkipFirstRun: true: the first run then remembers what is there without returning or charging any listing.
  • Later runs. The scraper reads the newest listings first and stops at the first results page on which it knows every listing, so a run without news reads one page. Listings older than everything it knows are not news: when the reading gets past the known listings (10 or more known ones in a row, then a page with no known listing, or the end of the results), those older listings are remembered without being returned or charged. On idealista.com a search with up to 150 results is read in full in its usual order instead, because the newest-first order there needs a stricter anti-bot check that takes about 12 seconds when it passes. Larger idealista.com searches use that check on every run. When the check is refused, the scraper keeps trying with new sessions as described under Reliability, so such a run can take minutes on a bad day.
  • What "new" means. A listing this monitor does not know that stands above, or between, listings it knows in idealista's newest-first order. That includes an older listing that idealista moves to the top after the advertiser republishes it. Price changes of listings already returned are not reported.
  • If there is more news than the limit. The run returns the newest maxItemsPerSearch listings and the status message says that only the newest were returned. The rest is usually not returned later: the next run stops at the first page it knows. The same applies when the maximum charge or the run timeout cuts a run short.
  • If a run fails or is aborted before a search is finished, that search is not recorded and the next run returns its listings again. You may get duplicates after a failure, not gaps.
  • Large searches on idealista.com: narrow them to 150 results. A search with up to 150 results that also fits in maxItemsPerSearch is read in full on every run, on the same path as an ordinary run. That is the reliable way to monitor idealista.com. Add idealista's date filter and, if needed, other filters until the search shows at most 150 results, and set maxItemsPerSearch to at least that number. Example: https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_200000,publicado_ultimas-24-horas/ had 22 results, while all of Madrid in the last 24 hours had 346, which is too many. Schedule such a search more often than the filter's window (24 or 48 hours). A search with more results is read newest first, and idealista.com serves that order only after a stricter anti-bot check, which is refused far more often: on a bad day nearly every session (84 of 86 on 30 October 2026). Such a run can then fail after up to 30 blocked sessions or about 15 minutes; keep the default run timeout so that it ends with a clear message. It pays the start fee and no listings, and the next run that gets through returns what was missed. idealista.pt and idealista.it do not need the check.
  • Where the memory lives. In a key-value store named idealista-scraper-monitor in your own Apify account, one record per search URL (sort order and page number in the URL do not matter). Delete a record to start that search over. To keep two independent monitors of the same search, give each a monitorKey.
  • Limits. Do not run the same monitor in two runs at once. Up to 20,000 listings are remembered per search. Monitoring reads at most the 1,800 newest listings of a search and is not combined with price-band splitting. Property URLs are always returned. The method is best effort: it relies on idealista's newest-first order, and a new listing that idealista places below a full page of known ones is missed. A record in the store that this Actor did not write is treated as a first run.

Searches with more than 1,800 results

Idealista shows 60 pages, 1,800 listings, per search and no more. Set maxItemsPerSearch above 1,800 and the scraper checks the total of each search: when it is larger, the search is read as several price bands that each fit, and every listing is saved once.

  • Your own filters stay in place, including a price range in the URL. In a test on 2026-10-13 the search .../granada-granada/con-precio-hasta_300000/ listed 2,052 results; the run read two bands (up to 229,000 EUR: 1,072; above: 980) and saved 2,049 unique listings in under 3 minutes.
  • Bands are read from the lowest price up, so when maxItemsPerSearch is below the total you get the cheapest listings first. Within a split search the sort order of your URL is not kept. In a second test, a Lisbon search listing 10,531 results with maxItemsPerSearch 1,900 returned exactly 1,900 unique listings from the two cheapest bands and reported the search as not complete.
  • The status message and the splitSearches entry of OUTPUT_SUMMARY say how many price bands were read, how many listings idealista reported for the search (listedByIdealista) and for the bands together (listedInPriceBands), how many were saved and whether the search was read completely. Expect the saved count to differ slightly from idealista's total, in either direction: listings appear and disappear while the pages are read.
  • A listing that is in no price band, for example one without a price, cannot be reached this way. When the bands together hold clearly fewer listings than the search (more than 1% and more than 5 listings), the run reports the search as not complete. In the two live tests the bands added up to the search total exactly.
  • A band that still has more than 1,800 listings at a single price cannot be split; its first 1,800 are saved and the run reports it as not complete. A search is split into at most 200 bands.
  • Turn Split searches with more than 1,800 results off to get the first 1,800 listings in the order of your URL. With maxItemsPerSearch at 1,800 or less nothing is split.
  • Large jobs need time: about 2.5 to 3 seconds per results page of 30 listings (the 2,049 listings above took 170 to 205 seconds across test runs), plus the time for details if you turn them on. The largest split job tested is those 2,049 listings without details.

Input

FieldTypeDefaultWhat it does
searchUrlsarray of stringsnoneSearch result URLs from any of the three sites.
maxItemsPerSearchinteger, 1-10000060Listings to save per search URL (30 per page). Counts listings actually saved: ones already delivered earlier in the same run do not use up the limit. Above 1,800 a larger search is split into price bands.
fetchDetailsbooleanfalseAlso opens every property page. Adds one detail event per listing and about 1.5-2.5 seconds each.
propertyUrlsarray of stringsemptyProperty pages to scrape directly, always with full details.
onlyNewbooleanfalseReturn and charge only listings that earlier runs with this option have not returned for the same search URL. See Monitor new listings.
onlyNewSkipFirstRunbooleanfalseWith onlyNew: the first run of a search remembers the current listings without returning or charging them.
monitorKeystringemptyWith onlyNew: a name that keeps this monitor's memory apart from other monitors of the same search.
splitLargeSearchesbooleantrueOnly when maxItemsPerSearch is above 1,800: read a search with more results as several price bands.
includePrivateSellerDatabooleanfalseDeliver advertiserName of private individuals. You confirm a lawful basis under the GDPR for processing them.
debugbooleanfalseSaves blocked pages plus the first results page and property page to the key-value store as raw HTML, and logs more. A private advertiser's property page is not saved unless includePrivateSellerData is on.

Accepted URL forms: with or without https:// and www, m.idealista.* mobile links, links with tracking parameters or trailing punctuation from copy-paste, and translated pages such as /en/. URLs are routed by what they are, so a property URL pasted into searchUrls is scraped as a property and the other way round. The same search given twice is run once.

{
"searchUrls": ["https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_200000/"],
"maxItemsPerSearch": 30,
"fetchDetails": true
}

Output example

A real record from a run of the input above on 2026-10-11 (description and arrays shortened):

{
"id": 112110910,
"url": "https://www.idealista.com/inmueble/112110910/",
"title": "Estudio en venta en Calle del Amparo",
"price": 175000,
"priceText": "175.000 €",
"currency": "EUR",
"pricePerM2": 6731,
"previousPrice": 185000,
"priceDropPercent": 5,
"rooms": null,
"sizeM2": 26,
"floorText": "2ª planta interior sin ascensor",
"floor": 2,
"hasElevator": false,
"isExterior": false,
"parkingIncluded": false,
"detailsText": ["26 m²", "2ª planta interior sin ascensor"],
"description": "Oportunidad en el Corazón de Lavapiés ... este acogedor estudio ubicado en el vibrante barrio de Lavapiés – Embajadores, en pleno centro de Madrid. ...",
"tags": [],
"isProfessional": true,
"agencyName": "Estudio Las Ciudades",
"agencyUrl": "https://www.idealista.com/pro/p00012820/",
"isFeatured": true,
"isNewDevelopment": false,
"hasFloorPlan": true,
"has3DTour": false,
"hasVideo": true,
"onlineBooking": false,
"imageCount": 20,
"imageUrl": "https://img4.idealista.com/blur/WEB_DETAIL/0/id.pro.es.image.master/91/68/76/1459109923.jpg",
"images": ["https://img4.idealista.com/blur/WEB_DETAIL/0/id.pro.es.image.master/91/68/76/1459109923.jpg", "... 18 more"],
"location": "Lavapiés-Embajadores, Madrid",
"typology": "home",
"operation": "sale",
"bathrooms": 1,
"builtYear": 1905,
"energyClass": "F",
"energyClassCode": "f",
"energyConsumption": "Consumo: 325 kWh/m² año",
"energyEmissions": "Emisiones: 55 kg CO2/m² año",
"features": {
"Características básicas": ["26 m² construidos", "Sin habitación", "1 baño", "Segunda mano/buen estado", "Armarios empotrados", "Construido en 1905", "Calefacción individual: Bomba de frío/calor"],
"Edificio": ["2ª planta interior", "Sin ascensor"],
"Equipamiento": ["Aire acondicionado"],
"Certificado energético": ["Consumo: 325 kWh/m² año", "Emisiones: 55 kg CO2/m² año"]
},
"featureList": ["26 m² construidos", "Sin habitación", "1 baño", "... 9 more"],
"reference": "112110910",
"advertiserName": "Estudio Las Ciudades",
"advertiserUrl": "https://www.idealista.com/pro/p00012820/",
"advertiserType": "professional",
"latitude": 40.4116562,
"longitude": -3.7033518,
"addressVisibility": "HIDDEN",
"updatedText": "Anuncio actualizado el 8 de octubre",
"floorPlans": ["https://img4.idealista.com/blur/WEB_DETAIL/0/id.pro.es.image.master/00/bc/48/1481732837.jpg"],
"imageLabels": ["Salón", "Salón", "Salón", "Salón", "Salón", "Vistas", "... 14 more"],
"isBlocked": false,
"detailFetched": true,
"site": "idealista.com",
"country": "ES",
"searchUrl": "https://www.idealista.com/venta-viviendas/madrid-madrid/con-precio-hasta_200000/",
"page": 1,
"scrapedAt": "2026-10-11T13:15:00.646Z"
}

rooms is null here because the listing is a studio ("Sin habitación"). Texts stay in the language of the page.

How much does it cost to scrape Idealista?

Pay per event, no subscription. Compute and proxy are included in the event price. Each run also pays Apify's standard Actor start event, charged once per GB of run memory: at the default 2 GB that is $0.0084 per run on Free, $0.007 on Bronze, $0.0064 on Silver and $0.0056 on Gold and above. Put several search URLs in one run to pay it once.

EventFree planBronzeSilverGold and above
Listing: one property saved$0.60 / 1,000$0.50 / 1,000$0.45 / 1,000$0.40 / 1,000
Detail: extra, when the property page is read+$1.20 / 1,000+$1.00 / 1,000+$0.90 / 1,000+$0.80 / 1,000

Worked example on Bronze: 1,000 listings from search results cost $0.50; the same 1,000 with full details cost $0.50 + $1.00 = $1.50. A daily check of the 90 newest listings in a city costs about $0.045 per run, about $0.052 with the start fee.

Monitoring with Only new listings, on Bronze: the first run of a search with maxItemsPerSearch 60 returns 60 listings and costs $0.03 plus the $0.007 start fee. After that you pay the start fee per run and the listings that are new: an hourly schedule (24 runs a day) on a search that gets 30 new listings a day costs 24 × $0.007 + 30 × $0.0005 = $0.183 a day, or $0.213 with full details, however the 30 are spread over the runs. A run that finds nothing new pays the start fee and nothing else. To monitor several searches, put them in one run: the start fee is paid once.

Free-plan users pay a slightly higher price per event and get the same limits. Apify's free plan includes $5 of monthly credit, enough for about 8,000 listings without details or about 2,700 with details.

Listing and detail events are charged only for records that reach the dataset; the start fee applies to every run, whatever it delivers. Failed pages, offline property URLs, empty searches and duplicates within a run are not charged. A listing whose property page could not be read is saved from the search card with a detailError and charged as a listing only.

Reliability and failure behaviour

Idealista is protected by DataDome and blocks a share of new browser sessions; on the test day about half of new sessions on idealista.com were blocked. The scraper replaces a blocked session automatically, and the status message during the run and the OUTPUT_SUMMARY record tell you how many were replaced. What the final status means:

  • SUCCEEDED, "Scraped N listing(s)...": data was delivered. If some inputs failed, the message counts them and quotes the first error, so a partly failed run is still SUCCEEDED with partial results.
  • SUCCEEDED, "No listings: ...": the search has no results on idealista right now, or all the property URLs you gave are no longer online. No listings are charged, only the start fee.
  • SUCCEEDED, "0 new listings: ...": a run with Only new listings found nothing that earlier runs had not returned. No listings are charged, only the start fee.
  • FAILED, "Failed: ...": nothing could be scraped and no listings were charged, only the start fee, for example unusable input (fails within seconds), a URL idealista rejects, or idealista refusing every session for a long stretch (up to 30 blocked sessions or about 15 minutes, with pauses between attempts). Run it again later.

Other guarantees:

  • Maximum charge respected. If you set a maximum total charge for the run, the scraper stops when it is reached and does no work beyond what the limit pays for.
  • Clean stop before the timeout. Shortly before the run timeout (a fifth of the timeout, at most a minute, at least 5 seconds) it stops, keeps and charges what was collected, and says so. The first results page of every search is fetched even when the timeout is very short, so a run with a 30- or 60-second timeout still returns listings.
  • Nothing lost on a block. Detailed records are saved in batches of 10 as they are fetched; the next session continues with the rest.
  • Run report. Every run writes an OUTPUT_SUMMARY record to the key-value store: listings saved, events charged, sessions used and blocked, failed and empty searches, offline property URLs, rejected inputs and the stop reason; for split searches also the price bands read (splitSearches); for every browser session the fingerprint's OS and Firefox version, the proxy's exit country and how its first request went (sessionLog).

Limits

  • 1,800 listings per search (60 pages) is what idealista shows. Larger searches are split into price bands when maxItemsPerSearch is above 1,800; see Searches with more than 1,800 results.
  • No phone numbers or emails. Idealista shows phone numbers only after a click on its contact button; this scraper does not request them and never logs in.
  • Details take time: about 1.5-2.5 seconds per listing, roughly 1,000-1,500 per hour. A full 1,800-listing search with details needs a run timeout above the default hour. The largest job tested is 300 detailed listings in one run; without details, 2,049 listings.
  • Newest-first sorting on idealista.com (?ordenado-por=fecha-publicacion-desc) works, but idealista serves it only after a stricter anti-bot check, so it takes about 10 seconds longer and can fail when the check is refused repeatedly. The filters con-publicado_ultimas-24-horas and con-publicado_ultimas-48-horas are the lighter alternative.
  • Map-view URLs (/mapa) are not supported; use the list-view URL.
  • Translated pages: the core fields are parsed on /en/ pages of all three sites and on /ca/, /fr/ and /de/ pages of idealista.com. Other languages are accepted, but rooms, floor, hasElevator and bathrooms may be empty.
  • New developments: Spanish project pages (/obra-nueva/<id>/) work as property URLs but have no single price, so price is null. Portuguese and Italian project pages are untested.
  • Memory: 2,048 MB is the supported default. 1,024 MB works for small runs but is tight for long detail jobs.
  • A URL pointing at a later results page (pagina-3, lista-3) is collected from that page onwards. An unknown filter or sort value (HTTP 400) or a wrong location (HTTP 404) fails that search at once.

Integrations and API

The scraper is a standard Apify Actor, so everything the platform offers applies:

curl -X POST "https://api.apify.com/v2/acts/amitaviv~idealista-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchUrls": ["https://www.idealista.com/venta-viviendas/madrid-madrid/"], "maxItemsPerSearch": 60}'
  • API and clients: start runs and read datasets over REST or with the JavaScript and Python clients; ready-made snippets are in the API tab.
  • Schedules: run a saved input hourly or daily from Apify Console.
  • Webhooks: call your endpoint when a run succeeds or fails.
  • Make, n8n, Zapier, Google Sheets, Slack and others through Apify's standard integrations.
  • AI agents can call the scraper through the Apify MCP server.

FAQ

Can I monitor new listings every day?

Yes. Turn on Only new listings and schedule the same input: each run returns and charges only what earlier runs have not returned, and every run pays the start fee. See Monitor new listings.

Why did I get fewer listings than idealista's total?

Idealista serves at most 60 pages per search, and maxItemsPerSearch defaults to 60. Raise the limit; above 1,800 the scraper splits a larger search into price bands by itself.

Does it return phone numbers or owner contact details?

No. There are no phone or email fields, and the name of a private advertiser is withheld unless you turn on Include names of private advertisers. Descriptions are free text written by advertisers and may contain contact details.

Are the coordinates exact?

Only when addressVisibility is EXACT. With HIDDEN, the advertiser chose not to publish the address and the coordinates are idealista's approximate map point.

What if a run is blocked?

Blocked sessions are replaced automatically and you are not charged for them. DataDome refuses some connections at all times and, for a while now and then, most of them. When that happens the scraper keeps trying with new sessions, in bursts of six with a one-to-two-minute pause between bursts, for up to 30 blocked sessions or about 15 minutes (less with a short run timeout), and the status message says it is still trying. A run in which every session was blocked ends FAILED with no listing charged; retry later.

Can I mix countries and URL types in one run?

Yes. Searches for the same country share one browser session and run one after another; property URLs can be added in the same run.

This is an independent tool, not affiliated with, endorsed by or sponsored by idealista. All trademarks belong to their owners.

The scraper never logs in and has no dedicated phone or email fields. Privacy by default: names of private advertisers (individuals, not agencies) are not delivered; such records have advertiserName and advertiserUrl set to null and "privateDataRedacted": true. The input Include names of private advertisers turns this off, and using it is your confirmation that you have a lawful basis under the GDPR for processing personal data of private individuals. Listings can still contain personal data: agency contact names, free-text descriptions, photos and the location of a home. You decide what to collect and why, and you need a lawful basis under the GDPR and applicable national law for processing it. Do not use listing data to contact private individuals for marketing without their consent. Do not republish listings, descriptions or photos, and check idealista's terms of use before you start.

To ask for data to be removed or to report a privacy concern, open an issue on the Issues tab; if you have no Apify account, write to support@apify.com and name this Actor.

Changelog

2026-10-30 (build 1.0.43)

  • New: Only new listings (onlyNew, onlyNewSkipFirstRun, monitorKey) for scheduled monitoring: a run returns and charges only what earlier runs have not returned. Runs without this option behave as before.
  • The Actor start fee announced on 13 October has applied since 27 October 2026; the pricing text no longer describes it as upcoming.
  • Corrected: the message of a failed run said "nothing was charged"; it now says "no listings were charged", because the start fee applies to every run.

2026-10-18

  • Fixed: a run with a timeout of 60 seconds or less failed at once, and a short timeout such as 90 seconds returned fewer listings than it had time for (builds 1.0.28 to 1.0.34 always stopped a full minute before the timeout). The time kept in reserve now scales with the timeout, and the first results page of each search is always fetched. With details on, listings of that first page whose property page there was no time for are saved from the search card with a detailError.

2026-10-13

  • Privacy by default (behaviour change). Detailed records of listings published by private individuals no longer include the advertiser's name: advertiserName and advertiserUrl are null and the record carries "privateDataRedacted": true. Agencies are unchanged. Set includePrivateSellerData: true to get the names as before, if you have a lawful basis for processing them. Records without details never had these fields and are unchanged.
  • advertiserType is now private for property URLs of private advertisers (it was professional for every property URL).
  • New: searches with more than 1,800 results are split into price bands when maxItemsPerSearch is above 1,800 (splitLargeSearches, on by default); the maximum of maxItemsPerSearch is now 100,000. Runs with maxItemsPerSearch up to 1,800 behave as before.

2026-10-11 (build 1.0.26 and later)

  • latitude and longitude are now filled on detailed records; new field addressVisibility.
  • advertiserType is now private for listings whose isProfessional is false (it used to be professional on every record).
  • A run in which nothing could be scraped now ends FAILED with the reason (it used to end SUCCEEDED with an empty dataset). Empty searches and offline property URLs end SUCCEEDED with "No listings".
  • Status messages report failed inputs and the first error; every run writes OUTPUT_SUMMARY.
  • The maximum total charge is respected before work is done; clean stop before the run timeout.
  • More URL forms accepted; unusable input fails in seconds. Newest-first sorted searches on idealista.com supported.
  • maxItemsPerSearch counts listings newly saved for that search, so overlapping searches in one run return more than before.
  • English, Catalan, French and German page labels and Italian room words are parsed; floor is -1 for basements.

2026-09-05 (build 1.0.8): first public version.

Other actors by the same developer:

  • Idealista Rental Yield Finder: gross rental yield, median sale and rent price per m², price drops and new listings per area and per district, computed from idealista's sale and rent listings. One report per area instead of thousands of rows.
  • Fotocasa Scraper: sale and rent listings from fotocasa.es, another of Spain's main property portals, to cover listings that are not on idealista.
  • Immobiliare.it Scraper: sale, rent and auction listings from immobiliare.it, for Italian searches beyond idealista.it.
  • Listing Status Checker: tells you whether Fotocasa, ImmoScout24, Kleinanzeigen and other listing URLs you saved are still online, sold or removed, and how their price changed. It does not check idealista URLs; for those, run this scraper again on the same search.

Support

Found a bug, a missing field or a URL that does not work? Open an issue on the Issues tab with the run ID. Also by the same developer: Leboncoin Scraper.