Immoscout24 Scraper with Contacts | All In One
Pricing
from $0.70 / 1,000 property listings
Immoscout24 Scraper with Contacts | All In One
Extract ImmobilienScout24 listings across Germany, Austria, and Switzerland with rich property detail, agency contacts, media, development data, and flexible market filters. Built for enterprise-grade real estate intelligence, lead enrichment, and automated analytics pipelines.
Pricing
from $0.70 / 1,000 property listings
Rating
5.0
(1)
Developer
Fatih Tahta
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
2
Monthly active users
2 days ago
Last modified
Categories
Share
Immoscout24 Scraper Enterprise Grade
Slug: fatihtahta/immoscout24-scraper
Overview
Immoscout24 Scraper Enterprise Grade collects structured property listing records, including listing identity, URLs, titles, pricing, location details, property attributes, agency and contact information, media, development data, publication dates, and source context. The public ImmoScout24 marketplaces at https://www.immobilienscout24.de and https://www.immobilienscout24.at provide high-value real estate inventory data for market analysis, operational reporting, lead qualification, and portfolio monitoring. The actor turns property search results and direct search URLs into repeatable JSON datasets that are ready for analytics, enrichment, and downstream automation. It is designed for dependable recurring data acquisition, with consistent input controls and structured output that supports validation, comparison, and synchronization over time.
Why Use This Actor
- Market research and analytics teams: collect normalized real estate inventory, pricing, availability, geography, and property attributes for market intelligence and operational reporting.
- Product and content teams: maintain property catalogs, location pages, owned search experiences, or editorial datasets using structured extraction from public listing records.
- Developers and data engineering teams: feed repeatable collection jobs into downstream systems, ETL pipelines, warehouses, alerts, and APIs with predictable JSON records.
- Lead generation and enrichment teams: identify agencies, listings, public contacts, developments, and property attributes that can support qualification and CRM enrichment workflows.
- Monitoring and competitive tracking teams: schedule recurring runs to observe changes in listed properties, price bands, publication windows, amenities, and regional supply.
Common Use Cases
- Market intelligence: monitor supply, pricing, availability, floor area, room count, energy classes, locations, and property segment movement.
- Lead generation: build targeted prospect lists from public property listings, agencies, developments, and listing-level contact details.
- Competitive monitoring: track newly published listings, price-positioned inventory, Search+ verified listings, or ImmoScout24-published listings across selected markets.
- Catalog and directory building: populate owned databases with structured public records for properties, developments, media, agencies, and geographic coverage.
- Data enrichment: add current public property attributes, address details, media links, and source context to existing CRM, BI, or analytics datasets.
- Recurring reporting: schedule periodic runs for dashboards, alerts, regional trend analysis, and operational review workflows.
Quick Start
- Choose a listing scope with
country,deal_type, andproperty_type, or provide one or more ImmoScout24 search URLs instart_url. - Add a
locationand optional filters such as price, floor area, room count, amenities, energy class, publication window, or listing source. - Set a small
limitfor the first validation run so you can inspect the output quickly. - Run the actor in Apify Console.
- Review the first dataset records and confirm that the fields, regions, and listing types match your workflow.
- Increase
limit, adjust filters, add direct URLs, enable enrichment, or schedule the actor once the output is verified.
Input Parameters
The actor supports structured searches by country, listing mode, property type, location, filters, sorting, optional enrichment, and direct ImmoScout24 search URLs.
| Parameter | Type | Description | Default |
|---|---|---|---|
start_url | array of strings | Optional direct ImmoScout24 search result URLs from https://www.immobilienscout24.de or https://www.immobilienscout24.at. Use this when you already configured a search on the website. limit applies separately to each URL. | – |
deal_type | string | Listing mode. Allowed values: buy, rent. | buy |
property_type | string | Property segment. Allowed values: apartment, house, house_and_apartment, land, new_development, garage_parking, investment_property, foreclosure_auction, office, industrial, retail, hospitality, special_purpose, commercial_land. | apartment |
country | string | Country for structured searches. Allowed values: germany, austria, spain, italy. Direct URLs carry their own country context. | germany |
location | string | City, state, ZIP code, neighborhood, region, or market. Leave empty for broader country-level discovery or when direct URLs already include the target location. | – |
min_price | integer | Minimum listing price in euros. | – |
max_price | integer | Maximum listing price in euros. | – |
min_floor_area | integer | Minimum usable floor area in square meters. | – |
max_floor_area | integer | Maximum usable floor area in square meters. | – |
min_bedroom | integer | Minimum room count. | – |
max_bedroom | integer | Maximum room count. | – |
excluded_listing_conditions | array of strings | Listing conditions to exclude. Allowed values: new_development, foreclosure_auction, off_market_accepting_offers. | [] |
only_plus_listings | boolean | Save only listings marked as Search+ verified. | false |
only_immoscout24 | boolean | Save only listings published directly on ImmoScout24. | false |
unit_amenities | array of strings | Required amenities. Allowed values: balcony, garden, garage_parking, fitted_kitchen, elevator, basement_storage, guest_bathroom. | [] |
energy_efficiency_class | array of strings | Required energy efficiency classes. Allowed values: a_plus, a, b, c, d, e, f, g, h. | [] |
sort_by | string | Result ordering for structured searches. Allowed values: default, price_desc, price_asc, newest. Direct URLs keep the ordering already present in the URL. | default |
publication_date | string | Publication window for recently added listings. Allowed values: 24_hours, 3_days, 7_days, 2_weeks, 1_month. | – |
enrich_data | boolean | Collect fuller listing records, such as descriptions, media, contact information, address details, and property attributes. Turn off for faster validation runs when standard fields are enough. | false |
limit | integer | Maximum number of listings to save for each structured search or direct URL. Minimum value: 1. | –; Console prefill: 100 |
Choosing Inputs
Use structured inputs when you want a repeatable search based on country, deal_type, property_type, location, and supported filters. Use start_url when you already have a configured ImmoScout24 search URL, such as a saved search or a website search that combines several criteria.
Narrower filters, such as a specific location, price range, floor area range, room count, amenities, energy class, listing source, or publication window, produce more targeted datasets. Broader inputs improve discovery and are better for market sizing, inventory monitoring, or exploratory analysis. Start with a small limit, inspect the first records, and then increase coverage after confirming that the output matches your use case. Use sort_by for structured searches when ordering matters, such as newest listings first or price-based review.
Example Inputs
Example: Munich rental monitoring
{"country": "germany","deal_type": "rent","property_type": "apartment","location": "Munich","publication_date": "24_hours","sort_by": "newest","limit": 100,"enrich_data": false}
Example: Direct URL collection
{"start_url": ["https://www.immobilienscout24.at/regional/wien/wien/haus-mieten?numberOfRoomsFrom=2&primaryPriceTo=12000"],"country": "austria","deal_type": "rent","property_type": "house","limit": 75,"enrich_data": true}
Example: Targeted purchase search with amenities
{"country": "germany","deal_type": "buy","property_type": "apartment","location": "Berlin","min_price": 500000,"max_price": 1500000,"unit_amenities": ["balcony", "elevator"],"limit": 50}
Output
Output destination
The actor writes property listing records to the default Apify dataset. Each dataset item is a normalized JSON object designed for ETL jobs, BI tools, CRM enrichment, search indexes, and AI agents.
Record envelope and stable identifiers
Each saved row uses one public record family: property_listing. The recommended idempotency key is record_id, which is derived from the strongest available ImmoScout24 listing identifier. Listing URLs remain available under listing.url, entity.url, and source_context.listing_url; source_context.fingerprint is available as an additional run-to-run comparison value.
Top-level fields are grouped by purpose:
record_typeandrecord_ididentify the row and stable entity.source_contextstores source, seed, URL, country, page, fingerprint, and scrape timing context.entitystores listing identity, public URL, source type, and source identifiers.listingstores headline, URL, deal type, property type, source classification, listing display metadata, descriptions, criteria, breadcrumbs, tags, and dates.pricingstores listing price, rent, market value, lowest bid, and commercialization details.locationstores address, region, country, coordinates, address visibility, and location description.propertystores normalized physical property facts, amenities, condition, energy, floor, area, rooms, and features.availabilitystores publication, modification, recurrence, and availability timing when available.mediastores images, videos, documents, virtual tours, floor plan flags, and media counts.contact_detailsstores visible agency and contact information.relationshipsstores related public entities, such as the agency/company and development/project data embedded in a listing.attributesstores source-specific display attributes, service flags, brokerage details, and detailed attributes that do not fit a stronger normalized bucket.
Example: property listing
{"record_type": "property_listing","record_id": "900123456","source_context": {"source_name": "ImmoScout24","source_domain": "www.immobilienscout24.de","source_url": "https://www.immobilienscout24.de/Suche/de/berlin/wohnung-kaufen","listing_url": "https://www.immobilienscout24.de/expose/900123456","canonical_url": "https://www.immobilienscout24.de/expose/900123456","loaded_url": "https://www.immobilienscout24.de/Suche/de/berlin/wohnung-kaufen","seed_id": "search_buy_apartment_germany_da39a3ee5e6b4b0d3255","seed_type": "search","seed_value": "Berlin","country": "germany","country_site": "germany","page_index": 1,"fingerprint": "4affa6073cc88076c9cd","scraped_time": "2026-05-19T09:45:13.965942Z"},"entity": {"name": "Familiengerecht wohnen: 4-Zimmer-Wohnung im Quartier Lindenhof","url": "https://www.immobilienscout24.de/expose/900123456","source_entity_type": "search:ApartmentBuy","external_ids": {"listing_id": "900123456","expose_id": "900123456","source_id": "900123456","object_number": "QLH_A_WE_064"}},"listing": {"title": "Familiengerecht wohnen: 4-Zimmer-Wohnung im Quartier Lindenhof","url": "https://www.immobilienscout24.de/expose/900123456","deal_type": "buy","property_type": "apartment","source_real_estate_type": "search:ApartmentBuy","commercialization_type": "BUY","listing_type": "XXL","object_number": "QLH_A_WE_064","has_new_flag": true,"number_of_grouped_objects": 7,"description": {"object": "Mit dem Quartier Lindenhof entsteht in Musterstadt ein neues Wohnensemble.","furnishing": "Parkettböden, Fußbodenheizung und großformatige Fenster.","location": "Das Quartier liegt in Musterstadt in einem gewachsenen städtischen Umfeld.","other": "Provision trägt der Verkäufer."},"main_criteria": [{"type": "PRICE","label_key": "mainCriteria.purchasePrice.label","value": "708.000 €","metadata": {"price_per_sqm": "6.370 €/m²","is_price_on_request": false}}],"breadcrumbs": [{"title": "Wohnung kaufen","url": "https://www.immobilienscout24.de/wohnen/eigentumswohnung.html"}],"tags": ["Provisionsfrei für Kaufende", "Balkon/Terrasse", "Aufzug"],"dates": {"created": "2026-05-04T17:32:16.000+02:00","published": "2026-05-04T17:32:16.000+02:00","modified": "2026-05-04T14:09:52.080+02:00"}},"pricing": {"price": {"value": 708000,"currency": "EUR","marketing_type": "PURCHASE","price_interval_type": "ONE_TIME_CHARGE"},"commercialization_type": "BUY"},"location": {"street": "Beispielstraße","house_number": "12","street_and_house_number": "Beispielstraße 12","postal_code": "10115","city": "Musterstadt","quarter": "Mitte","region": "Berlin","country": "Deutschland","coordinates": {"latitude": 52.53211,"longitude": 13.38472},"precise_house_number": true,"coordinate_available": true,"show_full_address": true,"description": "Beispielstraße 12, Musterstadt, Berlin"},"property": {"living_space": 111.15,"rooms": 4,"construction_year": 2026,"energy_efficiency_class": "A+","barrier_free": true,"heating_type": "floor_heating","firing_types": "electricity","condition": "first_time_use","interior_quality": "sophisticated","parking_space": "no_information","type_of_flat": "apartment","floor": 3,"amenities": {"built_in_kitchen": false,"balcony": true,"garden": false,"cellar": true,"elevator": true,"floorplan_available": true},"features": ["balcony", "cellar", "lift"]},"availability": {"created_at": "2026-05-04T17:32:16.000+02:00","published_at": "2026-05-04T17:32:16.000+02:00","modified_at": "2026-05-04T14:09:52.080+02:00","available_from": "August 2028"},"media": {"images": [{"id": "1","caption": "Kinderzimmer","url": "https://pictures.immobilienscout24.de/listings/example.jpg","urls": {"gallery": "https://pictures.immobilienscout24.de/listings/example-gallery.jpg","full_size": "https://pictures.immobilienscout24.de/listings/example-full.jpg","thumbnail": "https://pictures.immobilienscout24.de/listings/example-thumb.jpg"},"type": "PICTURE"}],"documents": [{"title": "Quartier_Lindenhof_Haus_A_WE_064","url": "https://d2qfnj9mv71tll.cloudfront.net/example.pdf"}],"floor_plan_available": true,"image_count": 7,"total_items_count": 8},"contact_details": {"agency": {"company_name": "Musterstadt Development GmbH","company_customer_id": "002.00000012345","realtor_sso_id": "100000001","logo_url": "https://pictures.immobilienscout24.de/usercontent/example-logo.JPEG","private_offer": false},"contact": {"salutation": "NO_SALUTATION","first_name": "Musterstadt","last_name": "Vertriebsteam","phone_number": "+49 30 12345678","company": "Musterstadt Development GmbH"}},"relationships": {"agency": {"company_name": "Musterstadt Development GmbH","company_customer_id": "002.00000012345","realtor_sso_id": "100000001","private_offer": false},"development": {"id": "900001","title": "Zwischen Stadtleben und grünem Innenhof","name": "Quartier Lindenhof","url": "https://www.immobilienscout24.de/neubau/musterstadt-development-gmbh/quartier-lindenhof/900001.html","address": "Beispielstraße 12, 10115 Musterstadt","is_presale": false,"attributes": {"preis": "274.000 - 1.350.000 €","wohnfläche": "43,00 - 215,00 m²","bezugsfrei ab": "August 2028","wohneinheiten": 126,"ausstattung": "Gehoben","zimmer": "1 - 7"}}},"attributes": {"display_attributes": {"kaufpreis": "708.000 €","wohnfläche": "111,15 m²","zimmer": 4},"courtage": {"has_courtage": "NO"},"available_services": {"square_meters": 111.15,"number_of_rooms": 4,"zip_code": "10115","heating_costs_in_service_charge": false},"detail_attributes": {"object_number": "QLH_A_WE_064","zip_code": "10115","street": "Beispielstraße","house_number": "12","region1": "Berlin","region2": "Berlin_Mitte","region3": "Musterstadt","courtage": false,"private_offer": false,"rented": false}}}
Field Reference
Property listing record
record_type (string, required): Stable discriminator. Property records use property_listing.
record_id (string, required): Stable listing identifier for deduplication and upserts.
source_context (object, required): Provenance and run context, including source name/domain, source URL, listing URL, canonical URL, loaded URL, seed details, country, page index, fingerprint, and scrape timestamp.
entity (object, optional): Listing entity identity, public URL, source entity type, and external_ids such as listing ID, expose ID, source ID, and object number.
listing (object, optional): Listing headline, URL, deal type, property type, source real-estate type, commercialization type, listing type, object number, display flags, descriptions, criteria, breadcrumbs, tags, and listing dates.
pricing (object, optional): Price objects and source pricing context, including purchase price, total rent, market value, lowest bid, currency, labels, per-square-meter text, and commercialization type when available.
location (object, optional): Address fields, city, quarter, region, country, coordinates, address visibility flags, and listing-provided location description.
property (object, optional): Physical property facts such as living space, net floor space, plot area, room count, construction year, energy class, heating, condition, floor, amenities, features, and rented/barrier-free indicators.
availability (object, optional): Created, published, modified, recurrence, and available-from timing when provided by the listing or development data.
media (object, optional): Listing images, image URLs, captions, media type, videos, documents, virtual tours, floor-plan availability, and media counts.
contact_details (object, optional): Visible agency/company details and public contact details such as names, phone numbers, company, portrait URL, and nested contact metadata when present.
relationships (object, optional): Related agency/company and development/project data embedded in the listing. Development attributes preserve source-provided labels such as price range, living-area range, availability, unit count, fit-out, and room range.
attributes (object, optional): Source-specific data that remains useful but is not a primary normalized field, including display attributes, brokerage details, available-service flags, and detailed source attributes.
Data Quality, Guarantees, And Handling
- Structured records: results use one normalized
property_listingenvelope with stable top-level buckets. - Best-effort extraction: fields may vary by region, listing type, availability, account visibility, source data quality, or UI experiments.
- Optional fields: null-check optional fields in downstream code, especially media, contact, development, detailed attributes, and address-level fields.
- Deduplication: use
record_idas the strongest stable key, withlisting.url,source_context.listing_url, andsource_context.fingerprintas useful secondary comparison values. - 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 reporting systems.
Tips For Best Results
- Start with a small
limitto validate the output shape before scaling up. - Use one country, location, deal type, and property segment per run when you need clean segmentation.
- Leave optional filters empty when the goal is broad discovery.
- Add price, floor area, room count, amenity, energy class, and publication-date filters gradually to understand how each field changes coverage.
- Use
start_urlfor saved searches or complex website searches you want to repeat exactly. - Enable
enrich_datawhen your workflow needs descriptions, media, contact information, address details, and deeper property attributes. - Use
record_idfor deduplication when storing results over time.
How to Run on Apify
- Open the Actor in Apify Console.
- Configure the available input fields for the target country, listing mode, property type, location, filters, or direct URLs.
- Set the maximum number of outputs to collect with
limit. - Click Start and wait for the run to finish.
- Open the dataset and inspect the first records.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Scheduling
Automated Data Collection
Use Apify schedules to run the actor automatically and keep listing datasets fresh for dashboards, enrichment workflows, and monitoring systems. Recurring runs are especially useful for newly published listings, regional inventory tracking, and price or availability monitoring.
- Navigate to Schedules in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing
Integration Options
- BI dashboards: monitor pricing, supply, publication windows, location coverage, and property attributes over time.
- Data warehouses: store normalized listing records for historical analysis, segmentation, forecasting, and operational reporting.
- CRM enrichment: sync public agency, contact, listing, development, and property attributes into account or lead records.
- Google Sheets or Airtable: review smaller market slices, validate target lists, and share curated listing datasets with business users.
- Webhooks: trigger ingestion, alerting, validation, or notification workflows after each completed run.
- ETL and enrichment pipelines: combine property records with portfolio, territory, or customer datasets.
Export Formats And Downstream Use
Apify datasets can be exported from the Console or consumed by downstream systems for operational use. Choose the format that matches your review, automation, or analytics workflow.
- JSON: for APIs, applications, and data pipelines
- CSV or Excel: for spreadsheet workflows and manual review
- API access: for automated ingestion into company systems
- BI and warehouses: for reporting, dashboards, and historical analysis
Performance
The following run times are estimates:
- 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 https://www.immobilienscout24.de and https://www.immobilienscout24.at publicly expose at run time.
- Some optional fields may be missing on sparse records, private offers, regional variants, or listings without media, contact, or development information.
- Very broad searches may take longer or require higher
limitvalues to collect the desired number of records. - Target-side changes can affect field availability, labels, naming, or visibility.
- Regional, account, or availability differences may change visible results.
- Direct URLs should be public ImmoScout24 search result URLs that already represent the scope you want to collect.
Troubleshooting
- No results returned: check filters, location or category spelling, direct URLs, and whether the target site has matching public records.
- Fewer results than expected: broaden filters, raise
limit, or verify that enough matching listings are publicly available. - Some fields are empty: optional fields depend on what each listing publicly provides.
- Run takes longer than expected: reduce scope, lower
limitfor validation, or split broad collection into smaller country, location, or segment runs. - Output changed: compare the current output with the field reference and report a small sample if support is needed.
FAQ
What data does this actor collect?
It collects public ImmoScout24 property listing data, including listing IDs, URLs, titles, pricing, locations, property attributes, agency details, contact information when visible, media, development details, listing dates, and source context.
Can I filter by location, category, date, price, or other criteria?
Yes. The actor supports country, buy or rent mode, property type, location, price range, floor area range, room count, excluded listing conditions, listing source filters, amenities, energy class, publication window, sorting, enrichment, and maximum result limits.
Can I use direct ImmoScout24 search URLs?
Yes. Use start_url when you already have one or more public ImmoScout24 search result URLs. This is useful for saved searches or website searches that already contain the scope you want.
Why did I receive fewer results than my limit?
The limit is a maximum, not a guarantee. You may receive fewer records if the selected scope has fewer public matches, filters are narrow, the location is sparse, or listings are not visible at run time.
Can I schedule recurring runs?
Yes. You can create schedules in Apify Console for daily, weekly, or custom recurring runs and use notifications or webhooks after completion.
How do I avoid duplicates across runs?
Use record_id as the primary idempotency key. If needed, compare listing.url, source_context.listing_url, and source_context.fingerprint as secondary values when syncing repeated runs.
Can I export the data to CSV, Excel, or JSON?
Yes. Apify datasets support exports to JSON, CSV, Excel, and other formats available in the Apify Console.
Does this actor collect private data?
The actor is intended for publicly available listing information. Contact details may appear only when they are publicly visible in the listing data returned at run time.
What should I include when reporting an issue?
Include the input used, with sensitive values removed if applicable, the run ID, expected versus actual behavior, and a small output sample if it helps explain the issue.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available real estate listing information from https://www.immobilienscout24.de and https://www.immobilienscout24.at for legitimate business purposes. Users are responsible for ensuring that their use of collected data complies with applicable laws, regulations, contractual obligations, and platform terms.
Legitimate use cases include:
- Real estate and property technology research and market analysis
- Portfolio, pricing, and inventory monitoring
- CRM, BI, and analytics enrichment
This section is informational and not legal advice.
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 Issues tab or the actor page. Include the input used, with sensitive values redacted if applicable, the run ID, expected versus actual behavior, and a small output sample when it helps clarify the issue.