# Flatfox.ch Property Scraper (`shahidirfan/flatfox-ch-property-scraper`) Actor

Scrape Swiss real estate listings from Flatfox.ch. Extract prices, locations, rooms, property types, amenities & agent details. Ideal for market analysis, competitive intelligence, investment research & proptech data enrichment. Clean, structured JSON output.

- **URL**: https://apify.com/shahidirfan/flatfox-ch-property-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Real estate, Developer tools, Automation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Flatfox.ch Property Scraper

Extract property listing data from Flatfox.ch for real estate research, lead tracking, pricing analysis, and market monitoring. Collect Swiss rental and sale listing details including prices, addresses, room counts, floor area, agency details, photos, publication dates, and listing links.

### Features

- **Flatfox search URL support** - Start from a Flatfox search page with map bounds and collect matching listings.
- **Listing URL support** - Extract a specific Flatfox property page by pasting its listing URL.
- **Keyword filtering** - Filter listings by city, address, title, description, category, or agency.
- **Pagination controls** - Limit saved records and page depth for fast test runs or larger exports.
- **Clean dataset** - Empty and unavailable values are removed from saved items.
- **Rich listing fields** - Capture pricing, property type, location, cover photo, gallery image URLs, dates, references, and agency information.

---

### Use Cases

#### Real Estate Market Research
Track Swiss property listings across cities and regions. Compare prices, property categories, room counts, and availability signals for rental or sale analysis.

#### Competitive Monitoring
Monitor listings by location or agency to understand supply, pricing movement, and new inventory. Use scheduled runs to keep a current dataset.

#### Lead Generation
Collect property URLs, agency names, addresses, and listing metadata for structured outreach workflows. Filter by city or category to keep results relevant.

#### Data Analysis
Export Flatfox listings to spreadsheets, BI tools, or databases. Build dashboards for rent levels, listing volume, property types, and city-level trends.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `startUrl` | String | No | Flatfox Switzerland search URL | Flatfox search URL or property listing URL to scrape. |
| `keyword` | String | No | - | Text filter matched against listing content, address, city, category, and agency. |
| `results_wanted` | Integer | No | `20` | Maximum number of listings to save. |
| `max_pages` | Integer | No | `5` | Maximum listing pages to fetch when no bounded Flatfox search URL is provided. |
| `proxyConfiguration` | Object | No | Apify Proxy disabled | Optional proxy settings for the run. |

---

### Output Data

Each dataset item can contain:

| Field | Type | Description |
|-------|------|-------------|
| `id` | Number | Flatfox listing ID |
| `title` | String | Public listing title |
| `url` | String | Full Flatfox listing URL |
| `price_display` | Number | Displayed listing price |
| `price_unit` | String | Price unit, such as monthly |
| `rent_net` | Number | Net rent when available |
| `rent_charges` | Number | Additional charges when available |
| `rent_gross` | Number | Gross rent when available |
| `object_category` | String | Property category |
| `object_type` | String | Detailed property type |
| `number_of_rooms` | String | Number of rooms |
| `space_display` | Number | Displayed floor area |
| `floor` | Number | Floor number |
| `city` | String | City |
| `public_address` | String | Public address |
| `latitude` | Number | Latitude |
| `longitude` | Number | Longitude |
| `agency_name` | String | Listing agency name |
| `image_url` | String | Primary listing image |
| `Gallery_Urls` | Array | Flat JSON array of gallery image URLs |
| `published` | String | Publication timestamp |

---

### Usage Examples

#### Search URL Extraction

Collect listings from a Flatfox search page:

