# Comparis.ch Real Estate & Car Scraper (`parsebird/comparis-ch-scraper`) Actor

Scrape Comparis.ch property and car listings — prices, rooms, area, address, mileage, fuel type, and contact details. Export as JSON, CSV, or Excel.

- **URL**: https://apify.com/parsebird/comparis-ch-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Real estate, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Comparis.ch Real Estate & Car Scraper

Extract property and vehicle listing data from [Comparis.ch](https://www.comparis.ch/), Switzerland's leading comparison platform — covering both the **Comparis Immobilien** real estate marketplace and the **Comparis Carfinder** vehicle marketplace from a single actor.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Paste any Comparis property (rent or buy) or Carfinder search URL and get structured data back — prices, rooms, living area, address, mileage, fuel type, contact details, and images — with optional detail-page enrichment for full specs.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
parsebird/comparis-ch-scraper on Apify. Call: ApifyClient("TOKEN").actor("parsebird/comparis-ch-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: startUrl (string, required — a Comparis property result URL from comparis.ch/immobilien, or a Comparis Carfinder URL from comparis.ch/carfinder; category is auto-detected from the URL), results_wanted (integer, default 20, max listings to save), max_pages (integer, default 3, result pages to fetch), includeDetails (boolean, default false, best-effort detail-page enrichment — adds a separate detail-enriched charge per listing), proxyConfiguration (object, default {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "CH"}, residential proxy used by default and strongly recommended). Full actor spec: fetch via GET https://api.apify.com/v2/acts/parsebird~comparis-ch-scraper (Bearer TOKEN). Get token: https://console.apify.com/account/integrations
```

### What is Comparis.ch Real Estate & Car Scraper?

**Comparis.ch Real Estate & Car Scraper** extracts structured listing data from [Comparis.ch](https://www.comparis.ch/), Switzerland's largest comparison service, without you having to click through hundreds of pages by hand. Give it a Comparis search URL and it returns clean, structured data for every listing on the results pages — property (rent or buy) from **comparis.ch/immobilien**, or vehicles from **comparis.ch/carfinder**.

Use it as a **Comparis.ch API alternative** to get Swiss real estate and vehicle data in JSON, CSV, or Excel. No coding required — paste your search URL, click Start, and download results. Or integrate via the [Apify API](https://docs.apify.com/api/v2) to automate data collection at scale.

### What can Comparis.ch Real Estate & Car Scraper do?

- 🏠 **Property listings** — rent or buy, from Comparis Immobilien, with price, rooms, living area, floor, address, and agency contact
- 🚗 **Vehicle listings** — new or used cars from Comparis Carfinder, with make, model, mileage, fuel type, transmission, and seller contact
- 🔍 **Any saved search** — copy any filtered Comparis search URL (location, price range, rooms, make, model, and every other Comparis filter) straight from your browser
- 📄 **Multi-page pagination** — control how many result pages to fetch with `max_pages`
- 🔎 **Best-effort detail enrichment** — optionally open each listing's detail page for full specs, attributes, price breakdowns, and richer contact/vendor information
- 🔄 **Schedule recurring runs** — monitor new listings and price changes with [Apify scheduling](https://docs.apify.com/platform/schedules)
- 🔗 **API access and integrations** — connect to Google Sheets, Zapier, Make, webhooks, or any workflow via the Apify API

### What data can you extract from Comparis.ch?

#### Property fields (Comparis Immobilien)

| Field | Description |
|-------|-------------|
| `ad_id` | Comparis property ad ID |
| `detail_url` | Comparis detail page URL |
| `title` | Listing title |
| `property_type` | Property type label (e.g. Wohnung, Haus) |
| `deal_type` | `rent` or `buy` |
| `price` / `price_text` | Numeric price and human-readable price |
| `rooms` | Number of rooms |
| `area_sqm` | Living area in m² |
| `address`, `postal_code`, `city` | Location details |
| `partner_name` | Source portal or advertiser name |
| `image_urls` | Property image URLs |
| `description` | Plain-text property description |
| `main_data`, `attributes`, `price_information` | Full spec breakdown (with `includeDetails`) |
| `contact_information` | Contact form and vendor details |

#### Vehicle fields (Comparis Carfinder)

| Field | Description |
|-------|-------------|
| `ad_id` | Comparis car ad ID |
| `detail_url` | Comparis car detail page URL |
| `make`, `model`, `type` | Vehicle make, model, and trim |
| `price` / `price_text` | Numeric asking price and human-readable price |
| `market_price` | Comparis market price estimate |
| `mileage` / `mileage_text` | Numeric and human-readable mileage |
| `fuel_type`, `transmission`, `power` | Technical specs |
| `matriculation_date` | First registration |
| `location` | Seller location |
| `partner_name` | Source portal or advertiser name |
| `image_urls` | Vehicle image URLs |
| `overview`, `technical_details`, `features` | Full spec breakdown (with `includeDetails`) |
| `contact_information` | Contact and advertiser details |

### How to scrape Comparis.ch

1. Go to [Comparis.ch](https://www.comparis.ch/) and run a search — property rentals/sales under **Immobilien**, or vehicles under **Carfinder**
2. Apply whatever filters you need (location, price, rooms, make, model, and so on)
3. Copy the resulting URL from your browser's address bar
4. Open [Comparis.ch Real Estate & Car Scraper](https://apify.com/parsebird/comparis-ch-scraper) on Apify Store and click **Try for free**
5. Paste the URL into **Start URL**
6. Set **Results wanted** and **Max pages**
7. Turn on **Include details** if you need full specs and contact info per listing
8. Click **Start** and wait for the run to finish
9. Download your data in **JSON, CSV, Excel**, or connect via the **Apify API**

#### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/comparis-ch-scraper").call(run_input={
    "startUrl": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22SiteId%22%3A0%7D",
    "results_wanted": 50,
    "max_pages": 5,
    "includeDetails": True,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"{item.get('title')} — {item.get('price_text')} — {item.get('city', item.get('location'))}")
```

#### JavaScript API example

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("parsebird/comparis-ch-scraper").call({
    startUrl: "https://en.comparis.ch/carfinder/marktplatz",
    results_wanted: 50,
    max_pages: 5,
    includeDetails: true,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.log(`${item.title ?? item.make + " " + item.model} — ${item.price_text}`);
});
```

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | string | **Yes** | — | A Comparis property result URL (comparis.ch/immobilien) or a Comparis Carfinder URL (comparis.ch/carfinder) |
| `results_wanted` | integer | No | `20` | Maximum number of listings to save |
| `max_pages` | integer | No | `3` | Maximum number of result pages to fetch from the provided URL |
| `includeDetails` | boolean | No | `false` | Attempt best-effort detail-page enrichment for each listing (charged separately, see [Pricing](#how-much-does-it-cost-to-scrape-comparisch)) |
| `proxyConfiguration` | object | No | `{"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "CH"}` | Optional proxy settings — residential proxy used by default and strongly recommended |

### Output example

Property listing:

```json
{
    "listing_category": "property",
    "ad_id": 37405415,
    "detail_url": "https://www.comparis.ch/immobilien/marktplatz/details/show/37405415",
    "title": "EINFAMILIENHAUS D2 – PERFEKTE BALANCE AUS NACHHALTIGKEIT UND STIL",
    "property_type": "Haus",
    "deal_type": "rent",
    "price_text": "CHF 3'900",
    "city": "Allmendingen b. BE"
}
```

Vehicle listing:

```json
{
    "listing_category": "car",
    "ad_id": 33194046,
    "detail_url": "https://en.comparis.ch/carfinder/marktplatz/details/show/33194046",
    "title": "BMW X4M X4M xDrive Steptronic",
    "make": "BMW",
    "model": "X4M",
    "price_text": "CHF 53,900",
    "mileage_text": "30,000 km",
    "fuel_type": "Hybrid",
    "partner_name": "Carmarket"
}
```

Both examples are abbreviated for brevity — full items also include address/location, rooms or mileage, description, `image_urls`, and (with `includeDetails` enabled) `contact_information` plus full spec breakdowns. Download results in JSON, HTML, CSV, or Excel.

### Use cases

- 📈 **Swiss real estate market analysis** — track rent and sale prices, price-per-m², and inventory across Swiss municipalities
- 🚘 **Used car market research** — compare asking prices against Comparis's own market-price estimate, by make and model
- 💼 **Investment and relocation research** — build filtered shortlists of properties or vehicles matching your exact criteria
- 📇 **Lead generation** — extract advertiser and vendor contact details for outreach
- 🔄 **Price monitoring** — schedule recurring runs to catch new listings and price drops as soon as they appear
- 🔗 **Data pipeline integration** — feed listings into CRMs, valuation models, or BI dashboards via the Apify API

### How much does it cost to scrape Comparis.ch?

| Event | Free plan | Bronze / Silver / Gold |
|-------|-----------|-------------------------|
| `listing-scraped` (per listing) | $0.0009 | $0.0008 |
| `detail-enriched` (per listing, only with `includeDetails` on) | $0.018 | $0.015 |

One `listing-scraped` event is charged each time a property or vehicle listing is saved to the dataset — you only pay for listings actually returned. With `includeDetails` off (the default), that's the only charge: about $0.80–$0.90 per 1,000 listings. Turning `includeDetails` on adds one `detail-enriched` event per listing whose detail page was successfully fetched — detail pages need an extra page load and more proxy bandwidth per listing, so that event is priced separately rather than raising the cost for everyone. Apify offers a **free trial** with platform credits, enough to scrape several thousand listings at no cost.

### How it works

1. Detects whether your `startUrl` targets Comparis Immobilien (property) or Comparis Carfinder (vehicles)
2. Opens the results page in a headless browser through Apify Proxy, rotating fingerprint and IP on retry to get past Comparis.ch's bot protection
3. Reads listing data straight from the page's server-rendered data — no fragile CSS-selector scraping
4. Paginates through additional result pages up to `max_pages`, until `results_wanted` is reached
5. Optionally opens each listing's detail page for full spec, attribute, and contact enrichment
6. Pushes each listing to the Apify dataset

### FAQ

**Which Comparis.ch URLs can I use as Start URL?**
Any property result URL from `comparis.ch/immobilien` (rent or buy) or any Carfinder URL from `comparis.ch/carfinder`, including ones with filters applied — location, price range, rooms, make, model, and so on. Just copy the URL from your browser after running the search on Comparis.ch.

**What's the difference with `includeDetails` on vs off?**
Off (default), you get everything shown on the results page — price, rooms/mileage, address/location, images, description — for just the `listing-scraped` price. On, the actor also opens each listing's detail page for full specs (`main_data`/`attributes`/`price_information` for property, `overview`/`technical_details`/`features` for vehicles) and richer contact information, which adds one `detail-enriched` charge per listing (see [Pricing](#how-much-does-it-cost-to-scrape-comparisch)). It's best-effort and slower, since Comparis.ch's anti-bot layer occasionally blocks an individual detail page — you're only charged for listings actually enriched.

**Why does this scraper recommend a residential proxy?**
Comparis.ch runs an aggressive anti-bot layer across the entire site. Apify's residential proxy group gives the most reliable results — it's the default in the input schema.

**How many listings can I scrape per run?**
Set `results_wanted` and `max_pages` as high as you need. Larger runs use more compute time and proxy bandwidth.

**Can I schedule recurring scrapes?**
Yes. Use [Apify scheduling](https://docs.apify.com/platform/schedules) to run daily, weekly, or at any custom interval, and pair it with webhooks or integrations to automate your pipeline.

**Can I access the data via API?**
Yes. Every run produces a dataset accessible via the [Apify API](https://docs.apify.com/api/v2) — integrate with Python, JavaScript, Google Sheets, Zapier, Make, or any HTTP-capable tool.

### Is it legal to scrape Comparis.ch?

This actor extracts publicly available data from Comparis.ch. Scraping public data is generally considered legal based on recent court rulings, including the US Ninth Circuit's decision in *hiQ Labs v. LinkedIn*. However, you're responsible for ensuring your use of scraped data complies with applicable laws, Comparis.ch's Terms of Service, and data protection regulations including the Swiss FADP and GDPR. Do not use extracted personal or contact data for unsolicited outreach or purposes incompatible with the original collection context. For more information, read Apify's blog post on [web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Other ParseBird real estate scrapers

| Actor | Target site | Region |
|-------|------------|--------|
| [Comparis.ch Real Estate & Car Scraper](https://apify.com/parsebird/comparis-ch-scraper) | Comparis.ch | 🇨🇭 Switzerland |
| [Fotocasa Scraper](https://apify.com/parsebird/fotocasa-scraper) | Fotocasa.es | 🇪🇸 Spain |
| [Funda.nl Scraper](https://apify.com/parsebird/funda-scraper) | Funda.nl | 🇳🇱 Netherlands |

Browse all ParseBird actors on the [Apify Store](https://apify.com/parsebird).

# Actor input Schema

## `startUrl` (type: `string`):

A Comparis property result URL (e.g. from comparis.ch/immobilien) or a Comparis Carfinder URL (e.g. from comparis.ch/carfinder). Copy the URL straight from your browser's address bar after running a search on Comparis.ch.

## `results_wanted` (type: `integer`):

Maximum number of listings to save to the dataset.

## `max_pages` (type: `integer`):

Maximum number of result pages to fetch from the provided Start URL. Each page holds up to 10 listings.

## `includeDetails` (type: `boolean`):

Open each listing's detail page to enrich it with extra fields (full specs, contact info). Adds a separate, higher-priced charge per listing (see Pricing in the README) since it needs an extra page load. Best-effort — slower and not guaranteed for every listing since Comparis.ch's anti-bot layer occasionally blocks individual detail pages; you're only charged for listings actually enriched.

## `proxyConfiguration` (type: `object`):

Comparis.ch is protected by an aggressive anti-bot service that blocks datacenter IPs almost immediately. Residential proxies are strongly recommended and used by default.

## Actor input object example

```json
{
  "startUrl": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22SiteId%22%3A0%2C%22RootPropertyTypes%22%3A%5B%5D%2C%22PropertyTypes%22%3A%5B%5D%2C%22RoomsFrom%22%3Anull%2C%22RoomsTo%22%3Anull%2C%22FloorSearchType%22%3A0%2C%22LivingSpaceFrom%22%3Anull%2C%22LivingSpaceTo%22%3Anull%2C%22PriceFrom%22%3Anull%2C%22PriceTo%22%3Anull%2C%22ComparisPointsMin%22%3A0%2C%22ShowComparisPoints%22%3Anull%2C%22AdAgeMax%22%3A0%2C%22AdAgeInHoursMax%22%3Anull%2C%22Keyword%22%3A%22%22%2C%22WithImagesOnly%22%3Anull%2C%22WithPointsOnly%22%3Anull%2C%22Radius%22%3Anull%2C%22MinAvailableDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22MinChangeDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22LocationSearchString%22%3Anull%2C%22Sort%22%3A11%2C%22HasBalcony%22%3Afalse%2C%22HasTerrace%22%3Afalse%2C%22HasFireplace%22%3Afalse%2C%22HasDishwasher%22%3Afalse%2C%22HasWashingMachine%22%3Afalse%2C%22HasLift%22%3Afalse%2C%22HasParking%22%3Afalse%2C%22PetsAllowed%22%3Afalse%2C%22MinergieCertified%22%3Afalse%2C%22WheelchairAccessible%22%3Afalse%2C%22LowerLeftLatitude%22%3Anull%2C%22LowerLeftLongitude%22%3Anull%2C%22UpperRightLatitude%22%3Anull%2C%22UpperRightLongitude%22%3Anull%2C%22SwapProperty%22%3A1%7D",
  "results_wanted": 20,
  "max_pages": 3,
  "includeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CH"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrl": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22SiteId%22%3A0%2C%22RootPropertyTypes%22%3A%5B%5D%2C%22PropertyTypes%22%3A%5B%5D%2C%22RoomsFrom%22%3Anull%2C%22RoomsTo%22%3Anull%2C%22FloorSearchType%22%3A0%2C%22LivingSpaceFrom%22%3Anull%2C%22LivingSpaceTo%22%3Anull%2C%22PriceFrom%22%3Anull%2C%22PriceTo%22%3Anull%2C%22ComparisPointsMin%22%3A0%2C%22ShowComparisPoints%22%3Anull%2C%22AdAgeMax%22%3A0%2C%22AdAgeInHoursMax%22%3Anull%2C%22Keyword%22%3A%22%22%2C%22WithImagesOnly%22%3Anull%2C%22WithPointsOnly%22%3Anull%2C%22Radius%22%3Anull%2C%22MinAvailableDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22MinChangeDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22LocationSearchString%22%3Anull%2C%22Sort%22%3A11%2C%22HasBalcony%22%3Afalse%2C%22HasTerrace%22%3Afalse%2C%22HasFireplace%22%3Afalse%2C%22HasDishwasher%22%3Afalse%2C%22HasWashingMachine%22%3Afalse%2C%22HasLift%22%3Afalse%2C%22HasParking%22%3Afalse%2C%22PetsAllowed%22%3Afalse%2C%22MinergieCertified%22%3Afalse%2C%22WheelchairAccessible%22%3Afalse%2C%22LowerLeftLatitude%22%3Anull%2C%22LowerLeftLongitude%22%3Anull%2C%22UpperRightLatitude%22%3Anull%2C%22UpperRightLongitude%22%3Anull%2C%22SwapProperty%22%3A1%7D",
    "results_wanted": 20,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "CH"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/comparis-ch-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrl": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22SiteId%22%3A0%2C%22RootPropertyTypes%22%3A%5B%5D%2C%22PropertyTypes%22%3A%5B%5D%2C%22RoomsFrom%22%3Anull%2C%22RoomsTo%22%3Anull%2C%22FloorSearchType%22%3A0%2C%22LivingSpaceFrom%22%3Anull%2C%22LivingSpaceTo%22%3Anull%2C%22PriceFrom%22%3Anull%2C%22PriceTo%22%3Anull%2C%22ComparisPointsMin%22%3A0%2C%22ShowComparisPoints%22%3Anull%2C%22AdAgeMax%22%3A0%2C%22AdAgeInHoursMax%22%3Anull%2C%22Keyword%22%3A%22%22%2C%22WithImagesOnly%22%3Anull%2C%22WithPointsOnly%22%3Anull%2C%22Radius%22%3Anull%2C%22MinAvailableDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22MinChangeDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22LocationSearchString%22%3Anull%2C%22Sort%22%3A11%2C%22HasBalcony%22%3Afalse%2C%22HasTerrace%22%3Afalse%2C%22HasFireplace%22%3Afalse%2C%22HasDishwasher%22%3Afalse%2C%22HasWashingMachine%22%3Afalse%2C%22HasLift%22%3Afalse%2C%22HasParking%22%3Afalse%2C%22PetsAllowed%22%3Afalse%2C%22MinergieCertified%22%3Afalse%2C%22WheelchairAccessible%22%3Afalse%2C%22LowerLeftLatitude%22%3Anull%2C%22LowerLeftLongitude%22%3Anull%2C%22UpperRightLatitude%22%3Anull%2C%22UpperRightLongitude%22%3Anull%2C%22SwapProperty%22%3A1%7D",
    "results_wanted": 20,
    "max_pages": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "CH",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/comparis-ch-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrl": "https://www.comparis.ch/immobilien/result/list?requestobject=%7B%22DealType%22%3A10%2C%22SiteId%22%3A0%2C%22RootPropertyTypes%22%3A%5B%5D%2C%22PropertyTypes%22%3A%5B%5D%2C%22RoomsFrom%22%3Anull%2C%22RoomsTo%22%3Anull%2C%22FloorSearchType%22%3A0%2C%22LivingSpaceFrom%22%3Anull%2C%22LivingSpaceTo%22%3Anull%2C%22PriceFrom%22%3Anull%2C%22PriceTo%22%3Anull%2C%22ComparisPointsMin%22%3A0%2C%22ShowComparisPoints%22%3Anull%2C%22AdAgeMax%22%3A0%2C%22AdAgeInHoursMax%22%3Anull%2C%22Keyword%22%3A%22%22%2C%22WithImagesOnly%22%3Anull%2C%22WithPointsOnly%22%3Anull%2C%22Radius%22%3Anull%2C%22MinAvailableDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22MinChangeDate%22%3A%221753-01-01T00%3A00%3A00%22%2C%22LocationSearchString%22%3Anull%2C%22Sort%22%3A11%2C%22HasBalcony%22%3Afalse%2C%22HasTerrace%22%3Afalse%2C%22HasFireplace%22%3Afalse%2C%22HasDishwasher%22%3Afalse%2C%22HasWashingMachine%22%3Afalse%2C%22HasLift%22%3Afalse%2C%22HasParking%22%3Afalse%2C%22PetsAllowed%22%3Afalse%2C%22MinergieCertified%22%3Afalse%2C%22WheelchairAccessible%22%3Afalse%2C%22LowerLeftLatitude%22%3Anull%2C%22LowerLeftLongitude%22%3Anull%2C%22UpperRightLatitude%22%3Anull%2C%22UpperRightLongitude%22%3Anull%2C%22SwapProperty%22%3A1%7D",
  "results_wanted": 20,
  "max_pages": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "CH"
  }
}' |
apify call parsebird/comparis-ch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/comparis-ch-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hEM0mlCjnEue5ztXb/builds/O7CdfweS9IYRf8Ilh/openapi.json
