Idealista Scraper API avatar
Idealista Scraper API

Pricing

Pay per event

Go to Apify Store
Idealista Scraper API

Idealista Scraper API

Developed by

dz_omar

dz_omar

Maintained by Community

Extracts structured property data (price, features, contact info, images) from any Idealista.com/.pt/.it listing URL. Outputs clean JSON for real estate analysis, market research, and automation workflows. Handles anti-bot protections automatically.

4.9 (6)

Pricing

Pay per event

8

85

36

Issues response

1.6 hours

Last modified

13 days ago

🏘️ Idealista Property Scraper API

Extract comprehensive real estate data from single Idealista property listings across Spain, Portugal, and Italy with unparalleled detail and accuracy.

Perfect for real estate analysts, content creators, investors, and SEO professionals who need structured property data without coding complexity.


πŸ”Ž What This Actor Extracts

This scraper provides complete property intelligence from individual listings:

πŸ“‹ Core Property Data

  • πŸ“Œ Property Details: ID, title, description, location, and listing URL
  • πŸ’° Pricing: Current listing price with currency formatting
  • πŸ“ Specifications: Built area, rooms, bathrooms via propertySpecs
  • 🏒 Property Features: Detailed characteristics array with all property attributes
  • ⚑ Energy Performance: Energy efficiency ratings and labels when available
  • πŸ“… Listing Status: Last update information (e.g., "updated 17 days ago")

πŸ–ΌοΈ Visual Content

  • πŸ“Έ Image Gallery: High-resolution photos with titles, descriptions, and tags
  • πŸ–ΌοΈ Main Image: Primary property photo URL
  • πŸ—ΊοΈ Map Integration: Google Maps static images with GPS coordinates
  • πŸŽ₯ Virtual Tours: 360Β° tour URLs when available
  • πŸ“‹ Floor Plans: Architectural layouts marked with isPlan flag

🏒 Agency & Contact Information

  • πŸ›οΈ Agency Details: Professional name, location, logo, and website
  • πŸ“ž Contact Methods: Phone numbers, chat/form availability flags
  • πŸ”— Reference: Property reference number and agency type
  • πŸ“ Map Location: Agency location data when available

πŸ—οΈ Building & Amenities

  • 🏠 Building Features: Elevator, parking, construction details
  • 🌿 Amenities: Swimming pool, garden, terrace, air conditioning
  • 🎯 Property Specs: Structured data for rooms, bathrooms, area, and boolean amenities

βš™οΈ One URL Per Run

This actor is built for one listing per run. Want to extract 10 listings? Just call the actor 10 times β€” either manually or automatically.

⚠️ Perfect for automation: developers can loop through multiple URLs and call this actor via API.


πŸ”— Need Bulk Extraction?

Looking to scrape hundreds or thousands of properties at once?

