SpotAHome Scraper | Fast & Reliable avatar

SpotAHome Scraper | Fast & Reliable

Pricing

from $0.70 / 1,000 property listings

Go to Apify Store
SpotAHome Scraper | Fast & Reliable

SpotAHome Scraper | Fast & Reliable

Extract Spotahome rental listings at scale with rich property detail, availability data, landlord signals, media, booking context, and flexible market filters. Built for enterprise-grade rental intelligence, market monitoring, and automated analytics pipelines.

Pricing

from $0.70 / 1,000 property listings

Rating

0.0

(0)

Developer

Fatih Tahta

Fatih Tahta

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Spotahome Scraper

Slug: fatihtahta/spotahome-scraper

Overview

Spotahome Scraper collects structured rental listing data from Spotahome, including listing identity, title, description, price, availability, location, property details, booking signals, media references, landlord metadata, and source context. Spotahome is a furnished rental marketplace where public listing data is useful for understanding rental supply, pricing, availability, and market composition across supported cities. The actor turns rental search results into repeatable JSON records that can be used in analytics, enrichment, monitoring, and operational reporting workflows. It is designed for automated, recurring data acquisition where consistent inputs and normalized outputs are important. Results reflect the publicly available data returned for the selected search scope at run time.

Why Use This Actor

  • Market research and analytics teams: collect normalized rental listing data for market intelligence, price analysis, availability tracking, and location-level reporting.
  • Product and content teams: enrich internal rental catalogs, city pages, comparison experiences, or content workflows with current public listing attributes.
  • Developers and data engineering teams: feed structured extraction output into downstream systems, warehouses, search indexes, and scheduled data acquisition pipelines.
  • Lead generation and enrichment teams: identify relevant rental properties, landlords, property formats, and public listing attributes for enrichment pipelines.
  • Monitoring and competitive tracking teams: track supply, pricing, listing quality signals, and availability changes across target rental markets.

Common Use Cases

  • Market intelligence: monitor rental supply, monthly pricing, availability dates, location coverage, property mix, and listing quality indicators.
  • Lead generation: build targeted lists of public rental listings and associated landlord identifiers for follow-up workflows.
  • Competitive monitoring: compare listing volume, pricing, amenities, property types, and trust signals across cities or rental segments.
  • Catalog and directory building: populate internal real estate databases with structured public listing records.
  • Data enrichment: add current public rental attributes to CRM, BI, analytics, or inventory datasets.
  • Recurring reporting: schedule periodic runs for dashboards, alerts, trend analysis, and operational reporting.

Quick Start

  1. Enter the location you want to search, such as a city, neighborhood, or rental market supported by Spotahome.
  2. Optionally add filters such as min_price, max_price, property_type, amenities, suitability, included bills, dates, or listing quality signals.
  3. Set a small limit for the first validation run, such as 25 or 50 records.
  4. Run the actor in Apify Console.
  5. Inspect the first dataset records to confirm that the fields, identifiers, and nested objects match your use case.
  6. Increase the limit, adjust filters, or schedule recurring runs once the output is verified.

Input Parameters

The actor requires one search location; all other fields are optional filters, sorting controls, or collection limits.

ParameterTypeDescriptionDefault
locationstringRequired search location, such as a city, neighborhood, or supported rental market. Example: Barcelona.
min_priceintegerMinimum monthly rental price to save. Use EUR as the practical pricing unit for Spotahome listings.
max_priceintegerMaximum monthly rental price to save. Use EUR as the practical pricing unit for Spotahome listings.
bed_typearray of stringsBed arrangements to include. Allowed values: single_bed, double_bed, twin_beds. Leave empty to include all bed setups.
property_typearray of stringsRental formats to include. Allowed values: apartments, studios, rooms_shared, student_residences. Leave empty to include all supported property types.
amenitiesarray of stringsAmenities that matching listings should include. Allowed values: air_conditioning, heating, washing_machine, oven, dishwasher, with_desk, balcony, elevator.
suitabilityarray of stringsRenter profile or household suitability signals. Allowed values: couples, pets, students, professionals.
included_billsarray of stringsBills or services that should be included in the rental cost. Allowed values: wifi, electricity, water, gas.
checkin_date_daystringDesired move-in date. Accepted formats: YYYY-MM-DD or DD/MM/YYYY. Used with checkout_date_day.
checkout_date_daystringDesired move-out date. Applies when checkin_date_day is also set. Accepted formats follow the same date style as check-in.
availability_variancestringOptional date flexibility around both check-in and check-out dates. Allowed values: 1_week, 2_week, 3_week. Ignored unless both dates are set.
sort_bystringResult ordering before records are saved. Allowed values: best_match, lowest_price, newest.best_match
private_bathroombooleanOnly save listings that indicate a private bathroom.false
spotahome_checkedbooleanOnly save listings marked as checked by Spotahome.false
no_depositbooleanOnly save listings that do not require a security deposit.false
limitintegerMaximum number of listings to save for the run. Leave empty to collect as many matching listings as available within the run scope.

