# Immoscoop Property Search Scraper (`stealth_mode/immoscoop-property-search-scraper`) Actor

Scrape detailed property listings from Immoscoop.be with precision. Collect prices, addresses, images, property types, transaction details, and renovation costs — perfect for real estate analysts, investors, and market researchers tracking the Belgian property market.

- **URL**: https://apify.com/stealth\_mode/immoscoop-property-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 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/platform/actors/running/actors-in-store#pay-per-event

## 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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Immoscoop Property Scraper: Extract Belgian Real Estate Listings

---

### What Is Immoscoop?

Immoscoop.be is Belgium's leading online property portal, featuring thousands of residential and commercial listings across the country. The platform aggregates properties from multiple sources, making it a comprehensive database for real estate professionals. However, manually extracting and analyzing property data is inefficient — the **Immoscoop Property Scraper** automates this workflow, delivering structured property records suitable for market analysis, investment research, and business intelligence.

---

### Overview

The **Immoscoop Property Scraper** extracts detailed property cards from Immoscoop.be search result pages, converting unstructured listings into machine-readable data. It is ideal for:

- **Real estate investors** tracking market trends and identifying opportunities
- **Property analysts** benchmarking prices across regions and property types
- **Real estate platforms** aggregating Belgian listings into custom portals
- **Market researchers** studying housing supply and price dynamics
- **Real estate agencies** monitoring competitor listings and market positioning

The scraper handles pagination automatically, respects rate limits, and provides graceful error handling via optional URL failure tolerance.

---

### Input Format

The scraper accepts a JSON configuration object with three main parameters:

