curl --request POST \
--url https://api.scrapeunblocker.com/realestate/idealista \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/realestate/idealista"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/realestate/idealista', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Scrape idealista property listings (Spain, Italy, Portugal)
Searches idealista (idealista.com, idealista.it, idealista.pt) for location - or takes any idealista search url - and returns the listings as JSON: id, url, title, price + currency (+ pricePeriod for rentals), originalPrice and priceDropPercent after a price cut, pricePerM2, area, rooms, floor, lift, exterior, parking, description, tags, images, imageCount, multimedia (plan, video, 3D tour), agency and professional. Filter by operation (sale / rent), property_type, price and size ranges, rooms, bathrooms and features, order with sort, and collect up to max_results across pages (30 per page; idealista shows at most 60 pages per search). A search with no match answers 200 with an empty listings. Billed one unit per page fetched (pagesFetched).
curl --request POST \
--url https://api.scrapeunblocker.com/realestate/idealista \
--header 'x-scrapeunblocker-key: <api-key>'import requests
url = "https://api.scrapeunblocker.com/realestate/idealista"
headers = {"x-scrapeunblocker-key": "<api-key>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {'x-scrapeunblocker-key': '<api-key>'}};
fetch('https://api.scrapeunblocker.com/realestate/idealista', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
Your ScrapeUnblocker API key. Apply on every request.
Query Parameters
Any idealista search URL (idealista.com, idealista.it or idealista.pt) with its filters, e.g. https://www.idealista.com/alquiler-viviendas/barcelona-barcelona/con-precio-hasta_2000,de-dos-dormitorios/. Overrides location and the filter parameters.
Location as idealista writes it in its URLs: a municipality ('madrid-madrid', 'barcelona-barcelona', 'milano-milano', 'lisboa'), a district ('madrid/centro', 'lisboa/arroios') or a province ('malaga-provincia'). Required unless url is given.
es, it, pt (idealista.com / .it / .pt).
sale or rent.
One of: homes, new_homes, offices, premises, garages, lands, storage, buildings, rooms.
Minimum price in EUR (monthly rent with operation=rent).
Maximum price in EUR.
Minimum area in m².
Maximum area in m².
Comma-separated room counts: bedrooms in Spain (0 = studio ... 4 = four or more) and Portugal (T0 ... T4+), total rooms in Italy (1 ... 5 = five or more). E.g. '2,3'.
Comma-separated 1, 2, 3 (3 = three or more).
Comma-separated: lift, terrace, balcony, garage, pool, garden, air_conditioning, storage_room, fitted_wardrobes, accessible, luxury, new_construction, good_condition, to_renovate.
One of: relevance, price_asc, price_desc, newest, oldest, size_asc, size_desc, price_per_m2_asc, price_per_m2_desc, biggest_drop.
1-based results page to start from (30 listings per page, at most 60). Use the nextPage of a previous response to continue.
How many listings to collect across pages (1-300); each page fetched is one billed unit.
Proxy country the request is sent from (ISO-2). Leave blank for the exit chosen for the site.
Response
JSON with a listings array, totalResults and nextPage.

