Funda Scraper: Dutch Homes for Sale and Rent with Makelaar avatar

Funda Scraper: Dutch Homes for Sale and Rent with Makelaar

Pricing

from $0.69 / 1,000 listings

Go to Apify Store
Funda Scraper: Dutch Homes for Sale and Rent with Makelaar

Funda Scraper: Dutch Homes for Sale and Rent with Makelaar

Scrape Funda.nl homes for sale or rent by city or search link: address, postcode, price, price per m², living and plot area, rooms, bedrooms, build year, energy label, status, listing date, makelaar name and phone, photos and description. Only new listings mode. No login.

Pricing

from $0.69 / 1,000 listings

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

10 days ago

Last modified

Share

80 Funda listings with makelaar phone in 86 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Why choose this actor?

  • The whole listing, not just the search card. Each row joins the funda.nl search result with the listing's own record: status (available, under offer, sold, rented), build year, asking price per m², property type, bathrooms, full description, coordinates, every photo and every characteristic Funda lists. Our final test returned 80 homes in Amsterdam and Rotterdam in 86 seconds, 80 of 80 with status, description and coordinates, and 143 of 143 requests answered.
  • The makelaar's business phone on every row. The agency name, Funda page, association (NVM, VBO and others), business phone number and website, read once per agency and shared by all its listings: 80 of 80 rows in that test carried the phone, from 57 agency lookups.
  • Any search Funda can do, and only new listings on a schedule. Type a city with price, rooms, bedrooms, living area, property type, availability and listing date filters, or paste a search link copied from funda.nl. With onlyNewListings on, a repeat run delivers and charges only homes it has not delivered before. A home found by two searches is delivered and charged once.

Run it on Apify

Part of The Mine Works Real estate family: Zillow Rentals Scraper, Zillow Sold Comps Scraper, India Real Estate MCP, Housing.com Scraper, 99acres Scraper, MagicBricks Scraper.

Try it in one minute

Paste this into the input (JSON view) and press Start. It returns the 20 newest homes for sale in Utrecht with details and makelaar phone, in about a minute:

{
"areas": ["Utrecht"],
"maxListings": 20
}

