Dedicated ScrapersIdealista Scraper API
Idealista logoDedicated Idealista API

Idealista Scraper API — Extract Real-Estate Data Across ES, IT & PT

The fastest way to start scraping Idealista at scale. Our Idealista API returns structured JSON for location codes, property listings, and full listing details across Spain, Italy, and Portugal — no upstream API key, no proxy setup.

3Markets
8Endpoints
1–3sAvg response
From $0.11Per 1K suggest req

No credit card required · PAYG credits never expire

Search Idealista
# Search listings for a location code
import scrapebadger

client = scrapebadger.ScrapeBadger("sb_live_...")

results = client.idealista.search(
    location="0-EU-ES-28",
    market="es"
)
200 OK1.9s · 5 credits
{
  "propertyCode": "104928374",
  "propertyType": "flat",
  "operation": "sale",
  "price": 385000,
  "priceByArea": 4620,
  "size": 83,
  "rooms": 3,
  "municipality": "Madrid"
}
API Reference

Idealista API — 8 Dedicated Endpoints

Structured JSON responses with normalized data models. No HTML parsing. No proxy management.

GET
/v1/idealista/suggest
Resolve free-text locations into Idealista location codes for use in search
2 cr / req
GET
/v1/idealista/search
Search property listings by location with price, size, and room filters
5 cr / req
GET
/v1/idealista/search/all
Full inventory for a location via price-range tiling — beats the ~1,800 cap. Billed per page fetched
5 cr / req
GET
/v1/idealista/properties/{property_code}
Full single-listing detail — media, contact, characteristics, and energy certification
10 cr / req
GET
/v1/idealista/properties/{property_code}/stats
Listing engagement stats — views, contact mails, shares, and favorites
2 cr / req
GET
/v1/idealista/agency/{short_name}
Agency microsite profile plus a page of its listings, by URL slug
5 cr / req
GET
/v1/idealista/agency/by-phone/{phone}
Reverse-lookup the agency behind a listing contact phone number
5 cr / req
GET
/v1/idealista/markets
Supported Idealista markets (Spain, Italy, Portugal) with domain, currency, and locale
0 cr / req
Response Schema

Every Field You Need, Ready to Use

All fields are normalized across markets. Prices are in EUR. Property types, features, and operations are standardized regardless of local language.

Property

propertyCodestringIdealista listing identifier
urlstringListing URL on Idealista
pricenumberAsking price in local currency (EUR)
priceByAreanumberPrice per m²
propertyTypestringFlat, house, chalet, etc.
operationstringSale or rent
sizenumberFloor area in m²
roomsintegerNumber of rooms
bathroomsintegerNumber of bathrooms
floorstringFloor level
featuresobjectLift, pool, terrace, air-con, garden…
parkingSpaceobjectParking availability and price
addressstringMunicipality, district, neighborhood
multimediaobjectImages, videos, and 3D tours

Contact & Detail

commercialNamestringAgency or advertiser name
contactNamestringContact person
userTypestringPrivate, professional, or agency
phone1objectFormatted phone number and prefix
micrositeShortNamestringAgency microsite slug
latitudefloatListing latitude
longitudefloatListing longitude
energyCertificationobjectEnergy consumption & emissions rating
priceDropInfoobjectFormer price and price-drop percentage
modificationDatestringLast update to the listing
Coverage

All 3 Idealista Markets

Spain, Italy, and Portugal — each accessed with the correct domain and locale. Results include local currency (EUR), language, and availability.

🇪🇸Spain
🇮🇹Italy
🇵🇹Portugal
Cross-market analysis: The Idealista API lets you query comparable properties across Spain, Italy, and Portugal to compare pricing, yields, and demand across regions. All prices are normalized to EUR.
How it works

From API call to clean JSON in seconds

No proxy setup. No OAuth handshake. No anti-bot configuration.

1

Resolve a location

Call /suggest with free text like a city, district, or landmark to get a precise Idealista location code.

2

We handle the hard parts

ScrapeBadger signs and routes the request to the Idealista mobile API server-side, handling OAuth, HMAC, and market selection.

3

Get structured JSON

Receive normalized JSON with typed fields, image CDN links, geolocation, and EUR pricing — ready to store, analyse, or pipe into your app.

Use Cases

What Developers Build with Idealista Data

Scraping Idealista gives you real-time real-estate signals — asking prices, price-per-m², price drops, property features, and agency contacts across three markets.

Real-estate price monitoring

Track asking prices, price-per-m², and price drops across Spain, Italy, and Portugal. Detect market shifts and undervalued listings in near real time.

Market & area intelligence

Analyze supply, average prices, and property mix by location code, district, and neighborhood to spot emerging areas before competitors.

Lead & agency research

Map agencies and advertisers by catalog, contact details, and listing volume to build lead lists and competitive intelligence.

Location-based aggregation

Resolve free-text places into precise location codes, then pull every matching listing to power maps, alerts, and search portals.

AI & valuation datasets

Collect structured listing data — price, size, rooms, features, energy rating, and images — to train pricing and valuation models.

Cross-market comparison

Compare comparable properties across ES, IT, and PT to understand pricing gaps, yields, and demand between regions.

Pricing

