{
  "openapi": "3.0.1",
  "info": {
    "title": "Kamernet Scraper - Dutch Rooms, Studios and Rentals",
    "description": "Scrape Kamernet.nl rental listings by Dutch city: rooms in shared homes, studios, apartments and student housing. Get rent, utilities, deposit, size, furnishing, availability, advertiser type, amenities, tenant preferences and photos.",
    "version": "1.0",
    "x-build-id": "vpAwgXCib2CloBRvz"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~kamernet-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-kamernet-property-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/sian.agency~kamernet-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-kamernet-property-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/sian.agency~kamernet-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-kamernet-property-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search",
              "detail"
            ],
            "type": "string",
            "description": "Search returns Kamernet listings for the Dutch cities you name. Listing Details opens Kamernet listing addresses you already have and returns the full record. Tick Add full details on a search to get both in one run.",
            "default": "search"
          },
          "locations": {
            "title": "📍 Cities",
            "type": "array",
            "description": "Dutch cities or towns, one per line: amsterdam, utrecht, Den Haag, Rotterdam. Use nederland for the whole country. Each one runs its own search. A name Kamernet doesn't know gets an error row and isn't charged.",
            "default": [
              "amsterdam"
            ],
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "🏠 Type of place",
            "enum": [
              "any",
              "room",
              "studio",
              "apartment",
              "studentHousing",
              "antiSquat"
            ],
            "type": "string",
            "description": "Which kind of place to search. Rooms are most of Kamernet. Student housing covers rooms and apartments offered to students.",
            "default": "room"
          },
          "maxResults": {
            "title": "🔢 Max listings",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Stop after this many listings across all cities. The run stops exactly at this number. Free accounts stop at 25. Listing Details ignores it and returns every listing you pasted.",
            "default": 100
          },
          "includeDetails": {
            "title": "📄 Add full details",
            "type": "boolean",
            "description": "Opens each listing's own page and adds the title, full description, deposit and extra costs, advertiser type, shared or private kitchen, bathroom and toilet, energy label, tenant preferences and every photo. Each listing also bills one Listing Details event.",
            "default": false
          },
          "radiusKm": {
            "title": "📏 Search radius",
            "enum": [
              "1",
              "2",
              "5"
            ],
            "type": "string",
            "description": "How far around the city Kamernet searches. 5 km includes nearby towns (for Amsterdam: Diemen, Amstelveen, Zaandam); 1 km keeps to the city itself.",
            "default": "5"
          },
          "minRent": {
            "title": "💶 Min rent (€ per month)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest monthly rent to include. Leave it empty for no floor."
          },
          "maxRent": {
            "title": "💰 Max rent (€ per month)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest monthly rent to include. Leave it empty for no ceiling."
          },
          "minSize": {
            "title": "📐 Min size (m²)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Smallest surface area to include. For a room Kamernet lists the size the advertiser entered, which is sometimes the whole home."
          },
          "furnishing": {
            "title": "🛋️ Furnishing",
            "enum": [
              "any",
              "unfurnished",
              "upholstered",
              "furnished"
            ],
            "type": "string",
            "description": "How the place is delivered. Upholstered (gestoffeerd) means floors and curtains but no furniture.",
            "default": "any"
          },
          "advertiser": {
            "title": "👤 Advertiser",
            "enum": [
              "any",
              "private",
              "housemate",
              "agent",
              "other"
            ],
            "type": "string",
            "description": "Who placed the ad. Private landlords and housemates are the ads that rarely appear on the big Dutch portals. Student-house ads have no advertiser type and are left out when you pick one.",
            "default": "any"
          },
          "searchUrls": {
            "title": "🔗 Kamernet search pages",
            "type": "array",
            "description": "Kamernet search pages instead of city names, e.g. https://kamernet.nl/huren/kamer-utrecht or https://kamernet.nl/en/for-rent/room-rotterdam. The type of place in the address is used; the rent, advertiser and furnishing fields above still apply.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingUrls": {
            "title": "📄 Listing URLs",
            "type": "array",
            "description": "Used by Listing Details: Kamernet listing addresses, one per line, such as https://kamernet.nl/huren/kamer-amsterdam/teldershof/kamer-2409833 or the English https://kamernet.nl/en/for-rent/room-amsterdam/teldershof/room-2409833.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}