{
  "openapi": "3.0.1",
  "info": {
    "title": "Boliga Denmark Real Estate Scraper",
    "description": "Scrape Boliga.dk homes for sale and sold prices across Denmark: price, m² price, address, rooms, size, build year, energy label, days on market, sale date, GPS. Filter by postal code, property type, price and size.",
    "version": "1.0",
    "x-build-id": "CMdzNIuSmPYexHU6q"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parsebird~boliga-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parsebird-boliga-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/parsebird~boliga-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parsebird-boliga-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/parsebird~boliga-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parsebird-boliga-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": {
          "listingType": {
            "title": "Listing type",
            "enum": [
              "forSale",
              "sold"
            ],
            "type": "string",
            "description": "Choose homes currently <b>for sale</b> (til salg) or historical <b>sold prices</b> (solgte boliger / salgspriser, back to 1992).",
            "default": "forSale"
          },
          "zipAreas": {
            "title": "Areas / cities",
            "type": "array",
            "description": "Pick one or more Danish cities, Copenhagen districts or regions. Leave empty to search all of Denmark. Need a postal code that isn't listed? Add it under <b>More postal codes</b>.",
            "items": {
              "type": "string",
              "enum": [
                "copenhagen",
                "koebenhavn-k",
                "koebenhavn-v",
                "frederiksberg",
                "koebenhavn-oe",
                "koebenhavn-n",
                "koebenhavn-s",
                "koebenhavn-nv",
                "koebenhavn-sv",
                "valby",
                "aarhus",
                "odense",
                "aalborg",
                "esbjerg",
                "randers",
                "kolding",
                "horsens",
                "vejle",
                "roskilde",
                "herning",
                "silkeborg",
                "naestved",
                "fredericia",
                "viborg",
                "koege",
                "holstebro",
                "slagelse",
                "hilleroed",
                "helsingoer",
                "soenderborg",
                "svendborg",
                "hjoerring",
                "holbaek",
                "frederikshavn",
                "greater-copenhagen-suburbs",
                "north-zealand",
                "bornholm",
                "zealand-lolland-falster",
                "funen",
                "south-west-jutland",
                "central-west-jutland",
                "east-jutland",
                "north-jutland"
              ],
              "enumTitles": [
                "Copenhagen & Frederiksberg (1000–2500)",
                "København K (1000–1499)",
                "København V (1500–1799)",
                "Frederiksberg (1800–2000)",
                "København Ø / Nordhavn (2100–2150)",
                "København N (2200)",
                "København S (2300)",
                "København NV (2400)",
                "København SV (2450)",
                "Valby (2500)",
                "Aarhus (8000–8270)",
                "Odense (5000–5270)",
                "Aalborg (9000–9220)",
                "Esbjerg (6700–6715)",
                "Randers (8900–8960)",
                "Kolding (6000)",
                "Horsens (8700)",
                "Vejle (7100)",
                "Roskilde (4000)",
                "Herning (7400)",
                "Silkeborg (8600)",
                "Næstved (4700)",
                "Fredericia (7000)",
                "Viborg (8800)",
                "Køge (4600)",
                "Holstebro (7500)",
                "Slagelse (4200)",
                "Hillerød (3400)",
                "Helsingør (3000)",
                "Sønderborg (6400)",
                "Svendborg (5700)",
                "Hjørring (9800)",
                "Holbæk (4300)",
                "Frederikshavn (9900)",
                "Greater Copenhagen suburbs (2600–2990)",
                "North Zealand (3000–3670)",
                "Bornholm (3700–3790)",
                "Zealand, Lolland-Falster & Møn (4000–4990)",
                "Funen & islands (5000–5985)",
                "South & Southwest Jutland (6000–6990)",
                "Central & West Jutland (7000–7990)",
                "East Jutland (8000–8990)",
                "North Jutland (9000–9990)"
              ]
            },
            "default": []
          },
          "zipCodes": {
            "title": "More postal codes",
            "type": "string",
            "description": "Add Danish postal codes (postnumre), comma-separated, e.g. <code>2100,2200,8000</code>. Combined with the areas above."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Pick the home types to include. Leave empty for all types.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9"
              ],
              "enumTitles": [
                "Villa (detached house)",
                "Rækkehus (townhouse)",
                "Ejerlejlighed (apartment)",
                "Fritidshus (holiday home)",
                "Andelsbolig (co-op)",
                "Landejendom (farm / country property)",
                "Helårsgrund (residential plot)",
                "Fritidsgrund (holiday plot)",
                "Villalejlighed (villa apartment)"
              ]
            },
            "default": []
          },
          "maxItems": {
            "title": "Max properties",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after saving this many properties. <b>0 = no limit.</b> Sold searches can return hundreds of thousands of records, so set a limit unless you want them all.",
            "default": 0
          },
          "priceMin": {
            "title": "Min price (DKK)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum asking price (for sale) or sale price (sold), in Danish kroner."
          },
          "priceMax": {
            "title": "Max price (DKK)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum asking price (for sale) or sale price (sold), in Danish kroner."
          },
          "roomsMin": {
            "title": "Min rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of rooms (værelser)."
          },
          "roomsMax": {
            "title": "Max rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rooms (værelser)."
          },
          "sizeMin": {
            "title": "Min living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area (boligareal) in square meters."
          },
          "sizeMax": {
            "title": "Max living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area (boligareal) in square meters."
          },
          "buildYearMin": {
            "title": "Min build year",
            "minimum": 0,
            "type": "integer",
            "description": "Earliest construction year, e.g. 1960."
          },
          "buildYearMax": {
            "title": "Max build year",
            "minimum": 0,
            "type": "integer",
            "description": "Latest construction year, e.g. 2020."
          },
          "soldYearMin": {
            "title": "Sold from year",
            "minimum": 0,
            "type": "integer",
            "description": "Only sold properties: keep homes sold in or after this year, e.g. 2022."
          },
          "soldYearMax": {
            "title": "Sold until year",
            "minimum": 0,
            "type": "integer",
            "description": "Only sold properties: keep homes sold in or before this year."
          },
          "salesTypes": {
            "title": "Sales types",
            "type": "array",
            "description": "Only sold properties: pick the kinds of sale to include. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "regular",
                "family",
                "auction",
                "other"
              ],
              "enumTitles": [
                "Regular sale (Alm. Salg)",
                "Family sale (Fam. Salg)",
                "Auction / foreclosure (Auktion)",
                "Other (Andet)"
              ]
            },
            "default": []
          },
          "includeDetails": {
            "title": "Add agent contact & all photos",
            "type": "boolean",
            "description": "Only homes for sale: also load each listing's detail page to add the estate agent's name, phone, email and website, the agent's own listing link and every photo URL. Slower (one extra request per listing).",
            "default": false
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Paste ready-made Boliga API search URLs, e.g. <code>https://api.boliga.dk/api/v2/search/results?zipCodes=2100&propertyType=3</code> or <code>https://api.boliga.dk/api/v2/sold/search/results?zipcodeFrom=2100&zipcodeTo=2100</code>. When you add start URLs, the search fields above are ignored.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The actor connects directly by default and switches to Apify Proxy on its own if Boliga starts refusing requests.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}