Choosing Inputs

Start with a clear location, because it defines the rental market and the overall result scope. Use price, property type, bed type, amenity, suitability, included bill, bathroom, deposit, and Spotahome-checked filters when you need a targeted dataset; leave optional filters empty when the goal is broader discovery. Availability dates should be supplied as a pair: set both checkin_date_day and checkout_date_day, then add availability_variance only when date flexibility matters. Use sort_by to align collection with your workflow, such as best-match discovery, lowest-price review, or recently listed monitoring. Begin with a small limit to validate the output shape, then increase it once the dataset matches your expectations.

Example Inputs

Broad Discovery In Barcelona

{
"location": "Barcelona",
"property_type": ["rooms_shared"],
"sort_by": "best_match",
"limit": 50
}
{
"location": "Madrid",
"min_price": 700,
"max_price": 1400,
"property_type": ["apartments", "studios"],
"amenities": ["washing_machine", "heating"],
"sort_by": "lowest_price",
"limit": 75
}
{
"location": "Valencia",
"property_type": ["rooms_shared", "student_residences"],
"suitability": ["students"],
"included_bills": ["wifi", "water"],
"checkin_date_day": "2026-09-01",
"checkout_date_day": "2027-01-31",
"availability_variance": "2_week",
"limit": 100
}

Output

Output Destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

When multiple entity types or record shapes exist, this README documents each shape separately based on the provided Example Output. The provided output contains one primary record shape: a Spotahome rental listing.

Record Envelope And Stable Identifiers

Each record represents one public Spotahome rental listing with top-level listing identity and nested objects for pricing, availability, location, property details, booking signals, media, landlord information, attributes, and source context. The recommended idempotency key is listing_id; if your system requires a URL-backed key, use url as a secondary stable identifier. For repeated runs, use listing_id to deduplicate records, upsert existing listings, and preserve historical changes in pricing, availability, and listing metadata. Stable identifiers make records easier to merge, deduplicate, and sync across warehouses, CRMs, search indexes, and monitoring systems. source_context.fingerprint is also included as a run-level record fingerprint that can help compare saved records across repeated collections.

Examples

Example: Spotahome Rental Listing

