Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 

Repository files navigation

Idealista Scraper

Scrape Idealista listings across Spain, Portugal, and Italy with full pricing, photos, GPS, agent phone numbers, agency profiles, paste-any-search-URL mode, detail enrichment, and incremental NEW/UPDATED/REAPPEARED tracking for recurring monitors.

Idealista Scraper on Apify →


🚀 How to use this actor

💚 $5 free Apify credits — every month

No credit card required. No commitment. Cancel anytime.

  1. Click sign up — pick GitHub, Google, or email; takes ~30 seconds
  2. Open this actor — input is pre-filled with a working example
  3. Click Start — export results as JSON, CSV, or Excel

Your $5 monthly platform credit is enough to run this actor right away — and again every month — scraping typically several hundred to several thousand results per run, depending on your input.

Key features

Multiple input modes — listings or agencies (lead-gen). Switch modes without re-scraping.

Detail enrichment — Fetch each listing's full detail page: complete description, energy rating, condition, and extra property characteristics.

Incremental mode — Only get new or changed listings since your last run. Content hash per listing — no duplicates, no re-processing.

Change classification — Track unchanged, expired, cross-run repost detection across runs. Build audit trails of how listings evolve over time.

Compact output — Emit core fields only (AI-agent / MCP-friendly). Keeps response size small for LLM workflows.

Description truncation — Cap description length per listing to control output size and cost.

Result cap — Stop after N listings (up to 5.000). Set to 0 for the full catalog.

Export anywhere — Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.

Structured data — Every listing returns the same schema with consistent field naming. All fields always present — null when unavailable, never omitted.


Use cases

Data pipeline automation Integrate with your ETL pipeline to collect structured listings from the source on a schedule. Export to CSV, JSON, or directly to your database. Use compact mode to control output size.

Market research Monitor listings, track trends, and analyze market dynamics with structured, deduplicated data from the source.

Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired listings. Perfect for price-tracking, churn analysis, and alerting pipelines.

Lead generation Extract agent and agency contact details — structured phone numbers, agency names, and microsite URLs — alongside listings to build outreach lists for brokers, property professionals, or B2B sales teams.

AI / LLM training data Structured JSON per listing is ready for RAG pipelines, embeddings, and agent workflows. Compact mode trims tokens for LLM context windows.


Quick start

{
  "locationId": "0-EU-ES-28-07-001-079",
  "country": "ES",
  "operation": "sale",
  "propertyType": "homes",
  "maxResults": 20
}

Input parameters

Parameter Type Default Description
location string Location slug (e.g. "madrid-madrid", "barcelona", "lisboa", "roma"). Use JSON array for multiple locations.
locationId string Idealista internal location ID (e.g. "0-EU-ES-28-07-001-079" for Madrid). Overrides location slug if provided.
country enum "ES" Idealista market to search.
operation enum "sale" Sale or rental listings.
propertyType enum "homes" Type of property to search.
maxResults integer 50 Maximum listings to return (0 = unlimited).
maxPages integer 5 Maximum result pages per location (50 listings per page).
minPrice integer Minimum listing price filter.
maxPrice integer Maximum listing price filter.
minRooms integer Minimum number of bedrooms.
minSizeM2 integer Minimum floor area in square metres.
maxSizeM2 integer Maximum floor area in square metres.
distance integer 10000 Radius in metres around the city centre when searching by location name (not used when locationId is provided). Default: 10000 (10 km).
descriptionMaxLength integer 0 Truncate description to this many characters. 0 = no truncation.
compact boolean false Output only core fields (for AI-agent/MCP workflows).
incrementalMode boolean false Track new/changed/expired listings across runs. Requires stateKey.
stateKey string Stable identifier for this tracking universe (e.g. "es-madrid-sale-homes").
emitUnchanged boolean false When incremental, also emit listings that have not changed.
emitExpired boolean false When incremental, also emit listings no longer found.
skipReposts boolean false When incremental, skip listings that are reposts of previously seen (now expired) listings.
startUrls array Paste idealista search-result URLs (from your browser) to scrape those exact searches. Each URL is scraped independently and results are merged.
includeDetails boolean false Fetch each listing's full detail page — energy rating, characteristics, and the complete description. Slower and adds result cost.
mode enum "listings" What to scrape — property listings, or the agencies behind them.
telegramToken string Telegram bot token (from @BotFather). Required for Telegram notifications.
telegramChatId string Telegram chat or channel ID where alerts are sent (e.g. "-100123456789").
discordWebhookUrl string Discord incoming webhook URL. Paste from Server Settings → Integrations → Webhooks.
slackWebhookUrl string Slack incoming webhook URL. Create at api.slack.com/messaging/webhooks.
whatsappPhoneNumberId string WhatsApp Business phone number ID from Meta Business Manager (NOT the phone number itself — the numeric ID shown next to your business number). Free service-conversation messages within 24 hours of last user-initiated contact.
whatsappAccessToken string Meta Cloud API access token with whatsapp_business_messaging scope. Get a permanent token from a system user in Meta Business Manager.
whatsappTo string Recipient phone number in E.164 format (e.g. +4512345678). The recipient must have messaged your business number within the last 24 hours.
webhookUrl string Universal escape hatch for n8n / Make / Zapier / custom HTTP backends. Receives a JSON POST { metadata, items } per run. Single attempt, 15 s timeout.
webhookHeaders object Additional HTTP headers sent with the generic webhook POST (e.g. {"Authorization":"Bearer ..."}). Content-Type is always application/json.
notificationLimit integer 5 Maximum number of listings included in each notification message (1–20).
notifyOnlyChanges boolean false When Incremental Mode is on, only send notifications for NEW and UPDATED listings. Has no effect outside incremental mode.

