Vexaloom Labs

Idealista Search Listings Price & Feature Scraper

Pull real estate search-result listings from Idealista for Spain, Italy, and Portugal: price, size, rooms, address, thumbnail, feature flags, and agency name for homes, offices, land, and more.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
modestringoptionalWhat to scrape: a location search, your own search URLs, or individual property URLs/IDs. Inferred from the supplied URLs when omitted.
locationstringoptionalCity or area slug from an Idealista URL (e.g. madrid-madrid, barcelona-barcelona, lisboa, roma-roma). You can also paste a full Idealista search URL. Used in Search by location mode.
operationstringoptionalProperties for sale or for rent.
Show all input fields
FieldTypeRequiredDescription
modestringoptionalWhat to scrape: a location search, your own search URLs, or individual property URLs/IDs. Inferred from the supplied URLs when omitted.
locationstringoptionalCity or area slug from an Idealista URL (e.g. madrid-madrid, barcelona-barcelona, lisboa, roma-roma). You can also paste a full Idealista search URL. Used in Search by location mode.
operationstringoptionalProperties for sale or for rent.
propertyTypestringoptionalType of property to search for.
countrystringoptionalIdealista market: Spain, Portugal, or Italy. Auto-detected when you use URLs.
startUrlsarrayoptionalIdealista search-result URLs to scrape (filters and map-area URLs are kept as-is). Used in Search URLs mode.
propertyUrlsarrayoptionalIndividual Idealista property URLs or numeric property IDs. Used in Property URLs / IDs mode.
propertySubtypestringoptionalNarrow homes to a subtype (flat, penthouse, duplex, villa, etc.).
priceMinintegeroptionalDrop listings cheaper than this price. Rounded to Idealista's nearest price bucket.
priceMaxintegeroptionalDrop listings more expensive than this price. Rounded to Idealista's nearest price bucket.
sizeMinintegeroptionalDrop listings smaller than this size. Rounded to Idealista's nearest size bucket.
sizeMaxintegeroptionalDrop listings larger than this size. Rounded to Idealista's nearest size bucket.
roomsstringoptionalNumber of rooms.
bathroomsstringoptionalNumber of bathrooms.
conditionstringoptionalProperty condition.
hasLiftbooleanoptionalOnly listings with a lift.
hasTerracebooleanoptionalOnly listings with a terrace.
hasPoolbooleanoptionalOnly listings with a swimming pool.
hasGardenbooleanoptionalOnly listings with a garden.
hasGaragebooleanoptionalOnly listings with a garage or parking space.
hasStorageRoombooleanoptionalOnly listings with a storage room.
hasAirConditioningbooleanoptionalOnly listings with air conditioning.
hasBalconybooleanoptionalOnly listings with a balcony.
isNewDevelopmentbooleanoptionalOnly new-development listings.
isBankOwnedbooleanoptionalOnly bank-owned listings where the source marks them.
isAuctionbooleanoptionalOnly auction listings where the source marks them.
isLuxurybooleanoptionalOnly luxury listings.
hasSeaViewsbooleanoptionalOnly listings advertised with sea views.
isAccessiblebooleanoptionalOnly accessible homes.
sortBystringoptionalResult order.
onlyPriceDropsbooleanoptionalKeep only listings whose price was reduced.
minPriceDropPercentintegeroptionalKeep only listings reduced by at least this percentage. Implies price-drop filtering.
onlyPrivateOwnersbooleanoptionalKeep only private-seller listings.
fetchDetailsbooleanoptionalVisit each listing's page to add bathrooms, energy rating, year built, condition, full description, gallery and agency phone. Slower and uses more requests.
maxDetailsintegeroptionalMaximum number of listing pages to enrich when Fetch Details is on.
maxItemsintegeroptionalMaximum number of listings to save.
partitionLargeSearchesbooleanoptionalWhen a search has more than 1,800 results and you ask for more, split it by price buckets so the 1,800-per-search cap is bypassed.

Download the published input schema

