# Kamernet Scraper \[$3/1K💰] | Student Rooms (`ahmed_jasarevic/kamernet-nl-scraper`) Actor

Scrape Kamernet.nl student rooms, studios and apartments across the Netherlands: rent, utilities, surface, furnishing, availability, photos, landlord type and description. $3 per 1,000 listings.

- **URL**: https://apify.com/ahmed_jasarevic/kamernet-nl-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.80 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kamernet Scraper – Dutch Student Rooms & Rentals

Scrape public **Kamernet.nl** student rooms, studios and apartments across the Netherlands. Get monthly rent, base rent, deposit, utilities, surface, property type, furnishing, availability, description, photos, landlord type and tenant preferences. **$3 per 1,000 listings.**

### Dutch Student Housing Data For Rentals And Research

Kamernet is one of the Netherlands’ best-known student-housing marketplaces. This Actor turns public listings into a structured dataset for student-housing platforms, relocation and immigration agencies, universities, property managers benchmarking rents, expat services and room-sublet aggregators.

- **Housing research** — compare rent by city, neighborhood and property type.
- **Relocation support** — find available rooms and studios for incoming students.
- **Rent benchmarking** — track base rent, utilities and deposit levels.
- **Landlord research** — compare private, roommate and agency landlords.
- **Market monitoring** — schedule runs to follow new listings and availability.

### How It Works

