Idealista API Scraper avatar

Idealista API Scraper

Pricing

from $2.70 / 1,000 results

Go to Apify Store
Idealista API Scraper

Idealista API Scraper

Scrape Idealista listings in Spain, Italy and Portugal through Idealista's mobile app API: every search filter, GPS radius search, special zones like beachfronts, listings by agency phone, price drops, all photos and advertiser contacts.

Pricing

from $2.70 / 1,000 results

Rating

5.0

(1)

Developer

axly

axly

Maintained by Community

Actor stats

2

Bookmarked

64

Total users

4

Monthly active users

13 hours ago

Last modified

Share

Extract property listings from Idealista in Spain, Italy and Portugal: price, size, rooms, bathrooms, floor, address, GPS coordinates, price-drop history, energy certificate, features, all photos and the listing agency's contact details. Search by place name, by Idealista location ID, by GPS radius, or list every property an agency advertises under one phone number.

The actor talks to the API behind Idealista's mobile app rather than scraping web pages, so results come back as clean structured JSON with no browser involved.

Who it's for

  • Property investors: screen whole cities or neighbourhoods by price, price per m², size and condition, and spot price drops early.
  • Agencies & lead generation: build lists of listings and the agencies behind them, or monitor a competitor's full portfolio by phone number.
  • PropTech & data teams: feed valuation models, dashboards and comparison tools with a consistent schema across three countries.
  • Researchers & journalists: track asking prices, rents and supply over time.

What you get

Every row is one Idealista listing, with around 80 fields when Fetch full details is on. The most useful ones (fields marked (detail) need that option):

FieldDescription
propertyCode, urlIdealista listing ID and listing URL
price, priceInfo, priceByAreaAsking price (€), currency info, price per m²
priceDropValue, priceDropPercentage, dropDateLatest price reduction and when it happened
size, rooms, bathrooms, floorSize (m²), bedrooms, bathrooms, floor
propertyType, detailedType, operationCategory (homes, offices…), subtype (flat, chalet…), sale or rent
address, province, municipality, district, neighborhoodLocation text
latitude, longitude, locationIdGPS coordinates and Idealista location ID
status, newDevelopment, exterior, hasLiftCondition and building info
featuresPool, terrace, air conditioning, storage room, etc.
energyCertificationEnergy rating and consumption/emissions (detail)
descriptionListing text
propertyComment, commentsFull listing text, in other languages when available (detail)
thumbnail, numPhotos, multimediaMain photo, photo count, every image URL
hasVideo, has3DTour, hasPlanMedia available on the listing
contactInfoAdvertiser name and phone number
modificationDateWhen the listing was last updated (detail)
country, searchTypeCountry code and how the listing was found

Without full details runs are faster and still include price, price drops, size, rooms, address, coordinates, description, photos and advertiser contact.

High-value use cases

  1. Deal screening: pull every flat for sale in a district, compute price per m² and flag listings far below the local median.
  2. Price-drop alerts: schedule daily runs sorted by publication date and watch priceDropPercentage.
  3. Rental yield analysis: run the same area for sale and rent and compare price per m².
  4. Competitor monitoring: list everything an agency advertises using its phone number.
  5. Beachfront property research: an auto search for "primera línea de playa" resolves to Idealista's beachfront zones across Spain and searches them; to target one zone, pass its ID with searchType: "zoiId".

Input

Required: country, operation, propertyType. Everything else is optional.

Core

FieldValuesDefault
countryes (Spain) · it (Italy) · pt (Portugal)es
operationsale · rent · share (rooms) · transfers (business transfers)sale
propertyTypehomes · offices · premises · garages · bedrooms · lands · storageRooms · buildings · newDevelopments · transfershomes
searchTypeWhat it doesFields it needs
auto (default)Resolves a place name to Idealista locations, plus any matching special zone, and searches themlocationPrefix
locationIdsSearches one Idealista location ID directly, e.g. 0-EU-ES-28-07-001-079locationIds
zoiIdSearches one Idealista special zone, e.g. primera-linea-de-playa-calafellzoiId
phoneLists all properties advertised under one agency phone numberphone
centerSearches a circle around a GPS pointcenter (lat,lng), distance (metres)

Results & sorting

FieldDescriptionDefault
maxPropertiesMaximum number of listings to return (minimum 10)1000
sortByweigh (Idealista relevance) · price · publicationDate · size, always descendingweigh
sinceDatePublished within: -1 any time · T 24 h · Y 48 h · W week · M month-1

