Comparis APIcomparis.ch ↗
Access Swiss real estate listings, car marketplace data, and live mortgage rates from Comparis.ch via 7 structured endpoints with filters and detail views.
What is the Comparis API?
The Comparis.ch API exposes 7 endpoints covering Swiss real estate listings, car marketplace data, and benchmark mortgage interest rates. Use search_real_estate to query properties by location, price, area, and room count, or get_mortgage_rates to retrieve current term-based rates from multiple Swiss providers. Each domain includes a search endpoint for paginated results and a detail endpoint for full field-level data.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/f21cd4c4-6927-4b2b-96d5-738e8b93b458/get_real_estate_filters' \ -H 'X-API-Key: $PARSE_API_KEY'
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 comparis-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: Comparis.ch SDK — search Swiss real estate, cars, and mortgage rates."""
from parse_apis.comparis_ch_api import (
Comparis, DealType, RealEstateSort, VehicleType, ListingNotFound
)
client = Comparis()
# Fetch available real estate filter vocabulary (deal types, property types, sort options).
filters = client.realestatefilters.get()
print(f"Deal types: {filters.deal_types}, Property types available: {len(filters.property_types)}")
# Search rental apartments in Zurich, sorted by date, capped at 3 results.
for listing in client.realestatelistingsummaries.search(
location="Zurich", deal_type=DealType.RENT, sort=RealEstateSort.DATE_DESC, limit=3
):
print(f" {listing.title} — CHF {listing.price_value}, {listing.property_type_text}")
# Drill into one listing's full details via .first() then .details().
listing = client.realestatelistingsummaries.search(
location="Zurich", deal_type=DealType.RENT, limit=1
).first()
if listing:
detail = listing.details()
print(f"Detail: {detail.title}, rooms={detail.num_rooms}, floor={detail.floor}")
# Typed error handling when fetching a listing by ID.
try:
full = client.realestatelistings.get(ad_id="999999999")
print(f"Found: {full.title}")
except ListingNotFound as exc:
print(f"Listing gone: {exc}")
# Search used cars under CHF 20,000 from 2015+.
for car in client.carlistingsummaries.search(
vehicle_type=VehicleType.USED, price_to=20000, year_from=2015, limit=3
):
print(f" {car.make} {car.model} — CHF {car.price}, {car.vehicle_type}")
# Fetch current mortgage rates and inspect the Comparis benchmark.
rates = client.mortgagerates.get()
print(f"Comparis benchmark rate: {rates.comparis_offer.interest_rate}%")
for term in rates.term_informations[:3]:
print(f" {term.term}y: {term.local_min}%-{term.local_max}%")
print("Exercised: realestatefilters.get / realestatelistingsummaries.search / details / realestatelistings.get / carlistingsummaries.search / mortgagerates.get")
Returns the fixed vocabulary of deal types, property types, and sort options accepted by the real estate search endpoint. No parameters required; the response is static reference data.
No input parameters required.
{
"type": "object",
"fields": {
"deal_types": "object mapping deal type ID string to label",
"sort_options": "object mapping sort ID string to label",
"property_types": "object mapping property type ID string to label"
},
"sample": {
"data": {
"deal_types": {
"10": "Rent",
"20": "Buy"
},
"sort_options": {
"0": "Relevance",
"1": "Price Ascending",
"2": "Price Descending",
"3": "Date Descending"
},
"property_types": {
"1": "Wohnung",
"3": "WG-Zimmer",
"4": "Grundstück",
"5": "Parkplatz, Garage",
"8": "Gewerbeobjekt",
"9": "Bastelraum",
"10": "Haus"
}
},
"status": "success"
}
}About the Comparis API
Real Estate Endpoints
The get_real_estate_filters endpoint returns the static vocabulary of deal type IDs, property type IDs, and sort option IDs you pass into search_real_estate. That search endpoint accepts location (city name or postal code), deal_type, price_to, area_from, area_to, rooms_to, and page for pagination starting at page 1. Note that total_count may be null on some queries. Once you have an AdId from search results, get_real_estate_detail returns the full record: Area, Floor, Price, PriceText, NumRooms, Remarks, a Features array, and source_links.
Car Marketplace Endpoints
get_car_filters returns the list of available car makes as objects with MakeId and DisplayName; the Models, ModelGroups, and AggregatedModels fields are null until a make is passed into search_cars. The search endpoint accepts make, model, vehicle_type, year_from, mileage_to, price_to, and page. Each listing in the results includes AdID, Make, Model, Price, VehicleType, and a Specifications object. get_car_detail resolves a single AdID into structured blocks: MainInformation (make, model, mileage, registration date, condition), PriceInformation (price, market price, original price), Overview (fuel type, transmission, body type, engine), TechnicalDetails (color, weight, emissions, engine size), Features, and ContactInformation (dealer name, address, phone).
Mortgage Rates Endpoint
get_mortgage_rates requires no parameters and returns the current Swiss mortgage rate landscape. ComparisOffer holds the Comparis benchmark rate with InterestRate and ProviderId. ProviderInfos lists individual providers with their rates and product IDs. TermInformations breaks down minimum and maximum rates (both local and service-wide) by term length in years. ProviderFootnotes supplies indexed footnote text for provider-specific conditions.
The Comparis API is a managed, monitored endpoint for comparis.ch — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when comparis.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 comparis.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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor Swiss rental and purchase listing prices across cities using search_real_estate with location and deal_type filters
- Build a property comparison tool using area, room count, and price fields from get_real_estate_detail
- Track used car prices on the Swiss market by querying search_cars with make, year_from, and mileage_to filters
- Display dealer contact information and market price comparisons for specific vehicles using get_car_detail PriceInformation
- Fetch current Swiss mortgage benchmark rates by term and provider for a mortgage calculator using get_mortgage_rates TermInformations
- Populate filter UIs for property or car searches using the static vocabulary from get_real_estate_filters and get_car_filters
- Alert users when listings matching their criteria appear by polling search_real_estate with price and area bounds
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.