{
"listing_id": "1289069",
"url": "https://www.spotahome.com/barcelona/for-rent:rooms/1289069",
"title": "Rooms for rent in 7-bedroom apartment in Barcelona",
"description": "Looking for the ideal place to stay in the vibrant El Gotic area of Barcelona? Discover this fully furnished room in a shared seven-bedroom apartment, equipped with essential features such as an equipped kitchen, balcony, washing machine, and oven. The property has been personally checked by Spotahome, ensuring quality and trust for your next residence. All utilities including electricity, water, gas, and WiFi are covered for convenience. Unfortunately, pets and overnight guests are not allowed, and smoking is prohibited. Situated in El Gotic, one of Barcelona's most historically rich neighborhoods, you'll enjoy proximity to various landmarks and attractions. The apartment is located within walking distance from numerous points of interest, such as the famous Barshelona and Plaça de La Mercè. Additional nearby attractions include La Gamba and Barcelona Segway Glides, among others, making this property ideal for immersing yourself in the city's lively cultural scene.",
"property_type": "room_shared",
"pricing": {
"display_price": 675,
"minimum_price": 675,
"currency": "EUR",
"bills_included": "all",
"offers": [
{
"discount_type": "percentage",
"discount_value": 3
},
{
"discount_type": "percentage",
"discount_value": 7
}
]
},
"availability": {
"first_available_date": "2026-08-31T00:00:00+00:00"
},
"location": {
"street": "Carrer Ample",
"postal_code": "08002",
"city": "Barcelona",
"market_city": "barcelona",
"coordinates": {
"longitude": 2.180184226738277,
"latitude": 41.37974249565961
},
"address_coordinates": {
"longitude": 2.18039,
"latitude": 41.37978
}
},
"property": {
"area_sqm": 95,
"room_area_sqm": 0,
"bathrooms": 2,
"bedrooms": 7
},
"booking": {
"spotahome_checked": true,
"instant_booking": false,
"no_security_deposit": false,
"deposit_protection": false,
"permanent_contract_allowed": false,
"best_choice": false,
"favorite": false
},
"media": {
"main_photo_url": "https://photos.spotahome.com/smw_768/d506ca2e374b6572ae27031745e5bbdb430ed1738015e1dee1963a1e.jpg",
"photo_ids": [
"d506ca2e374b6572ae27031745e5bbdb430ed1738015e1dee1963a1e",
"a0d323c7ee2baf3105fe740287e6b0337de05cbdf09cf0010a99d04e",
"3b911d027ecefbebfcf455334ffc6fb989261e51c3deba8d66ac55f9",
"61e8304816f16180265c8e026b1a3c62c0c4ad09fd6b424d4291fb2b",
"2e5f4b9ccfd8d8bd4ffcb406c638dc861aec5586ac88b0b82bd3549c"
],
"other_property_photo_ids": [
"608eb3bb7062da02b9459dddb046536ea4add2bc0ea536ad36962033",
"b62d1eb6a1019d7b95d575b778499586b2906a6d271fee928609dd40",
"5fc3f5633388a443d081ed56b34f9cfd0d181ddd3e5a51302844381d",
"a06f05552140f0cbf185d5bb681aadc7839d14e66df4c611a543a4d9",
"a7e434dbbdbf3e26a7bcb0ce8131d96a92fef630443a61bd7a0f7474",
"6968106c3fdf78ee5844d3086107471d235b41f63e5b366d01f1fc89",
"bb0fe0f3e0670b20fd1292435d25365671a4f8d44c8994b142c1028e",
"38a386f620f5006a5f33d0bdbbd9b79aaafa92f5d8f4378f66b199d5",
"a1a86a91bdb9d0244a9aa421edfd70274d64fe7422becfa92a716327",
"46103ed8165c11e27fd1ce1cff1d01c059a095b7784111de44f6800a",
"28f7f14746bbcd22ef39e4a21e69f1d18ebd2a698c3d8f6618295111",
"3bac35b4b0114bb63e9e8f68b575cf618a1fdce60894ea0830d039f4",
"bd6760923c3ee7a63d7589638c1e762a4f385a66eb56fa4cdf1afc95",
"68650a0fca8c7c83dbc4837697b052e2c25b2bf97b75fe33e8e4e56a",
"89ea46245dd105723bcc77b1e115538ec43e3f8f16ac33fba88a7d48",
"7bebf702d727815fb6ceeb9124df53f33a2dfc94e077fa493b6099ff",
"f9e7d4a3a5e608fed2000cc31b02fa04ba98aafaec9e87894b08f12f",
"2a4a4e5b2466f83614424ebe8b2a7a978d51dd4fecf6deb2864da9de",
"b0fbcecfd6c54972ce405bca6bccc01806e9b677bc2cf68bc69b2e81",
"4b8ed4e2ccbf0845f0171989f9b7bad973a721dab8d22b72497a160c",
"c01353c7b448e5f66fe5212e1b131a236d2196db18d949aa4cbb6247",
"306555fd98369eb5ec29553997f5c77d94d04bee0799aebc71ad4277",
"a7d9cf59fdb6b260e640080161b2ef24c5a7328bc0fb7fdca089e933",
"50e36716d1cbe48a9bb6782ffc673bd5f4568b386839fd0ac06a78df",
"48f35ee28e042475aa5ed916a8b42a37f41dff870578c0f6cc7859b6",
"1855c7677e6ee4f8f8e19f8c9769aaf3fededb57f399e44abccbc698",
"cce68e9aec424266aeed2b4c5be35638849f24c120386c69dd4d17ac",
"e2c913dac361ba3530f5d911672e1c7061488ad7c04d30dd975677c8",
"9c0dbc9becd2371f6007e9095c3f60b707b74e9a70ee93db8074bf66",
"fef384959fd23dac794058ef4be0b98660f25652f8e7be33d79111dc",
"7441cf8d47c1132233675c672542e6d0fd8899a44964f611ab569159",
"312453c408677d7c30e249d974a9324e00ba360560f9df609b8ecb74",
"f4b5a61f3a001456f5352849a11deb630bf1fd6f40e754567033a24b",
"6031efb62f69d2bb1f48b8dbd5edc8cf399b0f5719096d98deca660d",
"827b9cba387765cef470c46edde02cecc1f8beb7cd972bb3e5214fdb",
"dd6cadace6079e8348a11ef237a577e74c0821b59f5c0cdf36695775",
"dd9956c35a8d8f6976b6fda993eef292351b0ee1a6996697fd33f300",
"377fe7c74afda3bf61d4d8f7cd2f08c0915874b7c8ba7f2d473b7fde",
"0c4d4d89a403a99102bdc20103882052adbc2910868cdbdcca678a6f",
"549bbd58f4685c81a1a7c82694b707553b1cbccb26ed73015baeb3b3",
"6b4ca4c8b81a0c1e70ebd0853d0a778d46782ef19827b25224dded10"
]
},
"landlord": {
"landlord_id": "70d4b9c8-7cfe-4c95-9ab8-534ff393b5f2",
"scoring": {
"score": 380,
"total_bookings_closed": 665
}
},
"attributes": {
"feature_flags": [
"Any",
"Professionals",
"Students",
"Furnished",
"Exterior",
"Equipped kitchen",
"Balcony or terrace",
"Oven",
"Desk",
"Chest of drawers",
"Shelving",
"Independent key",
"Built-in wardrobe",
"Window",
"Electricity",
"Water",
"Gas",
"Wifi",
"Double Bed"
],
"unmapped_feature_flags": {
"3024": true
},
"search_marker": {
"instant_booking": false,
"minimum_price": 675
}
},
"source_context": {
"total_markers": 4608,
"source_url": "https://www.spotahome.com/s/barcelona--spain/for-rent:rooms",
"seed_id": "8307012beefb3073198e",
"seed_type": "search",
"seed_value": "Barcelona",
"page_index": 1,
"fingerprint": "e37d0fc261d810d66c12"
}
}

