Comparis.ch Real Estate Scraper
Pricing
from $0.79 / 1,000 results
Comparis.ch Real Estate Scraper
Scrape Swiss real estate from comparis.ch — apartments, houses, rooms, land, for rent or buy. Structured data: gross & net rent, extra costs, rooms, m², floor, year built, coordinates, amenities and photos. Filter by city, price, size and type. No API key required.
Pricing
from $0.79 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
9
Total users
2
Monthly active users
10 hours ago
Last modified
Categories
Share

Extract Swiss property listings from comparis.ch at scale — apartments, houses, rooms, land and holiday homes, for rent or for sale. Full descriptions, prices, floor area, coordinates, amenities and photos. No API key required.
Why this scraper?
🎯 Built for Switzerland
A dedicated Swiss scraper, not a global tool with a country dropdown. Price handling, room counts and location matching follow how comparis.ch actually publishes listings, in CHF.
🏘️ Every property type
Apartments, houses, flatshare rooms, furnished apartments, land plots and holiday properties — rent or buy, in one input.
📄 Complete listing data
Title, full description, price and price type, rooms, living area, floor and year built, plus every photo published on the listing.
📍 Precise location
Street, street number, postal code and city, with latitude and longitude taken from the listing's own map position.
🔎 Server-side filters
City or canton, price range, room range and listing age are applied at the source, so you retrieve only what you asked for.
🔗 Direct URL mode
Paste comparis.ch search result URLs and the scraper follows them exactly, filters and all.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | array | (empty) | Comparis.ch search result page URLs to scrape directly. When provided, all filters below are ignored. |
location | string | "zuerich" | Swiss city or canton slug, for example zuerich, bern, basel, luzern, lausanne, geneve, zug, winterthur. |
propertyType | string | "wohnung" | wohnung, haus, wg-zimmer, moebilierte-wohnung, grundstueck or ferienimmobilie. |
dealType | string | "mieten" | mieten for rentals, kaufen for properties for sale. |
sortBy | string | "newest" | newest, relevance, price_asc, area or city. |
minRooms | number | (empty) | Minimum number of rooms, for example 2, 2.5, 3. |
maxRooms | number | (empty) | Maximum number of rooms. |
minPriceChf | integer | (empty) | Minimum price in CHF — per month for rentals, total for sales. |
maxPriceChf | integer | (empty) | Maximum price in CHF. |
daysOld | integer | (empty) | Only return listings published within the last N days. |
maxItems | integer | 20 | Maximum number of listings to return. |
fetchDetails | boolean | true | Fetch each listing's detail page for the full description, all photos, coordinates and amenities. |
Output schema
Every field below is present on every record. Fields comparis.ch does not publish for a given listing are returned as null rather than omitted.
Always present
| Field | Type | Description |
|---|---|---|
adId | number | Comparis listing ID, stable for the life of the advert. |
url | string | Direct link to the listing on comparis.ch. |
title | string | Listing headline as published by the advertiser. |
propertyType | string | Property category in German, for example Wohnung, Villa, Reiheneinfamilienhaus. |
dealType | string | rent or buy. |
street | string | Street name and number where published, otherwise empty. |
postalCode | string | Four-digit Swiss postal code. |
city | string | Municipality name. |
rooms | number | Number of rooms, half rooms included (null if not published). |
areaM2 | number | Living area in square metres (null if not published). |
priceText | string | Price as displayed, for example CHF 1'425. |
priceValue | number | Price as a plain number for sorting and filtering. |
currency | string | Always CHF. |
priceType | string | What the price covers, for example Mietpreis pro Monat or Kaufpreis. |
partnerName | string | Advertising agency or portal that supplied the listing. |
imageUrl | string | Primary listing photo. |
imageUrls | array | All listing photos available at this stage. |
listedDate | string | When the listing was published, ISO 8601. |
contentHash | string | Hash of ID, price, rooms and area — changes when the advert changes. |
source | string | Always comparis.ch. |
scrapedAt | string | Timestamp of retrieval, ISO 8601. |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
description | string | Full advertiser description as plain text. |
features | array | Amenities and property attributes, for example Balkon/Terrasse/Sitzplatz, Lift, Kinderfreundlich (null when the advertiser lists none). |
floor | string | Floor for apartments, number of storeys for houses (null if not published). |
constructionYear | number | Year built (null if not published). |
latitude | number | Listing map latitude. |
longitude | number | Listing map longitude. |
Detail fetching also upgrades street, postalCode, city, rooms, areaM2, priceText, priceValue, imageUrl and imageUrls to the fuller values on the listing page.
Example record
{"adId": 37996139,"url": "https://www.comparis.ch/immobilien/marktplatz/details/show/37996139","title": "Schöne 1-Zimmerwohnung in Zürich (befristet bis 03.2027)","propertyType": "Wohnung","dealType": "rent","street": "Langgrütstrasse 25","postalCode": "8047","city": "Zürich","rooms": 1,"areaM2": 32,"floor": "3","priceText": "CHF 1'425","priceValue": 1425,"currency": "CHF","priceType": "Mietpreis pro Monat","partnerName": "Immobilien Zürich AG","imageUrl": "https://mapl-assets.b-cdn.net/immobilien/images/datacollect/e9906f3d-411d-64a4-0475-96727e4c11ce.avif","imageUrls": ["https://mapl-assets.b-cdn.net/immobilien/images/datacollect/e9906f3d-411d-64a4-0475-96727e4c11ce.avif","https://mapl-assets.b-cdn.net/immobilien/images/datacollect/7c21a0ab-9d34-41ee-9f10-2b6c1a0d5e83.avif"],"listedDate": "2026-09-10T05:59:21","latitude": 47.37279578179405,"longitude": 8.501640337724266,"constructionYear": null,"description": "Helle 1-Zimmerwohnung an ruhiger Lage in Zürich Albisrieden. Balkon nach Süden, Tram- und Busverbindung in Gehdistanz. Befristet bis März 2027.","features": ["Balkon/Terrasse/Sitzplatz", "Haustiere erlaubt"],"contentHash": "a41f9c72b0e5d183","source": "comparis.ch","scrapedAt": "2026-09-10T05:43:15.177Z"}
Examples
Rental apartments in Zürich, newest first:
{"location": "zuerich","propertyType": "wohnung","dealType": "mieten","sortBy": "newest","maxItems": 100}
Family houses for sale in Bern up to CHF 1.5m:
{"location": "bern","propertyType": "haus","dealType": "kaufen","minRooms": 4,"maxPriceChf": 1500000,"maxItems": 200}
Scrape a comparis.ch search URL directly:
{"startUrls": [{ "url": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22RootPropertyTypes%22%3A%5B1%5D%2C%22LocationSearchString%22%3A%22basel%22%2C%22Sort%22%3A3%7D" }],"maxItems": 100}
Daily feed of new listings only:
{"location": "geneve","propertyType": "wohnung","dealType": "mieten","daysOld": 1,"sortBy": "newest","maxItems": 500}
💰 Pricing
$0.99 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$0.99 |
| 10,000 | ~$9.90 |
| 100,000 | ~$99.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Subscription tiers lower the rate further, down to $0.59 per 1,000 at the highest tier. Use the Max Items cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 20 results with details | under 1 minute |
| 100 results with details | 2–3 minutes |
| 1,000 results with details | 20–30 minutes |
Turning fetchDetails off returns roughly ten times as many listings in the same time, with the list-level fields only.
Known limitations
- Living area, year built and floor are frequently not published by the advertiser, especially on rental listings. These fields return
nullrather than a guess. - A single search returns at most 1,000 listings. Split larger jobs by city, price band or property type.
- Very large runs can stop short of the requested
maxItemswhen the source throttles sustained traffic. The run still finishes successfully with the listings it collected; re-running picks up the rest. - Descriptions are in the language the advertiser used — German, French or Italian depending on the region.
- Advertiser contact names, phone numbers and email addresses are never returned.
Technical details
- Source: comparis.ch — Swiss property marketplace, rentals and sales
- Coverage: nationwide, filterable by city or canton, price, rooms and listing age
- Memory: 256 MB
- Retry: automatic retry on rejected and failed requests, with a fresh identity per attempt and an automatic fallback route when the source throttles
Rate this actor
If this scraper does its job, a short review on the Reviews tab helps other users find it. Something not working? Open an issue on the Issues tab instead — issues get fixed.
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl