
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape Funda.nl homes for sale and for rent by search URL, listing URL or place. Get price, address, living area, plot, rooms, energy label, build year, description, all features, photos, coordinates and broker.
Scrape Funda.nl, the biggest property site in the Netherlands, for homes for sale (koop) and for rent (huur). Paste a Funda search or listing URL, or just type a city, and get one clean row per home with price, address, living area, plot, rooms, energy label, build year, the full description, every feature Funda lists, photos, floor plans, coordinates and the broker. No login needed: 1,000 fully detailed listings took about two minutes in our tests.
features table./en/ URLs and older /koop/<city>/ URLs all work.amsterdam or den-haag into Places.| Field | What it does |
|---|---|
startUrls | Funda search URLs (/zoeken/koop?..., /zoeken/huur?...) or listing URLs (/detail/koop/...). |
locations | Places as Funda writes them: amsterdam, den-haag, gemeente-utrecht, amsterdam/de-pijp, 1012. |
offeringType | buy or rent for places. |
maxItems | Total listings to save. 0 means no limit. |
minPrice / maxPrice, minLivingArea / maxLivingArea, minPlotArea / maxPlotArea, minRooms / maxRooms, minBedrooms / maxBedrooms | Range filters. Prices are asking prices for sale and monthly rent for rentals. |
objectTypes, energyLabels, constructionType, publishedWithinDays, includeUnderOffer, sort | Funda's other search filters and sort order. |
includeDetails | Load each listing's full detail record (default on). |
language | nl or en for descriptions and feature labels. |
includeBrokerPhone | Add the broker office phone number (one extra small request per listing). |
includeRawData | Add Funda's original detail record and search card to each row. |
Filters also apply to search URLs: a filter you set here replaces the same filter in the URL.
{
"locations": ["utrecht"],
"offeringType": "buy",
"maxItems": 50,
"minPrice": 300000,
"maxPrice": 600000,
"minLivingArea": 75,
"minRooms": 3,
"energyLabels": ["A", "B"],
"sort": "newest",
"includeDetails": true
}
Each row is one listing. Main fields:
| Field | Example |
|---|---|
url, listingId, id | Funda listing URL, the id in the URL, and Funda's internal id |
title, street, houseNumber, houseNumberSuffix, postalCode, city, neighbourhood, district, municipality, province | Address |
price, priceText, pricePerM2, serviceCosts, offeringType, status | Price and status (price is the asking price or the monthly rent in EUR) |
livingArea, plotArea, volume, rooms, bedrooms, bathrooms, floors | Size and layout |
objectType, propertyKind, constructionType, buildYear, energyLabel, insulation, heating | Building |
garden, balcony, parking, acceptance, listedSince, publicationDate | Extras and dates |
description, promoText, highlights, labels, views, saves | Text and popularity |
mainPhoto, photos, photoCount, floorPlans, videos, virtualTours, brochureUrl | Media |
brokerName, brokerId, brokerUrl, brokerAssociation, brokerLogoUrl, brokerPhone | Broker |
latitude, longitude, googleMapsUrl, projectName, projectUrl | Location and new-build project |
features | Every feature Funda lists, grouped by section |
Example (fictional values, real shape, trimmed):
{
"id": 7012345,
"listingId": "43012345",
"url": "https://www.funda.nl/detail/koop/utrecht/appartement-voorbeeldstraat-12/43012345/",
"title": "Voorbeeldstraat 12",
"offeringType": "buy",
"status": "Beschikbaar",
"price": 450000,
"priceText": "€ 450.000 k.k.",
"pricePerM2": 5844,
"serviceCosts": "€ 150 per maand",
"street": "Voorbeeldstraat",
"houseNumber": "12",
"postalCode": "3511AB",
"city": "Utrecht",
"neighbourhood": "Binnenstad",
"province": "Utrecht",
"latitude": 52.0907,
"longitude": 5.1214,
"objectType": "Apartment",
"propertyKind": "Bovenwoning (appartement)",
"constructionType": "ExistingConstruction",
"buildYear": "1930",
"livingArea": 77,
"plotArea": null,
"volume": 250,
"rooms": 3,
"bedrooms": 2,
"bathrooms": 1,
"energyLabel": "B",
"listedSince": "Vandaag",
"publicationDate": "2026-10-14T00:00:00",
"description": "Licht appartement op loopafstand van het centrum ...",
"mainPhoto": "https://cloud.funda.nl/valentina_media/200/000/001.jpg",
"photoCount": 24,
"brokerName": "Voorbeeld Makelaars",
"brokerUrl": "https://www.funda.nl/makelaar/12345-voorbeeld-makelaars/",
"brokerAssociation": "NVM",
"features": {
"Overdracht": {"Vraagprijs": "€ 450.000 kosten koper", "Status": "Beschikbaar"},
"Bouw": {"Soort appartement": "Bovenwoning (appartement)", "Bouwjaar": "1930"}
},
"detailsLoaded": true
}
You pay $0.40 per 1,000 listings ($0.0004 per listing), with full details, English or Dutch, and the broker phone option all included. Platform usage (compute, proxy traffic and a short Scrapely browser session for Funda's search pages) is billed on top at normal rates.
Example: in our tests 1,000 fully detailed listings cost $0.40 in listing fees plus about $0.04 of platform usage.
Is it legal to scrape Funda? The actor only reads public listing pages that anyone can open without an account. You are responsible for how you use the data, including privacy law (GDPR) for any personal data such as broker contact names, and Funda's terms.
Do I need a Funda account or a proxy? No account. Funda's search pages refuse most proxy IPs, so the actor loads search results through a Scrapely browser session (Dutch exit) and the listing details over a Dutch residential proxy. You don't have to set anything up.
How many listings can I get? Funda shows at most 9,990 listings (666 pages) for one search. For more, split the search by place or price range; the run tells you when a search hit that ceiling.
Why is a field empty? Funda only shows what the broker filled in. Plot area is empty for most apartments, views and saves are missing for listings published today, and rows saved with full details off have no description or features.
Which place names work?
The ones Funda uses in its own URLs: amsterdam, den-haag, gemeente-utrecht, amsterdam/de-pijp, or a postcode like 1012. If a place is unknown the run says so. When in doubt, search on funda.nl and paste the URL.
Can I schedule it or use the API? Yes. Schedule daily runs (for example "Listed within: today", newest first) and read results through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
startUrlsarrayOptionalFunda URLs
Funda.nl search result URLs (e.g. https://www.funda.nl/zoeken/koop?selected_area=["amsterdam"]) or listing URLs (https://www.funda.nl/detail/koop/...). Copy them straight from your browser. Every result page of a search is scraped up to the result limit.
locationsarrayOptionalPlaces (instead of URLs)
Cities, municipalities, neighbourhoods or postcodes as Funda knows them, e.g. 'amsterdam', 'den-haag', 'gemeente-utrecht', 'amsterdam/de-pijp', '1012'. Each place runs as its own search with the filters below.
offeringTypeenumOptionaldefault "buy"Buy or rent
Homes for sale (koop) or for rent (huur). Used for places; search URLs keep their own type.
maxItemsintegerOptionaldefault 20Maximum listings
Stop after this many listings in total. 0 means no limit (Funda shows at most 9,990 listings per search).
Applied to places and also to search URLs (a filter set here replaces the same filter in the URL).
minPriceintegerOptionalMinimum price (EUR)
Asking price for sale, monthly rent for rentals.
maxPriceintegerOptionalMaximum price (EUR)
Asking price for sale, monthly rent for rentals.
minLivingAreaintegerOptionalMinimum living area (m²)
Minimum living area in square metres.
maxLivingAreaintegerOptionalMaximum living area (m²)
Maximum living area in square metres.
minPlotAreaintegerOptionalMinimum plot area (m²)
Minimum plot size in square metres.
maxPlotAreaintegerOptionalMaximum plot area (m²)
Maximum plot size in square metres.
minRoomsintegerOptionalMinimum rooms
Minimum number of rooms.
maxRoomsintegerOptionalMaximum rooms
Maximum number of rooms.
minBedroomsintegerOptionalMinimum bedrooms
Minimum number of bedrooms.
maxBedroomsintegerOptionalMaximum bedrooms
Maximum number of bedrooms.
objectTypesarrayOptionalProperty types
Leave empty for houses and apartments (Funda's default).
energyLabelsarrayOptionalEnergy labels
Only listings with one of these energy labels.
constructionTypeenumOptionaldefault "any"Construction
Existing homes (resale) or new builds.
publishedWithinDaysenumOptionaldefault "any"Listed within
Only listings published on Funda in the last N days.
includeUnderOfferbooleanOptionaldefault trueInclude listings under offer
Funda also shows homes that are under offer (onder bod) by default. Turn off for available homes only.
sortenumOptionaldefault "relevance"Sort by
Order of the results, as on Funda.
includeDetailsbooleanOptionaldefault trueFull listing details
Load every listing's detail record: description, all features, build year, coordinates, photos, floor plans, VvE costs, views and saves. Off = faster, search-card data only (price, address, area, rooms, energy label, broker, photos).
languageenumOptionaldefault "nl"Detail language
Language of descriptions, feature labels and values.
includeBrokerPhonebooleanOptionaldefault falseBroker phone number
Add the listing broker's office phone number to every row (one extra small request per listing). Listing URLs always get the broker name and phone.
includeRawDatabooleanOptionaldefault falseInclude raw Funda data
Add Funda's complete original detail record and search card to every row (larger rows).
searchWholeCountrybooleanOptionaldefault falseSearch all of the Netherlands when no URL or place is given
With no URLs and no places, run one nationwide search with the filters above.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["RESIDENTIA…Proxy configuration
Used for listing details. Dutch residential is the default. Funda's search pages refuse most proxy IPs, so result pages are loaded through a Scrapely browser session (Dutch exit) automatically.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| mainPhoto | any | Photo |
| url | any | Listing |
| title | any | Address |
| postalCode | any | Postcode |
| city | any | City |
| price | any | Price (EUR) |
| offeringType | any | Buy/rent |
| livingArea | any | Living area m² |
| plotArea | any | Plot m² |
| rooms | any | Rooms |
| bedrooms | any | Bedrooms |
| energyLabel | any | Energy label |
| buildYear | any | Build year |
| objectType | any | Type |
| status | any | Status |
| brokerName | any | Broker |
| publicationDate | any | Published |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | Charged once for each Funda listing saved to the dataset (full details included). | $0.0004 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/funda-scraper').call({
"startUrls": [
{
"url": "https://www.funda.nl/zoeken/koop?selected_area=[\"amsterdam\"]"
}
],
"locations": [
"utrecht",
"den-haag"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"RESIDENTIAL"
],
"scrapelyProxyCountry": "NL"
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/funda-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/funda-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Rental homes with English details and the broker's phone.
Newest homes for sale with at least 2 bedrooms.
Rental listings from a pasted Funda search link.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.