Field Reference

Spotahome Rental Listing

listing_id (string, required): Stable Spotahome listing identifier.

url (string, required): Public Spotahome listing URL.

title (string, optional): Listing title.

description (string, optional): Public listing description.

property_type (string, optional): Rental format, such as room_shared.

pricing.display_price (number, optional): Displayed monthly rental price.

pricing.minimum_price (number, optional): Minimum monthly rental price.

pricing.currency (string, optional): Price currency, such as EUR.

pricing.bills_included (string, optional): Included-bills indicator, such as all.

pricing.offers (array, optional): Available discount or promotional offers.

pricing.offers[].discount_type (string, optional): Offer type, such as percentage.

pricing.offers[].discount_value (number, optional): Offer value.

availability.first_available_date (string, optional): First available rental date in ISO 8601 format.

location.street (string, optional): Public street-level location.

location.postal_code (string, optional): Postal code.

location.city (string, optional): City name.

location.market_city (string, optional): Normalized market city value.

location.coordinates.longitude (number, optional): Listing longitude.

location.coordinates.latitude (number, optional): Listing latitude.

location.address_coordinates.longitude (number, optional): Address-level longitude when available.

location.address_coordinates.latitude (number, optional): Address-level latitude when available.

property.area_sqm (number, optional): Total property area in square meters.

