Skip to content
HuislyHuisly
StatusLivePOST /data/v1/listings/search

Aggregator API

Search open Dutch listings for rent and for sale through a REST API. Results come newest first.

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

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

Sample data from the published API contract.

  • 1 creditper search
  • 50listings on a page, at most
  • 10places in one search, at most
  • Newest firsta fixed order, by listing time

Endpoints

The base address is https://api.huisly.nl. Send your API key in the X-API-Key header.

  • POST/data/v1/listings/searchSearch open listings in 1 to 10 places.1 credit
  • GET/data/v1/places/searchFind places and their slugs by name, postal code or street. Returns up to 5 places.Free
  • GET/data/v1/balanceCheck your API key and your credit balance.Free

Filters

All optional.

  • Property type
  • Price
  • Living area
  • Bedrooms
  • Rooms
  • Construction year
  • Energy label
  • Furnishing
  • Application fee

Paging

nextCursor

A page has up to 50 listings, 20 by default, newest first. To read on, send the nextCursor of a page as cursor in the next request.

propertySlug

A listing that is linked to an address has the slug of its property, in propertySlug.

Property API

About the data

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

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

Call it from your code

Cost

A listing search costs 1 credit and returns up to 50 listings. The place search and the balance are free. A failed request costs nothing.

Read the docs

API keys start with vos_live_.

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()

Try it with free credits

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