Comparis.ch Real Estate Scraper
Pricing
from $0.79 / 1,000 results
Comparis.ch Real Estate Scraper
Scrape Swiss real estate listings from comparis.ch — apartments, houses, land, rooms. Filter by city, property type, and deal 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
7
Total users
5
Monthly active users
4 days ago
Last modified
Categories
Share

Extract property listings from comparis.ch at scale, in a clean, consistent structure ready for market analysis, valuation models, lead generation and monitoring. No API key required.
Why this scraper?
🎯 Built for Switzerland
A dedicated Swiss scraper, not a global tool with a country dropdown. Locations, price formats and currency (CHF) are tuned for comparis.ch.
🏠 Property characteristics
Bedrooms, rooms, surface and property type in structured fields, ready for filtering and analysis.
📄 Full listing content
Complete listing description and title for every record, with a direct link back to the source.
📍 Precise location
Address fields plus latitude/longitude for mapping and radius analysis.
🔁 Repost & change detection
Every record carries isRepost and changeStatus, so daily feeds return genuinely new listings instead of reposted duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
propertyType | string | "wohnung" | Type of property to search for. |
location | string | "zuerich" | Swiss city or canton name. Examples: zuerich, bern, basel, luzern, lausanne, geneve, zug, winterthur. Leave empty when using startUrls. |
sortBy | string | "newest" | Sort order for results. |
minPrice | integer | (empty) | Minimum listing price (local currency). Leave empty for no minimum. |
maxPrice | integer | (empty) | Maximum listing price (local currency). Leave empty for no maximum. |
daysOld | integer | (empty) | Only return listings published within the last N days. |
fetchDetails | boolean | false | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
maxItems | integer | 100 | Maximum number of listings to return. |
startUrls | array | (empty) | Comparis.ch search result page URLs to scrape directly. When provided, all filter inputs below are ignored. |
dealType | string | "mieten" | Whether to search for rentals or properties for sale. |
minRooms | number | (empty) | Minimum number of rooms (e.g. 2, 2.5, 3). |
maxRooms | number | (empty) | Maximum number of rooms (e.g. 4, 4.5). |
minPriceChf | integer | (empty) | Minimum price in CHF per month (rent) or total (buy). |
maxPriceChf | integer | (empty) | Maximum price in CHF per month (rent) or total (buy). |
Output schema
Every field below is present on every record. Fields the source does not publish for a given listing are returned as null rather than omitted.
| Field | Type | Description |
|---|---|---|
adId | number | Comparis.ch internal listing ID |
url | string | Direct link to the listing. |
title | string | Listing title |
propertyType | string | e.g. wohnung, haus |
dealType | string | mieten or kaufen |
street | string | Street address |
postalCode | string | Swiss postal code |
city | string | City |
rooms | number | Number of rooms |
areaM2 | number | Floor area in m² |
floor | string | Floor level |
priceText | string | Price as displayed |
priceValue | number | Price in CHF (numeric) |
currency | string | Always CHF |
priceType | string | e.g. monthly, total |
partnerName | string | Partner name. |
imageUrl | string | Image url. |
imageUrls | array | Image urls. |
listedDate | string | Date the listing was published. |
latitude | number | Latitude of the property. |
longitude | number | Longitude of the property. |
constructionYear | number | Construction year. |
description | string | Full listing description in plain text. |
descriptionMarkdown | string | Description in Markdown/plain text. |
features | array | Feature list as published on the listing. |
contentHash | string | Stable hash of the listing content, used for repost and change detection. |
source | string | Source. |
scrapedAt | string | Timestamp when this record was scraped. |
Example record
{"adId": 37589670,"url": "https://www.comparis.ch/immobilien/marktplatz/details/show/37589670","title": "Helle und freundliche 2-Zimmer-Wohnung in West-Oerlikon","propertyType": "Wohnung","dealType": "rent","street": "Binzwiesenstrasse 40","postalCode": "8057","city": "Zürich","rooms": 2,"areaM2": null,"floor": "2","priceText": "CHF 1'737","priceValue": 1737,"currency": "CHF","priceType": "Mietpreis pro Monat","partnerName": "homegate.ch","imageUrl": "https://www.comparis.ch/immobilien/api/image/getdirect?guid=b8d20c4f-6a1e-4bde-bd68-eb4a3d74ba8d&w=1200&h=900&rm=2&mw=1024&mh=1024","imageUrls": ["https://www.comparis.ch/immobilien/api/image/getdirect?guid=b8d20c4f-6a1e-4bde-bd68-eb4a3d74ba8d&w=1200&h=900&rm=2&mw=10 …","https://www.comparis.ch/immobilien/api/image/getdirect?guid=4e09096e-1c8d-4c6c-8793-ebc9c018124a&w=1200&h=900&rm=2&mw=10 …","https://www.comparis.ch/immobilien/api/image/getdirect?guid=bafd5fa3-13fe-4265-b1b0-c6be1e15f812&w=1200&h=900&rm=2&mw=10 …","https://www.comparis.ch/immobilien/api/image/getdirect?guid=b8eb09df-e918-40ab-8e7e-a79c4d1fd5fc&w=1200&h=900&rm=2&mw=10 …"],"listedDate": "2026-07-02T17:27:49","latitude": 47.404073255099696,"longitude": 8.555843446947767,"constructionYear": 1956,"description": "**Per 1. Oktober 2026** vermieten wir diese 2-Zimmer-Wohnung im westlichen Teil von Zürich-Oerlikon. Die Liegenschaft befindet sich in einem ruhigen Wohnquartier und verfügt über eine gute Anbindung a …","descriptionMarkdown": "**Per 1. Oktober 2026** vermieten wir diese 2-Zimmer-Wohnung im westlichen Teil von Zürich-Oerlikon. Die Liegenschaft befindet sich in einem ruhigen Wohnquartier und verfügt über eine gute Anbindung a …","features": ["Kabel-TV"],"contentHash": "18dfbc3d7b5d8be0","source": "comparis.ch","scrapedAt": "2026-07-02T15:31:14.494Z"}
Examples
Listings in Zürich:
{"location": "Zürich","maxItems": 100}
Cap the price:
{"location": "Zürich","maxItems": 100,"maxPrice": 1150000}
Scrape a specific search URL:
{"startUrls": [{"url": "https://www.comparis.ch/"}],"maxItems": 200}
Daily feed of new listings (run on a schedule):
{"location": "Zürich","daysOld": 1,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only listings added in the last 24 hours.
💰 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.9 |
| 100,000 | ~$99 |
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 results cap in the input to control your spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Known limitations
- Some fields (surface, year built, energy label) are only returned when the lister publishes them — expect
nullon a share of records. - Listing photos and agent details vary per listing; the scraper returns what the source publishes and never invents data.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be withdrawn at any time, so a small share of URLs may expire shortly after scraping.
Technical details
- Source: comparis.ch — Switzerland property listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
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