Filters

  • Price & size: minPrice, maxPrice (€), minSize, maxSize (m²), minRooms, minBathrooms, minTransferCost, maxTransferCost.
  • Features (true/false): elevator, garage, garden, swimmingPool, terrance (terrace), airConditioning, petsAllowed, seaViews, balcony, builtinWardrobes, storeRoom, accessible, exterior, heating, corner, smokeVentilation, bankOffer, hasPlan, virtualTour.
  • Quality: energyEfficiency (high = A+/A/B, medium = C/D, low = E/F/G), furnished, preservations (condition), floorHeights, subTypology (detached, semi-detached, terraced, apartment).
  • Commercial: ubication, commercialActivitySubcategories, businessOperationType.

Output options

FieldDescriptionDefault
fetchFullDetailsAlso fetch each listing's detail record: full text in all languages, energy certificate, detailed characteristics, last-update datefalse
generateMarketStatsAdd one summary row at the end (type: "market_stats") with the listing count and search settingsfalse
proxyConfigurationProxy used when Idealista temporarily blocks an IPApify residential proxy
customProxyUrlYour own proxy URL, used instead of Apify Proxy—

Example input

{
"country": "es",
"operation": "sale",
"propertyType": "homes",
"locationPrefix": "Valencia",
"maxProperties": 500,
"minPrice": 200000,
"maxPrice": 800000,
"elevator": true,
"energyEfficiency": ["high"],
"fetchFullDetails": true
}

More starting points:

{ "country": "es", "operation": "rent", "propertyType": "homes", "searchType": "center", "center": "40.4168,-3.7038", "distance": 5000, "maxProperties": 150 }
{ "country": "es", "operation": "sale", "propertyType": "homes", "searchType": "phone", "phone": "960000000", "maxProperties": 100 }

Example output (one row, trimmed)

{
"propertyCode": "110258143",
"url": "https://www.idealista.com/inmueble/110258143/",
"price": 795000,
"priceByArea": 4119,
"priceDropValue": 65000,
"priceDropPercentage": 8,
"size": 193,
"rooms": 4,
"bathrooms": 3,
"floor": "7",
"propertyType": "homes",
"detailedType": { "typology": "flat" },
"operation": "sale",
"address": "Flat / apartment in Calle De en Sanz, Sant Francesc, València",
"municipality": "València",
"district": "Ciutat Vella",
"neighborhood": "Sant Francesc",
"latitude": 39.4690659,
"longitude": -0.3774947,
"status": "good",
"hasLift": true,
"exterior": true,
"numPhotos": 48,
"hasVideo": true,
"has3DTour": true,
"country": "es",
"searchType": "locationIds"
}

Scheduling & integrations

  • Schedules: run daily or weekly from Apify Console → Schedules to track new listings and price drops.
  • Export: download JSON, CSV, Excel or XML, or read results through the Apify API.
  • Integrations: send results to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or your own webhook.
  • API:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("axlymxp/idealista-api-actor").call(run_input={
"country": "pt", "operation": "rent", "propertyType": "homes",
"locationPrefix": "Lisboa", "maxProperties": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("price"), item.get("size"), item.get("address"))

Use with AI agents (MCP)

Every public Apify actor can be called by AI assistants such as Claude, Cursor or ChatGPT through the Apify MCP server. Ask something like "find 3-bedroom flats for rent in Lisbon under €2,000 on Idealista", and the agent runs this actor and reads the results.

FAQ

Do I need a proxy? Usually it isn't needed, but Idealista sometimes blocks datacenter IPs for a while. The actor then switches to a fresh proxy IP and retries, using Apify's residential proxy by default. You can pass your own proxy with customProxyUrl.

How many listings can I get? Up to maxProperties per run (default 1,000). For very large areas, splitting by district or price band keeps runs shorter and easier to re-run.

How fresh is the data? Live. Each run queries Idealista at run time; modificationDate shows when each listing was last updated.

Which countries are supported? Spain (idealista.com), Italy (idealista.it) and Portugal (idealista.pt).

Can I search beachfront or other special zones? Yes. An auto search for "primera línea de playa" resolves to Idealista's beachfront zones (the run log lists each zone ID, such as primera-linea-de-playa-calafell). To search a single zone, set searchType to zoiId and pass that ID in zoiId.

Why is the market-stats row so small? It's a run summary (listing count and search settings), handy as a marker in scheduled datasets. Compute averages such as price per m² from the listing rows themselves.

Is it legal? The actor collects publicly listed property information and the business contact details advertisers publish with their listings. You're responsible for using the data in line with Idealista's terms and data-protection law (GDPR) where you operate.

Something's missing or broken? Open an issue on the actor's Issues tab with the input you used.