Discover/Homegate API
live

Homegate APIHomegate.ch

Search Swiss rental listings on homegate.ch by location, price, rooms, and facilities. Resolve place names, paginate results, and fetch full listing details.

Endpoint health
verified 3h ago
get_listing
search_locations
search_rentals
3/3 passing latest checkself-healing
Endpoints
3
Updated
3h ago

What is the Homegate API?

The Homegate.ch API gives developers access to Swiss rental listings across 3 endpoints. Use search_locations to resolve any Swiss city, canton, postcode, or region to a location ID, then pass that ID to search_rentals to retrieve paginated summaries with price, rooms, surface area, floor type, and facility filters. A third endpoint, get_listing, returns the full detail record for any individual listing.

This call costs1 credit / call— charged only on success
Try it
Place name or postcode to look up, e.g. a city name.
api.parse.bot/scraper/dcd067ab-25e2-4de9-870c-71a1790a679c/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/dcd067ab-25e2-4de9-870c-71a1790a679c/search_locations?query=zurich' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace homegate-ch-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: Homegate.ch rental search — bounded, re-runnable."""
from parse_apis.homegate_ch_api import Homegate, SortOrder, FloorType, ListingNotFound

client = Homegate()

# Resolve a city name to a typed Location.
result = client.locations.search(query="zurich")
print(f"Found {result.total} locations for '{result.query}'")

location = result.locations[0]
print(f"Using: {location.name} ({location.location_id})")

# Search rentals in that location — filters narrow results, limit= caps total items.
for summary in location.rentals.search(
    sort=SortOrder.PRICE_ASC,
    min_rooms=2,
    max_price=2500,
    floor_type=FloorType.NOT_GROUND_FLOOR,
    limit=5,
):
    print(f"  {summary.title} — {summary.rooms} rooms, CHF {summary.rent_gross_monthly}/mo")

# Drill down: take the first hit and fetch full listing details.
hit = location.rentals.search(sort=SortOrder.NEWEST, limit=1).first()
if hit is not None:
    try:
        detail = hit.details()
    except ListingNotFound:
        print(f"Listing {hit.listing_id} was removed before we could fetch it")
    else:
        print(f"\n{detail.title}")
        print(f"  Address: {detail.street}, {detail.postal_code} {detail.locality}")
        print(f"  Rent: CHF {detail.rent_gross_monthly}/mo")
        print(f"  Available from: {detail.available_from}")
        print(f"  Images: {len(detail.images)}")
        if detail.description:
            print(f"  Description: {detail.description[:120]}…")

# Direct point lookup by a known listing id from the search.
if hit is not None:
    full = client.listings.get(listing_id=hit.listing_id)
    print(f"\nDirect lookup: {full.title} (lister: {full.lister_type})")

print("\nexercised: locations.search / rentals.search / details / listings.get")
All endpoints · 3 totalmissing one? ·

Resolves a free-text place name (city, canton, region, postcode) to homegate location ids. Returns up to 10 matching locations ordered by the site's relevance, each with its location_id (the value search_rentals accepts), type (place, canton, zip, ...), multilingual names and center coordinates. A single round trip; an unknown name returns an empty locations array.

Input
ParamTypeDescription
queryrequiredstringPlace name or postcode to look up, e.g. a city name.
Response
{
  "type": "object",
  "fields": {
    "query": "the query as received",
    "total": "integer total matches known to the site (only the first 10 are returned)",
    "locations": "array of location objects: location_id, type, name (English), names (per language de/fr/it/en), url_name, latitude, longitude, parent_ids (containing locations, nearest first)"
  },
  "sample": {
    "data": {
      "query": "bern",
      "total": 83,
      "locations": [
        {
          "name": "Bern",
          "type": "place",
          "names": {
            "de": "Bern",
            "en": "Bern",
            "fr": "Berne",
            "it": "Berna"
          },
          "latitude": 46.94343483557952,
          "url_name": "city-bern",
          "longitude": 7.401645692722384,
          "parent_ids": [
            "geo-region-bern-mittelland",
            "geo-canton-bern",
            "geo-country-switzerland"
          ],
          "location_id": "geo-city-bern"
        },
        {
          "name": "3004",
          "type": "zip",
          "names": {
            "de": "3004",
            "en": "3004",
            "fr": "3004",
            "it": "3004"
          },
          "latitude": 46.969472892561974,
          "url_name": "zip-3004",
          "longitude": 7.4448944214876,
          "parent_ids": [
            "geo-city-bern",
            "geo-region-bern-mittelland",
            "geo-canton-bern",
            "geo-country-switzerland"
          ],
          "location_id": "geo-zipcode-3004"
        }
      ]
    },
    "status": "success"
  }
}

About the Homegate API

Location Resolution and Search

Before querying rentals, use search_locations with a free-text query parameter (city name, postcode, canton, etc.) to get up to 10 matching location objects. Each result includes a location_id (the value accepted by search_rentals), a type field (place, canton, zip, and others), multilingual names in German, French, Italian, and English, plus latitude and longitude. The total field tells you how many matches the site knows about beyond the first 10.

