{
  "openapi": "3.0.1",
  "info": {
    "title": "HousingAnywhere Scraper - Mid-Term Rentals, Rooms & Prices",
    "description": "Scrape HousingAnywhere rentals in 31 countries: rent in local currency and EUR, bills, rooms, size, 35 facilities, house rules, landlord rating, favorites, map position, photos. Add deposit, move-in cost, fees and bookable dates. 25 filters, 100k listings per run, only new ones. For rent research.",
    "version": "1.0",
    "x-build-id": "s2M76W7HkIf4uz2F9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/normdata~housinganywhere-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-normdata-housinganywhere-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/normdata~housinganywhere-scraper/runs": {
      "post": {
        "operationId": "runs-sync-normdata-housinganywhere-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/normdata~housinganywhere-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-normdata-housinganywhere-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": {
          "maxItems": {
            "title": "Maximum results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total. Leave empty for no limit. The Apify Free plan is always capped at 10."
          },
          "cities": {
            "title": "Cities",
            "type": "array",
            "description": "City names as the site writes them, like \"Berlin\" or \"Lisbon\". Add the country when a name is in two countries: \"Valencia, Spain\". Empty cities and countries = every listing on the site.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Every listing in these countries.",
            "items": {
              "type": "string",
              "enum": [
                "Spain",
                "Italy",
                "Germany",
                "France",
                "Portugal",
                "Belgium",
                "Austria",
                "United Kingdom",
                "Greece",
                "United States",
                "Poland",
                "Netherlands",
                "Hungary",
                "Czechia",
                "Switzerland",
                "Slovenia",
                "Finland",
                "Latvia",
                "Denmark",
                "Iceland",
                "Ireland",
                "Sweden",
                "Norway",
                "Lithuania",
                "Malta",
                "Bulgaria",
                "Romania",
                "Cyprus",
                "Luxembourg",
                "Estonia",
                "Slovakia"
              ],
              "enumTitles": [
                "Spain",
                "Italy",
                "Germany",
                "France",
                "Portugal",
                "Belgium",
                "Austria",
                "United Kingdom",
                "Greece",
                "United States",
                "Poland",
                "Netherlands",
                "Hungary",
                "Czechia",
                "Switzerland",
                "Slovenia",
                "Finland",
                "Latvia",
                "Denmark",
                "Iceland",
                "Ireland",
                "Sweden",
                "Norway",
                "Lithuania",
                "Malta",
                "Bulgaria",
                "Romania",
                "Cyprus",
                "Luxembourg",
                "Estonia",
                "Slovakia"
              ]
            }
          },
          "propertyTypes": {
            "title": "Property types",
            "type": "array",
            "description": "Empty = every type.",
            "items": {
              "type": "string",
              "enum": [
                "privateRoom",
                "sharedRoom",
                "apartment",
                "house",
                "studio",
                "building"
              ],
              "enumTitles": [
                "Private room",
                "Shared room",
                "Apartment",
                "House",
                "Studio",
                "Whole building"
              ]
            }
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "lowestPrice",
              "highestPrice",
              "bestRated",
              "bestMatch"
            ],
            "type": "string",
            "description": "Order of the listings. Empty = newest first."
          },
          "includeDetails": {
            "title": "Listing details (deposit, move-in cost, fees, bookable dates)",
            "type": "boolean",
            "description": "Also read each listing page for the deposit amount, costs due at move-in on top of the rent, refundable amount, HousingAnywhere tenant fee, every extra cost (cleaning, admin, bills...), bills included in the rent, bookable and unavailable periods, postal code, bathrooms, elevator, energy label, the full description, and the landlord profile (about, languages, response rate, member since, last active, ID and phone verified). Slower: about 30 listings a minute. Charged per listing as an add-on."
          },
          "minPrice": {
            "title": "Minimum monthly rent (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "In euros for every country (the lowest monthly rent)."
          },
          "maxPrice": {
            "title": "Maximum monthly rent (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "In euros for every country (the lowest monthly rent)."
          },
          "billsIncluded": {
            "title": "Bills",
            "type": "array",
            "description": "Keep listings with one of these.",
            "items": {
              "type": "string",
              "enum": [
                "all",
                "some",
                "none"
              ],
              "enumTitles": [
                "All bills included",
                "Some bills included",
                "Bills not included"
              ]
            }
          },
          "moveInDate": {
            "title": "Move-in date",
            "type": "string",
            "description": "Keep listings you can move into on this date, like 2027-02-01 or \"2 months\" from today. Empty = like the site: listings you can move into within 6 months."
          },
          "moveOutDate": {
            "title": "Move-out date",
            "type": "string",
            "description": "With a move-in date: keep listings free until this date that accept a stay that long."
          },
          "includeLaterAvailability": {
            "title": "Also listings free only after 6 months",
            "type": "boolean",
            "description": "With no move-in date, the site hides listings that open up more than 6 months from now. Tick to get them too."
          },
          "maxMinimumStayMonths": {
            "title": "Minimum stay up to (months)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings whose minimum stay is at most this many months."
          },
          "bedrooms": {
            "title": "Bedrooms",
            "type": "array",
            "description": "Bedrooms in the place (for rooms: in the shared flat).",
            "items": {
              "type": "string",
              "enum": [
                "0",
                "1",
                "2",
                "3",
                "4"
              ],
              "enumTitles": [
                "No separate bedroom (studio)",
                "1 bedroom",
                "2 bedrooms",
                "3 bedrooms",
                "4 or more"
              ]
            }
          },
          "minSizeM2": {
            "title": "Minimum size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Size of the place in square meters."
          },
          "maxSizeM2": {
            "title": "Maximum size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Size of the place in square meters."
          },
          "facilities": {
            "title": "Facilities",
            "type": "array",
            "description": "Keep listings with all of these.",
            "items": {
              "type": "string",
              "enum": [
                "privateBathroom",
                "privateKitchen",
                "kitchen",
                "balcony",
                "garden",
                "parking",
                "basement",
                "wheelchair",
                "furnished",
                "unfurnished",
                "bed",
                "desk",
                "wifi",
                "tv",
                "airConditioning",
                "heating",
                "washingMachine",
                "dryer",
                "dishwasher",
                "allergyFriendly",
                "cleaning"
              ],
              "enumTitles": [
                "Private bathroom",
                "Private kitchen",
                "Kitchen (private or shared)",
                "Balcony or terrace",
                "Garden",
                "Parking",
                "Basement or storage",
                "Wheelchair accessible",
                "Furnished",
                "Unfurnished",
                "Bed",
                "Desk",
                "Wi-Fi",
                "TV",
                "Air conditioning",
                "Heating",
                "Washing machine",
                "Dryer",
                "Dishwasher",
                "Allergy friendly",
                "Cleaning included"
              ]
            }
          },
          "rules": {
            "title": "House rules",
            "type": "array",
            "description": "Keep listings that allow all of these (\"ask the landlord\" counts as allowed, like on the site).",
            "items": {
              "type": "string",
              "enum": [
                "pets",
                "smoking",
                "instruments",
                "couples",
                "registration"
              ],
              "enumTitles": [
                "Pets allowed",
                "Smoking allowed (also outside only)",
                "Playing music allowed",
                "Couples allowed",
                "Address registration possible"
              ]
            }
          },
          "suitableFor": {
            "title": "Suitable for",
            "type": "array",
            "description": "Keep listings open to all of these.",
            "items": {
              "type": "string",
              "enum": [
                "students",
                "professionals"
              ],
              "enumTitles": [
                "Students",
                "Working professionals"
              ]
            }
          },
          "gender": {
            "title": "Tenant gender",
            "enum": [
              "female",
              "male",
              "femaleOnly",
              "maleOnly"
            ],
            "type": "string",
            "description": "Empty = any."
          },
          "tenantAge": {
            "title": "Tenant age",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings with no age limit or one that allows this age."
          },
          "contractTypes": {
            "title": "Rent counted",
            "type": "array",
            "description": "How rent is counted for part months.",
            "items": {
              "type": "string",
              "enum": [
                "daily",
                "fortnightly",
                "monthly"
              ],
              "enumTitles": [
                "Rent by the day",
                "Rent by half months",
                "Rent by full months"
              ]
            }
          },
          "landlordTypes": {
            "title": "Landlord type",
            "type": "array",
            "description": "Keep listings from one of these.",
            "items": {
              "type": "string",
              "enum": [
                "private",
                "company",
                "student",
                "other"
              ],
              "enumTitles": [
                "Private landlord",
                "Rental company",
                "Student housing company",
                "Other"
              ]
            }
          },
          "minLandlordRating": {
            "title": "Minimum landlord rating",
            "minimum": 0,
            "maximum": 5,
            "type": "integer",
            "description": "From 1 to 5, from tenant reviews."
          },
          "neighborhoods": {
            "title": "Neighborhoods",
            "type": "array",
            "description": "Neighborhood names as the site writes them, like \"Mitte\" or \"Kreuzberg\". Use with a city.",
            "items": {
              "type": "string"
            }
          },
          "listedWithinDays": {
            "title": "Listed in the last days",
            "minimum": 0,
            "type": "integer",
            "description": "Keep listings put on the site in the last this many days."
          },
          "noDepositOnly": {
            "title": "Only no deposit",
            "type": "boolean",
            "description": "Keep listings with no security deposit."
          },
          "flexibleCancellationOnly": {
            "title": "Only flexible cancellation",
            "type": "boolean",
            "description": "Keep listings you can cancel for free until 30 days before move-in."
          },
          "studentHousingOnly": {
            "title": "Only student housing",
            "type": "boolean",
            "description": "Keep student residences."
          },
          "priceDropOnly": {
            "title": "Only reduced rent",
            "type": "boolean",
            "description": "Keep listings whose rent was lowered (shows the old rent)."
          },
          "excellentLandlordOnly": {
            "title": "Only excellent landlords",
            "type": "boolean",
            "description": "Keep listings from landlords HousingAnywhere marks as excellent."
          },
          "onlyNew": {
            "title": "Only new listings",
            "type": "boolean",
            "description": "Skip listings saved by earlier runs with the same monitor name."
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Runs with the same name share their history. Use a different name for each schedule."
          },
          "startUrls": {
            "title": "Links",
            "type": "array",
            "description": "Searches copied from the site, with their filters (https://housinganywhere.com/s/Berlin--Germany/private-rooms?priceMax=80000) or listing pages (https://housinganywhere.com/room/ut1747056/de/Berlin/skalitzer-stra-e).",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}