{
  "openapi": "3.0.1",
  "info": {
    "title": "Index.cy Cyprus Real Estate Scraper: Sales, Rentals, Auctions",
    "description": "Scrape index.cy Cyprus real estate: sale and rent listings, price drops, new-build projects, agencies and bank auctions. Export to CSV, Excel, JSON or XML.",
    "version": "0.1",
    "x-build-id": "reDDiFO2vmgnbnXdJ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~index-cy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-index-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~index-cy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-index-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~index-cy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-index-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional index.cy pages to read: a listing (index.cy/sale/5088755-3-bedroom-house-for-sale-in-dhekelia-larnaca-district/), a search page such as index.cy/for-rent/?district=limassol-district&bedrooms=2, a new-build project (index.cy/complex/<name>/), an agency or developer page (index.cy/company/<name>/), a bank auction (index.cy/auction/<name>/) or an index page (index.cy/complex/, index.cy/companies/agencies/, index.cy/auctions/). A search page brings its own filters, so the filters below are ignored for it. Leave empty to search with the filters below.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingIds": {
            "title": "Listing IDs",
            "type": "array",
            "description": "Optional list of listing ids (the number at the start of the listing URL, for example 5088755) or full listing URLs. These listings are fetched directly with full detail and the search filters are not applied to them. An id that is gone or expired returns one free error row.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          },
          "recordTypes": {
            "title": "Record types",
            "type": "array",
            "description": "What to return. Listings: one row per sale or rent ad (price, price drops, areas, rooms, place, seller type, energy class, photos). Projects: one row per new-build development (developer, price from, units, delivery). Agencies: one row per real estate agency or developer (registration, license, listing counts). Auctions: one row per bank or Land Registry property auction (reserve price, auction date, notice). Every row counts toward Max Items; rows come in the order listed here.",
            "items": {
              "type": "string",
              "enum": [
                "listings",
                "projects",
                "agencies",
                "auctions"
              ],
              "enumTitles": [
                "Listings (sale and rent ads)",
                "New-build projects",
                "Agencies and developers",
                "Bank and Land Registry auctions"
              ]
            },
            "default": [
              "listings"
            ]
          },
          "fetchDetails": {
            "title": "Fetch full listing details",
            "type": "boolean",
            "description": "Open every listing page for the full description, all photos, coordinates, nearby places, price per square meter, title deed, taxes and fee estimates, and the agency behind it. Billed as the listing-detail event on top of the listing. Turn off for a cheaper list-only pass from the search cards (price, price change, rooms, place, one photo, seller type).",
            "default": true
          },
          "includeMarketInsights": {
            "title": "Add market insight",
            "type": "boolean",
            "description": "Add price history, the market comparison (median per square meter, percent above or below the area average), the estimate range and the withdrawn status from index.cy's own listing API. Billed as the market-insight event on top of the listing, only for listings where data was returned. The API allows about 30 calls an hour per IP address, so use it for a few dozen listings per run (see Max insights).",
            "default": false
          },
          "maxInsights": {
            "title": "Max insights",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Most listings per run that get market insight. The listing API allows about 30 calls an hour per IP address; when its budget is used up the run continues without insight and without that charge.",
            "default": 25
          },
          "operation": {
            "title": "Operation",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "Properties for sale or for rent. Rows say which one in the operation field.",
            "default": "sale"
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Only these property types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "house",
                "land-plots",
                "office",
                "commercial",
                "building"
              ],
              "enumTitles": [
                "Apartments",
                "Houses and villas",
                "Land and plots",
                "Offices",
                "Commercial",
                "Buildings"
              ]
            },
            "default": []
          },
          "districts": {
            "title": "Districts",
            "type": "array",
            "description": "Only these districts of Cyprus. Also narrows new-build projects and auctions. Leave empty for the whole island.",
            "items": {
              "type": "string",
              "enum": [
                "famagusta",
                "larnaca",
                "limassol",
                "nicosia",
                "paphos"
              ],
              "enumTitles": [
                "Famagusta",
                "Larnaca",
                "Limassol",
                "Nicosia",
                "Paphos"
              ]
            },
            "default": []
          },
          "locations": {
            "title": "Towns and areas",
            "type": "array",
            "description": "Towns or areas as written on index.cy, for example Germasogeia, Peyia, Strovolos or \"Limassol - Agios Athanasios\", or the slug (germasogeia). A short name such as Limassol matches every area named \"Limassol - ...\". An unknown place returns a free error row instead of the whole catalog.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "bedrooms": {
            "title": "Bedrooms",
            "type": "array",
            "description": "Only listings with these bedroom counts. Studio is a separate value. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "studio",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6"
              ],
              "enumTitles": [
                "Studio",
                "1",
                "2",
                "3",
                "4",
                "5",
                "6 or more"
              ]
            },
            "default": []
          },
          "bathrooms": {
            "title": "Bathrooms",
            "type": "array",
            "description": "Only listings with these bathroom counts. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1",
                "2",
                "3",
                "4",
                "5 or more"
              ]
            },
            "default": []
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at least this much, in euros. For rent it is the monthly rent. 0 means no limit.",
            "default": 0
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings priced at most this much, in euros. For rent it is the monthly rent. 0 means no limit.",
            "default": 0
          },
          "minArea": {
            "title": "Minimum covered area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this covered area, in square meters. 0 means no limit.",
            "default": 0
          },
          "maxArea": {
            "title": "Maximum covered area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at most this covered area, in square meters. 0 means no limit.",
            "default": 0
          },
          "minPlotArea": {
            "title": "Minimum plot area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at least this plot area, in square meters. 0 means no limit.",
            "default": 0
          },
          "maxPlotArea": {
            "title": "Maximum plot area (m2)",
            "minimum": 0,
            "type": "integer",
            "description": "Only listings with at most this plot area, in square meters. 0 means no limit.",
            "default": 0
          },
          "conditions": {
            "title": "Condition",
            "type": "array",
            "description": "Only listings in these building conditions. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "brand-new",
                "pre-owned",
                "under-construction"
              ],
              "enumTitles": [
                "Brand new",
                "Pre-owned",
                "Under construction"
              ]
            },
            "default": []
          },
          "sellerTypes": {
            "title": "Seller types",
            "type": "array",
            "description": "Only listings from these kinds of sellers. Private sellers never leave a name, address or contact in the rows. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "agency",
                "developer",
                "property-owner"
              ],
              "enumTitles": [
                "Agency",
                "Developer",
                "Private owner"
              ]
            },
            "default": []
          },
          "views": {
            "title": "Views (sale only)",
            "type": "array",
            "description": "Only listings with these views. Exists for sale listings only; with rent it returns a free error row.",
            "items": {
              "type": "string",
              "enum": [
                "sea-view",
                "mountains-view",
                "city-view"
              ],
              "enumTitles": [
                "Sea view",
                "Mountain view",
                "City view"
              ]
            },
            "default": []
          },
          "energyClasses": {
            "title": "Energy classes",
            "type": "array",
            "description": "Only listings with these energy performance classes. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "a-plus",
                "a",
                "b-plus",
                "b",
                "c",
                "d",
                "e",
                "f",
                "g",
                "in-progress"
              ],
              "enumTitles": [
                "A+",
                "A",
                "B+",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G",
                "In progress"
              ]
            },
            "default": []
          },
          "furnishing": {
            "title": "Furnishing",
            "type": "array",
            "description": "Only listings with this furnishing. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "furnished",
                "partially-furnished",
                "unfurnished"
              ],
              "enumTitles": [
                "Furnished",
                "Partially furnished",
                "Unfurnished"
              ]
            },
            "default": []
          },
          "pool": {
            "title": "Swimming pool",
            "type": "array",
            "description": "Only listings with this pool setup. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "yes",
                "private",
                "common",
                "no"
              ],
              "enumTitles": [
                "Any pool",
                "Private pool",
                "Common pool",
                "No pool"
              ]
            },
            "default": []
          },
          "amenities": {
            "title": "Amenities (all required)",
            "type": "array",
            "description": "Only listings that have every selected amenity. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "air-conditioning",
                "alarm",
                "balcony",
                "bbq-zone",
                "bike-parking",
                "elevator",
                "fireplace",
                "garden",
                "guest-wc",
                "gym",
                "heating",
                "parking",
                "pool",
                "roof-garden",
                "spasauna",
                "storage-room"
              ],
              "enumTitles": [
                "Air conditioning",
                "Alarm",
                "Balcony",
                "BBQ zone",
                "Bike parking",
                "Elevator",
                "Fireplace",
                "Garden",
                "Guest WC",
                "Gym",
                "Heating",
                "Parking",
                "Pool",
                "Roof garden",
                "Spa or sauna",
                "Storage room"
              ]
            },
            "default": []
          },
          "constructionYears": {
            "title": "Construction year",
            "type": "array",
            "description": "Only buildings from these construction years or ranges. Leave empty for any.",
            "items": {
              "type": "string",
              "enum": [
                "1990-and-older",
                "1991-2000",
                "2001-2010",
                "2011",
                "2012",
                "2013",
                "2014",
                "2015",
                "2016",
                "2017",
                "2018",
                "2019",
                "2020",
                "2021",
                "2022",
                "2023",
                "2024",
                "2025",
                "2026",
                "2027",
                "2028",
                "2029",
                "2030"
              ],
              "enumTitles": [
                "1990 and older",
                "1991-2000",
                "2001-2010",
                "2011",
                "2012",
                "2013",
                "2014",
                "2015",
                "2016",
                "2017",
                "2018",
                "2019",
                "2020",
                "2021",
                "2022",
                "2023",
                "2024",
                "2025",
                "2026",
                "2027",
                "2028",
                "2029",
                "2030"
              ]
            },
            "default": []
          },
          "pets": {
            "title": "Pets (rent only)",
            "type": "array",
            "description": "Only rentals with this pet policy. Exists for rent listings only; with sale it returns a free error row.",
            "items": {
              "type": "string",
              "enum": [
                "allowed",
                "not-allowed"
              ],
              "enumTitles": [
                "Pets allowed",
                "Pets not allowed"
              ]
            },
            "default": []
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Free text matched against the listing text, for example \"sea view villa\" or \"title deed\". Leave empty for none.",
            "default": ""
          },
          "goodDealsOnly": {
            "title": "Good deals only (sale only)",
            "type": "boolean",
            "description": "Only listings the site flags as a good deal (priced below the area average). Exists for sale listings only; with rent it returns a free error row.",
            "default": false
          },
          "priceDropsOnly": {
            "title": "Price drops only",
            "type": "boolean",
            "description": "Only listings whose price recently went down (the card shows a price change). The row carries priceChange, previousPrice and priceChangePct.",
            "default": false
          },
          "postedWithinDays": {
            "title": "Posted within days",
            "minimum": 0,
            "maximum": 3650,
            "type": "integer",
            "description": "Only listings first published in the last N days (a renewed old ad does not count). The scan reads newest first and stops once listings are older. The publication date is on the listing page, so full details are fetched and billed for this knob even when Fetch full listing details is off. 0 means no cutoff.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevant",
              "newest",
              "price-high-to-low",
              "price-low-to-high"
            ],
            "type": "string",
            "description": "Order of the listings. Monitor mode and Posted within days always read newest first, whatever is chosen here.",
            "default": "newest"
          },
          "agencyKinds": {
            "title": "Agency kinds",
            "type": "array",
            "description": "When Agencies is among the record types: read the agency list, the developer list or both.",
            "items": {
              "type": "string",
              "enum": [
                "agencies",
                "developers"
              ],
              "enumTitles": [
                "Real estate agencies",
                "Developers"
              ]
            },
            "default": [
              "agencies",
              "developers"
            ]
          },
          "agencyQuery": {
            "title": "Agency name contains",
            "type": "string",
            "description": "Only agencies and developers whose name contains this text, for example \"karimco\". Leave empty for all.",
            "default": ""
          },
          "auctionTypes": {
            "title": "Auction property types",
            "type": "array",
            "description": "When Auctions is among the record types: only these property types. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "house",
                "land-plots",
                "commercial"
              ],
              "enumTitles": [
                "Apartments",
                "Houses",
                "Land and plots",
                "Commercial"
              ]
            },
            "default": []
          },
          "auctionSort": {
            "title": "Auction sort",
            "enum": [
              "soonest",
              "price-low-to-high",
              "price-high-to-low",
              "largest-area"
            ],
            "type": "string",
            "description": "Order of the auctions.",
            "default": "soonest"
          },
          "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
          },
          "onlyNew": {
            "title": "Only new rows (monitor mode)",
            "type": "boolean",
            "description": "Only new rows: skip every listing, project, agency or auction this same search already returned in an earlier run, so a scheduled run returns just the new ones and you are not charged for skipped rows. Max Items then means N new rows. Off by default.",
            "default": false
          },
          "stateKey": {
            "title": "State key",
            "type": "string",
            "description": "Optional label that separates two monitors of otherwise identical searches (for example one per client). Leave empty to use only the search filters.",
            "default": ""
          },
          "resetSeen": {
            "title": "Reset seen rows",
            "type": "boolean",
            "description": "Forget everything this monitor remembered and start again. Use once after changing your mind about what counts as new.",
            "default": false
          },
          "includeContactDetails": {
            "title": "Include business contact data",
            "type": "boolean",
            "description": "Keep business contact data of agencies, developers and auctioneers: phone and e-mail on agency rows, the developer phone on project rows, the auctioneer e-mail on auction rows, and phone numbers or e-mails inside the text of agency and developer listings. Private sellers' contact details are always removed. Off by default.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}