{
  "openapi": "3.0.1",
  "info": {
    "title": "Etuovi.com Real Estate Scraper",
    "description": "Scrape property listings from Etuovi.com, Finland's largest real estate portal. Search apartments, houses, plots, holiday homes, and farms/forest estates by city or region, with filters for price, size, rooms, construction year, and more.",
    "version": "1.0",
    "x-build-id": "u6irSwIGNQ8jviQpe"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/crawlerbros~etuovi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-crawlerbros-etuovi-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/crawlerbros~etuovi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-crawlerbros-etuovi-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/crawlerbros~etuovi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-crawlerbros-etuovi-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",
        "required": [
          "propertyType"
        ],
        "properties": {
          "propertyType": {
            "title": "Property category",
            "enum": [
              "RESIDENTIAL",
              "PLOT",
              "LEISURE",
              "ESTATE",
              "OTHER"
            ],
            "type": "string",
            "description": "Which category of listings to search.",
            "default": "RESIDENTIAL"
          },
          "locations": {
            "title": "Locations",
            "type": "array",
            "description": "City, region, neighborhood, postal code, or street address to search (e.g. `Helsinki`, `Uusimaa`, `00100`). Multiple values are combined with OR. Leave empty to search all of Finland.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "residentialPropertyTypes": {
            "title": "Building type (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to specific building types. Only applies when Property category is `Apartments & houses`. Leave empty for all building types.",
            "items": {
              "type": "string",
              "enum": [
                "APARTMENT_HOUSE",
                "ROW_HOUSE",
                "SEMI_DETACHED_HOUSE",
                "DETACHED_HOUSE",
                "SEPARATE_HOUSE",
                "BALCONY_ACCESS_BLOCK",
                "WOODEN_HOUSE_APARTMENT"
              ],
              "enumTitles": [
                "Apartment block (kerrostalo)",
                "Terraced house (rivitalo)",
                "Semi-detached house (paritalo)",
                "Detached house (omakotitalo)",
                "Separate house (erillistalo)",
                "Access-balcony block (luhtitalo)",
                "Wooden house apartment (puutalo-osake)"
              ]
            },
            "default": []
          },
          "roomCounts": {
            "title": "Room count",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to listings with these room counts. Leave empty for any room count.",
            "items": {
              "type": "string",
              "enum": [
                "ONE_ROOM",
                "TWO_ROOMS",
                "THREE_ROOMS",
                "FOUR_ROOMS",
                "FIVE_ROOMS",
                "MORE_THAN_FIVE_ROOMS"
              ],
              "enumTitles": [
                "1 room",
                "2 rooms",
                "3 rooms",
                "4 rooms",
                "5 rooms",
                "More than 5 rooms"
              ]
            },
            "default": []
          },
          "priceMin": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "maximum": 50000000,
            "type": "integer",
            "description": "Drop listings priced below this amount, in euros."
          },
          "priceMax": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "maximum": 50000000,
            "type": "integer",
            "description": "Drop listings priced above this amount, in euros."
          },
          "sizeMin": {
            "title": "Min size (m²)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop listings with living area below this size, in square meters."
          },
          "sizeMax": {
            "title": "Max size (m²)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop listings with living area above this size, in square meters."
          },
          "yearMin": {
            "title": "Min construction year",
            "minimum": 1700,
            "maximum": 2100,
            "type": "integer",
            "description": "Drop listings built before this year."
          },
          "yearMax": {
            "title": "Max construction year",
            "minimum": 1700,
            "maximum": 2100,
            "type": "integer",
            "description": "Drop listings built after this year."
          },
          "freeTextSearch": {
            "title": "Keyword search",
            "type": "string",
            "description": "Free-text keyword search across listing descriptions and features (e.g. `sauna`, `pool`, `fireplace`)."
          },
          "newBuildingSearchCriteria": {
            "title": "New buildings",
            "enum": [
              "ALL_PROPERTIES",
              "ONLY_NEW_BUILDINGS",
              "NO_NEW_BUILDINGS"
            ],
            "type": "string",
            "description": "Filter by new-construction status.",
            "default": "ALL_PROPERTIES"
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "ALL",
              "OFFICE",
              "USER"
            ],
            "type": "string",
            "description": "Filter by who is selling.",
            "default": "ALL"
          },
          "bidType": {
            "title": "Bidding type",
            "enum": [
              "ALL",
              "OPEN_BID",
              "NO_OPEN_BID"
            ],
            "type": "string",
            "description": "Filter by whether the listing uses open bidding (tarjouskauppa).",
            "default": "ALL"
          },
          "publishingTimeSearchCriteria": {
            "title": "Published within",
            "enum": [
              "ANY_DAY",
              "WITHIN_ONE_DAY",
              "WITHIN_TWO_DAYS",
              "WITHIN_SEVEN_DAYS",
              "WITHIN_TWO_WEEKS"
            ],
            "type": "string",
            "description": "Restrict to listings first published within a recent time window.",
            "default": "ANY_DAY"
          },
          "heatingSystems": {
            "title": "Heating system (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to specific heating systems. Only applies when Property category is `Apartments & houses`. Leave empty for any heating system.",
            "items": {
              "type": "string",
              "enum": [
                "DISTRICT_HEATING",
                "ELECTRIC",
                "GEOTHERMAL_HEATING",
                "OIL",
                "GAS",
                "WOOD",
                "HEAT_PUMP",
                "AIR_WATER_HEATING_PUMP",
                "EXHAUST_AIR_HEAT_PUMP",
                "SOLAR_HEATING",
                "NOT_KNOWN"
              ],
              "enumTitles": [
                "District heating (kaukolämpö)",
                "Electric heating (sähkölämmitys)",
                "Geothermal heating (maalämpö)",
                "Oil heating (öljylämmitys)",
                "Natural gas (maakaasu)",
                "Wood heating (puulämmitys)",
                "Heat pump (lämpöpumppu)",
                "Air-to-water heat pump (ilmavesilämpöpumppu)",
                "Exhaust-air heat pump (poistoilmalämpöpumppu)",
                "Solar heating (aurinkolämpö)",
                "Not known"
              ]
            },
            "default": []
          },
          "overallConditions": {
            "title": "Overall condition (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to listings with this seller-reported overall condition. Only applies when Property category is `Apartments & houses`. Leave empty for any condition.",
            "items": {
              "type": "string",
              "enum": [
                "GOOD",
                "SATISFACTORY",
                "TOLERABLE",
                "UNCLASSIFIED"
              ],
              "enumTitles": [
                "Good",
                "Satisfactory",
                "Tolerable",
                "Unclassified"
              ]
            },
            "default": []
          },
          "ownershipTypes": {
            "title": "Ownership type (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to specific forms of ownership. Only applies when Property category is `Apartments & houses`. Leave empty for any ownership type.",
            "items": {
              "type": "string",
              "enum": [
                "OWN",
                "LIVING_RIGHT",
                "PARTIAL_OWNERSHIP",
                "OTHER",
                "NOT_KNOWN"
              ],
              "enumTitles": [
                "Freehold ownership (omistusasunto)",
                "Right-of-occupancy (asumisoikeusasunto)",
                "Partial ownership (osaomistusasunto)",
                "Other",
                "Not known"
              ]
            },
            "default": []
          },
          "plotHoldingTypes": {
            "title": "Plot ownership (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict by whether the plot the building stands on is owned or leased. Only applies when Property category is `Apartments & houses`. Leave empty for any plot ownership.",
            "items": {
              "type": "string",
              "enum": [
                "OWN",
                "RENT",
                "OPTIONAL_RENTAL"
              ],
              "enumTitles": [
                "Own plot",
                "Leased plot",
                "Optionally redeemable leased plot"
              ]
            },
            "default": []
          },
          "residentialFloorCountTypes": {
            "title": "Unit storey layout (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to units with this many internal storeys (e.g. single-storey apartment vs. two-storey maisonette). Only applies when Property category is `Apartments & houses`. Leave empty for any layout.",
            "items": {
              "type": "string",
              "enum": [
                "SINGLE_STOREY",
                "TWO_STOREY",
                "MULTI_STOREY",
                "ONE_AND_HALF_STOREY",
                "NOT_KNOWN"
              ],
              "enumTitles": [
                "Single-storey",
                "Two-storey",
                "Multi-storey",
                "One-and-a-half-storey",
                "Not known"
              ]
            },
            "default": []
          },
          "floorPositionInHighrise": {
            "title": "Floor position in building (property category = Apartments & houses)",
            "uniqueItems": true,
            "type": "array",
            "description": "Restrict to units on the bottom, middle, or top floor of the building. Only applies when Property category is `Apartments & houses`. Leave empty for any floor position.",
            "items": {
              "type": "string",
              "enum": [
                "ON_BOTTOM_FLOOR",
                "ON_MIDDLE_FLOOR",
                "ON_TOP_FLOOR",
                "NOT_KNOWN"
              ],
              "enumTitles": [
                "Bottom floor",
                "Middle floor",
                "Top floor",
                "Not known"
              ]
            },
            "default": []
          },
          "saunaType": {
            "title": "Sauna (property category = Apartments & houses)",
            "enum": [
              "ANY",
              "OWN_SAUNA",
              "HOUSING_COMPANY_SAUNA",
              "NO_SAUNA"
            ],
            "type": "string",
            "description": "Filter by sauna availability. Only applies when Property category is `Apartments & houses`.",
            "default": "ANY"
          },
          "hasBalcony": {
            "title": "Balcony only (property category = Apartments & houses)",
            "type": "boolean",
            "description": "Only include listings with a balcony. Only applies when Property category is `Apartments & houses`.",
            "default": false
          },
          "hasElevator": {
            "title": "Elevator only (property category = Apartments & houses)",
            "type": "boolean",
            "description": "Only include listings in buildings with an elevator. Only applies when Property category is `Apartments & houses`.",
            "default": false
          },
          "pricePerSqmMin": {
            "title": "Min price per m² (EUR, property category = Apartments & houses)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop listings priced below this EUR-per-square-meter rate. Only applies when Property category is `Apartments & houses`."
          },
          "pricePerSqmMax": {
            "title": "Max price per m² (EUR, property category = Apartments & houses)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Drop listings priced above this EUR-per-square-meter rate. Only applies when Property category is `Apartments & houses`."
          },
          "maintenanceChargeMin": {
            "title": "Min monthly maintenance charge (EUR, property category = Apartments & houses)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Drop listings with a housing-company maintenance charge (vastike) below this monthly EUR amount. Only applies when Property category is `Apartments & houses`."
          },
          "maintenanceChargeMax": {
            "title": "Max monthly maintenance charge (EUR, property category = Apartments & houses)",
            "minimum": 0,
            "maximum": 20000,
            "type": "integer",
            "description": "Drop listings with a housing-company maintenance charge (vastike) above this monthly EUR amount. Only applies when Property category is `Apartments & houses`."
          },
          "plotAreaMin": {
            "title": "Min plot area (m², property category = Apartments & houses / Plots / Holiday homes)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop listings with a plot area below this size, in square meters. Only applies when Property category is `Apartments & houses`, `Plots & building sites`, or `Holiday homes & cottages`."
          },
          "plotAreaMax": {
            "title": "Max plot area (m², property category = Apartments & houses / Plots / Holiday homes)",
            "minimum": 0,
            "maximum": 1000000,
            "type": "integer",
            "description": "Drop listings with a plot area above this size, in square meters. Only applies when Property category is `Apartments & houses`, `Plots & building sites`, or `Holiday homes & cottages`."
          },
          "travelTimeLat": {
            "title": "Commute-search latitude",
            "minimum": -90,
            "maximum": 90,
            "type": "number",
            "description": "Latitude of the point to measure commute time from (e.g. a workplace or city center). Must be paired with Commute-search longitude. Leave both empty to disable the commute-time filter. Applies to all property categories."
          },
          "travelTimeLon": {
            "title": "Commute-search longitude",
            "minimum": -180,
            "maximum": 180,
            "type": "number",
            "description": "Longitude of the point to measure commute time from. Must be paired with Commute-search latitude. Leave both empty to disable the commute-time filter. Applies to all property categories."
          },
          "travelTimeMinutes": {
            "title": "Max commute time (minutes)",
            "minimum": 5,
            "maximum": 240,
            "type": "integer",
            "description": "Only include listings reachable from the commute-search point within this many minutes, by the selected transport method. Only applies when Commute-search latitude/longitude are set.",
            "default": 30
          },
          "travelTimeTransportMethod": {
            "title": "Commute transport method",
            "enum": [
              "WALKING",
              "CYCLING",
              "DRIVING",
              "PUBLIC_TRANSPORT"
            ],
            "type": "string",
            "description": "How to measure the commute time from the commute-search point. Only applies when Commute-search latitude/longitude are set.",
            "default": "WALKING"
          },
          "travelTimeLocationName": {
            "title": "Commute-search point label",
            "type": "string",
            "description": "Optional display label for the commute-search point (e.g. `Helsinki city centre`). Cosmetic only — does not affect which listings match. Only applies when Commute-search latitude/longitude are set."
          },
          "hasShore": {
            "title": "Waterfront only",
            "type": "boolean",
            "description": "Only include listings with direct shore/waterfront access. Applies to all property categories.",
            "default": false
          },
          "hasVideo": {
            "title": "Has video only",
            "type": "boolean",
            "description": "Only include listings that have a video tour. Applies to all property categories.",
            "default": false
          },
          "hasUpcomingShowing": {
            "title": "Has an upcoming open-house showing",
            "type": "boolean",
            "description": "Only include listings with at least one open-house showing scheduled in the future. Applies to all property categories. Combines with the other showing filters below (OR).",
            "default": false
          },
          "hasPremiereShowing": {
            "title": "Has a premiere (first-ever) showing",
            "type": "boolean",
            "description": "Only include listings whose next open-house showing is the listing's first-ever (\"premiere\") showing. Applies to all property categories. Combines with the other showing filters below (OR).",
            "default": false
          },
          "hasShowingToday": {
            "title": "Has an open-house showing today",
            "type": "boolean",
            "description": "Only include listings with an open-house showing scheduled today. Applies to all property categories. Combines with the other showing filters below (OR).",
            "default": false
          },
          "hasShowingTomorrow": {
            "title": "Has an open-house showing tomorrow",
            "type": "boolean",
            "description": "Only include listings with an open-house showing scheduled tomorrow. Applies to all property categories. Combines with the other showing filters below (OR).",
            "default": false
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "newest",
              "oldest",
              "priceLowToHigh",
              "priceHighToLow",
              "sizeSmallToLarge",
              "sizeLargeToSmall",
              "yearOldToNew",
              "yearNewToOld"
            ],
            "type": "string",
            "description": "How to order the results.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on the number of listings to scrape.",
            "default": 30
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}