{
  "openapi": "3.0.1",
  "info": {
    "title": "Flatfox Scraper - Swiss Rentals, Flatshares & Property Listings",
    "description": "Scrape flatfox.ch rentals, flatshares and sales across Switzerland: CHF net and gross rent, rooms, m², move-in date, GPS, photos, floor plans and agency.",
    "version": "1.0",
    "x-build-id": "bUWzxd0gbx2SbAkA6"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~flatfox-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-flatfox-property-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/sian.agency~flatfox-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-flatfox-property-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/sian.agency~flatfox-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-flatfox-property-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": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search"
            ],
            "type": "string",
            "description": "The search returns complete Flatfox listings for any Swiss city, town or postcode, or for the whole country, with rent-or-buy, property type, price, rooms, space, furnishing and amenity filters. You can also paste Flatfox listing links to fetch those listings directly. Both return the same full row.",
            "default": "search"
          },
          "locations": {
            "title": "📍 Places",
            "type": "array",
            "description": "Swiss cities, towns or 4-digit postcodes, one per line: Zürich, Genf, Lausanne, Bern, 8004. German, French, Italian and English names all work. A city covers all of its postcodes. Leave the list empty to search the whole of Switzerland. A place that cannot be matched stops the run before anything is charged, rather than widening the search.",
            "default": [
              "Zürich"
            ],
            "items": {
              "type": "string"
            }
          },
          "dealType": {
            "title": "🤝 Rent or buy",
            "enum": [
              "rent",
              "sale"
            ],
            "type": "string",
            "description": "Rentals carry the monthly gross rent and, where the advertiser published it, the net rent and the service charges separately. Sales carry the asking price. Flatfox is rental-first, so a sale search returns far fewer listings than the same rental search.",
            "default": "rent"
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "residential",
              "apartment",
              "house",
              "flatshare",
              "commercial",
              "parking",
              "land",
              "hobby-storage",
              "any"
            ],
            "type": "string",
            "description": "Which part of Flatfox to search. All homes is what most rental studies want. Flatshare rooms are rental-only, so a sale search for them returns nothing. Commercial prices are often quoted per m² per year; the row says which.",
            "default": "residential"
          },
          "maxResults": {
            "title": "🔢 Max listings",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Stop after this many listings across all places in the run. Newest listings come first, so a scheduled run with a small limit picks up what was added since the last one. Flatfox holds roughly 36,000 listings in total.",
            "default": 100
          },
          "minPrice": {
            "title": "💵 Min price (CHF)",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price to include, in Swiss francs. For rentals this is the monthly rent the listing displays. 0 means no lower bound. Listings with no published price are left out whenever a price bound is set.",
            "default": 0
          },
          "maxPrice": {
            "title": "💰 Max price (CHF)",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price to include, in Swiss francs. 0 means no upper bound.",
            "default": 0
          },
          "minRooms": {
            "title": "🚪 Min rooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at least this many rooms. Swiss room counts use halves (2.5, 3.5), so 3 includes 3.5. 0 means no minimum. Listings that publish no room count, such as parking or offices, are left out when this is set.",
            "default": 0
          },
          "maxRooms": {
            "title": "🚪 Max rooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only listings with at most this many rooms. 0 means no maximum.",
            "default": 0
          },
          "minSpace": {
            "title": "📐 Min space (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum floor space in square metres: the living space for homes, the usable space for commercial property. 0 means no minimum.",
            "default": 0
          },
          "maxSpace": {
            "title": "📏 Max space (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum floor space in square metres. 0 means no maximum.",
            "default": 0
          },
          "amenities": {
            "title": "✨ Must have",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only listings that have ALL of the features picked here: lift, balcony or garden, pets allowed, parking space, wheelchair access and so on. Each feature is exactly what the advertiser ticked on Flatfox. Each extra feature you pick narrows the result further.",
            "items": {
              "type": "string",
              "enum": [
                "balconygarden",
                "lift",
                "parkingspace",
                "garage",
                "view",
                "dishwasher",
                "petsallowed",
                "washingmachine",
                "cable",
                "accessiblewithwheelchair",
                "parquetflooring",
                "tumbler",
                "broadbandinternet",
                "minergie",
                "fireplace",
                "stonefloor",
                "ramp",
                "raisedgroundfloor",
                "liftingplatform",
                "partofcooperative",
                "underbuildinglaws"
              ],
              "enumTitles": [
                "🌿 Balcony or garden",
                "🛗 Lift",
                "🅿️ Parking space",
                "🚗 Garage",
                "🏔️ View",
                "🍽️ Dishwasher",
                "🐾 Pets allowed",
                "🧺 Own washing machine",
                "📺 Cable TV",
                "♿ Wheelchair accessible",
                "🪵 Parquet flooring",
                "🌀 Tumble dryer",
                "🌐 Broadband internet",
                "🌱 Minergie certified",
                "🔥 Fireplace",
                "🪨 Stone floor",
                "🛤️ Ramp",
                "⬆️ Raised ground floor",
                "🏗️ Lifting platform",
                "🤝 Housing cooperative",
                "📜 Building-right land (Baurecht)"
              ]
            },
            "default": []
          },
          "furnishedOnly": {
            "title": "🛋️ Furnished only",
            "type": "boolean",
            "description": "Keep only listings the advertiser marked as furnished.",
            "default": false
          },
          "temporaryOnly": {
            "title": "⏳ Temporary lets only",
            "type": "boolean",
            "description": "Keep only listings offered for a limited period, such as sublets and short-term rentals.",
            "default": false
          },
          "listingUrls": {
            "title": "🔗 Listing links",
            "type": "array",
            "description": "Paste Flatfox listing addresses to fetch exactly those listings instead of searching, for example https://flatfox.ch/de/wohnung/zollstrasse-6-8005-zurich/1389523/ or the short form https://flatfox.ch/1389523/. A bare listing number works too. When this list is filled, the place and filter fields are ignored.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}