{
  "openapi": "3.0.1",
  "info": {
    "title": "Home.cy Cyprus Real Estate Scraper: Sale and Rent",
    "description": "Scrape home.cy, the Cyprus property portal: sale and rent listings with price, bedrooms, covered and plot area, map position, photos and agency, plus agency profiles and listing counts by district. Filter by place, type and price. Export JSON, CSV, Excel.",
    "version": "0.1",
    "x-build-id": "7pvZFa22s1vmUZ1jL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~home-cy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-home-cy-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~home-cy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-home-cy-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~home-cy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-home-cy-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 do you want to collect?",
            "type": "array",
            "description": "Listings = one row per sale or rent ad (most common). Agencies = one row per real estate agency. Market statistics = number of listings per search. You can pick several.",
            "items": {
              "type": "string",
              "enum": [
                "listings",
                "agencies",
                "market-stats"
              ],
              "enumTitles": [
                "Listings (sale and rent ads)",
                "Agencies (directory profiles)",
                "Market statistics (listing counts)"
              ]
            },
            "default": [
              "listings"
            ]
          },
          "maxItems": {
            "title": "Max results (free plan: 10)",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows, for example 50. Free plans are capped at 10. Paid plans: up to 1,000,000."
          },
          "maxItemsPerSearch": {
            "title": "Max results per search (optional)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Only matters when your filters create several searches (several districts, types or bedroom counts). Stops one big search from using the whole budget. 0 means no per-search limit.",
            "default": 0
          },
          "operation": {
            "title": "For sale or for rent",
            "enum": [
              "sale",
              "rent",
              "both"
            ],
            "type": "string",
            "description": "Sale, rent, or both (both runs every search twice).",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Houses, apartments, or both (empty means both).",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment"
              ],
              "enumTitles": [
                "Houses (villas, townhouses, bungalows)",
                "Apartments (flats, penthouses, maisonettes)"
              ]
            },
            "default": []
          },
          "subtypes": {
            "title": "Property subtypes (optional)",
            "type": "array",
            "description": "Finer type, for example villa or penthouse. A subtype must match the chosen property type.",
            "items": {
              "type": "string",
              "enum": [
                "villa",
                "townhouse",
                "bungalow",
                "semi_detached",
                "link_detached",
                "penthouse",
                "top_floor",
                "ground_floor",
                "maisonette"
              ],
              "enumTitles": [
                "Villa (house)",
                "Townhouse (house)",
                "Bungalow (house)",
                "Semi-detached (house)",
                "Link-detached (house)",
                "Penthouse (apartment)",
                "Top floor (apartment)",
                "Ground floor (apartment)",
                "Maisonette (apartment)"
              ]
            },
            "default": []
          },
          "districts": {
            "title": "Districts",
            "type": "array",
            "description": "Cyprus districts to search. Empty means the whole island.",
            "items": {
              "type": "string",
              "enum": [
                "nicosia",
                "limassol",
                "larnaca",
                "paphos",
                "famagusta"
              ],
              "enumTitles": [
                "Nicosia",
                "Limassol",
                "Larnaca",
                "Paphos",
                "Famagusta"
              ]
            },
            "default": []
          },
          "locations": {
            "title": "Towns and areas",
            "type": "array",
            "description": "For example Germasogeia, Peyia, Strovolos. If a name exists in several districts write district/area, for example limassol/germasogeia.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bedrooms": {
            "title": "Bedrooms",
            "type": "array",
            "description": "Exact bedroom counts; each choice is a separate search. Empty means any.",
            "items": {
              "type": "string",
              "enum": [
                "studio",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6",
                "7+"
              ],
              "enumTitles": [
                "Studio",
                "1 bedroom",
                "2 bedrooms",
                "3 bedrooms",
                "4 bedrooms",
                "5 bedrooms",
                "6 bedrooms",
                "7 or more"
              ]
            },
            "default": []
          },
          "condition": {
            "title": "Resale or new build",
            "enum": [
              "any",
              "resale",
              "new_build"
            ],
            "type": "string",
            "description": "Any returns both.",
            "default": "any"
          },
          "sortBy": {
            "title": "Sort results by",
            "enum": [
              "relevance_desc",
              "relevance_asc",
              "price_asc",
              "price_desc",
              "covered_area_desc",
              "covered_area_asc",
              "plot_area_desc",
              "plot_area_asc",
              "sea_distance_asc",
              "floor_desc"
            ],
            "type": "string",
            "description": "Order of the results. The default is the site order (newest and promoted first). With monitor mode on, keep the default so earlier runs can be skipped quickly.",
            "default": "relevance_desc"
          },
          "minPrice": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "number",
            "description": "Lowest price in euros (monthly rent when the operation is rent). 0 means no limit.",
            "default": 0
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "number",
            "description": "Highest price in euros (monthly rent when the operation is rent). 0 means no limit.",
            "default": 0
          },
          "minBathrooms": {
            "title": "Min bathrooms",
            "minimum": 0,
            "type": "number",
            "description": "Fewest bathrooms. 0 means no limit.",
            "default": 0
          },
          "maxBathrooms": {
            "title": "Max bathrooms",
            "minimum": 0,
            "type": "number",
            "description": "Most bathrooms. 0 means no limit.",
            "default": 0
          },
          "minCoveredArea": {
            "title": "Min covered area (m2)",
            "minimum": 0,
            "type": "number",
            "description": "Smallest built (covered) area in square meters. 0 means no limit.",
            "default": 0
          },
          "maxCoveredArea": {
            "title": "Max covered area (m2)",
            "minimum": 0,
            "type": "number",
            "description": "Largest built (covered) area in square meters. 0 means no limit.",
            "default": 0
          },
          "minPlotArea": {
            "title": "Min plot area (m2)",
            "minimum": 0,
            "type": "number",
            "description": "Smallest plot (land) area in square meters. 0 means no limit.",
            "default": 0
          },
          "maxPlotArea": {
            "title": "Max plot area (m2)",
            "minimum": 0,
            "type": "number",
            "description": "Largest plot (land) area in square meters. 0 means no limit.",
            "default": 0
          },
          "minYearBuilt": {
            "title": "Min year built",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Earliest construction year. 0 means no limit.",
            "default": 0
          },
          "maxYearBuilt": {
            "title": "Max year built",
            "minimum": 0,
            "maximum": 2100,
            "type": "integer",
            "description": "Latest construction year. 0 means no limit.",
            "default": 0
          },
          "startUrls": {
            "title": "home.cy links",
            "type": "array",
            "description": "A search page (every filter in the address is kept), a listing page, the agency directory or an agency page. English URL without a language prefix. Example: https://home.cy/real-estate-for-sale/apartments/limassol?bedrooms_min=2",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Listing IDs or links",
            "type": "array",
            "description": "The number at the end of a listing URL, for example 285992. Each one is fetched with full detail.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Open every listing page (slower)",
            "type": "boolean",
            "description": "On: full description, all photos, map position, plot area, year built, title deed, energy rating, amenities and agency. Costs one extra page read per listing. Off: faster and cheaper, search-card fields only.",
            "default": true
          },
          "includeContactDetails": {
            "title": "Include agency business details",
            "type": "boolean",
            "description": "Adds registration and licence numbers, office address and map position. Business data of registered agencies only.",
            "default": false
          },
          "includePriceBands": {
            "title": "Split market statistics by price band",
            "type": "boolean",
            "description": "Only for Market statistics: also counts listings per price band. Adds a few requests per row.",
            "default": false
          },
          "agencyName": {
            "title": "Agency name contains",
            "type": "string",
            "description": "For example vivo.",
            "default": ""
          },
          "agencyLanguage": {
            "title": "Agency speaks",
            "enum": [
              "any",
              "en",
              "el",
              "ru",
              "zh",
              "de",
              "fr",
              "es",
              "it",
              "he"
            ],
            "type": "string",
            "description": "Agencies only: keep agencies that speak this language.",
            "default": "any"
          },
          "onlyNew": {
            "title": "Only results not seen before",
            "type": "boolean",
            "description": "Delivers only listings and agencies not seen by an earlier run with the same filters. Memory is kept in your own account.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "One name per saved search, for example limassol-2br. Empty derives one from your filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget seen results before this run",
            "type": "boolean",
            "description": "Starts again from the first page.",
            "default": false
          },
          "maxRunSeconds": {
            "title": "Max run time (seconds)",
            "minimum": 30,
            "maximum": 86400,
            "type": "integer",
            "description": "The run stops cleanly after this many seconds and keeps what it has, for example 1800.",
            "default": 1800
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}