{
  "openapi": "3.0.1",
  "info": {
    "title": "NL Student Housing Aggregator (123Wonen, Rotsvast, ViaDaan)",
    "description": "Find current student rooms, studios and apartments for rent in Groningen, Utrecht and",
    "version": "0.9",
    "x-build-id": "bLDxugzxUg1kQgKDP"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/codeclouds~nl-studentenwoonruimte-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-codeclouds-nl-studentenwoonruimte-monitor",
        "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/codeclouds~nl-studentenwoonruimte-monitor/runs": {
      "post": {
        "operationId": "runs-sync-codeclouds-nl-studentenwoonruimte-monitor",
        "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/codeclouds~nl-studentenwoonruimte-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-codeclouds-nl-studentenwoonruimte-monitor",
        "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": {
          "steden": {
            "title": "Cities",
            "type": "array",
            "description": "Which cities to check. Each franchise runs its own listing search per city.",
            "items": {
              "type": "string",
              "enum": [
                "groningen",
                "utrecht",
                "nijmegen"
              ],
              "enumTitles": [
                "Groningen",
                "Utrecht",
                "Nijmegen"
              ]
            },
            "default": [
              "groningen",
              "utrecht",
              "nijmegen"
            ]
          },
          "bronnen": {
            "title": "Sources",
            "type": "array",
            "description": "Which sources to check. 123Wonen/Rotsvast/ViaDaan/HouseHunting are national franchises (work for any selected city). All others are independent Groningen-only offices (ignored for other cities). Gout Beheer/K&P Makelaars/Van der Meulen/Solide Verhuur (Groningen only) and ViaDaan (national, needed for its infinite-scroll pagination) require a headless browser and are slower per listing.",
            "items": {
              "type": "string",
              "enum": [
                "123wonen",
                "rotsvast",
                "viadaan",
                "househunting",
                "gruno",
                "bulten",
                "dcwonen",
                "goutbeheer",
                "kpmakelaars",
                "vandermeulen",
                "solideverhuur",
                "vijftigvastgoed",
                "uwthuis",
                "desegno",
                "lucasklamer",
                "bens",
                "iidam",
                "novavastgoed",
                "riantmakelaars"
              ],
              "enumTitles": [
                "123Wonen",
                "Rotsvast",
                "ViaDaan",
                "HouseHunting",
                "Gruno Verhuur (Groningen only)",
                "Bulten Vastgoed (Groningen only)",
                "DC Wonen (Groningen only)",
                "Gout Beheer (Groningen only, slower)",
                "K&P Makelaars (Groningen only, slower)",
                "Van der Meulen Makelaars (Groningen only, slower)",
                "Solide Verhuur (Groningen only, slower)",
                "050Vastgoed (Groningen only)",
                "Thuis Verhuurmakelaars (Groningen only)",
                "Desegno (Groningen only)",
                "Lucas Klamer Makelaardij (Groningen only)",
                "ben-s.nl verhuur en beheer (Groningen only)",
                "II DAM B.V. (Groningen only)",
                "Nova Vastgoed Groningen (Groningen only)",
                "F1 & Riant Makelaars (Groningen only)"
              ]
            },
            "default": [
              "123wonen",
              "rotsvast",
              "viadaan",
              "househunting",
              "gruno",
              "bulten",
              "dcwonen",
              "goutbeheer",
              "kpmakelaars",
              "vandermeulen",
              "solideverhuur",
              "vijftigvastgoed",
              "uwthuis",
              "desegno",
              "lucasklamer",
              "bens",
              "iidam",
              "novavastgoed",
              "riantmakelaars"
            ]
          },
          "maxPerBron": {
            "title": "Max listings per source per city",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap on how many listings to fetch per source per city — useful for a cheap test run. Leave empty for no limit."
          },
          "nieuwSinds": {
            "title": "Only show listings new since (date)",
            "type": "string",
            "description": "Optional: only include listings this Actor first saw on or after this date (YYYY-MM-DD). Sources don't publish a \"posted on\" date, so this Actor tracks per-listing first-seen dates itself, persisted across runs. The very first run (no prior history yet) always shows everything regardless of this setting."
          },
          "maxPrijs": {
            "title": "Max price per month",
            "minimum": 1,
            "type": "integer",
            "description": "Optional: only include listings with a stated price at or below this amount (€/month). Listings with no stated price are excluded when this is set — we can't confirm they fit, so we'd rather skip than guess."
          },
          "minOppervlakte": {
            "title": "Min surface area (m²)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional: only include listings with a stated surface area at or above this size (m²). Listings with no stated surface area are excluded when this is set, for the same reason as maxPrijs."
          },
          "typen": {
            "title": "Property types",
            "type": "array",
            "description": "Optional: only include these property types. Leave empty for all types. \"Unknown\" means the source page didn't clearly state a type.",
            "items": {
              "type": "string",
              "enum": [
                "kamer",
                "studio",
                "appartement",
                "onbekend"
              ],
              "enumTitles": [
                "Room",
                "Studio",
                "Apartment",
                "Unknown"
              ]
            }
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}