View complete JSON
{
  "properties": {
    "bathrooms": {
      "default": "any",
      "description": "Number of bathrooms.",
      "editor": "select",
      "enum": [
        "any",
        "1",
        "2",
        "3+"
      ],
      "enumTitles": [
        "Any",
        "1",
        "2",
        "3 or more"
      ],
      "prefill": "any",
      "title": "Bathrooms",
      "type": "string"
    },
    "condition": {
      "default": "any",
      "description": "Property condition.",
      "editor": "select",
      "enum": [
        "any",
        "new",
        "good",
        "toRenovate"
      ],
      "enumTitles": [
        "Any",
        "New build",
        "Good condition",
        "To renovate"
      ],
      "prefill": "any",
      "title": "Condition",
      "type": "string"
    },
    "country": {
      "default": "es",
      "description": "Idealista market: Spain, Portugal, or Italy. Auto-detected when you use URLs.",
      "editor": "select",
      "enum": [
        "es",
        "pt",
        "it"
      ],
      "enumTitles": [
        "Spain (idealista.com)",
        "Portugal (idealista.pt)",
        "Italy (idealista.it)"
      ],
      "prefill": "it",
      "title": "Country",
      "type": "string"
    },
    "fetchDetails": {
      "default": false,
      "description": "Visit each listing's page to add bathrooms, energy rating, year built, condition, full description, gallery and agency phone. Slower and uses more requests.",
      "prefill": false,
      "title": "Fetch Details",
      "type": "boolean"
    },
    "hasAirConditioning": {
      "default": false,
      "description": "Only listings with air conditioning.",
      "prefill": false,
      "title": "Has Air Conditioning",
      "type": "boolean"
    },
    "hasBalcony": {
      "default": false,
      "description": "Only listings with a balcony.",
      "prefill": false,
      "title": "Has Balcony",
      "type": "boolean"
    },
    "hasGarage": {
      "default": false,
      "description": "Only listings with a garage or parking space.",
      "prefill": false,
      "title": "Has Garage",
      "type": "boolean"
    },
    "hasGarden": {
      "default": false,
      "description": "Only listings with a garden.",
      "prefill": false,
      "title": "Has Garden",
      "type": "boolean"
    },
    "hasLift": {
      "default": false,
      "description": "Only listings with a lift.",
      "prefill": false,
      "title": "Has Lift",
      "type": "boolean"
    },
    "hasPool": {
      "default": false,
      "description": "Only listings with a swimming pool.",
      "prefill": false,
      "title": "Has Pool",
      "type": "boolean"
    },
    "hasSeaViews": {
      "default": false,
      "description": "Only listings advertised with sea views.",
      "prefill": false,
      "title": "Sea Views",
      "type": "boolean"
    },
    "hasStorageRoom": {
      "default": false,
      "description": "Only listings with a storage room.",
      "prefill": false,
      "title": "Has Storage Room",
      "type": "boolean"
    },
    "hasTerrace": {
      "default": false,
      "description": "Only listings with a terrace.",
      "prefill": false,
      "title": "Has Terrace",
      "type": "boolean"
    },
    "isAccessible": {
      "default": false,
      "description": "Only accessible homes.",
      "prefill": false,
      "title": "Accessible",
      "type": "boolean"
    },
    "isAuction": {
      "default": false,
      "description": "Only auction listings where the source marks them.",
      "prefill": false,
      "title": "Auction",
      "type": "boolean"
    },
    "isBankOwned": {
      "default": false,
      "description": "Only bank-owned listings where the source marks them.",
      "prefill": false,
      "title": "Bank-Owned",
      "type": "boolean"
    },
    "isLuxury": {
      "default": false,
      "description": "Only luxury listings.",
      "prefill": false,
      "title": "Luxury",
      "type": "boolean"
    },
    "isNewDevelopment": {
      "default": false,
      "description": "Only new-development listings.",
      "prefill": false,
      "title": "New Development",
      "type": "boolean"
    },
    "location": {
      "default": "madrid-madrid",
      "description": "City or area slug from an Idealista URL (e.g. madrid-madrid, barcelona-barcelona, lisboa, roma-roma). You can also paste a full Idealista search URL. Used in Search by location mode.",
      "editor": "textfield",
      "prefill": "roma-roma",
      "title": "Location",
      "type": "string"
    },
    "maxDetails": {
      "default": 100,
      "description": "Maximum number of listing pages to enrich when Fetch Details is on.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 3,
      "title": "Maximum Detail Pages",
      "type": "integer"
    },
    "maxItems": {
      "default": 100,
      "description": "Maximum number of listings to save.",
      "maximum": 10000,
      "minimum": 1,
      "prefill": 3,
      "sectionCaption": "Limits",
      "title": "Maximum Listings",
      "type": "integer"
    },
    "minPriceDropPercent": {
      "description": "Keep only listings reduced by at least this percentage. Implies price-drop filtering.",
      "maximum": 100,
      "minimum": 0,
      "title": "Minimum Price Drop (%)",
      "type": "integer"
    },
    "mode": {
      "description": "What to scrape: a location search, your own search URLs, or individual property URLs/IDs. Inferred from the supplied URLs when omitted.",
      "editor": "select",
      "enum": [
        "search",
        "startUrls",
        "propertyUrls"
      ],
      "enumTitles": [
        "Search by location",
        "Search URLs",
        "Property URLs / IDs"
      ],
      "prefill": "search",
      "sectionCaption": "Mode",
      "title": "Mode",
      "type": "string"
    },
    "onlyPriceDrops": {
      "default": false,
      "description": "Keep only listings whose price was reduced.",
      "prefill": false,
      "title": "Only Price Drops",
      "type": "boolean"
    },
    "onlyPrivateOwners": {
      "default": false,
      "description": "Keep only private-seller listings.",
      "prefill": false,
      "title": "Only Private Owners",
      "type": "boolean"
    },
    "operation": {
      "default": "sale",
      "description": "Properties for sale or for rent.",
      "editor": "select",
      "enum": [
        "sale",
        "rent"
      ],
      "enumTitles": [
        "For sale",
        "For rent"
      ],
      "prefill": "sale",
      "title": "Operation",
      "type": "string"
    },
    "partitionLargeSearches": {
      "default": true,
      "description": "When a search has more than 1,800 results and you ask for more, split it by price buckets so the 1,800-per-search cap is bypassed.",
      "prefill": false,
      "title": "Partition Large Searches",
      "type": "boolean"
    },
    "priceMax": {
      "description": "Drop listings more expensive than this price. Rounded to Idealista's nearest price bucket.",
      "maximum": 100000000,
      "minimum": 0,
      "title": "Maximum Price (EUR)",
      "type": "integer"
    },
    "priceMin": {
      "description": "Drop listings cheaper than this price. Rounded to Idealista's nearest price bucket.",
      "maximum": 100000000,
      "minimum": 0,
      "title": "Minimum Price (EUR)",
      "type": "integer"
    },
    "propertySubtype": {
      "default": "any",
      "description": "Narrow homes to a subtype (flat, penthouse, duplex, villa, etc.).",
      "editor": "select",
      "enum": [
        "any",
        "flat",
        "penthouse",
        "duplex",
        "studio",
        "loft",
        "chalet",
        "independentHouse",
        "semiDetached",
        "terraced",
        "villa",
        "countryHouse",
        "office",
        "premises",
        "garage",
        "land",
        "storageRoom",
        "building",
        "room"
      ],
      "enumTitles": [
        "Any",
        "Flat / apartment",
        "Penthouse",
        "Duplex",
        "Studio",
        "Loft",
        "Chalet",
        "Independent house",
        "Semi-detached house",
        "Terraced house",
        "Villa",
        "Country house",
        "Office",
        "Commercial premises",
        "Garage",
        "Land",
        "Storage room",
        "Building",
        "Room"
      ],
      "prefill": "any",
      "sectionCaption": "Filters",
      "title": "Property Subtype",
      "type": "string"
    },
    "propertyType": {
      "default": "homes",
      "description": "Type of property to search for.",
      "editor": "select",
      "enum": [
        "homes",
        "newDevelopments",
        "offices",
        "premises",
        "garages",
        "lands",
        "storageRooms",
        "buildings",
        "bedrooms"
      ],
      "enumTitles": [
        "Homes",
        "New developments",
        "Offices",
        "Commercial premises",
        "Garages",
        "Land",
        "Storage rooms",
        "Buildings",
        "Rooms"
      ],
      "prefill": "homes",
      "title": "Property Type",
      "type": "string"
    },
    "propertyUrls": {
      "description": "Individual Idealista property URLs or numeric property IDs. Used in Property URLs / IDs mode.",
      "editor": "stringList",
      "title": "Property URLs or IDs",
      "type": "array"
    },
    "rooms": {
      "default": "any",
      "description": "Number of rooms.",
      "editor": "select",
      "enum": [
        "any",
        "1",
        "2",
        "3",
        "4",
        "5+"
      ],
      "enumTitles": [
        "Any",
        "1",
        "2",
        "3",
        "4",
        "5 or more"
      ],
      "prefill": "any",
      "title": "Rooms",
      "type": "string"
    },
    "sizeMax": {
      "description": "Drop listings larger than this size. Rounded to Idealista's nearest size bucket.",
      "maximum": 100000,
      "minimum": 0,
      "title": "Maximum Size (m²)",
      "type": "integer"
    },
    "sizeMin": {
      "description": "Drop listings smaller than this size. Rounded to Idealista's nearest size bucket.",
      "maximum": 100000,
      "minimum": 0,
      "title": "Minimum Size (m²)",
      "type": "integer"
    },
    "sortBy": {
      "default": "relevance",
      "description": "Result order.",
      "editor": "select",
      "enum": [
        "relevance",
        "priceAsc",
        "priceDesc",
        "areaAsc",
        "areaDesc",
        "pricePerSqmAsc",
        "pricePerSqmDesc"
      ],
      "enumTitles": [
        "Relevance",
        "Price: low to high",
        "Price: high to low",
        "Size: small to large",
        "Size: large to small",
        "Price per m²: low to high",
        "Price per m²: high to low"
      ],
      "prefill": "relevance",
      "sectionCaption": "Output",
      "title": "Sort By",
      "type": "string"
    },
    "startUrls": {
      "description": "Idealista search-result URLs to scrape (filters and map-area URLs are kept as-is). Used in Search URLs mode.",
      "editor": "requestListSources",
      "sectionCaption": "URLs",
      "title": "Search URLs",
      "type": "array"
    }
  },
  "required": [],
  "schemaVersion": 1,
  "title": "Idealista Search Listings Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
listingsstringoptionalDataset containing all scraped Idealista property listings.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "Dataset of Idealista property listings for Spain, Italy and Portugal: price, price history signals, size, rooms, bathrooms, location and coordinates, features, energy certificate, agency contact, images and description.",
  "properties": {
    "listings": {
      "description": "Dataset containing all scraped Idealista property listings.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "Property Listings",
      "type": "string"
    }
  },
  "title": "Idealista Search Listings Output",
  "type": "object"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "title": "Idealista Listings",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "address": {
            "format": "text",
            "label": "Address"
          },
          "bathrooms": {
            "format": "number",
            "label": "Baths"
          },
          "energyRating": {
            "format": "text",
            "label": "Energy"
          },
          "municipality": {
            "format": "text",
            "label": "City"
          },
          "phone": {
            "format": "text",
            "label": "Phone"
          },
          "price": {
            "format": "number",
            "label": "Price"
          },
          "priceDropPercent": {
            "format": "number",
            "label": "Drop %"
          },
          "propertyCode": {
            "format": "text",
            "label": "ID"
          },
          "propertySubtype": {
            "format": "text",
            "label": "Subtype"
          },
          "propertyType": {
            "format": "text",
            "label": "Type"
          },
          "rooms": {
            "format": "number",
            "label": "Rooms"
          },
          "size": {
            "format": "number",
            "label": "Size (m²)"
          },
          "updatedAt": {
            "format": "text",
            "label": "Updated"
          },
          "url": {
            "format": "link",
            "label": "URL"
          }
        }
      },
      "title": "Overview",
      "transformation": {
        "fields": [
          "propertyCode",
          "price",
          "priceDropPercent",
          "size",
          "rooms",
          "bathrooms",
          "address",
          "municipality",
          "propertyType",
          "propertySubtype",
          "energyRating",
          "phone",
          "updatedAt",
          "url"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

Idealista Search Listings Price & Feature Scraper

Scrape Idealista property listings across Spain, Italy and Portugal. Search a city or area, paste your own Idealista search URLs, or look up individual properties, and get structured records with price, price-drop signals, size, rooms, bathrooms, coordinates, features, energy certificate, images, description and agency contact.

What this actor does

  • Three modes: search by location, paste search-result URLs, or fetch individual property URLs/IDs
  • Three markets: idealista.com (Spain), idealista.pt (Portugal), idealista.it (Italy)
  • Rich listing data: price and €/m², previous price and drop %, size, rooms, bathrooms, floor, condition, year built, energy rating, coordinates, gallery and full description
  • Real filters: operation, property type and subtype, price, size, rooms, bathrooms, condition, lift, terrace, pool, garden, garage, storage, air conditioning, balcony, new development, luxury, sea views, accessible, bank-owned, auction, private owners and price drops. Idealista applies filters as URL path segments; for two or more filters, use startUrls mode with a filtered Idealista URL that loads in your browser.
  • Large searches: walks every result page and, for unfiltered searches where you ask for more than Idealista's 1,800-result cap, splits the search by price buckets and removes duplicates
  • No login, no cookies, no proxy setup — the actor chooses a working connection automatically

Output per listing

  • propertyCode — Idealista property ID
  • url, sourceUrl — canonical listing URL and the search URL that produced it
  • recordType — listing
  • price, priceByArea, currency — current price, €/m² and currency
  • previousPrice, priceDropAmount, priceDropPercent, hasPriceDrop, priceDrop — price-cut fields when the listing shows a reduction
  • size, constructedArea, usableArea, plotArea — areas in m²
  • rooms, bathrooms
  • floor, exterior, condition, yearBuilt
  • energyRating, energyConsumption, energyEmissions, energyCertification
  • communityFees — monthly building fees when shown
  • description — full listing description when details are fetched
  • address, street, neighborhood, district, municipality, province, country
  • latitude, longitude, addressVisibility, showAddress
  • images, numPhotos, multimedia
  • hasVideo, has3DTour, has360, hasStaging, hasPlan
  • hasLift, hasSwimmingPool, hasTerrace, hasAirConditioning, hasBoxRoom, hasGarden, hasParkingSpace
  • features — advertised feature flags from the card or property page; featureSource says which
  • contactInfo — agency/owner name, logo, phone, reference, profile URL, user type and response time
  • agency, phone, reference
  • propertyType, propertySubtype, operation, status
  • newDevelopment, externalReference, topPlus, isPriceDrop, isOffmarket, isFeatured, isExclusive, isBankOwned, isAuction, isTenanted, isOccupied, isNudaPropiedad
  • updatedAtText, updatedAt, scrapedAt

Empty fields are omitted. A feature flag is present only when the source confirms it; it is never emitted as a guessed false.

Input

Field Type Default Description
mode string – search by location, startUrls for your own search URLs, propertyUrls for property URLs/IDs; inferred when omitted
location string madrid-madrid City/area slug or a full Idealista search URL (mode=search)
operation string sale sale or rent
propertyType string homes homes, newDevelopments, offices, premises, garages, lands, storageRooms, buildings, bedrooms
country string es es, pt, it; auto-detected from URLs
startUrls array – Idealista search URLs, filters and map-area URLs kept as-is (mode=startUrls)
propertyUrls array – Property URLs or numeric IDs (mode=propertyUrls)
propertySubtype string any any, flat, penthouse, duplex, studio, loft, chalet, independentHouse, semiDetached, terraced, villa, countryHouse, office, premises, garage, land, storageRoom, building, room
priceMin integer – Minimum price in EUR
priceMax integer – Maximum price in EUR
sizeMin integer – Minimum size in m²
sizeMax integer – Maximum size in m²
rooms string any any, 1, 2, 3, 4, 5+
bathrooms string any any, 1, 2, 3+
condition string any any, new, good, toRenovate
hasLift boolean false Only listings with a lift
hasTerrace boolean false Only listings with a terrace
hasPool boolean false Only listings with a pool
hasGarden boolean false Only listings with a garden
hasGarage boolean false Only listings with a garage/parking
hasStorageRoom boolean false Only listings with a storage room
hasAirConditioning boolean false Only listings with air conditioning
hasBalcony boolean false Only listings with a balcony
isNewDevelopment boolean false Only new developments
isBankOwned boolean false Only bank-owned listings
isAuction boolean false Only auction listings
isLuxury boolean false Only luxury listings
hasSeaViews boolean false Only listings advertised with sea views
isAccessible boolean false Only accessible homes
sortBy string relevance relevance, priceAsc, priceDesc, areaAsc, areaDesc, pricePerSqmAsc, pricePerSqmDesc
onlyPriceDrops boolean false Keep only reduced listings
minPriceDropPercent integer – Minimum price-drop percentage
onlyPrivateOwners boolean false Keep only private sellers
fetchDetails boolean false Visit each listing page for bathrooms, energy, year, condition, full description, gallery and phone
maxDetails integer 100 Maximum number of detail pages to fetch
maxItems integer 100 Maximum listings to save (1–10,000)
partitionLargeSearches boolean true Split searches above 1,800 results into price buckets

Example: Madrid homes for sale with a pool

{
  "mode": "search",
  "location": "madrid-madrid",
  "operation": "sale",
  "propertyType": "homes",
  "country": "es",
  "hasPool": true,
  "priceMax": 600000,
  "fetchDetails": true,
  "maxItems": 50
}

Example: Lisbon rentals by search URL

{
  "mode": "startUrls",
  "startUrls": [
    { "url": "https://www.idealista.pt/arrendar-casas/lisboa/" }
  ],
  "maxItems": 100
}

Example: Rome offices with details

{
  "mode": "search",
  "location": "roma-roma",
  "operation": "sale",
  "propertyType": "offices",
  "country": "it",
  "fetchDetails": true,
  "maxItems": 30
}

Example: look up specific properties

{
  "mode": "propertyUrls",
  "propertyUrls": [
    "https://www.idealista.com/inmueble/111379612/",
    "https://www.idealista.it/immobile/37181412/"
  ]
}

Use cases

  • Market research — compare asking prices and €/m² across cities, districts and property types
  • Investment screening — find reduced listings and compare them with the local market
  • Lead generation — collect agency names, phone numbers and references for real-estate outreach
  • Portfolio monitoring — schedule runs to track new listings, price cuts and removed properties
  • Comparable sales — pull a neighbourhood's listings with size, condition, year and energy rating
  • Data enrichment — add coordinates, features and images to an existing property database

Limitations

  • 1,800 results per search. Idealista serves at most 60 pages of 30 listings. The actor partitions larger searches by price when you ask for more, but a single search URL cannot exceed the cap.
  • Market protection can slow a run. Italy, Spain and Portugal may challenge some requests; the actor retries and switches to a slower working connection when needed. A run can take longer on those days.
  • Valid location slugs matter. Portugal uses Portuguese names (lisboa, porto); Italy uses Italian names (roma-roma, milano-milano). A wrong slug returns no listings.
  • Private sellers often hide their phone. The phone field is included only when Idealista publishes it.
  • No publication date. Idealista does not expose a reliable published timestamp on public pages; the actor includes the “last updated” text/date when shown.
  • Detail fields require fetchDetails. Bathrooms, energy rating, year built, condition, full description, gallery and phone come from the property page.
  • Agency email is not included. Idealista publishes the agency phone/reference, not its email.

FAQ

Do I need an Idealista account or cookies? No. The actor reads public listing pages and needs no login.

Do I need to configure a proxy? No. The actor chooses a working connection automatically. Just fill in the input and run.

Which countries are supported? Spain (idealista.com), Portugal (idealista.pt) and Italy (idealista.it). Country is auto-detected when you paste a URL.

How many listings can I get from one search? Idealista serves at most 60 result pages of 30 listings (1,800) per search. For unfiltered searches, when you ask for more, the actor splits the search into price buckets, removes duplicates and keeps going. Filtered searches are capped at 1,800; use startUrls mode with a filtered URL that loads in your browser for full control.

Why are some fields missing? Search cards do not show everything. Bathrooms, energy rating, year built, condition, full description and phone come from the property page; turn on fetchDetails to collect them. Private sellers often hide their phone, so that field is omitted for those listings.

Why does the first page sometimes take a minute? Idealista can challenge requests in any of the three markets. When the fast path is unavailable, the actor prepares a slower working connection before loading the first page. Later pages reuse that connection and are much faster.

Are the images hotlink-safe? Yes. Image URLs are public CDN links and open without cookies or a referrer.

Why is there no published date? Idealista does not expose a reliable publication timestamp on its public pages. The actor includes the “last updated” text and date when the page shows it, but does not invent a publication date.

Can I scrape multiple cities in one run? Yes. Use startUrls with one search URL per city or district; they are processed in order up to maxItems.

Is this affiliated with Idealista? No. This is an independent, third-party actor that reads publicly available Idealista pages. It is not affiliated with or endorsed by Idealista.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build NmaO0OGZLbpxwqbDg. Documentation is regenerated from the default published build; private drafts are not included.