```json
{
    "startUrl": "https://flatfox.ch/en/search/?east=10.492340&north=48.630528&south=44.951347&take=48&west=5.956080",
    "results_wanted": 50
}
````

#### Keyword Filter

Collect listings that mention Zurich:

```json
{
    "keyword": "Zurich",
    "results_wanted": 20,
    "max_pages": 5
}
```

#### Single Listing

Extract one property page:

```json
{
    "startUrl": "https://flatfox.ch/en/flat/hegibachstrasse-104-8032-zurich/86149381/",
    "results_wanted": 1
}
```

***

### Sample Output

```json
{
    "id": 86149381,
    "title": "Hegibachstrasse 104, 8032 Zurich - CHF 2,500 incl. utilities per month",
    "url": "https://flatfox.ch/en/flat/hegibachstrasse-104-8032-zurich/86149381/",
    "offer_type": "RENT",
    "object_category": "APARTMENT",
    "object_type": "ROOF_FLAT",
    "price_display": 2500,
    "price_unit": "monthly",
    "rent_net": 2350,
    "rent_charges": 150,
    "number_of_rooms": "2.0",
    "space_display": 61,
    "floor": 4,
    "city": "Zurich",
    "public_address": "Hegibachstrasse 104, 8032 Zurich",
    "agency_name": "Example Agency AG",
    "Gallery_Urls": [
        "https://flatfox.ch/thumb/ff/2026/07/example-1.jpg?alias=listing_search",
        "https://flatfox.ch/thumb/ff/2026/07/example-2.jpg?alias=listing_search"
    ],
    "published": "2026-07-13T16:37:45+05:00"
}
```

***

### Tips for Best Results

#### Use Flatfox Search URLs

- Open Flatfox.ch, set the map and filters you need, then paste the resulting URL.
- Bounded search URLs are best for city or region-focused collection.

#### Start Small

- Use `20` results for testing.
- Increase `results_wanted` after confirming the output matches your needs.

#### Filter Carefully

- Use a city, neighborhood, agency name, or property type as the keyword.
- If results are too narrow, remove the keyword and rely on the search URL.

***

### Integrations

Connect your data with:

- **Google Sheets** - Review and filter listings in a spreadsheet.
- **Airtable** - Build a searchable property database.
- **Slack** - Send alerts for new matching listings.
- **Webhooks** - Send records to your own systems.
- **Make** - Create automated monitoring workflows.
- **Zapier** - Trigger actions from finished runs.

#### Export Formats

- **JSON** - For developers and data pipelines.
- **CSV** - For spreadsheet analysis.
- **Excel** - For reporting and sharing.
- **XML** - For system integrations.

***

### Frequently Asked Questions

#### Can I scrape a specific Flatfox listing?

Yes. Paste the Flatfox property URL into `startUrl` and set `results_wanted` to `1`.

#### Can I scrape by city?

Yes. Use a Flatfox search URL for the city or enter the city name in `keyword`.

#### Why do some fields not appear in every result?

Some listings do not provide every field. Empty values are removed from the saved dataset.

#### How many listings can I collect?

You can set `results_wanted` to the number you need. Smaller runs finish faster and are better for testing.

#### Can I schedule this scraper?

Yes. Use Apify schedules to run the actor repeatedly and monitor changes over time.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [API Reference](https://docs.apify.com/api/v2)
- [Scheduling Runs](https://docs.apify.com/schedules)

***

### Legal Notice

This actor is designed for legitimate data collection purposes. Users are responsible for ensuring compliance with Flatfox.ch terms of service and applicable laws. Use data responsibly and respect website limits.

# Actor input Schema

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

Flatfox search URL or listing detail URL. Search URLs with map bounds are supported.

## `keyword` (type: `string`):

Optional text filter matched against listing title, description, city, address, category, and agency.

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

Maximum number of listings to save.

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

Maximum number of paginated listing pages to fetch when no bounded Flatfox search URL is provided.

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

Optional proxy settings. Residential proxy can be used for higher reliability on Apify.

## Actor input object example

```json
{
  "startUrl": "https://flatfox.ch/en/search/?east=10.492340&north=48.630528&south=44.951347&take=48&west=5.956080",
  "results_wanted": 20,
  "max_pages": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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://flatfox.ch/en/search/?east=10.492340&north=48.630528&south=44.951347&take=48&west=5.956080",
    "results_wanted": 20,
    "max_pages": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/flatfox-ch-property-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://flatfox.ch/en/search/?east=10.492340&north=48.630528&south=44.951347&take=48&west=5.956080",
    "results_wanted": 20,
    "max_pages": 5,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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://flatfox.ch/en/search/?east=10.492340&north=48.630528&south=44.951347&take=48&west=5.956080",
  "results_wanted": 20,
  "max_pages": 5
}' |
apify call shahidirfan/flatfox-ch-property-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/flatfox-ch-property-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Flatfox.ch Property Scraper",
        "description": "Scrape Swiss real estate listings from Flatfox.ch. Extract prices, locations, rooms, property types, amenities & agent details. Ideal for market analysis, competitive intelligence, investment research & proptech data enrichment. Clean, structured JSON output.",
        "version": "0.0",
        "x-build-id": "VeliSeg3RgN1iSopN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~flatfox-ch-property-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-flatfox-ch-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/shahidirfan~flatfox-ch-property-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-flatfox-ch-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/shahidirfan~flatfox-ch-property-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-flatfox-ch-property-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrl": {
                        "title": "Flatfox URL",
                        "type": "string",
                        "description": "Flatfox search URL or listing detail URL. Search URLs with map bounds are supported."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Optional text filter matched against listing title, description, city, address, category, and agency."
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of listings to save.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of paginated listing pages to fetch when no bounded Flatfox search URL is provided.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy settings. Residential proxy can be used for higher reliability on Apify.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