Check out our Idealista Bulk Property Scraper which:

  • πŸš€ Processes multiple search URLs in a single run
  • πŸ“ˆ Extracts unlimited properties (bypasses Idealista's 1,800-property limit)
  • πŸ€– Uses this API internally for individual property extraction
  • πŸ’° More cost-effective for large-scale operations

🌐 Supported Domains

You can use this actor on any public Idealista property URL such as:

  • https://www.idealista.pt/en/imovel/33826216/
  • https://www.idealista.com/en/inmueble/106316721/
  • https://www.idealista.it/en/immobile/30856200/

βœ… Sample Input

Only one field is required: a property URL.

{
"Url": "https://www.idealista.it/en/immobile/30856200/",
"proxyConfig": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"maxRetries": 2,
"timeout": 30,
"saveMapImages": true,
"includeGallery": true,
"extractContactInfo": true
}

πŸ“Š Sample Output

{
"MainImage": "https://img4.idealista.com/blur/WEB_DETAIL_TOP-L-L/0/id.pro.es.image.master/52/48/b2/1314359991.jpg",
"title": "Flat / apartment for sale in Calle Barrinou",
"price": "39000 €",
"location": "Balaguer",
"description": "This comment was automatically translated and may not be 100% accurate. See description in the original language Local to reform in Balaguer. It has an area of 60 m2.",
"characteristics": [
"59 mΒ² built",
"2 bedrooms",
"1 bathroom",
"Second hand/good condition"
],
"contactInfo.phones": "+34 965 02 32 90",
"mapImagePath": "https://api.apify.com/v2/key-value-stores/L9wbNlkhaeaKs7kfD/records/105296229.jpg",
"Url": "https://www.idealista.com/en/inmueble/105296229/",
"updatedAt": "Listing updated more than 2 months ago",
"scrapedAt": "2025-08-09T05:02:30.463Z"
}

πŸ–ΌοΈ Live Results View

Idealista Scraper Results Real-time view of extracted property data in the Apify console


πŸ”§ Integration & Automation

API Integration

This actor is designed to be called programmatically:

// Example: Scraping multiple properties in a loop
const propertyUrls = [
"https://www.idealista.it/en/immobile/30856200/",
"https://www.idealista.com/en/inmueble/106316721/",
"https://www.idealista.pt/en/imovel/33826216/"
];
for (const url of propertyUrls) {
const run = await apifyClient.actor("dz_omar/idealista-scraper-api").call({
Url: url,
proxyConfig: {
useApifyProxy: true,
apifyProxyGroups: ["RESIDENTIAL"]
},
maxRetries: 2,
timeout: 30,
saveMapImages: true,
includeGallery: true,
extractContactInfo: true
});
const { items } = await apifyClient.dataset(run.defaultDatasetId).listItems();
console.log(items[0]); // Property data
}

Used by Bulk Scraper

The Idealista Bulk Property Scraper uses this API internally to:

  1. Process search result pages
  2. Navigate through property listings
  3. Extract detailed data from each property
  4. Aggregate results into comprehensive datasets

Actor Standby

This actor supports Actor Standby mode for real-time API usage with instant response times. Perfect for applications requiring immediate property data extraction without startup delays.


🌟 What is Standby Mode?

Standby mode transforms this actor into a real-time API server that stays ready in the background, eliminating the typical 10-30 second startup time of traditional actors.

Traditional Actor Run:

  1. ⏳ Start actor (10-30 seconds)
  2. πŸ” Process property (5-15 seconds)
  3. πŸ“Š Return results
  4. πŸ›‘ Actor stops

Standby Mode:

  1. πŸ” Process property instantly (5-15 seconds)
  2. πŸ“Š Return results immediately
  3. πŸ”„ Stay ready for next request

πŸ“Š Performance Comparison

ModeStartup TimeProcessing TimeTotal Response Time
Traditional10-30 seconds5-15 seconds15-45 seconds
Standby0 seconds5-15 seconds5-15 seconds

Result: 3x faster response times with Standby mode!


πŸ”§ How to Use Standby Mode

1. Identify if Standby is Available

Look for the "Standby" tab on this actor's page. If you see it, the actor supports Standby mode.

2. Get Your Standby URL

Your unique Standby endpoint:

https://dz-omar--idealista-scraper-api.apify.actor/

3. Authentication

Include your Apify API token in the request:

Method 1 (Recommended): Authorization Header

curl -X POST "https://dz-omar--idealista-scraper-api.apify.actor/" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{"Url":"https://www.idealista.com/en/inmueble/107168202/","proxyConfig":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'

Method 2: Query Parameter

curl -X POST "https://dz-omar--idealista-scraper-api.apify.actor/?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"Url":"https://www.idealista.com/en/inmueble/107168202/","proxyConfig":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}}'

πŸ’» Code Examples

JavaScript/Node.js

const response = await fetch('https://dz-omar--idealista-scraper-api.apify.actor/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_APIFY_TOKEN'
},
body: JSON.stringify({
Url: "https://www.idealista.com/en/inmueble/107168202/",
proxyConfig: {
useApifyProxy: true,
apifyProxyGroups: ["RESIDENTIAL"]
}
})
});
const propertyData = await response.json();
console.log(propertyData);

