# Funda Scraper - Netherlands Real Estate Data (`logiover/funda-scraper`) Actor

Funda.nl unofficial API alternative: scrape Dutch property listings without login, export makelaar leads and prices to CSV, JSON and Excel.

- **URL**: https://apify.com/logiover/funda-scraper.md
- **Developed by:** [Logiover](https://apify.com/logiover) (community)
- **Categories:** Real estate, Lead generation
- **Stats:** 10 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.99 / 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.

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

# README

## Funda.nl Scraper — Netherlands Real Estate Data, Prices & Makelaar Leads (No API)

![Funda Scraper — Netherlands Real Estate Data Extractor](https://cdn-icons-png.flaticon.com/128/619/619153.png)

![Apify Actor](https://img.shields.io/badge/Apify-Actor-00A67E?logo=apify\&logoColor=white) ![No API key](https://img.shields.io/badge/No%20API%20key-required-2ea44f) ![Pay per result](https://img.shields.io/badge/Pricing-Pay%20per%20result-1C7ED6) ![Real Estate](https://img.shields.io/badge/Category-Real%20Estate-8B5CF6) ![Export](https://img.shields.io/badge/Export-JSON%20%7C%20CSV%20%7C%20Excel-F59E0B)

***

Turn any **Funda.nl** search into a clean dataset. Funda is the **#1 real-estate portal in the Netherlands** — virtually every house and apartment for sale (**koop**) or rent (**huur**) is listed there. This scraper reads the site's own structured listing data and returns **asking price (EUR), full address, city & postcode, living area, plot & volume in m², rooms, bedrooms, energy label** and — crucially — **the makelaar (estate agent)** behind every property. It paginates the entire result set of any search. **Fast, no browser hassle, no API key, no login.**

> ### 🏆 Why this Funda scraper?
>
> **29 fields per listing** · **thousands of listings per run** · reads Funda's own structured listing data · Apify **residential proxy** ready (default) · export to JSON / CSV / Excel. The unofficial **Funda.nl API alternative** for Dutch real-estate market research, valuation/comps and estate-agent lead generation.

It's really **two tools in one**: a **Dutch property dataset** for market analytics, price tracking, comps, dashboards and ML — *and* a **Netherlands real-estate lead engine**, because every listing carries the **makelaar name, broker ID and agency page URL**, so a single run becomes a targeted agent outreach list.

### ✨ What this Actor does / Key features

- 🏠 **Every property type** — houses (huis) and apartments (appartement), for sale (koop) or rent (huur), across all of the Netherlands.
- 🔗 **URL-driven filtering** — paste Funda search URLs and every filter encoded in them (area, price, property type, buy/rent) is respected automatically.
- 💰 **Full pricing** — asking price in EUR, the raw price text (e.g. `€ 695.000 kosten koper`) and currency, ready for price-per-m² analysis.
- 📐 **Size & layout** — living area, plot area and volume in m²/m³, plus rooms, bedrooms and bathrooms.
- ⚡ **Energy & build data** — energy label (A–G), build year, availability status and acceptance (aanvaarding).
- 📍 **Full location** — street address, city, province/region and the postcode, plus the canonical Funda listing URL and main photo.
- 🎯 **Makelaar lead data** — estate-agent name, broker ID, broker association (nvm / vbo / vastgoedpro) and the agency's Funda page URL for every listing.
- 🖼️ **Images** — main listing photo URL plus the image count.
- 🛡️ **Proxy support** — Apify Proxy integration with **residential** recommended (and enabled by default) for the highest success rate on Funda.
- 📊 **Ready-made table view** — the Output tab ships a `Listings Overview` view (address, price, m², rooms, energy label, makelaar) out of the box.

### 🚀 Quick start (3 steps)

1. **Configure** — set your filters on Funda.nl (area, price, type, koop/huur), copy the URL from the address bar and paste it into `searchUrls`. Add as many URLs as you like.
2. **Run** — click **Start**. The Actor paginates the full result set of every search and streams listings into your dataset.
3. **Get your data** — open the **Output** tab and export to **JSON, CSV, Excel or XML**, or pull it via the Apify API.

### 📥 Input

Give the Actor at least one Funda search URL in `searchUrls`. Everything else is optional.

#### Example — apartments & houses for sale in Amsterdam

```json
{
  "searchUrls": ["https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D"],
  "maxResults": 500,
  "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

#### Example — buy + rent across multiple cities in one run

```json
{
  "searchUrls": [
    "https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D",
    "https://www.funda.nl/zoeken/huur?selected_area=%5B%22rotterdam%22%5D"
  ],
  "maxResults": 2000,
  "maxResultsPerSearch": 1000
}
```

#### Example — rentals only (makelaar lead list)

```json
{
  "searchUrls": ["https://www.funda.nl/zoeken/huur?selected_area=%5B%22utrecht%22%5D"],
  "listingType": "huur",
  "maxResults": 800
}
```

| Field | Type | Description |
|-------|------|-------------|
| `searchUrls` | array | Funda.nl search URLs copied straight from the site (e.g. `.../zoeken/koop?...` for buy, `.../zoeken/huur?...` for rent). All filters — area, price, property type, buy/rent — are read from the URL. **Required.** |
| `maxResults` | integer | Global cap on listings across all search URLs. `0` = no limit (a single search can span hundreds of pages). |
| `maxResultsPerSearch` | integer | Per-search-URL cap. `0` = no per-search cap. |
| `listingType` | string | Optionally restrict to `koop` (buy) or `huur` (rent). `any` keeps whatever the URL returns. |
| `useProxy` | boolean | Route requests through Apify Proxy. Residential is strongly recommended for Funda and is the default. |
| `proxyConfiguration` | object | Apify Proxy settings. Residential gives the highest success rate on Funda. |
| `maxConcurrency` | integer | How many search URLs to process in parallel (1–10). |

> **How to get a Funda search URL:** open [funda.nl](https://www.funda.nl), apply the filters you want (city/area, price range, property type, koop or huur), then copy the resulting URL from your browser's address bar and paste it into `searchUrls`. Every filter encoded in the URL is honored, and the Actor paginates the whole result set.

### 📤 Output

One clean row per listing — **29 fields**, exportable to JSON, CSV, Excel or XML. Here is a trimmed sample record:

```json
{
  "id": "44488041",
  "url": "https://www.funda.nl/detail/koop/amsterdam/huis-ortler-91/44488041/",
  "listingType": "koop",
  "title": "Ortler 91",
  "address": "Ortler 91",
  "city": "Amsterdam",
  "region": "Noord-Holland",
  "postcode": "1060 NL",
  "price": 695000,
  "priceCurrency": "EUR",
  "priceRaw": "€ 695.000 kosten koper",
  "propertyType": "Eengezinswoning, tussenwoning",
  "livingArea": 145,
  "plotArea": 117,
  "volume": 462,
  "rooms": 5,
  "bedrooms": 4,
  "bathrooms": 2,
  "buildYear": 1995,
  "energyLabel": "A",
  "status": "Beschikbaar",
  "acceptance": "In overleg",
  "makelaar": "Nieuw West Makelaardij",
  "brokerId": "61885",
  "brokerAssociation": "nvm",
  "makelaarUrl": "https://www.funda.nl/makelaars/amsterdam/61885-nieuw-west-makelaardij/",
  "image": "https://cloud.funda.nl/valentina_media/230/121/950_1440x960.jpg",
  "imagesCount": 6,
  "scrapedAt": "2026-07-06T15:31:24.950Z"
}
```

<details>
<summary><b>📋 Full field reference (click to expand)</b></summary>

| Field | Description |
|-------|-------------|
| `id` | Funda listing ID |
| `url` | Full listing detail URL |
| `listingType` | `koop` (buy) or `huur` (rent) |
| `title` | Listing title |
| `address` | Street address |
| `city` | City |
| `region` | Province / region |
| `postcode` | Postcode |
| `price` | Asking price (EUR) |
| `priceCurrency` | Currency |
| `priceRaw` | Raw price text (e.g. `€ 695.000 kosten koper`) |
| `propertyType` | Property type (e.g. Eengezinswoning, appartement) |
| `livingArea` | Living area in m² |
| `plotArea` | Plot area in m² |
| `volume` | Volume in m³ |
| `rooms` | Number of rooms |
| `bedrooms` | Number of bedrooms |
| `bathrooms` | Number of bathrooms |
| `buildYear` | Year built |
| `energyLabel` | Energy label (A–G) |
| `status` | Availability status (e.g. Beschikbaar) |
| `acceptance` | Acceptance / aanvaarding |
| `makelaar` | Estate agent name (when present in page copy) |
| `brokerId` | Funda broker (estate agency) numeric ID |
| `brokerAssociation` | Agency association, e.g. nvm / vbo / vastgoedpro |
| `makelaarUrl` | Link to the agency's Funda page |
| `image` | Main image URL |
| `imagesCount` | Number of images |
| `scrapedAt` | Scrape timestamp (ISO 8601) |

</details>

### 💡 Use cases

- **Estate-agent lead gen** — build outreach lists of Dutch makelaars by area, price band or property type, deduplicated on `brokerId`.
- **Market & price analytics** — track price-per-m², inventory and koop-vs-huur across Dutch cities and provinces.
- **Investor & developer research** — map supply, build year and energy labels per neighbourhood.
- **Comps & valuation / AVM** — feed living area, plot, rooms and price into Dutch pricing models.
- **Portals & aggregators** — power a property feed or dashboard from a scheduled run.
- **Energy-transition analysis** — segment inventory by energy label to study retrofit demand and pricing.

### 👥 Who uses it

Estate agencies & proptech teams · property investors & flippers · mortgage and valuation analysts · market researchers & data journalists · lead-gen agencies building makelaar contact lists · portal & aggregator builders.

### 💰 Pricing

This Actor runs on a simple **pay-per-result** model — you pay for the listings you extract, with no separate Apify platform fees to calculate. Try it on the **free tier** first, then scale up. See the **Pricing** tab on this page for the current rate.

### ❓ Frequently Asked Questions

**Do I need a Funda account or API key?**
No. The Actor reads public listing data — no login, no token, no API key. Only an Apify account is required.

**Is scraping Funda.nl allowed?**
The Actor collects only publicly available listing data. You are responsible for complying with Funda's terms and your local regulations (including how you use estate-agent details under GDPR).

**Does it handle both koop (buy) and huur (rent)?**
Yes. Paste a `/zoeken/koop?...` or `/zoeken/huur?...` URL — or mix both in one run. Use the `listingType` filter to force one or the other.

**How do I filter by city, price or property type?**
Apply the filters on Funda itself, then copy the resulting URL into `searchUrls`. Every filter encoded in the URL is respected, and the Actor paginates the whole result set.

**Why is a residential proxy recommended?**
Funda is anti-bot sensitive. Routing through Apify **residential** proxy (the default) gives by far the highest success rate. It is enabled out of the box.

**How much data can I get?**
You can scrape thousands of listings per run. A single Funda search can span hundreds of pages; use `maxResults` and `maxResultsPerSearch` to cap volume, or pass multiple search URLs to benchmark across cities in one run.

#### Is this a Funda.nl API alternative?

Yes. Funda has no public API, so this Actor works as an unofficial Funda.nl API alternative — it reads the site's own structured listing data and returns clean, machine-readable rows with no API key.

#### Can I scrape Funda without an API or login?

Yes. The scraper reads public funda.nl listing data without any login, account or API key, paginating the full result set of your search behind Apify residential proxy.

#### How do I export Funda listings to CSV or JSON?

Run the Actor on any Funda search URL, then download the results from the Output tab as CSV, JSON, Excel or XML — or pull them straight from the Apify API. Every property and makelaar field is included.

#### How do I get the makelaar (estate agent) from Funda listings?

Every scraped listing includes the makelaar name, broker ID and agency page URL, so one run over a Funda search becomes a targeted Dutch estate-agent list by area or price band.

#### Can I scrape the postcode and living area from funda.nl?

Yes. Each row returns the address, city, postcode, living area, plot and volume in square metres, rooms, build year and energy label — ready for comps and valuation models.

### 🔗 More real estate scrapers by logiover

Building a cross-country property dataset? Pair Funda with the rest of the European real-estate suite:

| Country | Actor |
|---|---|
| 🇵🇱 Poland | [Otodom.pl Scraper](https://apify.com/logiover/otodom-pl-scraper-polish-real-estate-data) |
| 🇩🇪 Germany | [ImmobilienScout24 Scraper](https://apify.com/logiover/immobilienscout24-de-scraper-germany-real-estate) |
| 🇪🇸 Spain | [Habitaclia Scraper](https://apify.com/logiover/habitaclia-com-spain-scraper) · [Pisos.com Scraper](https://apify.com/logiover/pisos-com-property-scraper) |
| 🇮🇹 Italy | [Casa.it Scraper](https://apify.com/logiover/casa-it-scraper-italy-real-estate) · [Subito Scraper](https://apify.com/logiover/subito-it-property-scraper) |
| 🇨🇿 Czechia | [Sreality.cz Scraper](https://apify.com/logiover/sreality-cz-scraper-czech-real-estate-data) |
| 🇷🇸 Serbia | [Halooglasi Scraper](https://apify.com/logiover/halooglasi-property-scraper-serbia-real-estate) |
| 🇭🇷 Croatia | [Njuskalo Scraper](https://apify.com/logiover/njuskalo-hr-property-scraper) |
| 🇷🇴 Romania | [Storia.ro Scraper](https://apify.com/logiover/storia-ro-scraper-romania-real-estate) |
| 🇵🇹 Portugal | [Imovirtual Scraper](https://apify.com/logiover/imovirtual-pt-scraper-portugal-real-estate) |
| 🇮🇪 Ireland | [Daft.ie Scraper](https://apify.com/logiover/daft-ie-scraper) · [MyHome.ie Scraper](https://apify.com/logiover/myhome-ie-scraper) |
| 🇩🇰 Denmark | [Boliga Scraper](https://apify.com/logiover/boliga-scraper) |
| 🇦🇹 Austria | [Willhaben Scraper](https://apify.com/logiover/willhaben-at-scraper) |

👉 Browse all **[logiover scrapers on Apify Store](https://apify.com/logiover)** — 180+ actors across real estate, jobs, crypto, social media & B2B data.

### ⏰ Scheduling & integration

Put this Actor on an **Apify Schedule** to get a fresh Funda listings feed every morning — straight to the **Apify API, a webhook, a Google Sheet, S3** or your data warehouse. Export results to JSON, CSV or Excel, sync to your database and BI tools, and connect **Make, n8n or Zapier** to track new listings and price drops across the Dutch market on autopilot.

### ⭐ Support & feedback

Found a bug or need an extra field? Open an issue on the **Issues** tab — response is usually fast. If this Actor saves you time, a **★★★★★ review** on the Store page genuinely helps and is hugely appreciated. 🙏

### ⚖️ Legal

This Actor extracts only publicly available data and is intended for legitimate research, analytics and lead-generation use. You are responsible for complying with Funda's terms of service, GDPR and any applicable local laws — including how you store and use estate-agent details.

***

### 📝 Changelog

#### 2026-07-06

- ✨ README overhaul: richer output sample, ready-to-run example scenarios, cross-country real-estate suite links, expanded FAQ and clearer quick-start.

#### 2026-07-01

- Maintenance pass: re-verified end-to-end on live data and confirmed successful runs within the 5-minute quality window on the default input.
- Sharpened Store metadata (SEO title & description) and expanded the FAQ with high-intent, long-tail questions for easier discovery in Google and Apify Store search.
- Added ready-to-run example tasks that cover common real-world use cases.

#### 2026-06-15

- Reliability pass: re-verified end-to-end on live data with real-world inputs. Routine maintenance build.

#### 2026-06-07

- Docs: added coverage for Funda.nl unofficial API alternative, exporting listings to CSV/JSON and scraping Funda without login.

# Actor input Schema

## `area` (type: `string`):

Dutch city / area to browse when no search URL is given. Pick one from the list. Leave everything empty to get Amsterdam homes for sale. (Ignored if you paste your own Search URLs below.)

## `dealType` (type: `string`):

Whether to browse homes for sale (koop) or for rent (huur). Only used together with the Area dropdown when no Search URL is provided.

## `searchUrls` (type: `array`):

Optional. Funda.nl search URLs copied straight from the site — e.g. https://www.funda.nl/zoeken/koop?selected\_area=%5B%22amsterdam%22%5D (buy) or .../zoeken/huur?... (rent). Use this only if you want full control over the filters (price range, extra areas, features): set your filters on Funda, then paste the result URL here. Add as many as you like. Leave empty to use the Area + Buy/rent dropdowns above.

## `listingType` (type: `string`):

Optionally restrict results to koop (for sale) or huur (for rent). 'any' keeps whatever the search returns.

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

Stop after this many listings across all searches. 0 = no limit (a single search can span hundreds of pages).

## `maxResultsPerSearch` (type: `integer`):

Cap listings per individual search URL. 0 = no per-search cap.

## `useProxy` (type: `boolean`):

Route requests through Apify Proxy. Residential is strongly recommended for Funda and is the default.

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

Apify Proxy settings. Residential gives the highest success rate on Funda.

## `maxConcurrency` (type: `integer`):

How many search URLs to process in parallel.

## Actor input object example

```json
{
  "area": "amsterdam",
  "dealType": "koop",
  "searchUrls": [],
  "listingType": "any",
  "maxResults": 100,
  "maxResultsPerSearch": 0,
  "useProxy": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxConcurrency": 3
}
```

# Actor output Schema

## `results` (type: `string`):

All records extracted by this run. Open the Dataset tab to browse, filter, and export as CSV, JSON, or Excel.

# 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 = {
    "searchUrls": [],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("logiover/funda-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 = {
    "searchUrls": [],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("logiover/funda-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 '{
  "searchUrls": [],
  "maxResults": 100
}' |
apify call logiover/funda-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/dbniND8uU5OgwKRc1/builds/MU1btgtQpLCR8zLVk/openapi.json