areas takes place names as Funda knows them, one per line: a city (Amsterdam, Den Haag), a province (provincie-utrecht) or a four digit postcode area (1017); each is its own search with the filters you set. startUrls takes search links copied from funda.nl after choosing filters there, used exactly as they are, and single listing links (https://www.funda.nl/detail/koop/...). With neither, Amsterdam is searched.

Apify's free plan includes $5 of credit every month, which covers about 4,800 results at this actor's price.

Copy to your AI assistant

themineworks/funda-scraper on Apify. Scrapes Funda.nl property listings in the Netherlands, for sale or for rent, one row per home with address, postcode, city, price and price condition, price per m², living and plot area, rooms, bedrooms, bathrooms, build year, energy label, property type, status (available, under offer, sold, rented), listing date, makelaar name, Funda page, business phone and website, photos, description, coordinates and every characteristic. Call ApifyClient("TOKEN").actor("themineworks/funda-scraper").call(run_input={"areas": ["Rotterdam"], "offeringType": "buy", "maxPrice": 450000, "minBedrooms": 2, "maxListings": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: none (default: Amsterdam, for sale, newest first). Optional: areas (list of place names), startUrls (funda.nl search or listing links), offeringType ("buy" or "rent"), minPrice, maxPrice (euros; monthly rent for rentals), propertyTypes (house, apartment, parking, land, storage, berth, pitch), minRooms, minBedrooms, minLivingArea (m²), publishedWithin ("1", "3", "5", "10", "30" days), availability (available, negotiations, unavailable), sortBy ("newest", "relevance", "price_asc", "price_desc", "area_desc"), maxListings (per search, 20 to 9990, default 100), includeDetails (default true), includeAgentPhone (default true), onlyNewListings (default false). Full spec: GET https://api.apify.com/v2/acts/themineworks~funda-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral

Key features

  • Over 50 fields per home: listing id and link, sale or rent, street, house number and addition, postcode, city, municipality, province, neighbourhood and district, price, price condition (kosten koper, vrij op naam, per month), price as Funda writes it, price per m², living area, plot area, volume, rooms, bedrooms, bathrooms, build year, energy label, object and property type, new build or resale, listing date, offered since, status, makelaar name, id, page, association, phone and website, photos, description, coordinates, views and saves, sale history and every characteristic.
  • Every Funda filter you need: sale or rent, price range, property types, minimum rooms, bedrooms and living area, listed within 1 to 30 days, available, under offer or sold and rented, and five sort orders. Pasted links keep every filter they carry, including ones not listed here.
  • From 20 to 9,990 homes per search, 15 per page. Funda shows 666 pages of any search, so for a bigger area split it by price or by town. Two searches run at once, four pages of each at a time.
  • Details and agency lookups you can switch off: includeDetails adds one quick request per home; includeAgentPhone one request per agency. With both off a run reads only search pages.
  • No double charging: a home found by two searches, or by a city and a pasted link, is delivered and charged once.
  • A run summary you can audit: the OUTPUT record lists every search's status, the number of homes Funda has for it, pages read, details and agencies read, and the success rate per request type.

How to use it

Basic: the newest homes for sale in one city

{
"areas": ["Rotterdam"],
"maxListings": 100
}

Several cities at once

Each place is its own search of up to maxListings homes. This is our final test: 40 homes in Amsterdam and 40 in Rotterdam, all with details and makelaar phone, in 86 seconds:

{
"areas": ["Amsterdam", "Rotterdam"],
"offeringType": "buy",
"maxListings": 40
}

Rentals with a budget

For rentals the price filters are the monthly rent. This test returned 30 homes in Den Haag between €1,000 and €2,500 a month with at least two bedrooms, in 61 seconds:

{
"areas": ["Den Haag"],
"offeringType": "rent",
"minPrice": 1000,
"maxPrice": 2500,
"minBedrooms": 2,
"maxListings": 30
}

Paste a search from funda.nl

Set any filters on funda.nl, copy the address bar and paste it. The link is read exactly as it is, with every filter it carries, and listing links are read one by one:

{
"startUrls": [
"https://www.funda.nl/zoeken/koop?selected_area=[\"amsterdam\"]&price=\"300000-600000\"&object_type=[\"apartment\"]&rooms=\"3-\"&sort=\"date_down\"",
"https://www.funda.nl/detail/koop/amsterdam/huis-keizersgracht-468/44523847/"
],
"maxListings": 30
}

Job: new listing alerts for buyers or investors

Read the newest homes every morning and pay only for homes you have not received before. Save this as a task and add a daily schedule. In our test (Groningen, 20 homes a run, no price filter) the first run delivered 20 homes, and the second, minutes later, read one page, found nothing new and charged 0:

{
"areas": ["Groningen"],
"maxPrice": 400000,
"publishedWithin": "1",
"maxListings": 100,
"onlyNewListings": true
}

Job: makelaar lead list for one region

Every row carries the agency's name, Funda page, association, business phone and website. Read a whole region and group the rows by agent_id to see which agencies list the most homes:

{
"areas": ["provincie-utrecht"],
"maxListings": 500,
"includeDetails": false
}

Job: recent sales and price per m²

Sold and rented homes stay on Funda for a while. Ask for them alone to study recent prices per m², time on the market (sale_history) and asking prices by neighbourhood:

{
"areas": ["Haarlem"],
"availability": ["unavailable"],
"maxListings": 200,
"includeAgentPhone": false
}

Input parameters

ParameterTypeDefaultWhat it does
areasarray of strings["Amsterdam"] when no link is givenPlace names as Funda knows them: cities, provinces (provincie-utrecht) or four digit postcode areas (1017). Each is its own search with the filters below.
startUrlsarray of stringsemptyfunda.nl search links (koop or huur, any filters, read as they are) and single listing links. A search link to page 3 starts at page 3.
offeringTypestringbuybuy (koop) or rent (huur), for areas. Links keep their own.
minPriceintegernoneLowest asking price in euros; for rentals, the monthly rent.
maxPriceintegernoneHighest asking price in euros; for rentals, the monthly rent.
propertyTypesarrayallhouse, apartment, parking, land, storage, berth, pitch.
minRoomsintegernoneMinimum rooms in total.
minBedroomsintegernoneMinimum bedrooms.
minLivingAreaintegernoneMinimum living area in m².
publishedWithinstringany time1, 3, 5, 10 or 30: only homes Funda published in that many days.
availabilityarray["available", "negotiations"]available, negotiations (under offer), unavailable (sold or rented).
sortBystringnewestnewest, relevance, price_asc, price_desc, area_desc.
maxListingsinteger100Most homes per search (each area or search link), 20 to 9,990. Also the most you pay for per search.
includeDetailsbooleantrueAdds status, build year, price per m², property type, bathrooms, description, coordinates, all photos, views and saves, sale history and every characteristic. One quick request per home.
includeAgentPhonebooleantrueAdds the agency's business phone and website from its Funda page, read once per agency per run.
onlyNewListingsbooleanfalseSkips homes an earlier run with the same searches already delivered. For schedules; with sortBy: "newest" a run stops as soon as it reaches homes it has seen.

What data do you get?

One row per home:

  • The listing: listing_id, tiny_id, url, offering_type (sale or rent), listing_date, offered_since, status (available, under_offer, sold, rented), status_text (Funda's Dutch wording), search, page, position.
  • Address: address, street, house_number, house_number_suffix, postcode, city, municipality, province, neighbourhood, district, latitude, longitude.
  • Price: price in euros (monthly rent for rentals), currency, price_condition (kosten_koper, vrij_op_naam, per_month), price_text as Funda writes it, price_per_m2 (sale only).
  • The home: living_area, plot_area, volume_m3, rooms, bedrooms, bathrooms, build_year (or build_period), energy_label, object_type, property_type, construction_type (resale or newly_built), is_new_build_project.
  • The makelaar: agent_name, agent_id, agent_url, agent_association, agent_phone, agent_website.
  • Content: images, image_count, main_image_url, description (as the agency wrote it, usually Dutch), characteristics (every label and value Funda lists, in Dutch), sale_history for sold homes, views and saves when Funda shows them.
  • Run fields: details (read, off, or not read with the reason) and scraped_at.

How often each field was filled in our final test (80 homes for sale in Amsterdam and Rotterdam, details and agency phone on):

FieldFilledWhy not always
listing_id, url, address, postcode, city, price, status, listing_date, agent_name, agent_url, images, main_image_url80 of 80
description, latitude, longitude, property_type, characteristics, offered_since, status_text80 of 80With includeDetails on (the default).
agent_phone, agent_website80 of 80With includeAgentPhone on (the default); some agencies show no phone (3 of 20 rows in another test).
living_area, rooms, bedrooms, price_per_m279 of 80One row was a parking space.
bathrooms76 of 80Not every listing states it.
energy_label, build_year75 of 80Some homes have no label yet; some give a build period instead of a year.
house_number_suffix46 of 80Only addresses with an addition.
plot_area13 of 80Houses only; there were 13 houses among the 80.
views, saves14 of 80Funda shows these for some listings only.
sale_history20 of 20 sold homesOnly on sold or rented homes.

Stable fields for automations

These fields were present in every row of our final test runs and their names will not change:

FieldMeaning
listing_idFunda listing id, stable across runs
urlListing page on funda.nl
offering_typesale or rent
addressStreet and house number
postcodePostcode
cityCity
provinceProvince
priceAsking price in euros; monthly rent for rentals
price_conditionkosten_koper, vrij_op_naam, per_month and similar
object_typehouse, apartment, parking and so on
listing_dateWhen Funda published the listing
statusavailable, under_offer, sold or rented
agent_nameMakelaar (agency) name
agent_idMakelaar id on Funda
scraped_atWhen the row was read, ISO 8601 UTC

Output examples

A house for sale with details and makelaar (trimmed):

{
"listing_id": "8178484",
"url": "https://www.funda.nl/detail/koop/amsterdam/huis-keizersgracht-468/44523847/",
"offering_type": "sale",
"address": "Keizersgracht 468",
"postcode": "1017EG",
"city": "Amsterdam",
"neighbourhood": "Leidsegracht-Zuid",
"price": 2500000,
"price_condition": "kosten_koper",
"price_per_m2": 13736,
"living_area": 182,
"plot_area": 64,
"rooms": 6,
"bedrooms": 4,
"bathrooms": 3,
"build_year": 1672,
"energy_label": "D",
"object_type": "house",
"property_type": "Grachtenpand, tussenwoning",
"listing_date": "2026-10-06T00:00:05.6061311+02:00",
"status": "available",
"agent_name": "Jeroen van den Boogaard Makelaars",
"agent_url": "https://www.funda.nl/makelaar/10164-jeroen-van-den-boogaard-makelaars/",
"agent_association": "NVM",
"agent_phone": "(+31) 252 68 73 97",
"agent_website": "https://www.jeroenvandenboogaard.nl",
"image_count": 75,
"main_image_url": "https://cloud.funda.nl/tiara-media/22830449-ff88-4ea0-b8bc-9ce9c091b945/6abc1ddd-0f43-4681-8e18-2cdec76c9780",
"description": "Monumentaal grachtenpand met fantastisch uitzicht over de grachten. Een uniek Amsterdams grachtenpand met karakter, ruimte en uitzicht...",
"latitude": 52.36655,
"longitude": 4.8847337,
"details": "read"
}

A rental (trimmed; this run had includeAgentPhone off):

{
"listing_id": "8179195",
"url": "https://www.funda.nl/detail/huur/den-haag/appartement-de-savornin-lohmanlaan-180/80988194/",
"offering_type": "rent",
"address": "De Savornin Lohmanlaan 180",
"postcode": "2566AV",
"city": "Den Haag",
"price": 1540,
"price_condition": "per_month",
"price_text": "€ 1.540 per maand (exclusief servicekosten à 55 per maand)",
"living_area": 67,
"rooms": 3,
"bedrooms": 2,
"build_year": 1955,
"energy_label": "A2",
"property_type": "Portiekflat (appartement)",
"status": "available",
"offered_since": "Oktober 5, 2026",
"agent_name": "Flores Real Estate",
"agent_association": "MZV",
"characteristics": {
"Aanvaarding": "Per direct beschikbaar",
"Huurprijs": "€ 1.540 per maand (exclusief servicekosten à 55 per maand)",
"Waarborgsom": "€ 3.080 eenmalig"
}
}

A sold home with its sale history (trimmed):

{
"listing_id": "8146341",
"url": "https://www.funda.nl/detail/koop/haarlem/appartement-nassauplein-50/44591704/",
"address": "Nassauplein 50",
"city": "Haarlem",
"price": 485000,
"price_per_m2": 7462,
"living_area": 65,
"build_year": 2006,
"status": "sold",
"status_text": "Verkocht",
"views": 3442,
"saves": 54,
"sale_history": {
"Aangeboden sinds": "11 september 2026",
"Verkoopdatum": "23 september 2026",
"Looptijd": "12 dagen"
},
"agent_name": "Engel & Völkers Kennemerland"
}

Pricing

Pay per event: you pay for the listing rows you receive, plus a flat $0.005 per run, whatever memory you choose.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
listing-scrapedOnce per home stored in your dataset$0.99 per 1,000$0.89 per 1,000$0.79 per 1,000$0.69 per 1,000
run-startOnce per run, when it starts$0.005$0.005$0.005$0.005

The price per single home is the price per 1,000 divided by 1,000. A home with details and makelaar phone costs the same as one without.

Never charged:

  • pages Funda refused, and searches the run could not read;
  • searches with no results, place names Funda does not know, and listing links that no longer exist;
  • a home already delivered earlier in the same run (found by two searches, or by a search and a link);
  • with onlyNewListings, homes an earlier run already delivered;
  • the info row at the end of a run;
  • anything past your "Max cost per run": the actor stops delivering when your limit is reached instead of sending rows for free.

FAQ

What exactly does this actor read?

Funda.nl, the largest property site in the Netherlands, as any visitor sees it: the search result pages of www.funda.nl, the listing record the Funda app reads for each home, and each makelaar's public page on Funda for its phone number and website. Nothing behind a login is read.

How many homes can I get?

Up to 9,990 per search: Funda shows 666 pages of 15 for any search, so the actor never asks past them. For a bigger area, split the search by price range, property type or town; each split is its own search. Amsterdam had 6,918 homes for sale and the whole country 99,930 when we tested.

How long does a run take?

Funda answers search pages slowly, 20 to 25 seconds each, so the actor reads four pages of a search at a time and two searches at once, and fetches page 2 together with page 1. Details take about 2 seconds a home, eight at a time, and an agency page about 4 seconds, once per agency. Our tests: 80 homes from two cities in 86 seconds, 30 rentals in 61 seconds, 20 sold homes without agency lookups in 34 seconds.

How fresh is the data?

Every run reads Funda live, so prices, statuses and new listings are as Funda shows them at that moment.

Why is the description in Dutch?

It is the text the makelaar wrote. Most write Dutch; some add an English part, as in the Den Haag rental above. The characteristics labels are Funda's Dutch labels; the main facts (price, area, rooms, build year, energy label, status) are separate fields with English names.

What does the status mean?

available (beschikbaar), under_offer (onder bod, onder optie, or sold or rented subject to conditions), sold (verkocht) and rented (verhuurd). Funda's own wording is in status_text (with details). Search results carry the status too, so status is filled with includeDetails off as well; the availability filter decides which homes a search returns.

Is the makelaar phone a person's number?

No. It is the business number the agency publishes on its Funda page, the same number Funda shows to every visitor. The actor reads no phone numbers or email addresses of private sellers, buyers or tenants.

Do I need an account, cookies or a proxy?

No account and no cookies. The actor uses Apify's datacenter proxy on its own; you pay nothing extra for it.

A place Funda does not know is reported in the run's OUTPUT record as not_found with a hint, and a listing link that no longer exists is skipped. Neither is charged, and the rest of the run carries on.

Can I run it on a schedule and get only new listings?

Yes. Turn on onlyNewListings, keep sortBy on newest, save the input as a task and add a schedule. Each run skips homes earlier runs delivered and stops at the first page with nothing new. In our test the second run read one page, found 0 new homes and charged 0.

Which formats can I download?

JSON, CSV, Excel, XML, RSS and an HTML table, from the run's dataset in Console or through the API.

Can I use it from Claude, ChatGPT or Cursor (MCP)?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/funda-scraper
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http funda-scraper "https://mcp.apify.com/?tools=themineworks/funda-scraper"

The actor reads only listings and agency pages that Funda shows publicly to anyone without signing in. Rows describe homes and businesses; they hold no personal contact details of private people. You are responsible for how you use the data, for Funda's terms, and for data protection law such as the GDPR, which applies in the Netherlands. If in doubt, ask a lawyer about your use case.

Integrations

  • Google Sheets: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
  • Make, Zapier and n8n: start the actor and read its dataset with the Apify apps and nodes, for example "new homes under €400,000 in Utrecht to email every morning".
  • Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
  • API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
  • MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

More from The Mine Works

Real estate

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

A search that should return homes and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For another property site, a new source or a field you need, email dmineworks@gmail.com.

Give a Dutch city or paste a funda.nl search, and get every home back as a clean row with its price, size, status and the makelaar to call.