Python

import requests
url = "https://dz-omar--idealista-scraper-api.apify.actor/"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
data = {
"Url": "https://www.idealista.com/en/inmueble/107168202/",
"proxyConfig": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
response = requests.post(url, headers=headers, json=data)
property_data = response.json()
print(property_data)

PHP

$url = "https://dz-omar--idealista-scraper-api.apify.actor/";
$data = [
"Url" => "https://www.idealista.com/en/inmueble/107168202/",
"proxyConfig" => [
"useApifyProxy" => true,
"apifyProxyGroups" => ["RESIDENTIAL"]
]
];
$options = [
'http' => [
'method' => 'POST',
'header' => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_APIFY_TOKEN'
],
'content' => json_encode($data)
]
];
$response = file_get_contents($url, false, stream_context_create($options));
$propertyData = json_decode($response, true);
print_r($propertyData);

πŸ“ˆ Standby Mode Specifications

Performance Limits:

  • πŸ• Maximum Response Time: 5 minutes
  • πŸš€ Rate Limit: 2,000 requests per second per account
  • ⚑ Automatic Scaling: Handles traffic spikes automatically
  • πŸ”„ Always Available: No startup delays

Billing:

  • πŸ’° Same pricing structure as traditional runs
  • πŸ“Š Background resource usage during idle time
  • βš™οΈ Automatic termination after idle timeout

🎯 Perfect Use Cases for Standby Mode

βœ… Ideal Scenarios:

  • πŸ“± Mobile Apps: Instant property lookups
  • 🌐 Web Applications: Real-time property data display
  • πŸ€– Chatbots: Immediate property information responses
  • πŸ“Š API Integrations: Seamless third-party service connections
  • ⚑ High-Frequency Requests: Multiple properties per minute

❌ Not Ideal For:

  • πŸ“¦ Bulk Operations: Use Idealista Bulk Scraper instead
  • πŸ• Infrequent Usage: Traditional mode more cost-effective
  • πŸ“‹ Batch Jobs: Single large extractions

πŸ”„ Traditional vs Standby Mode Comparison

FeatureTraditional ModeStandby Mode
Startup Time10-30 secondsInstant
Best ForSingle/batch jobsReal-time API usage
Cost ModelPay per runPay per run + idle time
ScalingManualAutomatic
Response Time15-45 seconds5-15 seconds
Rate LimitsPer run2,000 req/sec
Use WhenOccasional scrapingFrequent API calls

πŸ’‘ Integration Tips

Error Handling

