{
  "openapi": "3.0.1",
  "info": {
    "title": "LUN.ua Ukraine Real Estate Scraper: Listings & New Builds",
    "description": "Scrape lun.ua Ukraine real estate: sale, rent and daily-rent ads with price history, areas, coordinates and photos, plus new-build projects, developers, promotions and floor plans. Filter by city, type and rooms. No login or API key. Export CSV, Excel, JSON, XML.",
    "version": "0.1",
    "x-build-id": "UmjXSJHaOIfY8g6pq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~lun-ua-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-lun-ua-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/recordsdata~lun-ua-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-lun-ua-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/recordsdata~lun-ua-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-lun-ua-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": {
          "recordTypes": {
            "title": "What to collect",
            "type": "array",
            "description": "What to return. Listings: one row per sale, rent or daily-rent ad (price and price history, areas, rooms, floor, building, place with coordinates, photos, seller type). Projects: one row per new-build residential complex (price ranges, units, construction status, developer, photos). Developers: one row per developer with its projects. Promotions: one row per active developer offer. Floor plans: one row per apartment layout of a new-build project. Every row counts toward Max Items and types are collected in the order listed here. Projects, developers and floor plans come from the lun.ua sitemaps, filtered by the cities below (developers ignore the city).",
            "items": {
              "type": "string",
              "enum": [
                "listings",
                "projects",
                "developers",
                "promotions",
                "layouts"
              ],
              "enumTitles": [
                "Listings (sale, rent and daily rent)",
                "New-build projects",
                "Developers",
                "Developer promotions",
                "Floor plans"
              ]
            },
            "default": [
              "listings"
            ]
          },
          "startUrls": {
            "title": "lun.ua page links (optional)",
            "type": "array",
            "description": "Paste lun.ua pages instead of using the filters, for example lun.ua/sale/kyiv/flats-pecherskyi-district or lun.ua/new/kyiv/<project>. A search page brings its own filters, so the filters below are ignored. Leave empty to use the filters.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "operation": {
            "title": "Sale or rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Sale, or rent (monthly and daily). Applies to listings.",
            "default": "sale"
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "Regional centres to search, for example Kyiv or Lviv. A city page also lists the towns around it. Also picks the cities for projects, floor plans and promotions.",
            "items": {
              "type": "string",
              "enum": [
                "kyiv",
                "odesa",
                "dnipro",
                "kharkiv",
                "lviv",
                "if",
                "khmelnytskyi",
                "vinnytsia",
                "ternopil",
                "poltava",
                "zp",
                "mykolaiv",
                "uz",
                "cherkasy",
                "chernihiv",
                "sumy",
                "zhytomyr",
                "rivne",
                "chernivtsi",
                "kr",
                "volyn",
                "kherson"
              ],
              "enumTitles": [
                "Kyiv",
                "Odesa",
                "Dnipro",
                "Kharkiv",
                "Lviv",
                "Ivano-Frankivsk",
                "Khmelnytskyi",
                "Vinnytsia",
                "Ternopil",
                "Poltava",
                "Zaporizhzhia",
                "Mykolaiv",
                "Uzhhorod",
                "Cherkasy",
                "Chernihiv",
                "Sumy",
                "Zhytomyr",
                "Rivne",
                "Chernivtsi",
                "Kropyvnytskyi",
                "Lutsk (Volyn)",
                "Kherson"
              ]
            },
            "default": [
              "kyiv"
            ]
          },
          "coverage": {
            "title": "City or whole region",
            "enum": [
              "city",
              "region"
            ],
            "type": "string",
            "description": "The city with the towns around it, or the whole region (oblast), which is much larger. Region pages exist only without Rooms and Ready-made filters.",
            "default": "city"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Apartments, houses, land, commercial and more. Rent pages exist only for apartments, houses, townhouses and commercial; other types are skipped for rent.",
            "items": {
              "type": "string",
              "enum": [
                "flats",
                "houses",
                "townhouses",
                "cottages",
                "country-houses",
                "land",
                "commercial"
              ],
              "enumTitles": [
                "Apartments",
                "Houses",
                "Townhouses",
                "Cottages (sale)",
                "Country houses and dachas (sale)",
                "Land plots (sale)",
                "Commercial property"
              ]
            },
            "default": [
              "flats"
            ]
          },
          "language": {
            "title": "Text language",
            "enum": [
              "uk",
              "ru"
            ],
            "type": "string",
            "description": "Language of listing and project texts. Developers and floor plans are always Ukrainian.",
            "default": "uk"
          },
          "rooms": {
            "title": "Number of rooms (optional)",
            "type": "array",
            "description": "Only apartments and houses with this many rooms, one page per value. Empty means any. Cannot be combined with Ready-made filters.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 room",
                "2 rooms",
                "3 rooms",
                "4 rooms",
                "5 rooms"
              ]
            },
            "default": []
          },
          "features": {
            "title": "Ready-made filters (optional)",
            "type": "array",
            "description": "Filters lun.ua offers as pages, for example without intermediaries (owners), euro renovation or installment plan. Cannot be combined with Rooms.",
            "items": {
              "type": "string",
              "enum": [
                "bez-poserednykiv",
                "new-building",
                "nedoroho",
                "bez-remontu",
                "evroremont",
                "indyvidualne-opalennia",
                "dvorivnevi",
                "malohabarytni",
                "rozterminuvannia",
                "daily"
              ],
              "enumTitles": [
                "Without intermediaries (owners)",
                "New buildings",
                "Cheap",
                "Without renovation",
                "Euro renovation",
                "Individual heating",
                "Two-level apartments",
                "Small apartments",
                "Installment plan",
                "Daily rent (rent only)"
              ]
            },
            "default": []
          },
          "expandBy": {
            "title": "Follow sub-area pages",
            "type": "array",
            "description": "Follows links to districts, microdistricts, streets, complexes and room pages, two levels down, until the row limit is reached. Remove all to read only the page you asked for.",
            "items": {
              "type": "string",
              "enum": [
                "towns",
                "districts",
                "microdistricts",
                "streets",
                "houses",
                "complexes",
                "riverSides",
                "roomPages",
                "topQueries"
              ],
              "enumTitles": [
                "Towns around the city",
                "Districts",
                "Microdistricts",
                "Streets",
                "Buildings",
                "Housing complexes",
                "River banks",
                "Room counts",
                "Popular filters"
              ]
            },
            "default": [
              "districts",
              "microdistricts",
              "streets",
              "complexes",
              "roomPages"
            ]
          },
          "useSitemaps": {
            "title": "Also read the sitemap (slowest, most ads)",
            "type": "boolean",
            "description": "After the pages above, also reads every search page in the site sitemap for your operation, cities and property types. Reaches the most ads and takes the longest.",
            "default": false
          },
          "maxItems": {
            "title": "Max rows to return",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Maximum rows in total. Free plans are capped at 10 rows per run; paid plans up to 1,000,000."
          },
          "maxRunSeconds": {
            "title": "Max run time (seconds)",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "Stop collecting after this many seconds and return what was gathered, so a very wide search never runs unbounded.",
            "default": 1800
          },
          "includeContactDetails": {
            "title": "Include business contacts (agencies and developers)",
            "type": "boolean",
            "description": "Adds agency phones and realtor name to agency listings and the sales phone to project rows. Private sellers never get contact data.",
            "default": false
          },
          "onlyNew": {
            "title": "Only new rows",
            "type": "boolean",
            "description": "Skip rows this same search already returned in an earlier run; skipped rows are not charged. Max rows then means N new rows.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name (optional)",
            "type": "string",
            "description": "Label that separates two monitors of identical searches, for example client-a. Empty uses only the filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget previous rows",
            "type": "boolean",
            "description": "Forget everything this monitor remembered and start again.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}