property.room_area_sqm (number, optional): Room area in square meters when provided.

property.bathrooms (number, optional): Number of bathrooms.

property.bedrooms (number, optional): Number of bedrooms.

booking.spotahome_checked (boolean, optional): Whether the listing is marked as checked by Spotahome.

booking.instant_booking (boolean, optional): Whether instant booking is indicated.

booking.no_security_deposit (boolean, optional): Whether no security deposit is indicated.

booking.deposit_protection (boolean, optional): Whether deposit protection is indicated.

booking.permanent_contract_allowed (boolean, optional): Whether a permanent contract is indicated as allowed.

booking.best_choice (boolean, optional): Whether the listing is marked as a best choice.

booking.favorite (boolean, optional): Whether the listing is marked as a favorite in the source context.

media.main_photo_url (string, optional): Main public photo URL.

media.photo_ids (array, optional): Photo identifiers associated with the listing.

media.other_property_photo_ids (array, optional): Additional property-level photo identifiers.

landlord.landlord_id (string, optional): Public landlord identifier when available.

landlord.scoring.score (number, optional): Landlord score value when available.

landlord.scoring.total_bookings_closed (number, optional): Total closed bookings associated with the landlord score.

attributes.feature_flags (array, optional): Public listing features, amenities, suitability signals, and bill indicators.

attributes.unmapped_feature_flags (object, optional): Additional feature flags not mapped to a descriptive label.

attributes.search_marker.instant_booking (boolean, optional): Instant-booking signal from the search record.

attributes.search_marker.minimum_price (number, optional): Minimum price from the search record.

source_context.total_markers (number, optional): Total matching markers reported for the source search context.

source_context.source_url (string, optional): Public source search URL associated with the record.

source_context.seed_id (string, optional): Stable identifier for the input seed used in the run.

source_context.seed_type (string, optional): Seed type, such as search.

source_context.seed_value (string, optional): Seed value supplied for collection, such as the input location.

source_context.page_index (number, optional): Result page index associated with the saved record.

source_context.fingerprint (string, optional): Record fingerprint useful for repeated-run comparison and secondary deduplication.

Data Quality, Guarantees, And Handling

  • Structured records: results are normalized into predictable JSON objects for downstream use.
  • Best-effort extraction: fields may vary by region, session, availability, listing type, or source-side presentation changes.
  • Optional fields: null-check optional values in downstream code, especially media, landlord, availability, and detailed property attributes.
  • Deduplication: use listing_id as the primary stable key; url and source_context.fingerprint can support validation or secondary matching.
  • Freshness: results reflect the publicly available data at run time.
  • Repeated runs: use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, or monitoring systems.

Tips For Best Results

  • Start with a small limit to validate the output shape before scaling up.
  • Use one location or rental segment per run when you need cleaner reporting and easier comparison.
  • Leave optional filters empty when the goal is broad discovery.
  • Add filters gradually to understand how each field changes coverage.
  • Set both availability dates together when move-in and move-out timing matters.
  • Use sort_by: "newest" for recently listed monitoring and sort_by: "lowest_price" for budget analysis.
  • Store results using listing_id to deduplicate repeated runs over time.

How To Run On Apify

  1. Open the actor in Apify Console.
  2. Configure the available input fields for the target location and rental scope.
  3. Set the maximum number of outputs to collect with limit.
  4. Click Start and wait for the run to finish.
  5. Open the dataset preview and inspect the first records.
  6. Download results in JSON, CSV, Excel, or other supported formats.

Scheduling & Automation

Scheduling

Automated Data Collection

Use Apify schedules to run the actor periodically and keep rental datasets fresh for monitoring, reporting, and enrichment workflows.

  • Navigate to Schedules in Apify Console
  • Create a new schedule, such as daily, weekly, or custom cron
  • Configure input parameters
  • Enable notifications for run completion
  • Add webhooks for automated processing

