# Zimmo Scraper \[Only $1.5💰] | Belgian Property | Prices (`ahmed_jasarevic/zimmo-be-scraper`) Actor

Scrape Belgian real estate listings from zimmo.be — houses, apartments, offices and land for sale and rent. Full detail records: price, EPC energy label, flooding & planning info, GPS coordinates and agency contacts. The cheapest Zimmo scraper on Apify, from $0.0015 per result.

- **URL**: https://apify.com/ahmed\_jasarevic/zimmo-be-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.45 / 1,000 results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Zimmo Be Scraper

**Scrape Belgian real estate listings from [zimmo.be](https://www.zimmo.be) — houses, apartments, offices and land — for sale and rent across all of Belgium.** Get price, EPC energy label, flooding & planning info, GPS coordinates, photos and agency contacts in clean structured JSON, ready for Belgian property market analysis, price monitoring and PropTech databases.

The actor calls Zimmo's internal Search API (`search-api.zimmo.be`) with an anonymous session token and pages with the site's own `searchAfter` cursor — **100 full detail records per request**, no browser, no HTML pagination wall. At **$0.0015 per result**, it is the most affordable Zimmo scraper in the Apify Store (compared: $0.0025–$0.02 per listing on competing Zimmo actors).

### Belgian Real Estate Use Cases

- **Belgian property price monitoring** — track asking prices, price changes and new listings per municipality, postal code or region
- **Real estate market research & analysis** — build a full dataset of the Belgian housing market (price, surface, EPC, flooding risk, cadastral income) for valuation models or PropTech
- **Agency & investor lead generation** — collect listing agency contacts (name, email, phone, website) for outreach and business development
- **EPC and flooding-risk screening** — filter properties by energy label (A–G) and flooding/planning data for renovation investment strategies
- **Relocation & moving services** — assemble sale/rent inventory with GPS coordinates for client matching in target municipalities
- **New-build & project monitoring** — watch new construction listings and construction-year-filtered segments across Flanders, Wallonia and Brussels

### How It Works

Paste one or more zimmo.be search or region URLs into `startUrls`. The actor resolves each URL to the site's internal Search API filter, pages through results with Zimmo's own `searchAfter` cursor, and writes one full-detail record per listing to your Apify dataset. Proxy is optional — the Search API usually works without one.

### Build a Belgian Property Database Without an Official API

Zimmo.be is one of Belgium's two largest real estate portals (100,000+ active listings). It has no public API for listing data. This actor reads the same structured JSON the site's own frontend uses, so you get a complete, analysis-ready dataset — no API key, no login, no browser.

### Input

| Field | Type | Required | Default | Notes |
| --- | --- | --- | --- | --- |
| `startUrls` | array | ✅ | — | Zimmo.be search or region URLs, e.g. `https://www.zimmo.be/nl/zoek/te-koop`, `https://www.zimmo.be/nl/gent-9000/te-koop/`, `https://www.zimmo.be/fr/wavre-1300/a-vendre/maison/`. Both Dutch and French URLs work. |
| `maxResults` | integer | – | 50 | Maximum unique listings to export (default 50, max 100,000). Free users are capped at 10. |
| `proxy` | object | – | off | Enable only if www.zimmo.be blocks HTML filter extraction from your start URL. |

#### Example Input

```json
{
    "startUrls": [{ "url": "https://www.zimmo.be/nl/zoek/te-koop" }],
    "maxResults": 500
}
```

### Output

One dataset row per listing, with the full detail record: price, location, surfaces, rooms, EPC label and value, cadastral income, flooding and planning info, photos, and agency contacts.

| Field | Description |
| --- | --- |
| `code` / `zimmoCode` | Zimmo listing code (e.g. `LN4EA`) |
| `transactionType` | `FOR_SALE` / `FOR_RENT` |
| `propertyType` / `propertySubType` | House, apartment, land, commercial, … |
| `price` / `priceUnit` | Asking price in EUR |
| `address`, `postalCode`, `city`, `province` | Full location |
| `latitude`, `longitude` | GPS coordinates |
| `bedrooms`, `bathrooms` | Room counts |
| `livingSurface`, `plotSurface` | Surfaces in m² |
| `epcLabel`, `epcValue` | EPC energy label (A–G) and value in kWh/m² |
| `cadastralIncome` | Belgian cadastral income |
| `constructionYear`, `condition` | Building details |
| `flooding`, `planning` | Flood-risk and planning-permit info |
| `description`, `photos` | Listing text and image URLs |
| `agency` | Agency name, email, phone, website |
| `listingType` | `summary` or `detail` |
| `scrapedAt` | Scrape timestamp |

#### Example Output

```json
{
    "code": "LN4EA",
    "url": "https://www.zimmo.be/nl/assebroek-8310/te-koop/huis/LN4EA/",
    "transactionType": "FOR_SALE",
    "propertyType": "HOUSE",
    "propertySubType": "VILLA",
    "price": 425000,
    "address": "Kerkstraat 12",
    "postalCode": "8310",
    "city": "Assebroek",
    "latitude": 51.195,
    "longitude": 3.256,
    "bedrooms": 4,
    "bathrooms": 2,
    "livingSurface": 180,
    "plotSurface": 420,
    "epcLabel": "C",
    "epcValue": 180,
    "cadastralIncome": 1200,
    "flooding": { "floodingValues": ["NONE"] },
    "photos": ["https://files.zimmo.be/backend-api/abc/photo1.jpg"],
    "agency": {
        "name": "Immo Test BV",
        "email": "info@immotest.be",
        "phone": "+32 50 12 34 56"
    },
    "listingType": "detail",
    "scrapedAt": "2026-09-23T09:00:00.000Z"
}
```

Download the dataset as **JSON, HTML, CSV or Excel**, or pull it via the Apify API.

### Integrations & Automation

Use the actor's **API endpoint** from your own scripts, connect **webhooks** on run completion, or trigger it from **Zapier / Make** (via Apify's official integrations). For Belgian property price tracking, schedule the actor **daily or weekly** per municipality — recurring runs keep your dataset current and build a price-change history over time.

