Idealista From:$0.65💰 Bypass Limit at 1500 | Agencies
Pricing
from $0.65 / 1,000 results
Idealista From:$0.65💰 Bypass Limit at 1500 | Agencies
Idealista (Spain · Italy · Portugal) $0.65💰/1k the only scraper that bypasses Idealista's hidden 1500-result cap (+31% more rows per query). 80+ fields, agent contacts, GPS, multi-language descriptions. Agency mode: export real-estate agencies WITH phone numbers for any area.
Pricing
from $0.65 / 1,000 results
Rating
5.0
(10)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
26
Bookmarked
487
Total users
148
Monthly active users
3.7 hours
Issues response
6 days ago
Last modified
Categories
Share
Idealista Scraper — Spain · Italy · Portugal · 1500-cap bypass

✅ Verified benchmark — 1,967 properties scraped from a single Madrid rentals search (search reports 1,968 total; Idealista's per-query API caps at 1,500). This actor captures the full result set past Idealista's cap, returning +31% more rows than any competitor that stops at the limit.
Scrape every property listing from Idealista.com (Spain), Idealista.it (Italy), and Idealista.pt (Portugal) — including agent contacts, GPS coords, multilingual descriptions, multimedia, new developments, and floor plans. Flat one-row-per-property output with 80+ fields including the full basicInfo / moreCharacteristics / contactInfo / multimedia / ubication blocks. $1 per 1,000 results.
Why use this scraper
- 🎯 Bypass Idealista's 1500-result cap — every other scraper on Apify Store silently truncates at the cap. We probe each search, detect when it would exceed 1500, and automatically capture the complete result set past the cap. Searches with fewer than 1500 hits run as-is — only one extra probe request.
- 🌍 3 countries in one actor — Spain, Italy, and Portugal handled by the same code path. No separate scraper needed per country.
- 📦 80+ fields per property — full
basicInfo,moreCharacteristics,contactInfo,multimedia(with all images + videos),ubication(GPS coords + neighborhood + admin hierarchy),translatedTexts(multi-language descriptions),promotion(new development info),labels,energyCertification. - 🏢 Agency mode (with phone numbers) — flip
scrapeAgencies: trueto get one row per real-estate agency (name, phone, profile URL, microsite, logo) for any search area, deduplicated across all pages. The phone comes from the mobile API — competing agency scrapers leave it blank. See Agency mode. - 🔄 Monitoring mode — only emit new listings vs. previous runs. Build historical archives without paying for re-scraping the same property.
- 🏢 4 URL types in one pipeline — search results, individual property URLs, new development URLs, custom-filter URLs.
- 💰 $1 per 1,000 results — among the cheapest premium scrapers on Apify Store. Pure HTTP, no headless browser.
Overview
Idealista is the dominant real-estate portal across Iberia (Spain) and increasingly in Italy + Portugal. This actor extracts the full property data shipped by Idealista's mobile-app API — richer than the HTML rendered on the website, including full GPS coordinates, energy certifications, multi-language auto-translated descriptions, and complete agent contact info (phone + email + agency logo + microsite slug).
Every dataset row represents one property listing. The actor supports four input modes (search URLs, individual property URLs, new-development URLs, filtered searches) and emits the same row shape regardless of input.
Supported inputs
| Input type | Example URL | Behavior |
|---|---|---|
| Search by location | https://www.idealista.com/venta-viviendas/madrid/ | Walks all paginated results, auto-bypassing the 1500 cap |
| Filtered search | https://www.idealista.com/en/geo/venta-obranueva/andalucia/con-2-dormitorios,3-dormitorios/?ordenado-por=precios-asc | Same behavior; respects every filter in the URL |
| Individual property | https://www.idealista.com/inmueble/109366429/ | One row, full schema |
| New development | https://www.idealista.com/obra-nueva/109366429/ | One row, schema includes promotion block |
| Italian listings | https://www.idealista.it/vendita-case/milano/ | Same fields, Italian metadata |
| Portuguese listings | https://www.idealista.pt/comprar-casas/lisboa/ | Same fields, Portuguese metadata |
⚠️ Only Idealista's own domains are supported:
idealista.com,idealista.it,idealista.pt. External recruiter / aggregator URLs are rejected by the input classifier.
Use cases
| Audience | Use case |
|---|---|
| Real estate investors | Track every property in target neighborhoods; detect under-priced listings; monitor agent inventory |
| Market analysts | Build price-per-m² datasets by province/district; track new construction supply |
| Proptech / CRM vendors | Bulk import for proptech SaaS demos, lead enrichment, comparable-property analysis |
| Estate agents | Monitor competitor listings, agent activity, asking price changes over time |
| Hedge funds / family offices | Wide-net data collection across Iberia for real-asset allocation models |
| Sales / lead generation | Build contact lists of real-estate agencies with phone numbers per city/region (scrapeAgencies: true) for B2B outreach, CRM seeding, partnership prospecting |
| Academic / news / NGO | Housing affordability research, gentrification tracking, agency concentration studies |
How it works
- Classify each
startUrls[]entry — search, property, new-development, or filter. Reject non-Idealista hosts. - For search URLs: probe the first page to read the total result count.
- If total > 1500 (Idealista's hidden cap): automatically capture the full result set past the cap, dedupe by property ID, and merge into one dataset.
- For individual property URLs: fetch the mobile-app API representation directly — yields the full 80+ field schema.
- For new-development URLs: same as property but includes the
promotionblock (development name, total units, base price, completion status). - In monitoring mode: cross-reference each
adidagainst the previous-run key-value store; skip duplicates. - Output: one flat row per property to the Apify dataset. JSON or CSV export.
Input configuration
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
startUrls | string[] | yes | — | Mix of search, property, new-development, filtered URLs across .com / .it / .pt |
maxItems | integer | no | 10000 | Hard cap on total dataset rows. Each row = one paid result event. |
splitByPrice | boolean | no | true | Master switch for the 1500-bypass. Leave on unless you specifically want legacy-cap behavior. |
scrapeAgencies | boolean | no | false | Agency mode. Emit one row per unique real-estate agency (name, phone number, profile URL, microsite, logo) found across your search URLs, instead of property rows. maxItems then caps unique agencies. See Agency mode. |
monitoringMode | boolean | no | false | Skip listings seen in previous runs. Useful for daily-delta workflows. |
maxConcurrency | integer | no | 10 | Parallel detail-page fetches. Sweet spot 8–15 via Apify Residential. |
minConcurrency | integer | no | 1 | Floor — auto-scales up under good conditions. |
maxRequestRetries | integer | no | 100 | Per-URL retry budget on transient failures (Idealista occasionally 403s individual requests). |
proxy | object | no | Apify Residential | Apify Residential recommended for Iberia geo. Auto-prefilled. |
Example input
{"startUrls": [{ "url": "https://www.idealista.com/venta-viviendas/madrid/" },{ "url": "https://www.idealista.it/vendita-case/milano/" },{ "url": "https://www.idealista.com/inmueble/109366429/" }],"maxItems": 5000,"splitByPrice": true,"monitoringMode": false,"maxConcurrency": 10,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
This yields up to 5,000 rows across Madrid sale listings + Milan sale listings + one specific Madrid property — all with the 1500-bypass active where applicable.
Output schema
One flat row per property. Below is a real, shortened sample. Full row carries 80+ fields nested under basicInfo / moreCharacteristics / contactInfo / multimedia / ubication / translatedTexts.
{"adid": 109195360,"price": 2500000,"priceInfo": { "amount": 2500000, "currencySuffix": "€" },"operation": "sale", // "sale" / "rent""propertyType": "homes", // "homes" / "rooms" / "premises" / "garages""extendedPropertyType": "chalet","homeType": "chalet","state": "active","country": "es", // "es" / "it" / "pt"// ── Location ──────────────────────────────────────────────────"ubication": {"title": "Calle Ágata, 2","latitude": 36.476812,"longitude": -5.0222844,"hasHiddenAddress": false,"administrativeAreaLevel4": "Nueva Atalaya", // neighborhood"administrativeAreaLevel3": "Benamara - Atalaya", // district"administrativeAreaLevel2": "Estepona", // city"administrativeAreaLevel1": "Málaga", // province"locationId": "0-EU-ES-29-07-001-051-07-007","locationName": "Nueva Atalaya, Estepona"},// ── Contact + agent ──────────────────────────────────────────"contactInfo": {"commercialName": "ATTA VILLAS","phone1": { "formattedPhoneWithPrefix": "+34 951 12 00 41", ... },"contactName": "Boren Brothers SL.","userType": "developer", // "developer" / "professional" / "private""agencyLogo": "https://st3.idealista.com/22/0c/ed/villas-atta.gif","micrositeShortName": "villas-atta","professional": true},// ── Property features ────────────────────────────────────────"moreCharacteristics": {"roomNumber": 4,"bathNumber": 4,"plotOfLand": 681, // m²"constructedArea": 530,"swimmingPool": true,"garden": true,"boxroom": true,"chaletType": "independantHouse","energyCertificationType": "inProcess","modificationDate": 1758214533000 // unix ms},// ── Multimedia (full image list) ─────────────────────────────"multimedia": {"images": [{ "url": "...", "tag": "facade", "width": 1500, "height": 844 },{ "url": "...", "tag": "plan", "width": 1489, "height": 820 }// ... typically 10-50 images per property],"videos": [],"hasMultimediasMadeByIdealista": false},// ── Descriptions (multi-language, auto-translated) ───────────"propertyComment": "Villa de lujo de obra nueva con piscina y spa...","comments": [{ "language": "es", "autoTranslated": false, "defaultLanguage": true, "propertyComment": "..." },{ "language": "en", "autoTranslated": false, "defaultLanguage": false, "propertyComment": "..." },{ "language": "de", "autoTranslated": true, "defaultLanguage": false, "propertyComment": "..." },{ "language": "nl", "autoTranslated": true, "defaultLanguage": false, "propertyComment": "..." }],// ── New-development info (when applicable) ───────────────────"promotion": {"promotionId": 109190794,"name": "Atta Villas","description": "Detached houses of 4 bedrooms for sale","price": 1800000, // base/starting price"promotionType": "notFinished"},// ── Misc ─────────────────────────────────────────────────────"labels": [ { "name": "luxuryType", "text": "Luxury" }, { "name": "villaType", "text": "Villa" } ],"detailWebLink": "https://www.idealista.com/inmueble/109195360/","modificationDate": { "value": 1758214533000, "text": "Listing updated 10 days ago" }}
Agency mode (agencies with phone numbers)
Set scrapeAgencies: true to flip the output from properties to real-estate agencies. The actor runs the same search pipeline (including the 1500-cap bypass) but, instead of one row per property, it emits one row per unique agency that appears in the results — deduplicated by microsite across every page.
Crucially, each row includes the agency's phone number, pulled straight from Idealista's mobile API — the field most agency scrapers leave empty.
{"scrapeAgencies": true,"startUrls": [{ "url": "https://www.idealista.com/venta-viviendas/madrid-madrid/" }],"maxItems": 500,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Each row:
{"agencyName": "Walter Haus Madrid","phone": "+34 919386183", // ← from the mobile API; not just a profile link"phoneRaw": "919386183","phonePrefix": "34","contactName": "Walter Haus","micrositeShortName": "walterhauschamberi","profileUrl": "https://www.idealista.com/pro/walterhauschamberi/","agencyLogo": "https://st3.idealista.com/.../logo.gif","userType": "professional","firstSeenPropertyCode": "108342199","country": "es", // es / it / pt"sourceUrl": "https://www.idealista.com/venta-viviendas/madrid-madrid/","scrapedAt": "2026-06-05T10:40:00.000Z"}
Notes:
maxItemscaps unique agencies in agency mode (not properties).- Works on
.com/.it/.ptsearch URLs;profileUrluses the matching TLD. - Email is not included — Idealista does not publish agency email addresses (contact is via phone or an on-site form), so no scraper can provide it. We return the phone, which is the actionable contact.
Pricing
Pay-per-event — no monthly subscription, no upfront commitment.
| Event | When it fires | Rate |
|---|---|---|
Actor Start | Once per run | $0.005 |
result | Per row emitted — a property listing, or an agency in agency mode (same price) | $0.001 |
Additional cost for monitoring mode | Per row when monitoringMode: true (covers the dedup-store overhead) | $0.001 |
Cost example:
- Madrid sale search with 1,967 rows (full bypass) = $0.005 + 1967 × $0.001 = ~$1.97
- Same search via a competitor that stops at the 1500 cap: 1,500 rows = $1.50
- You pay $0.47 more to get 31% more data — net cost per useful row is 17% lower.
What makes this richer than competing actors
We surveyed all Idealista actors on Apify Store. Direct comparison:
| Capability | Competitors | This actor |
|---|---|---|
| Bypass Idealista's 1500-result cap | ❌ silent truncation | ✅ full result-set capture (proven +31%) |
| Spain + Italy + Portugal in one pipeline | ❌ usually Spain-only | ✅ all three, one actor |
| GPS lat/lng on every row | partial | ✅ always (when not hidden by seller) |
Multi-language comments array | ❌ | ✅ up to 6 languages per listing |
New-development promotion block | partial | ✅ full block with starting price + completion status |
| Energy certification details | rarely | ✅ energyCertificationType + energyConsumption |
| Agent microsite + logo URL | ❌ | ✅ agencyLogo, micrositeShortName, agent's totalAds |
| Monitoring mode (incremental scrapes) | rarely | ✅ deduplication by adid |
| Multimedia tagged by type (facade/plan/livingRoom/...) | ❌ flat list | ✅ tagged + dimensioned + 360° flag |
Price-per-m² (priceByArea) | partial | ✅ always when computable |
allowsCounterOffers / allowsRemoteVisit / allowsMortgageSimulator flags | ❌ | ✅ |
FAQ
Why does Idealista limit each query to 1,500 results? It's a hidden API-level cap baked into Idealista's mobile-app endpoint — confirmed against the iOS app itself. The website's UI doesn't expose the limit, but every paginated query stops at page 60 of 25 = 1,500 rows. Other scrapers don't know to work around it. This actor probes the total upfront and, if the count would exceed 1,500, automatically works around the cap to capture and merge the complete result set.
Does the 1500-bypass cost extra? No — we charge per row, regardless of how many sub-queries we needed to walk to collect them. If your search has 800 rows total, the actor does one fetch and charges 800 × $0.001 = $0.80. If it has 8,000 rows, the actor runs the extra sub-queries needed and charges 8,000 × $0.001 = $8.00. Bypass overhead is on us.
Can I run this on idealista.it and idealista.pt?
Yes. Same code path, same row schema. Just paste Italian or Portuguese URLs into startUrls. The country field on each row tells you which TLD it came from (es / it / pt).
How does monitoring mode work?
On each run with monitoringMode: true, the actor maintains a key-value store of every adid it has already emitted. Subsequent runs skip those IDs and only emit new ones. Useful for daily/weekly deltas without re-paying for the same listings. Costs an extra $0.001 per row to cover the dedup-store overhead.
Why is ubication.hasHiddenAddress: true on some listings?
Sellers can choose to hide their exact street address — only the neighborhood + city + province are shown to public viewers. We honor that flag and emit only what Idealista exposes. GPS coords are still populated (Idealista shows an approximate pin in this case).
What's the difference between propertyComment and comments[]?
propertyComment is the description in the listing's default language (usually Spanish/Italian/Portuguese). comments[] is the array of all language versions, including auto-translated ones via Idealista's built-in translator. Use comments[] to get the English version if you need it.
Can I get a list of real-estate agencies with phone numbers?
Yes — set scrapeAgencies: true and pass any search/result URL (e.g. /venta-viviendas/madrid-madrid/). Instead of properties, you get one row per unique agency with its phone number, profile URL, microsite, and logo, deduplicated across all pages. maxItems caps the number of unique agencies. Email isn't included — Idealista doesn't publish agency emails. See Agency mode.
Can I scrape rentals?
Yes — just paste rental URLs (/alquiler-viviendas/... instead of /venta-viviendas/...). The operation field on each row will be "rent" instead of "sale".
Is there a way to filter by price/rooms/area before scraping? Yes — use Idealista's own URL filters. They work in the URL path. Example:
https://www.idealista.com/en/geo/venta-obranueva/andalucia/con-2-dormitorios,3-dormitorios,piscina/
The actor respects every filter you pass.
Support
- Bugs / feature requests — open an issue on this actor
- Custom exports / tailored field selection — email muhamed.didovic@gmail.com
- API access (no Apify fee, raw usage) — email the same address for direct API setup
Additional services
- Custom scraping work for sites not in the catalog
- Bulk historical dataset purchase (no need to run the scraper yourself)
- Webhook delivery to your S3 / GCS / DB pipeline
- Daily / hourly scheduled monitoring with email or Telegram alerts
Contact: muhamed.didovic@gmail.com
Explore more scrapers
Other Iberia + EU real-estate actors in the memo23 portfolio:
- Immobilienscout24 (Germany) — DE real estate
- Immobiliare (Italy) — IT real estate (complements Idealista.it)
- Funda (Netherlands) — NL real estate
- Kleinanzeigen (Germany) — DE classifieds
- Realestate AU + NZ — Australia + New Zealand bundled
- Dubizzle (UAE) — UAE real estate + autos
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Idealista S.A., Idealista.com, Idealista.it, Idealista.pt, or any related entity. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly visible property listings rendered by Idealista's public website + open mobile-app API. No login bypass, no API-key forgery, no CAPTCHA solving, no cf_clearance cookie scraping. The actor honours robots.txt and rate-limits via concurrency cap (default 10) to avoid burdening Idealista's infrastructure.
Users are responsible for:
- Complying with Idealista's Terms of Service in your target jurisdiction (
.com,.it,.pt) - Following EU GDPR + Spanish LOPD + Italian Privacy Code + Portuguese RGPD when storing, processing, or republishing scraped property + agent contact data
- Not contacting sellers / agents listed in scraped data for unsolicited commercial outreach
- Not republishing scraped property listings in a way that competes commercially with Idealista (e.g., a clone real-estate portal)
- Honoring
hasHiddenAddress: trueflags — do not attempt to de-anonymize sellers who chose privacy
We do not store scraped data — the Actor returns rows directly to your Apify dataset for your authorized use.
SEO Keywords
idealista scraper, idealista.com scraper, idealista spain scraper, idealista italy scraper, idealista portugal scraper, scrape idealista, idealista api, idealista bulk export, spain real estate scraper, italy real estate scraper, portugal real estate scraper, iberia real estate data, madrid property scraper, barcelona property scraper, milan property scraper, lisbon property scraper, 1500 cap bypass, property listing api, real estate market intelligence, real estate lead generation, agent contact scraper, MLS alternative spain, idealista monitoring, property price tracker, real estate JSON export, idealista agency scraper, idealista agencies scraper, real estate agency contacts, real estate agency phone numbers, idealista agent phone scraper, estate agency lead generation spain