Idealista Scrape- LowCost | HiQuality (ES/FR/PT/IT) avatar

Idealista Scrape- LowCost | HiQuality (ES/FR/PT/IT)

Pricing

from $0.25 / 1,000 results

Go to Apify Store
Idealista Scrape- LowCost | HiQuality (ES/FR/PT/IT)

Idealista Scrape- LowCost | HiQuality (ES/FR/PT/IT)

▎ Reliable Idealista data, at a fair price. ▎ We are always reviewing our prices for your best value ▎1800 results per round ▎ clean, structured data that works. ▎ Questions or ideas? → info@inmocalc.com

Pricing

from $0.25 / 1,000 results

Rating

0.0

(0)

Developer

SMY

SMY

Maintained by Community

Actor stats

1

Bookmarked

17

Total users

5

Monthly active users

2 days ago

Last modified

Share

Idealista Scraper — Spain, Portugal, Italy & France

Extract property listings from Idealista in 🇪🇸 Spain, 🇵🇹 Portugal, 🇮🇹 Italy and 🇫🇷 France — no browser, no captchas, clean JSON in seconds.

👋 Hola · Ciao · Olá · Bonjour — this scraper is for you, use it with care. Questions or issues? Reach us at info@inmocalc.com


What's new

  • 🇫🇷 France is now supported — sales and rentals, same fields as the other countries. Paris and Lyon location IDs are listed below.
  • 📄 Clearer limits and a ready-to-run example input.

What it does

Three modes in one actor:

ModeWhen to use it
SearchGet the listings in an area (up to 1,500 per run)
Fetch by Property IDGet full details for specific listings you already know — including closed listings (reason and last price)
Find Location IDLook up the area code you need before searching

Each mode is a separate section in the input form. Fill in one, leave the others empty.


What you can do with the data

  • 📈 Track asking prices and price drops by area over time
  • 🏠 Compare €/m² between neighbourhoods and cities, across countries
  • 🔍 Find out why and at what price a listing disappeared (Mode 2) — a proxy for days on market and closing price
  • 🎯 Build lead lists of professional agencies and private sellers (with Fetch full details)
  • 🗺️ Map listings using coordinates for investment or site research

Why this one?

No browser, no captchas: the scraper talks to the same data Idealista's own mobile app uses, so runs are fast and cheap. Output is flat, consistent JSON — the same fields for every country, so you can combine datasets without remapping.


Get all listings in an area matching your filters.

How to use it

Step 1 — Fill in the required fields

FieldWhat to enter
Country🇪🇸 Spain, 🇵🇹 Portugal, 🇮🇹 Italy or 🇫🇷 France
OperationSale (buy/sell) or Rent
Property TypeType of property — pick from the dropdown (Homes for flats and houses)
Location IDThe code for the area you want to scrape — see below

Step 2 — Hit Start

The scraper runs page by page and saves results to the dataset as it goes. You can see data coming in before it finishes.

Step 3 — Download your results

When done, go to Storage → Dataset and export as CSV, JSON or Excel.

How to find a Location ID

Option A — use the built-in lookup (easiest) Fill in the Search term field in the "📍 Find Location ID" section (see Mode 3 below), run the actor, and copy the locationId you need.

Option B — from the Idealista URL Search your area on the relevant site (idealista.com for Spain, idealista.pt for Portugal, idealista.it for Italy, idealista.fr for France). Once you're on the results page, look at the URL — the Location ID follows the 0-EU-XX-... pattern.

Option C — use a known ID

🇪🇸 Spain

AreaLocation ID
Madrid city0-EU-ES-28-07-001-079
Madrid province0-EU-ES-28
Barcelona city0-EU-ES-08-13-001-019
Soria province0-EU-ES-42

🇵🇹 Portugal

AreaLocation ID
Lisboa (Distrito)0-EU-PT-11
Lisboa (Concelho)0-EU-PT-11-06
Cascais (Concelho)0-EU-PT-11-05

🇫🇷 France

AreaLocation ID
Paris0-EU-FR-75-01-001-100
Lyon0-EU-FR-69-01-001-300

🇮🇹 Italy — use Option A (built-in lookup) to find your area code. The pattern is 0-EU-IT-XX-....

Filters

All filters are optional.

FieldDescription
Min / Max Price (€)Price range
Min / Max Size (m²)Built area range
Bedrooms / BathroomsNumber of rooms
Air Conditioning, Elevator, Terrace, Swimming Pool, Garage, GardenTick to require the feature
Sort By / Sort DirectionpublicationDate (default), price, size, rooms or weigh (relevance); desc or asc
Max PagesPages to fetch (30 listings each)

Example input

Flats for sale in Paris between €400,000 and €800,000, newest first:

{
"country": "fr",
"operation": "sale",
"property_type": "homes",
"location_id": "0-EU-FR-75-01-001-100",
"min_price": 400000,
"max_price": 800000,
"order": "publicationDate",
"sort": "desc",
"max_pages": 10,
"enrich_details": false
}