Rental Search Filters and Response Fields

search_rentals accepts one or more location IDs and returns one page of 20 listing summaries. Filter parameters include min_price / max_price (gross monthly CHF), min_rooms / max_rooms, facilities (comma-separated values: balcony, elevator, parking), and floor_type (ground-floor or non-ground-floor). The response carries total_results, page_count, and has_next_page for pagination control. Each listing summary exposes listing_id, url, listing_type (PREMIUM or STANDARD placement), title, net rent, charges, gross monthly rent in CHF, rooms, living space in m², balcony, view, floor, and elevator presence. The applied_filters object echoes exactly which filters the site honoured, and unresolved_location_ids flags any IDs that were not recognised.

Full Listing Detail

get_listing takes a listing_id from search results and returns every summary field plus: an HTML description in English (machine-translated by the site from German, French, or Italian where needed), available_from as an ISO date or null, lister_type (private, semi_professional, or professional), lister_phone or null, a characteristics object containing all structured amenities the lister filled in, an images array of image URLs, and a platforms array listing which portals the listing is published on.

Reliability & maintenanceVerified

The Homegate API is a managed, monitored endpoint for Homegate.ch — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when Homegate.ch changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official Homegate.ch API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
3h ago
Latest check
3/3 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Swiss apartment search tool filtered by city and gross monthly rent range using search_rentals.
  • Alert users when new listings in a specific postcode fall within a room-count range by polling search_rentals with location IDs from search_locations.
  • Compare private-lister versus agency listings by segmenting on the lister_type field from get_listing.
  • Display listing photos and availability dates in a relocation guide by consuming images and available_from from get_listing.
  • Analyse median rents by canton or municipality by aggregating gross_rent values across paginated search_rentals results.
  • Filter listings by elevator and balcony requirements using the facilities parameter in search_rentals for accessibility-focused searches.
  • Resolve ambiguous Swiss place names to canonical location IDs via search_locations before storing user-defined search preferences.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Homegate.ch have an official developer API?+
Homegate.ch does not publish a documented public developer API for third-party use. There is no official API portal or key registration process available to external developers.
What does `search_rentals` return for each listing, and how do I paginate results?+
Each listing summary includes listing_id, url, listing_type (PREMIUM or STANDARD), net rent, monthly charges, gross rent in CHF, rooms, living area in m², and key amenity flags. The response also contains total_results, page_count, and has_next_page. To get the next page, increment the page parameter (1-based); each page holds 20 listings.
Does the API cover properties for sale, or commercial real estate?+
Not currently. The API covers rental listings (apartments and houses for rent) only. Properties for sale and commercial or office listings are not exposed. You can fork the API on Parse and revise it to add endpoints for sale listings or commercial properties.
What is the `lister_type` field in `get_listing`, and what values does it take?+
lister_type classifies who published the listing based on the listing's public metadata. It returns one of four values: private (individual landlord), semi_professional, professional (agency or property manager), or null when the site does not provide enough information to classify the lister.
Are listing descriptions always in English?+
The description field in get_listing is in English. When the original listing text is in German, French, or Italian — as is typical for Swiss listings — the site itself machine-translates it to English before the field is populated. The quality of that translation reflects the site's own translation layer, not a separate translation step.
Page content last updated . Spec covers 3 endpoints from Homegate.ch.
Related APIs in Real EstateSee all →
immoscout24.ch API
Search residential and commercial property listings on ImmoScout24 by location, price, and room count, then access detailed information including images, company details, and property types. Find your ideal property with comprehensive filtering options and complete listing data all in one place.
casa.it API
Search and browse property listings from Casa.it, Italy's real estate marketplace. Retrieve listings by location, price, size, property type, and transaction type (sale or rent), and fetch full details for individual properties including descriptions, photos, features, and publisher information.
comparis.ch API
Search and compare real estate listings, cars, and mortgage interest rates across the Swiss marketplace Comparis.ch with detailed filtering options and property/vehicle information. Get current mortgage rates and access comprehensive details on available properties and cars to make informed buying or financing decisions.
immobiliare.it API
Search Italian property listings for sale or rent, browse real estate agencies, and explore price trends across Italian cities — all via immobiliare.it.
immowelt.de API
Search and browse real estate listings across Germany on Immowelt.de, with access to property details, images, and features for both rentals and sales. Filter results by location and sorting preferences to find properties that match your needs.
hemnet.se API
Search and browse real estate listings from Sweden's leading property portal, retrieving comprehensive property details including prices, specifications, and availability. Access detailed information about thousands of homes and properties to find your next Swedish property or compare market listings.
rew.ca API
Search rental and for-sale properties across Canada, get detailed listing information, explore neighbourhoods, and find real estate agents in your area. Access property details, agent profiles, and neighbourhood data all in one place.
privateproperty.co.za API
Search and browse property listings for sale and rent across South Africa by location, price, features, and size, then view detailed information about specific properties. Get location suggestions to help narrow down your search area.