Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in
All collectors

Idealista Scraper API

Real estate · v1.1.0 · idealista_search

$0.001 / listing

$0.80 / 1K · pay per delivered listing

An Idealista scraper API for Spain, Italy and Portugal: pass a location slug or a listing URL and get one row per property — title, price as shown and parsed, price per m², rooms, size in m², the detail chips, description excerpt, listing agency and thumbnail. Sale or rent, per country site.

$0.001 per delivered listing · $2 free every month · Failed runs never billed

What it does

What an Idealista scraper API does

Idealista runs three national sites and this collector treats them as one input: site picks es, it or pt, operation picks sale or rent, and the location is either a slug like "madrid-madrid" or a full results URL you paste to read exactly that search. The address zone and property type arrive already joined into the listing title.

Money is returned in two shapes because a portal shows it in one: price is the string as printed, price_value the parsed number, and price_per_m2 the ratio as Idealista displays it. Listings from an agency carry the agency name; private ads leave it null rather than inventing a seller, and the on-card details chips (floor, elevator, condition) are kept verbatim.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
locationstringyesIdealista location slug ("madrid-madrid") or a full listing URL.
operationstringnosale (default) or rent. One of: sale, rent.
sitestringnoCountry site: es (default), it, pt. One of: es, it, pt.
max_resultsintegernoHow many listings to deliver at most (1–100). You pay only for delivered listings.

Outputs — 28 fields, one row per listing

What one listing looks like

Every delivered listing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position.
listing_idstring · nullableIdealista listing id.
titlestringListing title (type + street/zone).
urlstring · nullableListing URL.
pricestring · nullablePrice as shown.
price_valuenumber · nullableParsed price.
price_per_m2string · nullablePrice per m² as shown.
roomsinteger · nullableRooms.
size_m2number · nullableSize in m².
detailsstring[]Detail chips as shown (floor, elevator…).
descriptionstring · nullableListing description excerpt.
agencystring · nullableListing agency (null for private).
thumbnailstring · nullableFirst photo.
property_typestring · nullableProperty type from the title, in the site language (Piso, Ático, Trilocale, Apartamento…).
locationstring · nullableStreet, neighbourhood and city from the title.
price_per_m2_valuenumber · nullablePrice per m² as a number: the figure the card prints, or price ÷ size when the card shows a price drop in its place.
previous_pricestring · nullablePrice before the latest reduction, as shown.
previous_price_valuenumber · nullableNumeric previous price.
price_drop_pctnumber · nullableReduction in percent, as the card states it.
floorstring · nullableFloor line as shown, e.g. "6ª planta exterior con ascensor".
parkingstring · nullableParking line when the card has one, e.g. "Garaje incluido".
photo_countinteger · nullableNumber of photos on the listing.
has_videobooleanTrue when the listing has a video.
has_3d_tourbooleanTrue when the listing has a 3D tour.
has_floor_planbooleanTrue when the listing has a floor plan.
tagsstring[] · nullableTags on the card, e.g. "Lujo", "Luminoso".
is_professionalboolean · nullableTrue when listed by an agency, false when listed by a private owner.
agency_urlstring · nullableAgency page on Idealista.

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/idealista_search/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/idealista_search/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location":"madrid-madrid","operation":"sale","site":"es","max_results":30}'

Example response

POST /v1/scraper/collectors/idealista_search/run
$ curl $QD/idealista_search/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"location": "madrid-madrid", "operation": "sale", "site": "es", "max_results": 30}'
{ "status": "done", "count": 30,
  "results": [
    {
      "listing_id": "…",
      "title": "…",
      "url": "…",
      "price": "…" } ],
  "cost": 0.03 }
# 30 listings × $0.001 · nothing delivered, nothing charged

Try it

Idealista listings, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key
Idealista Scraper API: from location, operation and site, QuanticData reads the Idealista results and returns one row per listing with title, price and rooms, at $0.001 per delivered listing.
You send location and operation; the run goes out through a residential exit and comes back as listings with rank, listing_id and title — 28 fields on every row — and you are billed $0.001 for each listing actually delivered, nothing for a run that delivers none.
$0.001 / listing2,000 listings on the free $2 every month
Semantic inputlocation, operation, site — no URL lists
Up to 100listings per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Pricing

Idealista Scraper API pricing

$0.001 per delivered listing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 listings before you spend anything.

$0.001per delivered listing$0.8 per 1,000 delivered listings
2,000 listingson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

What people build with the Idealista scraper API

Three shapes of work this endpoint was designed around.

Iberian market analysis

Build price-per-m² distributions for a city from rows, across the Spanish, Italian and Portuguese sites.

Rent-versus-buy

Run the same location for sale and for rent and compare what each side of the market asks.

Agency mapping

See which agencies list a zone and at what price, with private ads separated out.

Idealista Scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
Three sitesOne domain hardcoded per scraperes, it and pt from one field
Location inputOnly a URL you must findA slug or a pasted results URL
Private listingsA guessed or blank agencyagency null, kept honest

What people search for

Live autocomplete demand around Idealista listings, pulled with our own Keyword ideas collector.

Idealista Scraper API: the POST to the idealista_search collector, 30 listings delivered and the bill, 30 × $0.001 = $0.03 in usage.cost_usd; zero listings would cost $0.
The same call you would paste into a terminal: a Bearer key, location, operation and site in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many listings arrived and usage.cost_usd is $0.03, which is 30 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the Idealista scraper API.

Something else? Ask us

Does Idealista offer a public data API?

Its API is gated behind an application and approval that most requests never clear. This collector reads the public results page, so you work from a location slug or URL instead of waiting on credentials.

How do I specify the location?

Use Idealista's own slug — "madrid-madrid", "barcelona-barcelona" — or paste a full results URL and the collector reads exactly that search, including any filters already in it.

Which countries and operations are covered?

The three Idealista markets — Spain (es), Italy (it) and Portugal (pt) — each for sale or rent via operation. There is no fourth site; Idealista does not operate one.

Is there a free Idealista scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered listings on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 100 listings — the maximum for this collector — costs $0.1 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Run the Idealista scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Run in dashboard
Illustration: three coloured zones of the page that is read (Idealista results) turn into clean JSON with the fields title, price and rooms; 28 fields on every row.