Example output

One listing from that search (description shortened):

{
"id": "847669",
"url": "https://www.idealista.fr/immeuble/847669/",
"address": "Appartement dans le quartier Nation-Picpus, Paris",
"municipality": "Paris",
"province": "Paris",
"district": "Paris 12ème Arrondissement",
"latitude": 48.8469494,
"longitude": 2.3913695,
"operation": "sale",
"property_type": "flat",
"price": 643000.0,
"price_by_area": 9742.0,
"size": 66.0,
"rooms": 3,
"bathrooms": 1,
"has_lift": false,
"status": "good",
"new_development": false,
"description": "Boulevard Diderot, au 4ème étage dans une copropriété fermée…",
"num_photos": 7,
"location_id": "0-EU-FR-75-01-001-100-12-004"
}

With Fetch full details on, each listing also gets photos, contact_user_type, energy_certification, allows_remote_visit and allows_counter_offers (and contact_phone / contact_name when the seller publishes them).

Output fields

Each listing includes:

FieldDescription
idIdealista listing ID
urlDirect link to the listing
addressFull address
municipality / districtCity and neighbourhood
latitude / longitudeCoordinates for mapping
pricePrice (€)
price_by_area€/m²
former_price / price_drop_pctPrevious price and % drop, when Idealista reports a price reduction
sizeBuilt area in m²
rooms / bathroomsBedrooms and bathrooms
floorFloor number
exteriorWhether it faces the street
has_liftLift in the building
statusProperty condition
descriptionFull listing description
num_photosNumber of photos
location_idExact sub-area code (neighbourhood level)
property_type / operationType of property and sale or rent
provinceProvince or department
photosList of photo URLs (requires Fetch full details)
contact_phoneAgent or owner phone number (requires Fetch full details)
contact_nameAgent or owner name (requires Fetch full details)
contact_user_typeAccount type: professional, private, etc. (requires Fetch full details)
energy_certificationEnergy performance rating (requires Fetch full details)
allows_remote_visitWhether a remote visit is available (requires Fetch full details)
allows_counter_offersWhether counter-offers are accepted (requires Fetch full details)

Full details (photos, contact, energy)

The Fetch full details toggle (enabled by default) makes the scraper retrieve the complete property record for each listing — adding photos, agent contact info, energy certification and remote visit availability.

Trade-off: each listing requires one extra request, so a full 50-page run takes roughly twice as long and uses more proxy bandwidth. Disable it if you only need basic listing data and want faster runs.

⚠️ Photo URLs are signed and expire after approximately 24 hours — download images promptly if you need them.

Limits

  • Max 1,500 listings per run — Idealista stops returning results after page 50 (50 pages × 30 listings). For large cities like Madrid or Barcelona, run separate searches per district.
  • All filters are optional — price, size, rooms and the amenity toggles can all be left blank.

Mode 2 — Fetch by Property ID

Get full details for specific listings — active or closed.

When to use this:

  • You have a list of IDs from a previous run and want the full detail (contact info, photos, full description).
  • You want to monitor specific properties over time.
  • A listing disappeared from search and you want to know why and at what price.

How to use it: fill in the Property IDs field (one ID per line). The Search section is ignored.

Output for active listings

FieldDescription
property_idThe ID you requested
statusactive
_detailsFull detail response — contact info, photos, all characteristics

Output for closed listings

FieldDescription
property_idThe ID you requested
statusclosed
deactivation_reasonWhy it was removed: user (likely sold/rented), quality, fraud, pending
last_deactivation_dateTimestamp (ms) when it was taken down
price_at_closeLast known price — a proxy for the transaction price
rooms / sizeBasic info retained after closure

Run stats

When Include Run Stats is enabled (default), a summary record is added at the end of the dataset:

{
"_type": "run_stats",
"_stats": {
"total": 10,
"active": 7,
"closed": 2,
"errors": 1,
"duration_s": 42.3
}
}

Mode 3 — Find Location ID

Not sure what Location ID to use for your search? Run this mode first.

How to use it: fill in the Search term field under "📍 Find Location ID". Country, Property Type and Operation must be set too (the defaults work fine). Leave everything else empty.

Tip: be specific — "mad" returns Madrid but also Madrigal, Madrigueras and others. "madrid" returns only areas called Madrid.

Output

FieldDescription
locationIdThe code to copy into the Search section
nameHuman-readable area name (e.g. Madrid)
subTypeTextArea type (e.g. Municipio, Provincia, Barrio)
totalActive listings in that area for your selected property type and operation

Tips

  • Each run creates a new dataset — results from each execution are saved separately in Apify Storage, so you can always compare previous runs.
  • Don't change Items Per Page — the default (30) is the most efficient setting.
  • Mode priority: if you fill in multiple sections, the actor uses only one — Find Location ID takes priority, then Fetch by Property ID, then Search.