![How the Kamernet Scraper works: city and neighborhood searches to structured Dutch student housing with rent, photos and landlord details.](https://api.apify.com/v2/key-value-stores/oeuA0kLOyhbRM4fzt/records/how-it-works-kamernet-nl-scraper.webp)

Choose city, neighborhood or individual listing URLs. The Actor collects matching public listings, follows the available result pages, optionally adds full details and writes one row per listing.

- One row per listing.
- City, neighborhood and street searches.
- Rooms, studios, apartments, student housing and anti-squat listings.
- Optional detail mode for description, photos, deposit and landlord data.
- Free users get a 10-listing preview.

### Search Student Housing Across The Netherlands

Use city and neighborhood searches or individual listings:

- **Cities** — Amsterdam, Rotterdam, Utrecht, The Hague, Groningen and other Dutch cities.
- **Neighborhoods** — target a district or street.
- **Property types** — rooms, studios, apartments and student housing.
- **Language** — Dutch and English listings are supported.
- **Volume** — cap listings with `maxListings` and pages with `maxPagesPerSearch`.

### Rent, Utilities And Landlord Fields

Each row can include the listing ID, URL, title in English and Dutch, description in English and Dutch, city, city slug, neighborhood, street, monthly rent, base rent, deposit, agency fee, utilities flag, surface area, listing type, furnishing, availability start and end dates, listing age, publish date, top-ad and moved-up flags, student-house flag, rooms, bedrooms, suitable number of persons, candidate age limits, pets and smoking rules, registration permission, postal code, coordinates, photo count, photos, thumbnails, landlord type and public landlord details.

Utilities are not always included. Check `utilitiesIncluded` and `utilitiesFlag` before comparing rents.

### Input – Configure A Kamernet Run

| Field | Type | Default | Notes |
|---|---|---|---|
| `startUrls` | array | Amsterdam, Rotterdam and Utrecht room pages | Kamernet search pages, neighborhood pages or individual listings |
| `maxListings` | integer | `100` | Maximum listings saved; free users capped at 10 |
| `maxPagesPerSearch` | integer | `5` | Result pages per search URL, about 17 listings each |
| `crawlDetails` | boolean | `true` | Add description, photos, deposit and landlord details |
| `proxy` | object | Off | Optional connection settings for large runs |

### Output – Student Housing Fields

- **Identity** — `listingId`, `url`, `title`, `titleNl`, `description`, `descriptionNl`
- **Location** — `city`, `citySlug`, `neighbourhood`, `street`, `streetSlug`, `postalCode`, `latitude`, `longitude`
- **Rent** — `monthlyRent`, `baseRent`, `deposit`, `agencyFee`, `utilitiesIncluded`, `utilitiesFlag`
- **Property** — `surfaceAreaM2`, `listingType`, `furnished`, `rooms`, `bedrooms`, `suitableForNumberOfPersons`
- **Availability** — `availabilityStartDate`, `availabilityEndDate`, `availabilityWindow`
- **Listing flags** — `isNewAdvert`, `listingAgeDays`, `publishDate`, `isTopAdvert`, `isMovedUp`, `isStudentHouseListing`
- **Preferences** — `candidateMinAge`, `candidateMaxAge`, `petsAllowed`, `smokingAllowed`, `registrationAllowed`
- **Media** — `photoCount`, `photos`, `thumbnailPhotos`
- **Landlord** — `landlordType`, `landlord.name`, `landlord.memberSince`, `landlord.lastLogin`, `landlord.activeListings`, `landlord.responseRate`, `landlord.responseTime`, `landlord.idVerified`, `landlord.bankVerified`
- **Provenance** — `scrapedAt`

### Example Input – Amsterdam And Rotterdam Rooms

```json
{
  "startUrls": [
    "https://kamernet.nl/en/for-rent/room-amsterdam",
    "https://kamernet.nl/en/for-rent/room-rotterdam"
  ],
  "maxListings": 100,
  "maxPagesPerSearch": 3,
  "crawlDetails": true
}
```

### Example Output – Amsterdam Student Room

```json
{
  "listingId": "12345678",
  "url": "https://kamernet.nl/en/for-rent/room-amsterdam/de-pijp/12345678",
  "title": "Furnished room in De Pijp",
  "titleNl": "Gemeubileerde kamer in De Pijp",
  "description": "Bright room in a shared apartment.",
  "descriptionNl": "Lichte kamer in een gedeeld appartement.",
  "city": "Amsterdam",
  "citySlug": "amsterdam",
  "neighbourhood": "De Pijp",
  "street": "Example Street",
  "monthlyRent": 950,
  "baseRent": 750,
  "deposit": 1500,
  "agencyFee": 0,
  "utilitiesIncluded": false,
  "utilitiesFlag": "excluded",
  "surfaceAreaM2": 18,
  "listingType": "room",
  "furnished": "furnished",
  "availabilityStartDate": "2026-12-01",
  "availabilityEndDate": null,
  "availabilityWindow": "From 1 December 2026",
  "isNewAdvert": true,
  "isTopAdvert": false,
  "petsAllowed": false,
  "smokingAllowed": false,
  "registrationAllowed": true,
  "photoCount": 8,
  "photos": ["https://kamernet.nl/example-1.jpg"],
  "landlordType": "private",
  "landlord": {
    "name": "Example Landlord",
    "responseRate": 92,
    "idVerified": true
  },
  "scrapedAt": "2026-11-03T10:00:00.000Z"
}
```

### Export Student Housing Data And Schedule Alerts

Download JSON, CSV, Excel or HTML from Apify Console, or use the Apify API. Send new listings to Google Sheets, Airtable, Make, Zapier, n8n or a webhook. Schedule daily runs to track new rooms, rent changes and availability windows.

### Related Actors

- [HousingAnywhere Scraper](https://apify.com/ahmed_jasarevic/housinganywhere-scraper) — add international student housing
- [Imovirtual Scraper](https://apify.com/ahmed_jasarevic/imovirtual-pt-scraper) — add Portuguese rentals
- [Uniplaces Scraper](https://apify.com/ahmed_jasarevic/uniplaces-scraper) — add student accommodation
- [Immojeune Scraper](https://apify.com/ahmed_jasarevic/immojeune-scraper) — add French student housing

### FAQ

#### Which Kamernet pages are supported?

City search pages, neighborhood and street pages, and individual listing URLs.

#### Are utilities included in the rent?

Not always. Use `utilitiesIncluded` and `utilitiesFlag` to separate included from excluded utilities before comparing prices.

#### Are listings in Dutch or English?

Both. The Actor keeps English and Dutch titles and descriptions in separate fields when Kamernet publishes both.

#### Is landlord information always available?

Only when Kamernet publishes it publicly. Private landlords, roommates and agencies expose different amounts of detail.

#### What does `crawlDetails` add?

It adds the full description, photos, deposit, exact rent, availability and landlord details. Disable it for a faster card-only run.

#### How many listings can one run return?

`maxListings` defaults to 100. Free users get a 10-listing preview.

#### Do I need a Kamernet account?

No. The Actor reads public housing listings without login.

#### How much does it cost?

FREE and BRONZE users pay **$0.003 per listing** ($3 per 1,000). SILVER pays **$0.0029** ($2.90 per 1,000) and GOLD+ pays **$0.0028** ($2.80 per 1,000), plus a small Actor Start event.

### For AI Agents & LLM Apps

Returns one row per public Kamernet listing with rent, property, availability, location, media and landlord fields.

Minimal working input:

```json
{ "startUrls": ["https://kamernet.nl/en/for-rent/room-amsterdam"], "maxListings": 20, "crawlDetails": true }
```

Output fields: `listingId, url, title, titleNl, description, descriptionNl, city, citySlug, neighbourhood, street, streetSlug, monthlyRent, baseRent, deposit, agencyFee, utilitiesIncluded, utilitiesFlag, surfaceAreaM2, listingTypeId, listingType, furnishingId, furnished, availabilityStartDate, availabilityEndDate, availabilityWindow, isNewAdvert, listingAgeDays, publishDate, isTopAdvert, isMovedUp, isStudentHouseListing, rooms, bedrooms, suitableForNumberOfPersons, candidateMinAge, candidateMaxAge, petsAllowed, smokingAllowed, registrationAllowed, postalCode, latitude, longitude, photoCount, photos, thumbnailPhotos, landlordTypeId, landlordType, landlord, scrapedAt`.

Behaviors an agent should know:

- `monthlyRent` is the total monthly rent; compare it with `baseRent` and `utilitiesFlag`.
- `availabilityEndDate` can be `null` for open-ended rentals.
- `landlord` contains only public profile details.
- `crawlDetails: false` returns card-level fields only.
- Free users get a 10-listing preview.

Billing: **$0.003 per listing** on FREE/BRONZE ($3 per 1,000), $0.0029 on SILVER ($2.90 per 1,000) and $0.0028 on GOLD+ ($2.80 per 1,000), plus a small Actor Start event.

### Legal & Compliance Disclaimer

This Actor is an independent tool. It is not affiliated with, endorsed by or sponsored by Kamernet.

It collects publicly available housing listings. Rent, availability, landlord details and listing terms are published by advertisers and may change. Users are responsible for complying with Kamernet’s terms, privacy law and applicable housing and anti-discrimination rules. Nothing here is legal, rental or investment advice.

### SEO Keywords

kamernet scraper, kamernet listings, dutch student housing, student rooms netherlands, amsterdam student rooms, rotterdam student rooms, utrecht student rooms, kamernet rent, student housing data, room rental data, netherlands rentals, expat housing, landlord data, rental market data, student accommodation, housing api, rent prices netherlands, kamernet api

# Actor input Schema

## `startUrls` (type: `array`):

Kamernet /for-rent/ pages to crawl, e.g. https://kamernet.nl/en/for-rent/room-amsterdam or a neighbourhood page https://kamernet.nl/en/for-rent/room-amsterdam/de-pijp. Individual listing URLs are also supported. Pagination is followed automatically (up to Max pages per search).

## `maxListings` (type: `integer`):

Maximum number of listings to save to the dataset. Free users are capped at 10 listings.

## `maxPagesPerSearch` (type: `integer`):

Maximum number of result pages to request for each search URL. Each page has roughly 17 listings.

## `crawlDetails` (type: `boolean`):

If enabled, each listing is enriched via Kamernet's internal details API (description, photos, landlord type, exact availability, deposit, coordinates). Disable for a faster, lower-detail run using only search-card fields.

## `proxy` (type: `object`):

Select proxies to be used by your crawler.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://kamernet.nl/en/for-rent/room-amsterdam"
    },
    {
      "url": "https://kamernet.nl/en/for-rent/room-rotterdam"
    },
    {
      "url": "https://kamernet.nl/en/for-rent/room-utrecht"
    }
  ],
  "maxListings": 100,
  "maxPagesPerSearch": 5,
  "crawlDetails": true,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://kamernet.nl/en/for-rent/room-amsterdam"
        },
        {
            "url": "https://kamernet.nl/en/for-rent/room-rotterdam"
        },
        {
            "url": "https://kamernet.nl/en/for-rent/room-utrecht"
        }
    ],
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/kamernet-nl-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [
        { "url": "https://kamernet.nl/en/for-rent/room-amsterdam" },
        { "url": "https://kamernet.nl/en/for-rent/room-rotterdam" },
        { "url": "https://kamernet.nl/en/for-rent/room-utrecht" },
    ],
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/kamernet-nl-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://kamernet.nl/en/for-rent/room-amsterdam"
    },
    {
      "url": "https://kamernet.nl/en/for-rent/room-rotterdam"
    },
    {
      "url": "https://kamernet.nl/en/for-rent/room-utrecht"
    }
  ],
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ahmed_jasarevic/kamernet-nl-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/kamernet-nl-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cRsbAcI9f4AFbt0Tf/builds/CDqn59HvAYi93u7Er/openapi.json