```json
{
  "urls": ["https://www.immoscoop.be/zoeken/te-koop?page=2"],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

#### Parameter Details

| Parameter             | Type             | Description                                                                                                            | Example                                              |
| --------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
| `urls`                | Array of strings | URLs of Immoscoop property list pages to scrape. Supports search results, filtered pages, or paginated results.        | `["https://www.immoscoop.be/zoeken/te-koop?page=2"]` |
| `ignore_url_failures` | Boolean          | If `true`, the scraper continues running even if some URLs fail. If `false`, a single failed URL stops the entire run. | `true` or `false`                                    |
| `max_items_per_url`   | Integer          | Maximum number of property listings to extract per URL. Useful for controlling volume and cost.                        | `200` (max recommended)                              |

#### Usage Tips

- **URL format:** Paste complete Immoscoop search URLs including filters (e.g., location, price range, property type)
- **Pagination:** Each URL is treated independently; use multiple URLs with `?page=1`, `?page=2`, etc. to scrape across pages
- **Item limits:** Set `max_items_per_url` conservatively for initial tests (e.g., `20`), then increase for full runs
- **Reliability:** Enable `ignore_url_failures: true` for bulk scraping to handle temporary network issues

***

### Output Format

#### Data Sample

```json
{
  "id": "1140452",
  "price": {
    "label": "€ 379.000",
    "slug": "379000"
  },
  "address": {
    "postal_code": 2170,
    "city": {
      "id": "256",
      "label": "Merksem",
      "slug": "2170-merksem"
    },
    "municipality": {
      "id": "20",
      "label": "Antwerpen",
      "slug": "antwerpen"
    },
    "visible": true,
    "street": "Flamingostraat ",
    "house_number": {
      "number": 10,
      "extension": null
    },
    "geo": {
      "lat": 51.2586755,
      "long": 4.4374565
    },
    "display_municipality": false,
    "region": {
      "id": 1,
      "name": "Flanders"
    }
  },
  "title": "Huis te koop",
  "images": [
    {
      "url": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-65c4396b94e502b60043f057ac32fe8a-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-31c3f1ba2089d5c36a8ecfff6d317c80-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-9aa68454449c2709c2695129871af04c-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-759bfc13f6b8d8af28b6358b39aee022-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-e5bfa603014bed98878be95ad14d2824-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-a5c019e4862e5a40bda458b57699b525-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-32352ade87dcaa2d2fe8306aa0d9d653-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-1e85372ec26e81f10ba5d1288e186d27-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-9d6a0a62c1955249ba9a31cf60a3e6e1-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-0abf0a851b050e1d512db0fed11fc5e3-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-e3a8091c2c901f4fb544801cc338df96-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-ddcf667f5d19b8bef3752647db259571-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-cd54f945a79117d0a1444d3bb59d543c-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-dc5b125698407fd586def627ff0a10b0-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-d26ca9673143de96a4a7572573d04187-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-0ce8291b10208007e5a3e088f164f1b2-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-242561d50652eba37c533458ad69ecc7-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-a38fe536500fcf0e102a003d49d0655c-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-6e1017411e8258109555cb2594fa82b8-w1280.jpeg"
      }
    },
    {
      "url": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147.jpg",
      "sizes": {
        "320": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147-w320.jpeg",
        "640": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147-w640.jpeg",
        "768": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147-w768.jpeg",
        "1024": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147-w1024.jpeg",
        "1280": "https://images.immoscoop.be/cp-d78f15194c6bf888e4e7b3f1f4c71147-w1280.jpeg"
      }
    }
  ],
  "offer_type": {
    "id": "1",
    "label": "Te Koop",
    "slug": "te-koop"
  },
  "property_type": {
    "id": "1",
    "label": "Huis",
    "slug": "woonhuis"
  },
  "scoop": true,
  "transaction_type": "FIXED",
  "canonical_id": "1140452",
  "office_logo": "https://s3.amazonaws.com/a.storyblok.com/f/151424/231x231/7a7a88dcc0/logo-livitas.jpg",
  "features": [
    {
      "id": "EpcClass",
      "title": "EPC-label",
      "value": "E"
    },
    {
      "id": "livableSurfaceArea",
      "title": "Bewoonbare oppervlakte (m²)",
      "value": "130",
      "unit": "m²"
    },
    {
      "id": "TerrainArea",
      "title": "Perceeloppervlakte (m²)",
      "value": "190",
      "unit": "m²"
    },
    {
      "id": "BedroomNumber",
      "title": "Aantal slaapkamers",
      "value": "3"
    },
    {
      "id": "BathroomNumber",
      "title": "Aantal badkamers",
      "value": "1"
    },
    {
      "id": "ParkingAvailable",
      "title": "Garage / Autostaanplaats",
      "value": "true"
    }
  ],
  "alt_description": "Interesse in deze woning met 3 slaapkamers en een garage? Bekijk de virtuele toer en maak via Livitas.be ONLINE je afspraak.<br />De \"vogeltjeswijk\" is erg in trek omdat het een leuke, rustige en groene omgeving is en toch dichtbij scholen, winkels en openbaar vervoer ligt.<br />De woonkamer geeft uit op de tuin en de keuken is ingericht met een kookvuur op gas, dubbele spoelbak.<br />Achter de tuin is de garage (inclusief de vraagprijs) waar je je fietsen en auto kan stallen. <br />De eerste verdieping is voorzien van 2 slaapkamers en de badkamer met ligbad en douche.<br />Op de zolder is er enorm veel plaats voor de master bedroom en zou je zelfs 2 slaapkamers kunnen maken.<br />De ideale woning voor u en de hele familie.<br />Garage inclusief de prijs !!!<br />Maak snel ONLINE je afspraak via Livitas.be",
  "mandatory_renovation_cost": {
    "value": 7523.88,
    "label": "€ 7.523,88"
  },
  "order": 2,
  "from_url": "https://www.immoscoop.be/zoeken/te-koop?page=2"
}
```

Each property listing returns a structured record with 15 core fields:

#### Identification & Pricing

| Field                       | Meaning                                         | Example            |
| --------------------------- | ----------------------------------------------- | ------------------ |
| `ID`                        | Unique Immoscoop identifier for the property    | `98765432`         |
| `Canonical ID`              | System-wide canonical ID (may differ from `ID`) | `prop-987654`      |
| `Price`                     | Listed sale or rental price in EUR              | `350000` or `1200` |
| `Mandatory Renovation Cost` | Estimated renovation expenses (if disclosed)    | `25000` or `null`  |

#### Property Description

| Field              | Meaning                                | Example                                        |
| ------------------ | -------------------------------------- | ---------------------------------------------- |
| `Address`          | Full street address of the property    | `Rue de la Paix 42, 1000 Bruxelles`            |
| `Title`            | Listing headline or property summary   | `Spacious 3-bedroom apartment in Ixelles`      |
| `Alt Description`  | Alternative or extended description    | `Renovated flat with garden, near metro`       |
| `Features`         | Amenities and property characteristics | `["Balcony", "Basement", "Garden", "Parking"]` |
| `Property Type`    | Category of property                   | `Apartment`, `House`, `Studio`, `Commercial`   |
| `Transaction Type` | Type of property transaction           | `Sale`, `Rental`, `Lease`                      |
| `Offer Type`       | Listing category                       | `Residential`, `Commercial`, `Investment`      |

#### Media & Metadata

| Field         | Meaning                               | Example                                      |
| ------------- | ------------------------------------- | -------------------------------------------- |
| `Images`      | Array of property image URLs          | `["https://cdn.immoscoop.be/img1.jpg", ...]` |
| `Office Logo` | Real estate agency or seller logo URL | `https://cdn.immoscoop.be/logos/agency.png`  |

