Developer API / Dutch rental housing data, in one schema
Dutch rental housing data, in one schema
Rental listings from different sources arrive in different shapes. WoningMe maps them to one structure, so your code handles one format.
The fields of a listing
| Field | Meaning |
|---|---|
street, postcode, city | Address as published by the source. |
lat, lon | Coordinates of the property. |
priceEurCents, priceText | Monthly rent in euro cents, plus the rent as displayed by the source. |
surfaceM2, rooms | Living area in square metres and number of rooms. |
propertyType, constructionType | For example Apartment, House, Studio or Room. |
isHousingAssociation, isMiddenhuur | Rental segment flags. |
source, sourceLabel, url | Where the listing comes from and a link to the original. |
agent, agentWebsite, agentPhone | The listing agency, when the source provides it. |
imageUrl | Main image of the listing. |
neighbourhoodScore | Livability score for the area, when available. |
firstSeenAt, lastSyncedAt | When WoningMe first saw the listing and when it was last updated. |
Money and units
Rent is always an integer number of euro cents in priceEurCents, so there is no rounding or locale parsing on your side. The properties endpoint takes min_price and max_price in whole euros. Surface is in square metres.
Missing values
Sources do not all publish the same data. A field that a source does not provide is null rather than guessed. Typical examples are availableFrom, constructionType, agentPhone and neighbourhoodScore. Treat these as optional in your model.
Freshness
firstSeenAt tells you when a listing first appeared at WoningMe. Sort on it to read the newest listings first, or receive them through webhooks. lastSyncedAt shows when the listing was last refreshed.
Example
{
"id": 19022,
"source": "nederwoon",
"street": "Kerkstraat 12",
"postcode": "1234AB",
"city": "Utrecht",
"propertyType": "Apartment",
"surfaceM2": 75,
"rooms": 3,
"priceEurCents": 145000,
"isHousingAssociation": false,
"isMiddenhuur": false,
"lat": 52.09,
"lon": 5.12,
"firstSeenAt": "2026-07-27T20:20:00+00:00"
}See the API reference for the full response and the rental listings API guide for filters and pagination.
Try it on a real search
Personal plan: €15/month for personal and non-commercial use, with a 2-day free trial. A payment method is required before the trial starts, and nothing is charged during the trial.