Pay Per Request. Credits Never Expire.

You only pay for successful responses — failed requests are always free. PAYG credits never expire; volume subscription tiers reduce per-credit cost further.

EndpointCredits / requestPAYGSubscription
Location Suggest /suggest2 credits
Search Listings /search5 credits
Search All /search/all5 credits
Property Detail /properties/{property_code}10 credits
Property Stats /properties/{property_code}/stats2 credits
Get Agency /agency/{short_name}5 credits
Agency by Phone /agency/by-phone/{phone}5 credits
List Markets /marketsFree

See the full plan comparison on the pricing page — subscription tiers step down per-credit cost beyond the cheapest column shown above.

Free trial
1,000 credits free
= 500 suggest requests
Credits expire
Never
Buy once, use anytime
Failed requests
Always free
Pay for success only
Live cost estimator
Credits per request5
Total credits needed5,000
Loading plans…
Why ScrapeBadger

Built for Reliability at Scale

ScrapeBadger's Idealista Scraper API handles the OAuth, signing, and market routing — so your pipeline keeps running.

Country-matched access

Each Idealista market is accessed with the correct locale and domain, so you get accurate local pricing, availability, and language for Spain, Italy, and Portugal.

No upstream API key needed

ScrapeBadger handles the OAuth handshake and request signing to the Idealista mobile API server-side. You just send a request with your ScrapeBadger key.

Structured JSON, no parsing

Responses are normalized typed JSON — full property models with media, features, and contact info. No HTML to parse, no fragile CSS selectors.

Rich real-estate detail

A dedicated property-detail endpoint returns characteristics, energy certification, geolocation, and agent contact — far beyond what a search result exposes.

Pay per success only

Credits are only deducted for successful responses. If a request errors or times out, no credits are consumed. You only pay for data you actually receive.

SDKs for 12 Languages

Official SDKs for Python, Node.js, Go, Rust, PHP, C#, Java, Kotlin, Ruby, Swift, Dart and C++ — generated from one OpenAPI spec, always in sync with the API. Full docs with working examples for every endpoint.

Code Examples

Simple Integration. Any Language.

Get started in minutes with Python, Node.js, or plain HTTP requests.

The scrapebadger Node.js library wraps the Idealista API with typed methods. Install with npm install scrapebadger, then start scraping Idealista in a few lines of code.

Python: Suggest + Search
from scrapebadger import ScrapeBadger

client = ScrapeBadger("sb_live_...")

# Resolve a location to a code
sug = client.idealista.suggest(
    query="sagrada familia",
    market="es",
)
code = sug.locations[0].location_id

# Search listings for that location
results = client.idealista.search(
    location=code,
    market="es",
    max_price=500000,
)
for p in results.element_list[:3]:
    print(p.property_code, p.price)
Node.js: Property Detail
import ScrapeBadger from 'scrapebadger'

const client = new ScrapeBadger({
  apiKey: 'sb_live_...'
})

// Get full detail for a single listing
const property = await client.idealista.property({
  propertyCode: '104928374',
  market: 'es',
})

console.log(property.price, property.municipality)
FAQ

Frequently Asked Questions

Common questions about scraping Idealista with the API — Python, Node.js, or REST.

What data does the Idealista Scraper API return?

Search returns each property listing with code, URL, price, price-per-m², property type, operation (sale/rent), size, rooms, bathrooms, floor, features (lift, pool, terrace, air-con, garden), parking, address, geolocation, and agency contact. Property detail adds full characteristics, energy certification, all media (images, videos, 3D tours), and richer contact and location data. Location suggest returns location codes you feed into search, and markets lists supported countries.

Which Idealista markets are supported?

Three markets: Spain (es), Italy (it), and Portugal (pt), all priced in EUR. Select a market with the market parameter (es, it, or pt). Each market is accessed with the correct domain and locale so results reflect the right country.

How do I find an Idealista location code?

Call the /suggest endpoint with free text such as "sagrada familia" or a city name. It returns location candidates; entries of type "location" carry a usable locationId (e.g. 0-EU-ES-28-07-001-079). Pass that code as the location parameter to /search to list every matching property.

How does the Idealista Scraper API handle blocking?

The API sources data from the Idealista mobile API, which returns rich real-estate JSON and is not behind DataDome. ScrapeBadger manages the OAuth and request signing server-side and routes requests appropriately, so you never configure proxies, manage tokens, or handle anti-bot challenges.

How do I scrape Idealista with Python?

Install with `pip install scrapebadger`, then call client.idealista.suggest(query="sagrada familia", market="es") to get a location code, client.idealista.search(location="0-EU-ES-08-...", market="es") to list properties, and client.idealista.property(property_code="123456789", market="es") for full detail. The SDK returns typed objects with normalized fields.

Plans & subscriptions

Bigger volume? Save up to 64%

Per-request credit costs are listed above. For higher monthly volume, subscription tiers reduce the per-credit rate substantially. All Idealista endpoints — suggest, search, and property detail across Spain, Italy, and Portugal — included on every plan.

Get started

Start Scraping Idealista Today

1,000 free credits. No credit card. Get your API key in under a minute.

PAYG credits never expire · Pay only for successful requests · 3 markets included