### Related Actors

- [Immoweb Scraper — Belgium Property, Prices & Agencies](https://apify.com/logiover/immoweb-scraper) — Belgians' largest property portal, same use cases
- [Immoweb.be Belgium Property Scraper](https://apify.com/haketa/immoweb-scraper) — Immoweb data with detail enrichment
- [Storia Ro Scraper](https://apify.com/ahmed_jasarevic/storia-ro-scraper) — Romanian real estate listings (sale & rent) by the same developer
- [Zimmo Scraper](https://apify.com/dz_omar/zimmo-scraper) — another Zimmo option with raw API output

### FAQ

#### Why use this actor instead of Zimmo's website or an official API?

Zimmo.be offers no public API for listing data. Browsing the site gives you one page at a time, with no export. This actor queries the site's internal Search API directly and returns full detail records in bulk — up to 100 listings per request — with pagination handled automatically.

#### What are alternatives to this actor for Belgian property data?

The main alternative is scraping **Immoweb** (Belgium's largest portal) for the same market. On this store, that means other actors like [Immoweb Scraper — Belgium Property, Prices & Agencies](https://apify.com/logiover/immoweb-scraper). For Zimmo specifically, competing actors exist at $0.0025–$0.02 per listing; this actor is priced at **$0.0015 per result** while returning the same full-detail record set.

#### Which Belgian regions are supported?

All of Belgium: Flanders, Wallonia and Brussels. Use region or postal-code URLs (e.g. `/nl/gent-9000/te-koop/`) or the site's exact advanced-search filters via the `?search=<base64>` parameter. Both Dutch (`/nl/.../te-koop/`) and French (`/fr/.../a-vendre/`) URLs are supported.

#### Does the actor return EPC and flooding data?

Yes — every full detail record includes the **EPC energy label (A–G) and value (kWh/m²)**, plus **flooding risk** and **planning permit** information where available on the listing. This makes it suitable for energy-renovation and flooding-risk screening use cases.

#### How can I get agency contact details for lead generation?

The `agency` field contains the listing agency's name, email, phone and website for every listing. Run per municipality or filter segment to build targeted lead lists.

#### Is scraping zimmo.be legal?

Web scraping operates in a legal gray area. This actor only reads publicly available listing data; you are responsible for complying with zimmo.be's Terms of Service and applicable law (including GDPR when processing personal data such as agency contacts).

### For AI Agents & LLM Apps

**Purpose:** Returns structured Belgian real estate listings (price, address, surfaces, EPC label, flooding/planning, GPS, photos, agency contacts) from zimmo.be search and region URLs.

**Minimal input:**

```json
{ "startUrls": [{ "url": "https://www.zimmo.be/nl/zoek/te-koop" }] }
```

**Output fields:** `code`, `url`, `transactionType`, `propertyType`, `propertySubType`, `price`, `address`, `postalCode`, `city`, `province`, `latitude`, `longitude`, `bedrooms`, `bathrooms`, `livingSurface`, `plotSurface`, `epcLabel`, `epcValue`, `cadastralIncome`, `constructionYear`, `condition`, `flooding`, `planning`, `description`, `photos`, `agency`, `listingType`, `sourceUrl`, `scrapedAt`.

**Behaviors an agent should know:**

- `startUrls` is required; both Dutch (`te-koop`) and French (`a-vendre`) URLs are accepted and resolved to the internal Search API.
- Free-tier runs are capped at 10 results; paid accounts up to 100,000 per run.
- Proxy is optional and should be left off unless HTML filter extraction is blocked.
- **Billing (pay-per-result):** $0.0015 per listing in the dataset + $0.00005 actor start.

### SEO Keywords

zimmo scraper, zimmo.be scraper, belgian real estate data, belgium property listings, house prices belgium, apartment prices belgium, belgian property market analysis, zimmo api, belgium real estate database, epc energy label belgium, flooding risk property belgium, belgian property lead generation, property for sale belgium, rental listings belgium, zimmo brussels, zimmo antwerp, brussels real estate data, flemish property data, wallonia real estate, cadastral income data, belgium proptech data, property price monitoring belgium

### Legal & Compliance Disclaimer

This actor is an independent tool and is **not affiliated with, endorsed by, or sponsored by Zimmo** (zimmo.be).

It accesses only **publicly available listing pages and Zimmo's public Search API** — no login bypass, no CAPTCHA solving, no credentials. It reads data the website already displays publicly.

Users are responsible for their own compliance with zimmo.be's Terms of Service and applicable data-protection law. Output includes agency contact details (names, emails, phone numbers) that should not be used for unsolicited commercial outreach in violation of applicable law (e.g. GDPR, CAN-SPAM). This section is informational, not legal advice.

# Actor input Schema

## `startUrls` (type: `array`):

Zimmo.be search or region URLs. The actor resolves each URL to the site's internal Search API filter and pages with the searchAfter cursor (100 full listings per request). Examples:

- https://www.zimmo.be/nl/zoek/te-koop (all for sale)
- https://www.zimmo.be/nl/gent-9000/te-koop/ (postal code)
- https://www.zimmo.be/fr/wavre-1300/a-vendre/maison/
- https://www.zimmo.be/nl/zoeken/?search=<base64-filter> (exact site filter)

## `maxResults` (type: `integer`):

Maximum number of unique listings to export (full detail records from the Search API). Free users are capped at 10.

## `proxy` (type: `object`):

Optional. The Search API usually works without a proxy; enable this only if www.zimmo.be blocks HTML filter extraction from your start URL.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.zimmo.be/nl/zoek/te-koop"
    }
  ],
  "maxResults": 50,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.zimmo.be/nl/zoek/te-koop"
        }
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/zimmo-be-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 = {
    "startUrls": [{ "url": "https://www.zimmo.be/nl/zoek/te-koop" }],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/zimmo-be-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 '{
  "startUrls": [
    {
      "url": "https://www.zimmo.be/nl/zoek/te-koop"
    }
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/zimmo-be-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/zimmo-be-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/osvczKyhtzoqqwOzi/builds/OFgjkjSm4KFhauBac/openapi.json
