Skip to content
HuislyHuisly

API for Dutch housing data

Dutch housing data, ready for your code.

Search listings, look up properties and get neighbourhood figures through a REST API, paid with monthly credits.

A new organization can claim free trial credits to try the API.

Sample API requests. Sample data from the published API contract.

Request

POST/data/v1/listings/search

X-API-Key: YOUR_API_KEY{"listingType": "for-sale", "places": [{"type": "municipality", "slug": "amsterdam-gsxxzjaz98rj"}], "limit": 20}

Response

{
  "data": [
    {
      "id": "0b7c7a8e-4f3e-4a51-9a39-2f1d3f5c6a10",
      "listingType": "for-sale",
      "propertyType": "apartment",
      "priceCents": "42500000",
      "livingAreaM2": 92,
      "bedrooms": 2,
      "rooms": 3,
      "constructionYear": 1932,
      "energyLabel": "c",
      "furnishingStatus": null,
      "hasApplicationFee": false,
      "listedAt": "2026-11-08T16:04:46.864Z",
      "location": {
        "municipality": {
          "slug": "amsterdam-gsxxzjaz98rj",
          "displayName": "Amsterdam"
        },
        "locality": {"slug": "amsterdam-c7sh2t", "displayName": "Amsterdam"},
        "district": {
          "slug": "grachtengordel-west-mavt2wcj84gj",
          "displayName": "Grachtengordel-West"
        },
        "neighborhood": {
          "slug": "langestraat-e-o-jtvr6xz675kh",
          "displayName": "Langestraat e.o."
        },
        "postalCode": {"slug": "1015-cc-7j7dqke625ht", "displayName": "1015 CC"},
        "publicSpace": {
          "slug": "keizersgracht-9z4dabpr",
          "displayName": "Keizersgracht"
        }
      },
      "houseNumber": "999",
      "houseLetter": null,
      "houseNumberAddition": "2",
      "propertySlug": "amsterdam-keizersgracht-999-2-k8d3m2p9x4qz",
      "images": [
        {
          "url": "https://listing-media.voseno.com/images/0b7c7a8e-4f3e-4a51-9a39-2f1d3f5c6a10-1.webp"
        }
      ]
    }
  ],
  "pagination": {"nextCursor": null, "limit": 20}
}

200 OK1 creditSample response

Request

GET/data/v1/properties/lookup?slug=amsterdam-keizersgracht-999-2-k8d3m2p9x4qz

X-API-Key: YOUR_API_KEY

Response

{
  "slug": "amsterdam-keizersgracht-999-2-k8d3m2p9x4qz",
  "bagVerblijfsobjectId": "0363019999999999",
  "houseNumber": "999",
  "houseLetter": null,
  "houseNumberAddition": "2",
  "location": {
    "municipality": {"slug": "amsterdam-gsxxzjaz98rj", "displayName": "Amsterdam"},
    "locality": {"slug": "amsterdam-c7sh2t", "displayName": "Amsterdam"},
    "district": {
      "slug": "grachtengordel-west-mavt2wcj84gj",
      "displayName": "Grachtengordel-West"
    },
    "neighborhood": {
      "slug": "langestraat-e-o-jtvr6xz675kh",
      "displayName": "Langestraat e.o."
    },
    "postalCode": {"slug": "1015-cc-7j7dqke625ht", "displayName": "1015 CC"},
    "publicSpace": {
      "slug": "keizersgracht-9z4dabpr",
      "displayName": "Keizersgracht"
    }
  },
  "geometry": {"type": "Point", "coordinates": [4.886431, 52.376893]},
  "livingAreaM2": 92,
  "constructionYear": 1932,
  "parcels": [{"areaM2": 215}],
  "building": {"footprintAreaM2": 187.42, "unitCount": 4},
  "activeListings": {
    "forSale": {
      "id": "0b7c7a8e-4f3e-4a51-9a39-2f1d3f5c6a10",
      "priceCents": "42500000"
    },
    "forRent": null
  },
  "dataHidden": false
}

200 OK2 creditsSample response

Request

GET/data/v1/places/insights?type=neighborhood&slug=langestraat-e-o-jtvr6xz675kh

X-API-Key: YOUR_API_KEY

