
Idealista Scraper API
Pricing
Pay per event

Idealista Scraper API
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
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 loopconst 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:
- Process search result pages
- Navigate through property listings
- Extract detailed data from each property
- 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:
- β³ Start actor (10-30 seconds)
- π Process property (5-15 seconds)
- π Return results
- π Actor stops
Standby Mode:
- π Process property instantly (5-15 seconds)
- π Return results immediately
- π Stay ready for next request
π Performance Comparison
Mode | Startup Time | Processing Time | Total Response Time |
---|---|---|---|
Traditional | 10-30 seconds | 5-15 seconds | 15-45 seconds |
Standby | 0 seconds | 5-15 seconds | 5-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 requestsurl = "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
Feature | Traditional Mode | Standby Mode |
---|---|---|
Startup Time | 10-30 seconds | Instant |
Best For | Single/batch jobs | Real-time API usage |
Cost Model | Pay per run | Pay per run + idle time |
Scaling | Manual | Automatic |
Response Time | 15-45 seconds | 5-15 seconds |
Rate Limits | Per run | 2,000 req/sec |
Use When | Occasional scraping | Frequent 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 clientconst controller = new AbortController();const timeoutId = setTimeout(() => controller.abort(), 30000); // 30 second timeoutconst 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
- Get your API token
- Find the Standby tab on this actor's page
- Copy the Standby URL:
https://dz-omar--idealista-scraper-api.apify.actor/
- Make your first request using the examples above
- 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 Idealistacharacteristics
: Array of property features (size, rooms, condition, etc.)building
: Building-specific features (elevator, parking, etc.)energyPerformance
: Energy efficiency data objectamenities
: Property amenities (pool, garden, AC, etc.)propertySpecs
: Structured specifications with boolean flagscontactInfo
: Complete agency information with contact methodsgallery
: Image array with titles, descriptions, and tagsMap
: Google Maps integration with coordinatesmapImagePath
: 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:
- π Market analysts needing hundreds of properties β Use Idealista Bulk Scraper
- π’ Agencies monitoring entire markets β Use Idealista Bulk Scraper
- π Investors tracking regional trends β Use Idealista Bulk Scraper
π Configuration Options
Input Parameters:
Url
(required): Single property URL to scrapeproxyConfig
: 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 Subscription | Initialization | Data Extraction | Total 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:
Properties | No Subscription | Bronze | Silver/Gold | Savings 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
βοΈ Legal Considerations
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:
- π§ Email: fridaytechnolog@gmail.com
- π GitHub: DZ-ABDLHAKIM
- π¦ Twitter: @DZ_45Omar
- π§ Apify: dz_omar
π Related Actors
- Idealista Bulk Property Scraper - For extracting hundreds or thousands of properties in a single run
π 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