try {
const response = await fetch('https://dz-omar--idealista-scraper-api.apify.actor/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_APIFY_TOKEN'
},
body: JSON.stringify({
Url: propertyUrl,
proxyConfig: { useApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"] }
})
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
const data = await response.json();
if (data.status === 'failed') {
console.error('Property extraction failed:', data.error);
return null;
}
return data;
} catch (error) {
console.error('Request failed:', error);
return null;
}

Timeout Configuration

// Set custom timeout for your HTTP client
const controller = new AbortController();
const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeout
const response = await fetch(url, {
signal: controller.signal,
// ... other options
});
clearTimeout(timeoutId);

🚨 Important Notes

  • πŸ”‘ Always include authentication (API token required)
  • πŸ“ Same input format as traditional mode
  • πŸ”„ Automatic scaling handles traffic spikes
  • πŸ’° Monitor usage to manage costs effectively
  • ⚑ 5-minute maximum response time limit

πŸ”— Getting Started

  1. Get your API token
  2. Find the Standby tab on this actor's page
  3. Copy the Standby URL: https://dz-omar--idealista-scraper-api.apify.actor/
  4. Make your first request using the examples above
  5. Integrate into your application for real-time property data

Ready to experience 3x faster property extraction? Try Standby mode!

🎯 Output Data Structure

Key Fields Explained:

  • id: Unique property identifier from Idealista
  • characteristics: Array of property features (size, rooms, condition, etc.)
  • building: Building-specific features (elevator, parking, etc.)
  • energyPerformance: Energy efficiency data object
  • amenities: Property amenities (pool, garden, AC, etc.)
  • propertySpecs: Structured specifications with boolean flags
  • contactInfo: Complete agency information with contact methods
  • gallery: Image array with titles, descriptions, and tags
  • Map: Google Maps integration with coordinates
  • mapImagePath: Path to saved map image in key-value store

πŸ’‘ Who Is This For?

Single Property Analysis:

  • πŸ§‘β€πŸ’Ό Real estate agencies analyzing specific listings
  • πŸ“ˆ Investors evaluating individual properties
  • πŸ” Content creators gathering specific property data
  • πŸ€– Developers building targeted automation
  • πŸ“± Apps requiring individual property lookups

Bulk Operations:


πŸ“š Configuration Options

Input Parameters:

  • Url (required): Single property URL to scrape
  • proxyConfig: Proxy settings (RESIDENTIAL recommended)
  • maxRetries: Number of retry attempts (default: 2)
  • timeout: Request timeout in seconds (default: 30)
  • saveMapImages: Save map images to storage (default: true)
  • includeGallery: Extract image gallery (default: true)
  • extractContactInfo: Include agency details (default: true)

Proxy Requirements

Proxies are required for reliable operation. Recommended configuration:

"proxyConfig": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}

πŸ’° Pricing & Cost Optimization

Tiered Pricing Structure (Effective August 23, 2025):

Apify SubscriptionInitializationData ExtractionTotal per Property
No Subscription$0.005$0.008$0.013
Bronze$0.001$0.002$0.003
Silver$0.00001$0.0015$0.00151
Gold$0.00001$0.0015$0.00151

πŸ’‘ Cost Optimization Recommendations:

πŸ₯‰ Bronze Subscription Benefits:

  • 95% cost reduction vs no subscription ($0.003 vs $0.013)
  • Same pricing as current rates
  • Perfect for moderate usage (100-1000 properties/month)

πŸ₯ˆ Silver/Gold Subscription Benefits:

  • 99% cost reduction vs no subscription ($0.00151 vs $0.013)
  • 50% cheaper than Bronze subscription
  • Ideal for high-volume operations (1000+ properties/month)

Example Cost Calculations:

PropertiesNo SubscriptionBronzeSilver/GoldSavings with Gold
100$1.30$0.30$0.15$1.15 (88% saved)
1,000$13.00$3.00$1.51$11.49 (88% saved)
10,000$130.00$30.00$15.10$114.90 (88% saved)

πŸ’Ž Upgrade Recommendation: For users processing 500+ properties monthly, upgrading to Silver or Gold subscription provides massive cost savings and pays for itself quickly.

Bulk Operations Pricing:

For extracting multiple properties, consider the Idealista Bulk Scraper which offers:

  • One-time setup fee based on your subscription tier
  • Same per-property costs as above
  • Automated workflow management
  • Resume capability for large extractions

This actor:

  • Respects robots.txt directives
  • Implements rate limiting to avoid server overload
  • Only extracts publicly available data
  • Does not bypass paywalls or login requirements
  • Follows Idealista's terms of service

🀝 Support & Contact

For assistance or custom implementations:


πŸ“‹ Changelog

Version 1.0 (Initial Release)

  • βœ… Complete property data extraction
  • βœ… Rich image gallery with metadata

Version 2.0 (Latest)

  • βœ… Implemented tiered pricing structure based on Apify subscription levels
  • βœ… Advanced anti-bot detection bypass for Idealista's updated security measures
  • βœ… Actor Standby Mode support Real-time API with instant response times
  • βœ… Google Maps integration with image saving