Response

{
  "type": "neighborhood",
  "slug": "langestraat-e-o-jtvr6xz675kh",
  "displayName": "Langestraat e.o.",
  "archived": false,
  "municipality": {"slug": "amsterdam-gsxxzjaz98rj", "displayName": "Amsterdam"},
  "district": {
    "slug": "grachtengordel-west-mavt2wcj84gj",
    "displayName": "Grachtengordel-West"
  },
  "districts": [],
  "neighborhoods": [],
  "metrics": [
    {
      "key": "population.total",
      "unit": "count",
      "latest": {
        "period": {"type": "date", "start": "2026-01-01", "end": "2026-01-01"},
        "value": 1180
      },
      "history": [
        {
          "period": {
            "type": "date",
            "start": "2026-01-01",
            "end": "2026-01-01"
          },
          "value": 1180
        },
        {
          "period": {
            "type": "date",
            "start": "2025-01-01",
            "end": "2025-01-01"
          },
          "value": 1165
        },
        {
          "period": {
            "type": "date",
            "start": "2024-01-01",
            "end": "2024-01-01"
          },
          "value": 1140
        }
      ],
      "comparisons": [
        {"place": "district", "value": 9870},
        {"place": "municipality", "value": 934900},
        {"place": "country", "value": 17942942}
      ]
    },
    {
      "key": "housing.ownership.owner_occupied_share",
      "unit": "percentage",
      "latest": {
        "period": {"type": "date", "start": "2026-01-01", "end": "2026-01-01"},
        "value": 38
      },
      "history": [],
      "comparisons": [{"place": "country", "value": 57}]
    }
  ],
  "attribution": [
    {
      "provider": "cbs-statistics",
      "publisher": "Centraal Bureau voor de Statistiek (CBS)",
      "license": "CC-BY-4.0",
      "licenseUrl": "https://creativecommons.org/licenses/by/4.0/"
    }
  ]
}

200 OK2 creditsSample response

Sample data from the published API contract.

  • Listings come from 3,000+ Dutch housing websites that Huisly monitors.

  • Huisly holds 10.6 million Dutch properties.

  • Huisly merges 99% of duplicate listings for properties with a full address. Listings without an address are not deduplicated.

The APIs

Three APIs live. One planned.

Search open rent and sale listings in the places you choose, with filters and paging.

1 credit per search

Look up one Dutch property by its slug: address, places, location, registered facts and open listings.

2 credits per lookup

Figures for a municipality, district or neighbourhood, with comparisons and source attribution.

2 credits per request

How it works

One account, one key, one request.

  1. Create an account

    Enter your email address and we send you a code. No password needed.

  2. Create an API key

    Create a key in the console and send it in the X-API-Key header.

  3. Send a request

    A successful request takes its credits from your balance. A failed request costs nothing.

curl -X POST https://api.huisly.nl/data/v1/listings/search \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"listingType":"for-sale","places":[{"type":"municipality","slug":"amsterdam-gsxxzjaz98rj"}],"limit":20}'
const response = await fetch("https://api.huisly.nl/data/v1/listings/search", {
  method: "POST",
  headers: {
    "X-API-Key": "YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    listingType: "for-sale",
    places: [{ type: "municipality", slug: "amsterdam-gsxxzjaz98rj" }],
    limit: 20,
  }),
})
const { data, pagination } = await response.json()
import requests

response = requests.post(
    "https://api.huisly.nl/data/v1/listings/search",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "listingType": "for-sale",
        "places": [{"type": "municipality", "slug": "amsterdam-gsxxzjaz98rj"}],
        "limit": 20,
    },
)
page = response.json()

Pricing

Plans from €49 a month.

  • Starter

    €49a month€49 a month

    1,400 credits each month

    Create account
  • Growth

    Recommended

    €149a month€149 a month

    5,000 credits each month

    Create account
  • Business

    €499a month€499 a month

    18,500 credits each month

    Create account
  • Enterprise

    From€1,499a monthFrom €1,499 a month

    60,000 credits each month and up

    Arranged with sales

    Book a call

Compare plans and estimate your usagePrices exclude VAT.

Try it with free credits

A new organization can claim free trial credits to try the API.