# Immovlan Listings Scraper ($0.50/1K) (`carabain-digital/immovlan-listings`) Actor

Scrape property listings from Immovlan.be, the Belgian real-estate portal: price, type, city, EPC label, price-update flag and status for sale and rent. Optional full details (street, coordinates, area, bedrooms, description, agent) and price history. No proxy needed.

- **URL**: https://apify.com/carabain-digital/immovlan-listings.md
- **Developed by:** [Carabain Digital](https://apify.com/carabain-digital) (community)
- **Categories:** Real estate, Lead generation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.30 / 1,000 listings

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

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

## What's an Apify Actor?

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

#### What is Immovlan Listings Scraper?

**Immovlan Listings Scraper** scrapes **property listings from Immovlan ([immovlan.be](https://immovlan.be))**, one of Belgium's main property portals with about 40,000 properties for sale and thousands for rent, listed directly by estate agents and by private sellers. Search for sale or rent by **location, price, property type, rooms and living area**, or paste a search URL from the site, and get clean, flat listing data as JSON, CSV, Excel, XML or HTML. Prefilled example: 20 listings, ready in a few seconds. Costs **$0.50 per 1,000 listings**. Add-ons: full details for $1.00 per 1,000 and price history for $1.00 per 1,000.

- 🔎 **Search like on the site**: location (municipality with suburbs, postcode, province or region), buy or rent, price, property type, bedrooms, living area
- ⚡ **Fast and cheap**: no browser, no proxy needed, around 20 listings per second
- 🏷️ **Status and price flags**: `available`, `under_offer`, `sold`, `rented`, plus Immovlan's **Price updated** flag and other ribbons
- 📚 **Full details on demand**: street, coordinates, area, bedrooms, description, listing date and agent
- 🧱 **Beyond 1,000 results**: Immovlan caps every search at 1,000 results; this Actor splits big searches by price band automatically
- 📈 **Price history on demand**: switch on **Price history** and schedule the Actor to see price cuts and status changes between runs
- 🧩 **One real-estate schema for several sites**: same field names as our other Belgian and Dutch property scrapers
- 🔌 **Connect anywhere**: API, schedules, webhooks, Google Sheets, Make, Zapier, MCP / AI agents

#### What data can I extract from Immovlan?

<table>
<tr><td>🆔 Stable listing ID and URL</td><td>💶 Price (or monthly rent), price type</td></tr>
<tr><td>🏠 Property type and listing type</td><td>🔖 Status: available, under offer, sold, rented</td></tr>
<tr><td>📍 Address, postcode, city, region</td><td>🧭 Latitude and longitude</td></tr>
<tr><td>📐 Living and plot area</td><td>🛏️ Rooms, bedrooms, bathrooms</td></tr>
<tr><td>⚡ Energy label</td><td>🏗️ Year built</td></tr>
<tr><td>🖼️ Photos</td><td>🧑‍💼 Agent name, phone and page</td></tr>
<tr><td>📅 Listing date</td><td>📝 Description</td></tr>
</table>

Search results carry price, type, postcode, city, region, EPC label, status, photo and a short description (`snippet`). Street, coordinates, areas, bedrooms, bathrooms, year built, listing date, full description and agent come from the detail page and are only filled with the **Full details** add-on. Immovlan does not publish a total room count, so `rooms` is always null. Fields the site does not have stay `null`; every item has the same keys.

#### How do I scrape Immovlan listings?

1. [Create a free Apify account](https://console.apify.com/sign-up) and open this Actor.
2. Enter a **Location** (for example `Gent`), choose **Buy or rent**, and optionally a price range, property type and minimum rooms or living area. Or paste one or more **Search URLs** copied from immovlan.be.
3. Set **Max listings**.
4. Optionally switch on **Full details** (description, agent and more) or **Price history**.
5. Click **Start**, then download the listings from the **Output** tab as JSON, CSV, Excel, XML or HTML.

#### How much does it cost to scrape Immovlan?

You pay per listing that ends up in your dataset: **$0.50 per 1,000 listings**, no subscription. The monthly credit of Apify's Free plan ($5) covers around 10,000 listings without add-ons. Paid plans get volume discounts.

- **Add-on: Full details, $1.00 per 1,000 listings** (off by default). Adds street and house number, coordinates, living and plot area, bedrooms, bathrooms, year built (when the agency gives it), the full description, the listing date, all photos and the agency with its phone number when published. Charged only for listings that were actually enriched.
- **Add-on: Price history, $1.00 per 1,000 listings** (off by default). Adds previous price, price change and a price series to listings you have scraped before. Charged only for listings that already had history; the first sighting is free.
- Failed runs and empty searches cost nothing; you can cap spending with **Maximum cost per run** in the run options.

See the **Pricing** tab for the current prices.

#### ⬇️ Input

| Field | Description |
|---|---|
| **Location** (`location`) | Municipality, postcode, province or region, e.g. `Gent`, `9000`, `Brussels`. Empty = all of Belgium |
| **Buy or rent** (`listing_type`) | `sale` or `rent` |
| **Property type** (`property_type`) | house, apartment, land, commercial or parking |
| **Min / max price** (`min_price`, `max_price`) | In euro; monthly rent for rentals |
| **Min bedrooms** (`min_rooms`) | Minimum bedrooms (Immovlan has no total room count) |
| **Min living area** (`min_living_area_m2`) | Square metres |
| **Search URLs** (`start_urls`) | Search result pages copied from immovlan.be; the other search fields are then ignored |
| **Max listings** (`limit`) | Stop after this many listings |
| **Full details** (`includeDetails`) | Paid add-on |
| **Price history** (`trackHistory`, `historyStoreName`) | Paid add-on, see below |
| **Proxy** (`proxyConfiguration`) | Not needed for Immovlan |

```json
{
    "location": "Gent",
    "listing_type": "sale",
    "property_type": "apartment",
    "limit": 20,
    "includeDetails": false,
    "trackHistory": false
}
```

`min_rooms` filters on **bedrooms**, because Immovlan publishes no total room count. A municipality includes its suburbs, like on the site. When you use **Search URLs**, any language of the site works (`/en/`, `/nl/`, `/fr/`).

#### Price history

Switch on **Price history** (`trackHistory`) to follow price and status changes over time. The Actor keeps a small record per listing in a **named key-value store in your own Apify account** (default name `realestate-history`; change it with `historyStoreName`). We store nothing and run no database.

- **The first run starts the series.** Listings are recorded, nothing is added to the items yet and nothing is charged for history.
- **From the second run on**, every listing that is already in the store gets `first_seen_at`, `previous_price`, `price_change`, `price_change_pct`, `status_changed` and `price_history` (the last 20 changes: `{at, price, status}`). A new point is stored only when the price or the status changed, so the store stays small.
- **Schedule it** (for example daily) with the same search and the same store name. Immovlan marks price changes with a **Price updated** ribbon (`price_updated`), but only history shows by how much and when.
- **Do not run two runs on the same store at the same time**: the last writer wins per listing and a price point can get lost. Use one store per schedule, or run them one after another.
- The store name is shared with our other real-estate Actors, so the same listing keeps one history when it shows up in several of them. Use another `historyStoreName` for a separate series. If you delete the store, the history starts over.
- Price: **$1.00 per 1,000 listings that already had history** (see below).

#### ⬆️ Output

Listings are stored in the default dataset, in the order Immovlan shows them (newest first; new-build projects and "Best of" listings are pinned on top). View them as a table in the **Output** tab or export JSON, CSV, Excel, XML or HTML.

##### Listing from the search results

```json
{
    "id": "immovlan:RBX25865",
    "source": "immovlan",
    "url": "https://immovlan.be/en/detail/apartment/for-sale/9050/gentbrugge/rbx25865",
    "title": "Apartment for sale",
    "listing_type": "sale",
    "property_type": "apartment",
    "status": "available",
    "price": 374000,
    "price_currency": "EUR",
    "price_period": null,
    "price_type": "asking",
    "address": null,
    "street": null,
    "house_number": null,
    "postcode": "9050",
    "city": "Gentbrugge",
    "region": "Flanders",
    "country": "BE",
    "lat": null,
    "lon": null,
    "living_area_m2": null,
    "plot_area_m2": null,
    "rooms": null,
    "bedrooms": null,
    "bathrooms": null,
    "energy_label": "A",
    "construction_year": null,
    "listed_at": null,
    "agent_name": null,
    "agent_phone": null,
    "agent_url": null,
    "image_urls": [
        "https://api-image.immovlan.be/v1/property/RBX25865/thumbnail-webp/Medium?h=280"
    ],
    "description": null,
    "scraped_at": "2026-10-30T15:00:43Z",
    "property_subtype": "apartment",
    "price_max": null,
    "price_updated": false,
    "labels": [
        "New"
    ],
    "snippet": "This property is for sale WITHOUT an estate agent through the Smart Houses concept! For more information or to arrange a viewing, please contact the owner directly at ###"
}
```

##### The same kind of listing with the Full details add-on

```json
{
    "id": "immovlan:RBX27165",
    "source": "immovlan",
    "url": "https://immovlan.be/en/detail/residence/for-sale/2100/deurne/rbx27165",
    "title": "Residence for sale",
    "listing_type": "sale",
    "property_type": "house",
    "status": "available",
    "price": 329000,
    "price_currency": "EUR",
    "price_period": null,
    "price_type": "asking",
    "address": "Stevenslei 87, 2100 Deurne",
    "street": "Stevenslei",
    "house_number": "87",
    "postcode": "2100",
    "city": "Deurne",
    "region": "Flanders",
    "country": "BE",
    "lat": 51.2086829,
    "lon": 4.4679848,
    "living_area_m2": 219,
    "plot_area_m2": 140,
    "rooms": null,
    "bedrooms": 5,
    "bathrooms": 2,
    "energy_label": "C",
    "construction_year": 1919,
    "listed_at": "2026-10-30T02:35:20",
    "agent_name": "Walls Vastgoedmakelaars",
    "agent_phone": "+32 3 233 33 00",
    "agent_url": "https://immovlan.be/en/directory/detail/walls-vastgoedmakelaars/38196",
    "image_urls": [
        "https://api-image.immovlan.be/v1/property/RBX27165/images/1e69780b2792479eb04ea7c422bff0e0.jpg/Large",
        "https://api-image.immovlan.be/v1/property/RBX27165/images/421be58c157248b9961c3ac2c02849a6.jpg/Large"
    ],
    "description": "Deze ruime gezinswoning is gunstig gelegen in Deurne-Zuid, op wandelafstand van winkels, restaurants, openbaar vervoer en het Rivierenhof. Dankzij de tramverbindingen bereikt u vlot Antwerpen-centrum. Ook de belangrijkste invalswegen zijn gemakkelijk bereikbaar. De woning biedt veel ruimte en potent ...",
    "scraped_at": "2026-10-30T15:00:52Z",
    "property_subtype": "residence",
    "price_max": null,
    "price_updated": false,
    "labels": [
        "New"
    ],
    "snippet": "Deze ruime gezinswoning is gunstig gelegen in Deurne-Zuid, op wandelafstand van winkels, restaurants, openbaar vervoer en het Rivierenhof. Dankzij de tramverbindingen bereikt u vlot Antwerpen-centrum. Ook de belangrijkste invalswegen zijn gemakkelijk bereikbaar. De woning biedt veel ruimte en potentieel en dient deels verder gerenoveerd te worden. Reeds belangrijke werken werden uitgevoerd, waaronder het dak, de verwarming, elektriciteit, sanitair en ramen. Vooraan beschikt de woning over een voortuin met ruimte om fietsen te stallen. Via de inkomhal bereikt u de ruime leefruimte, gevolgd door de eetkamer en de bijzonder ruime keuken. Achteraan bevindt zich de 1ste badkamer met ligbad, wastafel en WC. Vanuit de keuken heeft u toegang tot de stadskoer. Op de 1ste tussenverdieping bevindt zich een kamer die nog verder afgewerkt dient te worden. De 1ste verdieping omvat 2 ruime slaapkamers. Op de 2de tussenverdieping vindt u een polyvalente ruimte die ideaal kan worden ingericht als bureau of hobbykamer. Aansluitend bevindt zich de 2de badkamer. De 2de verdieping beschikt over nog eens 2 ruime slaapkamers. Dankzij de praktische indeling en de 5 slaapkamers is deze woning geschikt voor grote gezinnen of wie extra ruimte wenst voor thuiswerk of hobby's. Tot slot beschikt de woning over een ruime kelder, ideaal als extra opslagruimte. EPC C - P- & G-score: A - Stedenbouw Gvg–Wg–Gmo–Gvkr–Gvv. Surf naar ### of bel ### voor meer info of een bezoek ter plaatse."
}
```

##### Fields added by the Price history add-on

```json
{
    "first_seen_at": "2026-10-30T15:09:52+00:00",
    "previous_price": 349000,
    "price_change": -20000,
    "price_change_pct": -5.73,
    "status_changed": false,
    "price_history": [
        {
            "at": "2026-10-30T15:09:52+00:00",
            "price": 349000,
            "status": "available"
        },
        {
            "at": "2026-11-06T15:10:01+00:00",
            "price": 329000,
            "status": "available"
        }
    ]
}
```

#### What can I do with Immovlan data?

- 🔔 **Deal alerts**: schedule a daily run and get new listings and price cuts in Slack, e-mail or Google Sheets
- 📈 **Market monitoring**: follow asking prices per city, property type and size over time
- 🏢 **Lead generation for agents, valuers and renovators**: find listings by price, size and energy label
- 🧠 **AI and analytics**: feed prices, areas and descriptions into valuation models or LLM pipelines

#### Tips for best results

- Immovlan has no sort option for newest, but its default order is newest first, so a small `limit` gives you the latest listings. Project cards ("Project: ...", `property_subtype` = `project`, with a price range) and "Best of" listings are pinned on top; filter them out on `property_subtype` if you only want single properties.
- **The 1,000-result cap**: the site shows at most 1,000 results per search (50 pages of 20). With a `limit` of 1,000 or less you get the first (newest) results. With a higher `limit` and a search that has more than 1,000 hits, the Actor splits the search into price bands (using the min and max price) and collects each band, so the results then come in price bands, cheapest first, and listings without a price are skipped. Another way: run several searches per town or postcode.
- A run of 2,500 listings takes about 2.5 minutes without add-ons.
- Use **Search URLs** for filters the form does not have (for example other regions or extra facets): apply them on immovlan.be, copy the URL from the address bar and paste it.
- Leave **Full details** off for monitoring and counting; switch it on when you need descriptions and contacts.
- Results from the same search are deduplicated by listing ID.

#### Frequently asked questions

##### Can I use Immovlan Listings Scraper with the Apify API?

Yes. Every run has a dataset you can read through the [Apify API](https://docs.apify.com/api/v2). Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("carabain-digital/immovlan-listings").call(run_input={
    "location": "Gent",
    "listing_type": "sale",
    "max_price": 500000,
    "limit": 100,
})
for home in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(home["price"], home["address"] or home["city"], home["url"])
```

JavaScript:

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

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('carabain-digital/immovlan-listings').call({
    location: 'Gent',
    listing_type: 'sale',
    max_price: 500000,
    limit: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'listings');
```

##### Can I use Immovlan Listings Scraper through an MCP server or with AI agents?

Yes. Add it to an AI agent through the [Apify MCP server](https://mcp.apify.com) (`https://mcp.apify.com?tools=carabain-digital/immovlan-listings`), or let the agent find it with `search-actors` and run it with `call-actor`. A small search (`limit` 20) finishes in a few seconds, and the dataset items are flat and small, so agents can read them with `get-dataset-items`. Example prompt: *"Use Immovlan Listings Scraper to find the 20 newest apartments for sale in Gent and summarise the price range and typical living area."*

##### Can I integrate Immovlan data with other apps?

Yes: Google Sheets, Slack, Make, Zapier, n8n, Airtable or your own webhook, through Apify [integrations](https://apify.com/integrations) and [webhooks](https://docs.apify.com/platform/integrations/webhooks). Schedule runs to keep the data fresh.

##### Why is a field empty?

Search results do not show street, coordinates, areas or bedrooms; those come from the detail page and need the **Full details** add-on. `rooms` is always null (Immovlan gives bedrooms, not rooms), `agent_phone` is only filled when the agency puts a number in the listing, and `construction_year` only when the agency fills it in. New-build **project** cards have no detail page of this kind and show a price range (`price` is the lowest price, `price_max` the highest).

##### What does `price_updated` mean?

Immovlan shows a **Price updated** ribbon on listings whose price changed recently. The Actor exposes it as `price_updated` (and in `labels`). For the old and new price, use the **Price history** add-on.

##### Do I get listings from private sellers and agents?

Yes, both. Listings by agencies carry the agency in `agent_name` (with the Full details add-on); private sales show no agent.

##### Do I get duplicates?

Within one run no: results are deduplicated by listing ID. Agents often publish the same property on Immovlan, Immoweb and Zimmo, so across sites match on address or postcode and size.

##### Is it legal to scrape Immovlan?

The Actor only collects publicly visible property listings, the same data anyone can see on immovlan.be. Listings can contain personal data (for example an agent's name or phone number, or a private seller), and rules such as GDPR may apply to how you store and use it. The site's terms of use may also restrict automated access. Check your use case with a lawyer. More background: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

##### Immovlan Listings Scraper not working? Feedback

Open an issue on the **Issues** tab of this Actor with the run link and we will look at it. Feature ideas are welcome there too.

#### Other scrapers by us

| Actor | Covers |
|---|---|
| [Zimmo Listings Scraper](https://apify.com/carabain-digital/zimmo-listings) | Belgium: zimmo.be, with price history and publication date |
| [Immoweb Listings Scraper](https://apify.com/carabain-digital/immoweb-listings) | Belgium: immoweb.be, the largest Belgian property portal |
| [Immovlan Listings Scraper](https://apify.com/carabain-digital/immovlan-listings) | Belgium: immovlan.be |
| [Huislijn Listings Scraper](https://apify.com/carabain-digital/huislijn-listings) | Netherlands: huislijn.nl |
| [Pararius Listings Scraper](https://apify.com/carabain-digital/pararius-listings) | Netherlands: pararius.nl, rentals and sales |
| [Belgium Real Estate Scraper](https://apify.com/carabain-digital/belgium-real-estate) | Zimmo, Immoweb and Immovlan in one run, merged and deduplicated |

⭐ **Does it work well for you?** A review on the Store page helps others find this Actor and helps us keep it maintained.

# Actor input Schema

## `location` (type: `string`):

Belgian municipality, postcode, province or region. Example: `Gent`, `9000` or `Brussels`. A municipality includes its suburbs, like on the site. Leave empty for all of Belgium.

## `listing_type` (type: `string`):

`sale` for properties for sale, `rent` for rentals. Example: `sale`.

## `property_type` (type: `string`):

Only this kind of property. Example: `apartment`. Leave empty for all types.

## `min_price` (type: `integer`):

Minimum price in euro (monthly rent for rentals). Example: `200000`.

## `max_price` (type: `integer`):

Maximum price in euro (monthly rent for rentals). Example: `450000`.

## `min_rooms` (type: `integer`):

Minimum number of bedrooms. Immovlan does not publish a total room count, so `min_rooms` filters on bedrooms. Example: `2`.

## `min_living_area_m2` (type: `integer`):

Minimum living area in square metres. Example: `80`.

## `start_urls` (type: `array`):

Optional. Search result URLs copied from immovlan.be (any language), for filters this form does not have, e.g. `https://immovlan.be/en/real-estate?transactiontypes=for-sale&propertytypes=house&towns=9000-gent`. When set, the other search fields are ignored.

## `limit` (type: `integer`):

Stop after this many listings. The site shows at most 1,000 results per search; above 1,000 the Actor splits the search by price band. Example: `100`. Up to 10,000.

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

Also open each listing's detail page: street and house number, coordinates, living and plot area, bedrooms, bathrooms, construction year (when given), full description, listing date, photos and the agency with phone when published. Adds $1.00 per 1,000 listings on top of the base price. One extra request per listing; new-build project cards have no such page and are not charged.

## `trackHistory` (type: `boolean`):

Remember each listing's price and status in a named storage in your own Apify account and add `previous_price`, `price_change`, `price_change_pct`, `status_changed`, `first_seen_at` and `price_history` to every listing you have seen before. Schedule the Actor to build a series. Adds $1.00 per 1,000 listings that already had history (the first sighting is free). Do not run two runs on the same store at once.

## `historyStoreName` (type: `string`):

Name of the key-value store that keeps the history (lowercase letters, digits and dashes). The same name across runs and across our other real-estate Actors shares one history. Example: `realestate-history`.

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

Immovlan works without a proxy. Enable one only if runs get blocked.

## Actor input object example

```json
{
  "location": "Gent",
  "listing_type": "sale",
  "property_type": "apartment",
  "limit": 20,
  "includeDetails": false,
  "trackHistory": false,
  "historyStoreName": "realestate-history",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

All scraped listings, one item per property.

# 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 = {
    "location": "Gent",
    "listing_type": "sale",
    "property_type": "apartment",
    "limit": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("carabain-digital/immovlan-listings").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 = {
    "location": "Gent",
    "listing_type": "sale",
    "property_type": "apartment",
    "limit": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("carabain-digital/immovlan-listings").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 '{
  "location": "Gent",
  "listing_type": "sale",
  "property_type": "apartment",
  "limit": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call carabain-digital/immovlan-listings --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,carabain-digital/immovlan-listings"
        }
    }
}
```

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/Q8uooRZ1wf0r8E4a9/builds/JaHBzPRUUbyTEIg4J/openapi.json
