lunterodevelopers
GuidesAPI Reference

Make your first request

Go from an API key to a rental search, understand the response, and open a listing with its full details.

Luntero exposes Netherlands rental listings and housing information through a read-only JSON API. You can start with a small listing search, then add locations, owner profiles, editorial resources or market observations as your integration grows.

This guide takes you through the first useful workflow: check the connection, authenticate, search for rentals and retrieve one property's details. You do not need a client library or a database connection.

What you need

A terminal with curl, or a server-side TypeScript or Python environment, and an API key issued by Luntero. You can run the connectivity check before you have a key.

1. Get access and set your key

Contact Luntero to request API access. Keys are currently issued directly; self-service signup and billing are not available in this release.

Make the key available to your application as LUNTERO_API_KEY. In a Bash or Zsh terminal, you can enter it without displaying it as you type:

read -r -s LUNTERO_API_KEY
export LUNTERO_API_KEY

Paste your key at the prompt and press Enter. Keep that terminal open for the curl examples below. In a deployed application, provide the value through your hosting platform's secret configuration.

The key belongs on your backend. If you are building a browser interface or mobile app, let it call your own backend, which adds the Luntero key when contacting the API. The authentication guide explains that request path and how to replace a key safely.

2. Check the connection

The public ping endpoint verifies that your client can reach the API over HTTPS. It does not require a key or return any listing data.

curl --fail-with-body --silent --show-error \
  'https://api.luntero.com/v1/ping'

A successful response is:

{
  "service": "luntero-api",
  "status": "ok"
}

If this request fails, resolve the connection or HTTPS issue before investigating authentication. A successful ping confirms reachability; your next request checks access to the data endpoints.

3. Search for rentals

Choose a language below. Every example sends the same request: up to five published rental listings, with English text selected by default.

curl --fail-with-body --silent --show-error \
  --get 'https://api.luntero.com/v1/listings' \
  --data-urlencode 'limit=5' \
  -H "Authorization: Bearer $LUNTERO_API_KEY"

These are deliberately small examples. For a reusable client with explicit error handling, follow Build a rental search. For retry handling, use Errors and rate limits.

4. Read the response

A paginated result has three top-level fields. The following is an illustrative, shortened response; its IDs and values are examples, not records you can look up.

{
  "data": [
    {
      "id": "listing_example",
      "title": "Example apartment",
      "price_eur": 1500,
      "size_m2": 65,
      "rooms": 3,
      "owner_id": "owner_example"
    }
  ],
  "pagination": {
    "limit": 5,
    "has_more": false,
    "next_cursor": null
  },
  "meta": {
    "locale": "en",
    "request_id": "example-request-id"
  }
}
FieldHow to use it
dataThe records returned by this request. An empty array is a successful search with no matches.
paginationWhether another page is available, and the cursor needed to request it.
meta.localeThe requested language. Individual fields may fall back to English.
meta.request_idThe identifier to include when reporting a problem with this response.

For listings, price_eur is monthly rent in euros and size_m2 is area in square metres. rooms counts total rooms, not bedrooms. Refer to the endpoint schema for the complete record and its nullable fields.

Results are ordered by stable ID. The first record is not necessarily the newest or cheapest home. If you need another page, pass pagination.next_cursor back unchanged with the original filters and page size. The requests guide walks through that process.

5. Open a listing

Copy an actual id from your search response. The detail endpoint accepts that ID, not the listing's slug or a URL from the Luntero website.

LISTING_ID='COPY_AN_ID_FROM_YOUR_SEARCH'

curl --fail-with-body --silent --show-error \
  "https://api.luntero.com/v1/listings/$LISTING_ID" \
  -H "Authorization: Bearer $LUNTERO_API_KEY"

The response has data and meta, without a pagination object. In addition to the summary fields, a listing detail can contain its full description, images, attributes and source links.

A listing may become unavailable between the search and detail request. Handle 404 by explaining that the record is no longer available and offering the user a way back to search. Do not assume that an ID returned earlier will remain publicly available forever.

Try the same request in the reference

Every endpoint page includes its parameter definitions, response schema and Try in Playground button. For data endpoints, enter your own Bearer key in the authorization field, then send the request.

The production playground calls api.luntero.com directly from your browser. Requests use your key's rate allowance, just like requests from your application. Use it on a trusted device and clear the key when you finish.

Where to go next

You now have a connection, an authenticated collection request and a detail request. The next step is to make those requests useful to your users.

On this page