Homegate Scraper
DeprecatedPricing
from $1.50 / 1,000 results
Homegate Scraper
DeprecatedScrape homegate.ch for Swiss real estate listings: price, m², rooms, GPS, canton, features & descriptions. 37,500+ buy listings across all 26 cantons. No proxy required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Homegate.ch Scraper

Extract structured real estate listings from homegate.ch — Switzerland's leading property platform with 37,500+ buy listings across all 26 cantons. Retrieves full property details from server-side rendered data. No API key required.
Why this scraper?
🏔️ All 26 Swiss cantons
Scrape any combination of cantons — Zürich, Bern, Genf, Waadt, Tessin, and more — or scrape all of Switzerland in one run.
📊 Rich structured output
Captures price (CHF), living space (m²), room count, floor, build year, GPS coordinates, and 35+ property features including parking, balcony, garden, elevator, Minergie certification, mountain view, pet policy, child-friendliness, charging station, and more.
🖼️ Full image gallery
Returns all listing photos as a complete imageUrls array (typically 10–20+ images per property). Also extracts floorPlanUrls (PDF floor plans) and virtualTourUrl where available.
📝 Full descriptions
Property descriptions are extracted directly from the page's server-rendered data — no additional requests needed. Available as plain text, HTML, and Markdown.
🗺️ GPS coordinates
Latitude and longitude included for every listing where Homegate provides them, enabling map visualisation and proximity analysis.
👤 Agent & agency data
Captures listing agent name, phone number, email, agency ID, and agency logo URL for direct contact or lead enrichment workflows.
🏗️ New construction data
isNewBuilding and isNewConstruction flags identify new-build properties. newConstructionType and projectUrl provide further detail for development projects.
🔗 Direct URL support
Supply any Homegate search results URL directly to scrape a custom filter (price range, number of rooms, location, etc.) exactly as configured in the Homegate interface.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
startUrls | Array | [] | Homegate.ch search result URLs to scrape directly. Overrides cantons and propertyType. |
cantons | Array | [] | Canton slugs to scrape, e.g. kanton-zuerich, kanton-bern, kanton-genf. Leave empty for all of Switzerland. |
propertyType | String | immobilien | immobilien (all types), wohnung (apartments), or haus (houses). |
maxItems | Integer | 200 | Maximum listings to return. |
daysOld | Integer | 0 | Return only listings published within this many days. 0 disables the filter. |
Available canton slugs: kanton-zuerich, kanton-bern, kanton-genf, kanton-waadt, kanton-wallis, kanton-luzern, kanton-basel-stadt, kanton-basel-landschaft, kanton-aargau, kanton-solothurn, kanton-freiburg, kanton-tessin, kanton-graubuenden, kanton-thurgau, kanton-st-gallen, kanton-neuenburg, kanton-jura, kanton-zug, kanton-schwyz, kanton-uri, kanton-nidwalden, kanton-obwalden, kanton-glarus, kanton-appenzell-ausserrhoden, kanton-appenzell-innerrhoden, kanton-schaffhausen
Output schema
Listing identity & type
| Field | Type | Description |
|---|---|---|
id | String | Homegate listing ID. |
url | String | Full URL of the listing detail page. |
title | String | Listing title as published by the seller. |
offerType | String | Always "BUY" for sale listings. |
propertyType | String | Input property type filter used (immobilien, wohnung, haus). |
categories | Array | Homegate property categories, e.g. ["APARTMENT","FLAT"] or ["HOUSE","VILLA"]. |
listingType | String | null | Listing tier: "PREMIUM", "STANDARD", etc. |
platforms | Array | Platforms the listing is syndicated to (e.g. ["homegate","immoscout24","tutti"]). |
Price
| Field | Type | Description |
|---|---|---|
price | Number | null | Sale price in CHF. Null if not published. |
currency | String | Always "CHF". |
priceText | String | null | Formatted price string, e.g. "CHF 850'000". |
Location
| Field | Type | Description |
|---|---|---|
street | String | null | Street address. |
postalCode | String | null | Swiss postal code (4 digits). |
locality | String | null | City or municipality name. |
canton | String | null | Full canton name (e.g. "Zürich", "Bern", "Genf"). |
latitude | Number | null | GPS latitude. |
longitude | Number | null | GPS longitude. |
Characteristics — space & structure
| Field | Type | Description |
|---|---|---|
livingSpace | Number | null | Net living area in m². |
totalFloorSpace | Number | null | Total floor space in m² (may include non-living areas). |
lotSize | Number | null | Plot/land size in m². |
numberOfRooms | Number | null | Room count in Swiss format (e.g. 3.5, 4.0). |
numberOfBathrooms | Number | null | Number of bathrooms. |
numberOfToiletsGuest | Number | null | Number of guest toilets. |
floor | Number | null | Floor the property is on. |
numberOfFloors | Number | null | Total number of floors in the building. |
ceilingHeight | Number | null | Ceiling height in metres. |
cubage | Number | null | Volume of the building in m³. |
utilizationRatio | Number | null | Plot utilisation ratio (Ausnützungsziffer). |
yearBuilt | Number | null | Year of construction. |
yearLastRenovated | Number | null | Year of last renovation. |
Characteristics — features (Boolean | null)
| Field | Description |
|---|---|
isNewBuilding | New-build property. |
isOldBuilding | Listed as old/historic building. |
isGroundFloor | Ground-floor unit. |
hasParking | Parking space included. |
hasGarage | Garage included. |
hasBalcony | Has balcony. |
hasTerrace | Has terrace. |
hasGarden | Has garden. |
hasElevator | Building has elevator. |
isWheelchairAccessible | Wheelchair accessible. |
hasNiceView | Listed as having a notable view. |
hasMountainView | Has mountain view. |
isQuiet | Listed as quiet location. |
isSunny | Listed as sunny. |
isChildFriendly | Child-friendly. |
arePetsAllowed | Pets allowed. |
hasWashingMachine | Washing machine included or connection available. |
hasTumbleDryer | Tumble dryer included or connection available. |
hasDishwasher | Dishwasher included. |
hasFireplace | Has fireplace. |
hasCableTv | Cable TV connection. |
hasChargingStation | EV charging station available. |
isMinergieGeneral | Minergie energy efficiency certified (general). |
isMinergieCertified | Minergie Plus / Eco certified. |
Images & media
| Field | Type | Description |
|---|---|---|
imageUrls | Array | All listing photo URLs (typically 10–20+ per property). |
imageCount | Number | Number of photos. |
floorPlanUrls | Array | PDF floor plan URLs where provided. |
virtualTourUrl | String | null | Virtual tour link where provided. |
Agent & agency
| Field | Type | Description |
|---|---|---|
agentName | String | null | Listing agent full name. |
agentPhone | String | null | Agent phone number. |
agentEmail | String | null | Agent email address. |
agentAvatarUrl | String | null | Agent profile photo URL. |
agencyId | String | null | Homegate agency / lister ID. |
agencyLogoUrl | String | null | Agency logo image URL. |
New construction
| Field | Type | Description |
|---|---|---|
isNewConstruction | Boolean | null | Part of a new construction project. |
newConstructionType | String | null | Project type, e.g. "NEW_CONSTRUCTION_LIGHT". |
projectUrl | String | null | Developer project website URL. |
Description
| Field | Type | Description |
|---|---|---|
descriptionText | String | null | Full property description as plain text. |
descriptionHtml | String | null | Full description as HTML. |
descriptionMarkdown | String | null | Full description as Markdown. |
Dates & metadata
| Field | Type | Description |
|---|---|---|
publishDate | String | null | Publication date (YYYY-MM-DD). |
publishDateISO | String | null | Publication date in ISO 8601 format. |
contentHash | String | MD5 fingerprint of id + title + price for change detection. |
isRepost | Boolean | Always false. |
originalPublishDate | null | Reserved. |
originalUrl | null | Reserved. |
source | String | Always "homegate.ch". |
scrapedAt | String | ISO timestamp of when this record was scraped. |
Example output record
{"id": "4002873083","url": "https://www.homegate.ch/kaufen/immobilien/objekt4002873083","title": "4.5-Zimmer-Wohnung im OG mit zwei Balkonen","offerType": "BUY","propertyType": "immobilien","categories": ["APARTMENT", "FLAT"],"listingType": "PREMIUM","platforms": ["homegate", "immoscout24", "alleimmobilien", "home", "anibis"],"price": 1650600,"currency": "CHF","priceText": "CHF 1.650.600","livingSpace": null,"totalFloorSpace": 112,"lotSize": 1778,"numberOfRooms": 4.5,"numberOfBathrooms": 2,"floor": 1,"yearBuilt": 2026,"isNewBuilding": true,"street": "Eichacherstrasse 21","postalCode": "8904","locality": "Aesch ZH","canton": "Zürich","latitude": 47.339204,"longitude": 8.442492,"hasBalcony": true,"hasElevator": true,"hasGarage": true,"hasMountainView": true,"isSunny": true,"isQuiet": true,"isChildFriendly": true,"arePetsAllowed": true,"isWheelchairAccessible": true,"imageUrls": ["https://media2.homegate.ch/listings/v2/e218sub/4002873083/image/9cc62bc8.jpg","https://media2.homegate.ch/listings/v2/e218sub/4002873083/image/37c2a85b.jpg"],"imageCount": 16,"floorPlanUrls": ["https://media2.homegate.ch/listings/v2/e218sub/4002873083/document/6956d46f.pdf"],"virtualTourUrl": "https://kuula.co/share/collection/7Ml1y?...","agentName": "Ramona Schiesser","agentPhone": "+41556104746","agentEmail": "ramona.schiesser@lerchpromotionen.ch","agencyId": "e218sub","agencyLogoUrl": "https://media2.homegate.ch/t_customer_logo/logos/l_e218sub_v2.jpg","isNewConstruction": true,"newConstructionType": "NEW_CONSTRUCTION_LIGHT","projectUrl": "https://ameichacher.ch/","descriptionText": "Ruhe, Sonne und eine beeindruckende Weitsicht ...","descriptionHtml": "<p>Ruhe, Sonne...</p>","descriptionMarkdown": "Ruhe, Sonne ...","publishDate": "2026-01-26","publishDateISO": "2026-01-26T17:03:33.924Z","contentHash": "a3f9c12e4b7d8e1f","isRepost": false,"source": "homegate.ch","scrapedAt": "2026-05-06T10:00:00.000Z"}
Examples
All buy listings in Zürich:
{"cantons": ["kanton-zuerich"],"propertyType": "immobilien","maxItems": 200}
Apartments in Bern and Genf:
{"cantons": ["kanton-bern", "kanton-genf"],"propertyType": "wohnung","maxItems": 500}
Custom search URL (with price and rooms filter set in Homegate):
{"startUrls": [{ "url": "https://www.homegate.ch/kaufen/immobilien/kanton-zuerich/trefferliste?pr=500000-1500000&nrooms=3-5" }],"maxItems": 100}
Recent new listings across all of Switzerland:
{"propertyType": "immobilien","daysOld": 7,"maxItems": 1000}
💰 Pricing
$1.50 per 1,000 results — you only pay for successfully retrieved listings.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.50 |
| 10,000 | ~$15.00 |
| 100,000 | ~$150.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Performance
| Run size | Approx. time |
|---|---|
| 200 listings | 1–2 min |
| 1,000 listings | 5–8 min |
| 5,000 listings | 25–40 min |
Known limitations
- Only buy (for-sale) listings are available — rental listings (
/mieten) are not accessible from the scraper infrastructure. - Pagination is capped at 50 pages (1,000 results) per search URL. To exceed this, combine multiple canton filters or use
startUrlswith different search configurations. - Publish dates are available only when Homegate includes them in the server-rendered data.
Technical details
- Source: window.INITIAL_STATE SSR injection (Vue/Pinia) — pure JSON-in-HTML, zero CSS selectors
- Memory: 256 MB
- Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request
- v2.0: Removed cheerio; full image galleries, agent data, and 20+ new fields extracted entirely from SSR state
Additional services
Need a custom actor, additional filters, scheduled runs, or integration support?.nl](mailto:info@unfencedgroup.nl) — we build on request.
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