ImmoScout24.ch Scraper — Swiss Apartments & Houses avatar

ImmoScout24.ch Scraper — Swiss Apartments & Houses

Pricing

from $20.00 / 1,000 result scrapeds

Go to Apify Store
ImmoScout24.ch Scraper — Swiss Apartments & Houses

ImmoScout24.ch Scraper — Swiss Apartments & Houses

Scrape residential property listings from immoscout24.ch (Switzerland): apartments and houses for rent or sale. CHF prices, rooms, living space, address and coordinates.

Pricing

from $20.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

ImmoScout24.ch Scraper — Swiss Residential Real Estate

Scrape residential real estate listings from immoscout24.ch, Switzerland's largest property portal (SMG Swiss Marketplace Group). Apartments and houses, for rent and for sale, across all 26 cantons.

This is the Swiss platform. It is a different company and a different website than German immobilienscout24.de.

Residential only. This actor covers apartments and houses. For offices, Gewerbe, storage and building land on the same site, use immoscout24-ch-commercial-scraper instead — the two actors share a platform but not a search scope, and their outputs are not interchangeable.

What you get

Structured JSON for every listing: title, description, CHF price with its billing interval, gross and net rent, rooms, living space, address with coordinates, canton, category tags, photos and the listing URL.

Price on application (Preis auf Anfrage) happens occasionally, most often on new-build or off-market listings. Those listings keep price: null. The scraper never invents a number.

Use cases

  • Track apartment and house rents or asking prices across Swiss cities
  • Build a pipeline of available homes for a relocation search
  • Monitor supply and price trends in a specific city or canton over time
  • Feed listing data into a relocation, valuation or market research tool
  • Compare furnished short-stay apartments against traditional unfurnished rentals

How to scrape ImmoScout24 Switzerland data

  1. Pick a location. Swiss city or canton names work in German, French or Italian spelling: Zürich, Genève, Lugano, Bern, Basel, Kanton Waadt.
  2. Pick a listing type (rent or sale).
  3. Set maxResults and run. The scraper resolves the location, walks the result pages (20 listings per page) and pushes each listing as one dataset item.

The site's anti-bot protection (DataDome) is handled automatically by the built-in unlocking service. You do not need to configure anything for it.

Example: apartments and houses for rent in Zürich

{
"searchQuery": "Zürich",
"listingType": "rent",
"maxResults": 100
}

Example: property for sale in Geneva, French spelling

{
"searchQuery": "Genève",
"listingType": "sale",
"maxResults": 50
}

Example: a whole canton

{
"searchQuery": "Kanton Bern",
"listingType": "rent",
"maxResults": 200
}

Example: your own filtered search URL

Set filters on immoscout24.ch (rooms, price band, living space, property type) and paste the result URL:

{
"startUrls": [{ "url": "https://www.immoscout24.ch/de/immobilien/mieten/kanton-zuerich?nr=3.5-&pf=1500&pt=3000" }],
"maxResults": 200
}

Output example

{
"listingId": "4002086141",
"listingTitle": "City Pop - Cosy Studio Apartments close to Zürich centre",
"description": "Neu eröffnet! Ab dem 10.04.2025 bieten wir zentral gelegene Apartments...",
"transactionType": "rent",
"propertyType": "Apartment",
"categories": ["APARTMENT", "FLAT"],
"price": 2042,
"currency": "CHF",
"priceInterval": "MONTH",
"grossPrice": 2042,
"netPrice": null,
"rooms": 1,
"areaM2": 17,
"floor": null,
"yearBuilt": 2025,
"street": "Rotbuchstrasse 9",
"postalCode": "8006",
"location": "Zürich",
"canton": "ZH",
"latitude": 47.386589622021,
"longitude": 8.548501805136,
"agencyLogoUrl": "https://cdn.immoscout24.ch/t_customer_logo/logos/l_e335city_v2.png",
"language": "de",
"imageUrl": "https://cdn.immoscout24.ch/listings/v2/.../image/....jpg",
"imageUrls": ["https://cdn.immoscout24.ch/listings/v2/.../image/....jpg"],
"createdAt": "2025-04-07T14:34:53.213Z",
"url": "https://www.immoscout24.ch/mieten/4002086141",
"source": "immoscout24.ch",
"scrapedAt": "2026-08-21T20:17:37.026Z"
}

Price fields explained

FieldMeaning
priceGross rent (or net, if gross is missing) for rent listings; purchase price for sale listings
priceIntervalRent billing interval: MONTH, YEAR, WEEK or DAY. null for sale listings
grossPriceBruttomiete (gross rent) or purchase price
netPriceNettomiete (net rent), where the lister publishes it separately
null pricePrice on application (Preis auf Anfrage)

Property types

The categories field carries the site's own tags (e.g. APARTMENT, FLAT, HOUSE, SINGLE_HOUSE, CASTLE, TERRACE_HOUSE). propertyType is a human-readable version of the first tag. Filter by categories if you need apartments only or houses only from a mixed search.

Input reference

FieldTypeDescription
searchQuerystringSwiss city or canton (DE/FR/IT spelling). Empty = Zürich
listingTypestringrent or sale
startUrlsarrayFull immoscout24.ch search URLs, overrides the fields above
maxResultsintegerCap on returned listings (default 50)
brightDataApiKeystringOptional own unlocker key, normally leave empty
proxyConfigurationobjectNot used for fetching, kept for platform compatibility

Cost of usage

You pay per result plus a small run start fee. One fetched page yields 20 listings, so a 100-listing run needs about 5 page fetches and typically finishes in under a minute.

A run's usage cost only settles after the run reports SUCCEEDED. Reading the dataset mid-run shows a partial cost that can be far lower than the final one.

Good to know

  • The site serves at most 1000 results per search. Searches over that cap get a log warning; split by city for full coverage.
  • Listings are deduplicated by listing ID within a run, also across multiple start URLs.
  • The listing's own offerType decides transactionType in the output, so a mixed start URL still labels every row correctly.
  • Listing text comes in the lister's primary language (language field: de, fr, it or en).
  • Long runs survive platform migrations: the scraper resumes from the last completed page instead of restarting.
  • If Bright Data can't get past the site's anti-bot protection during a run, the run fails with a message that says so explicitly — it won't report success with zero listings.

Legality

This scraper reads only publicly available listing data, the same information any visitor sees in a browser. It stores no personal data beyond what listers publish themselves (agency names and business contact details). For commercial reuse of the data, check the portal's terms and applicable law in your jurisdiction.