Output fields

Every listing returns the same 89-field schema. Missing values are null — never omitted.

  • listingId
  • adId
  • url
  • title
  • operation
  • propertyType
  • propertyTypeDetailed
  • priceText
  • price
  • priceCurrency
  • pricePerM2
  • priceDropPercent
  • formerPrice
  • priceDropValue
  • dropDate
  • sizeM2
  • rooms
  • bathrooms
  • floor
  • hasElevator
  • hasGarage
  • hasParkingSpace
  • parkingPrice
  • isExterior
  • isNewDevelopment
  • hasVideo
  • has3DTour
  • has360
  • hasPlan
  • isPromoted
  • description
  • descriptionHtml
  • descriptionMarkdown
  • contentHash
  • descriptionLength
  • address
  • neighborhood
  • district
  • city
  • province
  • postalCode
  • latitude
  • longitude
  • thumbnail
  • numPhotos
  • photos
  • country
  • sourceDomain
  • searchLocation
  • scrapedAt
  • contentQuality
  • isHighlighted
  • status
  • externalReference
  • firstActivationDate
  • contactName
  • contactPhone
  • contactPhoneFormatted
  • contactType
  • agencyName
  • agencyMicrositeUrl
  • agencyLogo
  • agencyPostalCode
  • isProAgent
  • modificationDate
  • extractedEmails
  • extractedPhones
  • extractedUrls
  • socialProfiles
  • energyRating
  • energyConsumptionType
  • energyEmissionsType
  • condition
  • constructedArea
  • hasSwimmingPool
  • hasGarden
  • hasBoxroom
  • streetName
  • fullDescription
  • changeType
  • trackedHash
  • firstSeenAt
  • lastSeenAt
  • previousSeenAt
  • expiredAt
  • stateKey
  • isRepost
  • repostOfId
  • repostDetectedAt

Sample output

One object per listing. Here is a real example from a production run:

{
  "listingId": "bab533e3909453aeafc29a179911f5eb6887d5ae6522fe40bdbc7c1cf68eecd4",
  "adId": "106751275",
  "url": "https://www.idealista.com/inmueble/106751275/",
  "title": "Chalet for sale in El Plantío",
  "operation": "sale",
  "propertyType": "chalet",
  "propertyTypeDetailed": "independantHouse",
  "priceText": "7500000 €",
  "price": 7500000,
  "priceCurrency": "EUR",
  "pricePerM2": 4480,
  "priceDropPercent": 17
}

Truncated — full records contain 89 fields. See Output fields for the complete schema.

Try Idealista Scraper now — $5 free credit, no credit card →


Pricing

Pay only for what you extract. No subscription required — Apify's free $5 credit covers thousands of results.

Event Price (USD)
Run start $undefined
Result $undefined

See the actor on Apify for current pricing.


FAQ

How much does it cost? Pay-per-event pricing — you only pay for listings extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.

How does incremental mode work? Each listing gets a content hash. On subsequent runs, only new or changed listings are emitted — saving time, compute, and storage. Expired listings can be tracked separately.

Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.


Related products by Black Falcon Data

Browse all Black Falcon Data actors →


Getting started with Apify

New to Apify? Create a free account with $5 credit — no credit card required.

  1. Sign up — $5 platform credit included
  2. Open Idealista Scraper and configure your input
  3. Click Start — export results as JSON, CSV, or Excel

Need more later? See Apify pricing.


About Black Falcon Data

Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.


Last updated: 2026 06

About

Idealista Scraper — property listings with prices, photos, GPS, agent phone numbers & agency data from idealista.com / .pt / .it (Spain, Portugal, Italy)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors