# Kamernet Rental Search API Documentation

Scrappa's `GET /api/kamernet/search` returns Kamernet.nl rooms, studios, apartments and anti-squat homes for rent in one Dutch city as structured JSON.

## Rentals only

Kamernet lists homes for rent. It has no sale listings, no reviews and no bedroom or bathroom count filter, so this API has none of them. Bedrooms are returned by the listing endpoint when Kamernet shows them.

## What you get

One request returns one page of 17 homes. Each home has `id`, `url`, `type`, `street`, `city`, `surface_m2`, `total_rent` in EUR, `utilities_included`, `furnishing`, `available_from`, `available_to`, `is_new`, `is_student_house` and image URLs. Cards have no coordinates, deposit or landlord: call the listing endpoint for those. The response also has `city_stats` (average rent and active tenants), `effective_filters`, `nearby_listings` and `seo_links` (nearby cities and popular streets).

## Filters are honoured

Kamernet works with fixed steps for rent, size and radius, not with exact values. This API picks a step that never loses a valid home, then checks every home against the exact value you sent and removes any home that breaks it. `max_rent` is compared with the total monthly rent. When homes are removed, `page_items_removed` shows how many and `meta.post_filtered` is true. In that case `total` is Kamernet's count for the step, so it can be higher than the real count. It is never lower. Sponsored top ads are never returned.

## Pagination

Each page holds 17 homes. `page` is 1-based. A page past the last one returns an empty list labelled with that page. It never returns another page's homes.

## Radius

`radius_km` takes 0, 1, 2, 5, 10 (default) or 20 and widens the search around the city.

## Filters not offered

Kamernet's map search, roommate count and move-in date filters are not offered. The move-in date filter is left out because its meaning could not be verified. Sale listings do not exist on Kamernet.

- **Documentation:** [https://scrappa.co/docs/kamernet-api/kamernet_search](https://scrappa.co/docs/kamernet-api/kamernet_search)
- **API group:** Kamernet API
- **Endpoint:** `GET https://scrappa.co/api/kamernet/search`

## Authentication

Send your Scrappa API key in the `X-API-KEY` request header. Paid endpoints also support accountless x402 payments when called without an API key.

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `city` | string | Yes | City name or slug from location-autocomplete, for example Amsterdam or Den Haag. |
| `max_rent` | integer | No | Maximum total monthly rent in EUR as a whole number, up to 20000. |
| `min_size` | integer | No | Minimum surface in square metres as a whole number. |
| `listing_type` | string | No | One or more of room, apartment, studio, anti_squat. Comma-separated. |
| `furnishing` | string | No | One or more of uncarpeted, unfurnished, furnished. Comma-separated. |
| `radius_km` | integer | No | Search radius around the city in km: 0, 1, 2, 5, 10 (default) or 20. |
| `availability` | string | No | indefinite, temporary or both. Comma-separated. |
| `pets_allowed` | boolean | No | true to show homes that allow pets only. |
| `smoking_allowed` | boolean | No | true to show homes that allow smoking only. |
| `internet` | boolean | No | true to show homes with internet only. |
| `private_bathroom` | boolean | No | true to show homes with a private bathroom only. |
| `private_kitchen` | boolean | No | true to show homes with a private kitchen only. |
| `private_toilet` | boolean | No | true to show homes with a private toilet only. |
| `persons` | integer | No | Homes suitable for 1 or 2 persons. |
| `gender` | string | No | male, female or both. Homes open to any gender are included. Comma-separated. |
| `age` | integer | No | Tenant age from 16 to 99. |
| `work_status` | string | No | One or more of student, working_student, working, looking_for_job. Comma-separated. |
| `owner_type` | string | No | One or more of private, roommate, agent, other. Comma-separated. |
| `sort` | string | No | newest (default), price_asc, price_desc or surface_asc. |
| `page` | integer | No | Result page, 1-based. Each page holds 17 homes. |

## Example request

```bash
#!/bin/bash

curl -X GET \
    -H "x-api-key: YOUR_API_KEY_HERE" \
    "https://scrappa.co/api/kamernet/search?city=Amsterdam&max_rent=1000&listing_type=room&sort=price_asc"
```

## Example response

```json
{
    "success": true,
    "platform": "kamernet",
    "city": {
        "name": "Amsterdam",
        "slug": "amsterdam"
    },
    "currency": "EUR",
    "total": 126,
    "returned": 1,
    "page_items_removed": 0,
    "pagination": {
        "page": 1,
        "limit": 17,
        "total_pages": 8,
        "has_next": true,
        "has_previous": false
    },
    "applied_filters": {
        "city": "amsterdam",
        "sort": "price_asc",
        "max_rent": 1000,
        "listing_type": [
            "room"
        ]
    },
    "listings": [
        {
            "id": 2414003,
            "url": "https://kamernet.nl/en/for-rent/room-diemen/botterweg/room-2414003",
            "type": "room",
            "street": "Botterweg",
            "city": "Diemen",
            "city_slug": "diemen",
            "city_id": 4,
            "surface_m2": 14,
            "total_rent": 650,
            "currency": "EUR",
            "utilities_included": true,
            "furnishing": "furnished",
            "available_from": "2026-11-01T19:07:24",
            "available_to": null,
            "is_new": true,
            "is_student_house": false,
            "thumbnail_url": "https://resources.kamernet.nl/image/50c6dca2-b4ca-428e-ae0e-91f174dbeb5f",
            "image_url": "https://resources.kamernet.nl/image/8a3e62b5-8499-454e-a179-27f2701d3df3"
        }
    ],
    "city_stats": {
        "active_tenants": 1787,
        "average_rent_per_month": {
            "room": 834,
            "apartment": 1721,
            "studio": 1143
        },
        "average_rent_per_m2": []
    },
    "effective_filters": {
        "citySlug": "amsterdam",
        "maxRent": 10,
        "sort": 2
    },
    "nearby_listings": [],
    "seo_links": {
        "popular_cities": [],
        "nearby_cities": [
            {
                "name": "Diemen",
                "slug": "diemen"
            }
        ],
        "popular_streets": []
    },
    "meta": {
        "endpoint_family": "search",
        "billable": true,
        "attempts": 1,
        "post_filtered": true
    }
}
```

## Errors

| Status | Error | Description |
| --- | --- | --- |
| 422 | Unknown City | The `city` value matches no city on Kamernet (`unknown_place`). Use a name from `/api/kamernet/location-autocomplete`. Non-billable. |
| 422 | Validation Error | A query parameter is missing, unknown or unusable (`invalid_filter`). Unknown parameters and unknown list values are rejected, never ignored. Non-billable. |
| 503 | Upstream Unavailable | Kamernet could not be reached, refused the request, or answered with data this API could not read (`upstream_unavailable`, `upstream_blocked`, `parser_drift`). Retryable and never billed. Clients are never rate limited. |

## More Scrappa resources

- [API documentation](https://scrappa.co/docs)
- [Full LLM-readable API reference](https://scrappa.co/llms-full.txt)
- [OpenAPI specification](https://scrappa.co/docs/api.json)
- [Pricing](https://scrappa.co/pricing)
