{
  "openapi": "3.0.1",
  "info": {
    "title": "Boliga Scraper – Danish Real Estate Listings & Sold Prices",
    "description": "Boliga scraper & API for Danish real estate: search homes for sale and sold prices and export address, price, rooms, m2, lot, type, sale type, energy, days on market and coordinates. Denmark property and sold-price market data — fast, no login.",
    "version": "0.1",
    "x-build-id": "np1fGKoMtT4TY4okL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/haketa~boliga-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-haketa-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/haketa~boliga-scraper/runs": {
      "post": {
        "operationId": "runs-sync-haketa-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/haketa~boliga-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-haketa-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": "Scrape homes currently FOR SALE (til salg), or historical SOLD prices (solgte boliger / salgspriser).",
            "default": "forSale"
          },
          "zipAreas": {
            "title": "Areas / cities",
            "type": "array",
            "description": "Pick one or more Danish areas to target. Leave empty to cover all of Denmark. Need a postal code that is not in the list? Use the \"More zip codes\" box below.",
            "items": {
              "type": "string",
              "enum": [
                "1050",
                "2000",
                "2100",
                "2200",
                "2300",
                "2400",
                "2500",
                "2600",
                "2700",
                "2800",
                "2900",
                "3000",
                "3400",
                "3700",
                "4000",
                "4200",
                "4600",
                "4700",
                "4800",
                "5000",
                "5230",
                "5700",
                "6000",
                "6100",
                "6400",
                "6700",
                "6900",
                "7100",
                "7400",
                "7500",
                "7700",
                "8000",
                "8200",
                "8600",
                "8700",
                "8900",
                "9000",
                "9200",
                "9400",
                "9800",
                "9900"
              ],
              "enumTitles": [
                "Copenhagen K (city center)",
                "Frederiksberg",
                "Copenhagen Ø (Østerbro)",
                "Copenhagen N (Nørrebro)",
                "Copenhagen S (Amager)",
                "Copenhagen SV / Valby",
                "Valby",
                "Glostrup",
                "Kongens Lyngby",
                "Kongens Lyngby (2800)",
                "Hellerup",
                "Helsingør",
                "Hillerød",
                "Rønne (Bornholm)",
                "Roskilde",
                "Slagelse",
                "Køge",
                "Næstved",
                "Nykøbing F",
                "Odense C",
                "Odense M",
                "Svendborg",
                "Kolding",
                "Haderslev",
                "Sønderborg",
                "Esbjerg",
                "Ribe",
                "Vejle",
                "Herning",
                "Holstebro",
                "Thisted",
                "Aarhus C",
                "Aarhus N",
                "Silkeborg",
                "Horsens",
                "Randers",
                "Aalborg",
                "Aalborg Ø",
                "Nørresundby",
                "Hjørring",
                "Frederikshavn"
              ]
            },
            "default": []
          },
          "zipCodes": {
            "title": "More zip codes (advanced)",
            "type": "string",
            "description": "Optional. Add extra Danish postal codes not in the area list above, comma-separated — e.g. \"2100,2200,8000\". Combined with the areas you picked."
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Which dwelling types to include. Empty = all types.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7",
                "8",
                "9"
              ],
              "enumTitles": [
                "Villa",
                "Townhouse (rækkehus)",
                "Apartment (ejerlejlighed)",
                "Vacation home (fritidshus)",
                "Cooperative (andelsbolig)",
                "Country property (landejendom)",
                "Plot, year-round (helårsgrund)",
                "Plot, vacation (fritidsgrund)",
                "Villa apartment (villalejlighed)"
              ]
            },
            "default": []
          },
          "priceMin": {
            "title": "Min price (DKK)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum price in Danish kroner."
          },
          "priceMax": {
            "title": "Max price (DKK)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum price in Danish kroner."
          },
          "roomsMin": {
            "title": "Min rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum number of rooms."
          },
          "roomsMax": {
            "title": "Max rooms",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of rooms."
          },
          "sizeMin": {
            "title": "Min living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area in square meters."
          },
          "sizeMax": {
            "title": "Max living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area in square meters."
          },
          "buildYearMin": {
            "title": "Min build year",
            "type": "integer",
            "description": "Earliest construction year."
          },
          "buildYearMax": {
            "title": "Max build year",
            "type": "integer",
            "description": "Latest construction year."
          },
          "soldYearMin": {
            "title": "Sold from year (only for Sold prices)",
            "type": "integer",
            "description": "Only include homes sold in or after this year. Ignored for homes for sale."
          },
          "soldYearMax": {
            "title": "Sold to year (only for Sold prices)",
            "type": "integer",
            "description": "Only include homes sold in or before this year. Ignored for homes for sale."
          },
          "startUrls": {
            "title": "Start URLs (advanced)",
            "type": "array",
            "description": "Optional. Paste ready-made Boliga API URLs (https://api.boliga.dk/api/v2/search/results?... or .../sold/search/results?...). When provided, these take priority and the filters above are ignored.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after collecting this many properties (0 = no limit). Sold searches can return hundreds of thousands of records, so set a limit unless you really want everything.",
            "default": 0
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Recommended. Boliga rate-limits direct traffic; a Danish (DK) residential proxy gives the most reliable results.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "DK"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}