#### Sorting & Classification

| Field   | Meaning                               | Example                          |
| ------- | ------------------------------------- | -------------------------------- |
| `Scoop` | Immoscoop-specific scoring or ranking | `8.5` (internal relevance score) |
| `Order` | Sort order within the result set      | `1`, `2`, `3`                    |

***

### How to Use

#### Step-by-Step Guide

1. **Identify URLs** — Navigate to Immoscoop.be, apply desired filters (location, price, property type), and copy the URL
2. **Configure scraper** — Paste one or more URLs into the `urls` array
3. **Set limits** — Choose `max_items_per_url` (start with 20–50 for testing, scale to 200 for production)
4. **Enable error handling** — Set `ignore_url_failures: true` for continuous runs
5. **Execute** — Launch the scraper and monitor progress
6. **Export data** — Download results as JSON, CSV, or Excel for analysis

#### Best Practices

- **Test first:** Run with `max_items_per_url: 20` on a single URL to verify output quality
- **Batch URLs strategically:** Combine multiple filter variations into one run instead of running separately
- **Respect delays:** Add small delays between runs to avoid overloading the server
- **Monitor token usage:** Large `max_items_per_url` values consume more platform credits

#### Handling Errors

- If a URL returns no properties, verify the URL is a valid search results page (not a single listing)
- If images fail to load, they may have been deleted; check the original Immoscoop page
- For incomplete data fields (e.g., null `Features`), not all listings disclose detailed amenities

***

### Benefits & Applications

**Market Intelligence:** Track price trends, supply levels, and demand across Belgian cities and neighborhoods in real-time.

**Investment Analysis:** Identify undervalued properties, emerging markets, or portfolio opportunities by comparing renovation costs against sale prices.

**Competitive Monitoring:** Track competitor inventory, pricing strategies, and listing performance within your market segment.

**Data Enrichment:** Combine Immoscoop data with external sources (census, demographics, transport) to build predictive property valuation models.

**Platform Integration:** Feed structured property records into custom real estate websites, mobile apps, or CRM systems.

The **Immoscoop Property Scraper** eliminates weeks of manual research, delivering clean, actionable data for strategic real estate decisions.

***

### Conclusion

The **Immoscoop Property Scraper** is the fastest way to extract and analyze Belgian real estate listings at scale. With 15 data fields covering prices, features, images, and transaction details, it enables investors, analysts, and platforms to make data-driven decisions. Start scraping today and unlock insights into the Belgian property market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.immoscoop.be/zoeken/te-koop?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.immoscoop.be/zoeken/te-koop?page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/immoscoop-property-search-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 = {
    "urls": ["https://www.immoscoop.be/zoeken/te-koop?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/immoscoop-property-search-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 '{
  "urls": [
    "https://www.immoscoop.be/zoeken/te-koop?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/immoscoop-property-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Immoscoop Property Search Scraper",
        "description": "Scrape detailed property listings from Immoscoop.be with precision. Collect prices, addresses, images, property types, transaction details, and renovation costs — perfect for real estate analysts, investors, and market researchers tracking the Belgian property market.",
        "version": "0.0",
        "x-build-id": "vCG5Z3ihU8FpI8P7R"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~immoscoop-property-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-immoscoop-property-search-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/stealth_mode~immoscoop-property-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-immoscoop-property-search-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/stealth_mode~immoscoop-property-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-immoscoop-property-search-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": {
                    "urls": {
                        "title": "URLs of the property list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the property list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