Integration Options

  • BI dashboards: monitor rental pricing, availability, property mix, and location coverage over time.
  • Data warehouses: load normalized listing records into historical tables for trend analysis and reporting.
  • Webhooks: trigger validation, notification, or ingestion workflows after each completed run.
  • CRM enrichment: sync public listing, landlord, location, and property attributes into account or lead records.
  • Google Sheets or Airtable: review smaller rental datasets, validate segments, and share operational extracts with non-technical teams.
  • ETL and data enrichment pipelines: combine Spotahome listing data with internal market, geography, or inventory datasets.

Export Formats And Downstream Use

Apify datasets can be exported from the platform or consumed by downstream systems for reporting, analysis, and operational workflows.

  • JSON: for APIs, applications, and data pipelines
  • CSV or Excel: for spreadsheet workflows and manual review
  • API access: for automated ingestion into internal systems
  • BI and warehouses: for reporting, dashboards, and historical analysis

Performance

Estimated run times:

  • Small runs (< 1,000 outputs): ~3–5 minutes
  • Medium runs (1,000–5,000 outputs): ~5–15 minutes
  • Large runs (5,000+ outputs): ~15–30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.

Limitations

  • Availability depends on what Spotahome publicly exposes at run time.
  • Some optional fields may be missing on sparse listings or in specific markets.
  • Very broad searches may take longer or require higher limit values.
  • Source-side changes can affect field availability, naming, or completeness.
  • Regional, account, or availability differences may change visible results.
  • Date and price filters depend on matching public listings being available for the selected location.

Troubleshooting

  • No results returned: check filter combinations, location spelling, date range, and whether Spotahome has matching public listings for the selected market.
  • Fewer results than expected: broaden filters, raise limit, or verify that the target location contains enough matching public records.
  • Some fields are empty: optional fields depend on what each listing publicly provides.
  • Run takes longer than expected: reduce scope, lower limit for validation, or split broad collection into smaller location or property-type segments.
  • Output changed: compare the current output with the field reference and include a small sample if support is needed.

FAQ

What data does this actor collect?

It collects public Spotahome rental listing records, including listing identity, URL, title, description, property type, pricing, availability, location, property details, booking signals, media references, landlord metadata, attributes, and source context.

Can I filter by location, category, date, price, or other criteria?

Yes. The actor requires location and supports filters for monthly price, bed type, property type, amenities, suitability, included bills, availability dates, bathroom requirements, Spotahome-checked status, deposit requirements, sorting, and result limit.

Why did I receive fewer results than my limit?

The limit is a maximum, not a guarantee. You may receive fewer records when the selected location and filters return fewer matching public listings at run time.

Can I schedule recurring runs?

Yes. Use Apify schedules to run the actor daily, weekly, or on a custom cadence for monitoring, reporting, and enrichment workflows.

How do I avoid duplicates across runs?

Use listing_id as the primary idempotency key when storing or syncing records. url and source_context.fingerprint can help with secondary validation.

Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support exports in JSON, CSV, Excel, and other platform-supported formats.

Does this actor collect private data?

No. The actor is intended to collect publicly available Spotahome listing information. Users are responsible for using the data lawfully and in accordance with applicable requirements.

What should I include when reporting an issue?

Include the input used, the run ID, expected versus actual behavior, and a small output sample if it helps illustrate the issue. Redact any sensitive internal notes before sharing.

Compliance & Ethics

Responsible Data Collection

This actor collects publicly available rental listing information from Spotahome for legitimate business purposes, including:

  • Real estate research and market analysis
  • Rental pricing and availability monitoring
  • Data enrichment for operational reporting and analytics

This section is informational and not legal advice. Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, and platform terms.

Best Practices

  • Use collected data in accordance with applicable laws, regulations, and the target site's terms
  • Respect individual privacy and personal information
  • Use data responsibly and avoid disruptive or excessive collection
  • Do not use this actor for spamming, harassment, or other harmful purposes
  • Follow relevant data protection requirements where applicable, such as GDPR and CCPA

Support

For help, use the actor page or Issues section. Include the input used, with sensitive values redacted; the run ID; expected versus actual behavior; and a small output sample when useful. Avoid sharing private credentials, personal notes, or unrelated internal data.