Turn any Funda.nl search into a clean dataset — asking price (EUR), m², rooms, energy label and the makelaar (estate agent) behind every property. No API key, no login.
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 Funda scraper reads the site's own structured listing data and returns asking price (EUR), full address, city & postcode, living area, plot & volume in m²/m³, rooms, bedrooms, bathrooms, build year, 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, thousands of listings per run.
It's 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, broker association and agency page URL, so a single run becomes a targeted agent outreach list.
📄 This repository is documentation only — no Actor source code. The Actor runs on the Apify platform — open it here.
- Why this Funda scraper
- What you get
- Use cases
- Quick start (4 ways)
- Input reference
- Output reference & sample JSON
- Integrations & automation
- Export formats
- FAQ
- Related actors
- 29 fields per listing — full pricing, size, layout, energy, location and makelaar-lead fields in one flat row.
- Buy & rent — houses (huis) and apartments (appartement), for sale (koop) or rent (huur), across all of the Netherlands.
- Browse or URL-driven — pick a city + koop/huur from dropdowns, or paste Funda search URLs and every filter encoded in them (area, price, property type) is respected.
- 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).
- Makelaar lead data — estate-agent name, broker ID, broker association (nvm / vbo / vastgoedpro) and the agency's Funda page URL for every listing.
- Residential-proxy ready — Apify residential proxy is the default for the highest success rate on Funda.
- No API key, no login — only an Apify account is needed.
- Export to JSON / CSV / Excel and the full Apify REST API.
One clean row per listing. A ready-made Listings Overview table view (address, price, m², rooms, energy label, makelaar) ships in the Output tab.
| 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 |
brokerId |
Funda broker (estate agency) numeric ID |
brokerAssociation |
Agency association (nvm / vbo / vastgoedpro) |
makelaarUrl |
Link to the agency's Funda page |
image |
Main image URL |
imagesCount |
Number of images |
scrapedAt |
Scrape timestamp (ISO 8601) |
- 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.
- Open the Actor: apify.com/logiover/funda-scraper.
- Click Try for free.
- Pick an
area(e.g.amsterdam) anddealType(koop / huur) from the dropdowns — or paste your own Funda search URL intosearchUrls— then click Start. - Open the Output tab — one row per listing, ready to export.
npm install -g apify-cli
apify login
apify call logiover/funda-scraper --input '{
"searchUrls": ["https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D"],
"maxResults": 500
}'curl -X POST \
"https://api.apify.com/v2/acts/logiover~funda-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"area": "rotterdam",
"dealType": "koop",
"maxResults": 500
}'import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('logiover/funda-scraper').call({
searchUrls: ['https://www.funda.nl/zoeken/huur?selected_area=%5B%22utrecht%22%5D'],
listingType: 'huur',
maxResults: 800,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.dir(items, { depth: null });from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/funda-scraper").call(run_input={
"area": "amsterdam",
"dealType": "koop",
"maxResults": 500,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["address"], item.get("price"), item.get("makelaar"))More detailed, copy-pasteable snippets live in
examples/: CLI · API / cURL · JavaScript · Python.
Pick a city from the area dropdown with dealType (koop / huur), or paste one or more Funda search URLs into searchUrls for full control over price and feature filters. Everything else is optional.
| Field | Type | Description |
|---|---|---|
area |
string (dropdown) | Dutch city / area to browse when no search URL is given — Amsterdam, Rotterdam, Den Haag, Utrecht, Eindhoven and 40+ more. Leave empty for Amsterdam. |
dealType |
string (dropdown) | koop (for sale) or huur (for rent) — used with the area dropdown when no search URL is given. |
searchUrls |
array | (Advanced) Funda.nl search URLs copied 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. Add as many as you like. |
listingType |
string (dropdown) | Optionally restrict to koop (buy) or huur (rent). any keeps whatever the search returns. |
maxResults |
integer | Global cap on listings across all searches. 0 = no limit (a single search can span hundreds of pages). Default 200. |
maxResultsPerSearch |
integer | Per-search-URL cap. 0 = no per-search cap. |
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). Default 3. |
How to get a Funda search URL: open 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.
One clean row per listing — 29 fields. Trimmed sample record:
{
"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"
}- Schedules — put the Actor on a schedule to get a fresh Funda listings feed every morning.
- Webhooks — trigger downstream systems on run completion via Apify webhooks.
- Google Sheets / S3 / database / BI tools — push listings to your stack through Apify's integrations.
- Zapier / Make / n8n / Pipedream — track new listings and price drops across the Dutch market on autopilot.
- REST API — read results live from the dataset API.
Every run writes to an Apify dataset that exports in one click to:
- JSON
- JSONL (newline-delimited)
- CSV
- Excel (XLSX)
- XML
- HTML table / RSS
One listing = one row. Export from the Console or pull any format via the API.
Pick a city and koop/huur from the dropdowns, or paste a Funda search URL into searchUrls, then run the Actor. It paginates the whole result set and returns one clean JSON row per listing — with price, m², rooms, energy label and the makelaar — no code to maintain.
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.
Yes. The scraper reads public funda.nl listing data without any login, account or API key — only an Apify account is required. It paginates the full result set behind Apify residential proxy.
Yes. Choose koop or huur in dealType, or paste a /zoeken/koop?... or /zoeken/huur?... URL — or mix both in one run. Use the listingType filter to force one or the other.
Use the area dropdown for a city, or apply the filters on Funda itself and paste the resulting URL into searchUrls. Every filter encoded in the URL is respected, and the Actor paginates the whole result set.
Every scraped listing includes the makelaar name, broker ID, broker association and agency page URL, so one run over a Funda search becomes a targeted Dutch estate-agent list by area or price band, deduplicated on brokerId.
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.
Run the Actor on any Funda search, 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.
Funda is anti-bot sensitive. Routing through Apify residential proxy (the default) gives by far the highest success rate, and it is enabled out of the box.
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.
The Actor collects only publicly available listing data. You are responsible for complying with Funda's terms and your local regulations, including how you store and use estate-agent details under GDPR.
Building a cross-country property dataset? Pair Funda with the rest of the European real-estate suite:
| Country | Actor |
|---|---|
| 🇩🇪 Germany | ImmobilienScout24 Scraper |
| 🇧🇪 Belgium & wider EU | Willhaben Scraper |
| 🇩🇰 Denmark | Boliga Scraper |
👉 Browse all logiover actors on Apify Store — 180+ scrapers across real estate, jobs, crypto, social media & B2B data.
This repository contains documentation only — no Actor source code. The Actor runs on the Apify platform.
Licensed under the MIT License · © 2026 logiover. Not affiliated with, endorsed by, or sponsored by Funda. "Funda" is a trademark of its respective owner and is used here for descriptive purposes only.