{
  "openapi": "3.0.1",
  "info": {
    "title": "Vacasa Scraper - Rental Prices, Reviews and Availability",
    "description": "Scrape vacasa.com vacation rentals: nightly rates, priced stays with fees, specs, photos, guest reviews, availability calendars and property managers for 40,000 homes in the USA, Mexico, Costa Rica, Belize, Aruba and Canada. No login, no proxy.",
    "version": "0.1",
    "x-build-id": "fUcSujQg5UaPLOeMh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/recordsdata~vacasa-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-recordsdata-vacasa-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~vacasa-scraper/runs": {
      "post": {
        "operationId": "runs-sync-recordsdata-vacasa-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~vacasa-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-recordsdata-vacasa-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": {
          "mode": {
            "title": "What to collect",
            "enum": [
              "units",
              "reviews",
              "availability",
              "managers",
              "places"
            ],
            "type": "string",
            "description": "units = one row per vacation rental (rates, specs, photos, rules, rating, property manager). reviews = one row per guest review. availability = one row per unit with its booking calendar summary. managers = one row per property manager office with its units. places = one row per destination (state, region, city) with unit counts and price statistics.",
            "default": "units"
          },
          "maxItems": {
            "title": "Maximum items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Stops after this many rows (all record types together). Free plans are limited to 10 items per run. In managers mode the scan of a place is kept in proportion to this number, so a small value gives office rows with partial unit counts (sampleIsComplete is false).",
            "default": 50
          },
          "places": {
            "title": "Places",
            "type": "array",
            "description": "Cities, regions, states or countries, one per line: a city with its state such as \"Bend, OR\" or \"Destin Florida\", a country such as \"Costa Rica\", a path such as usa/Oregon/Bend or costa-rica/Guanacaste, or a vacasa.com place address. Leave empty to read whole countries (see Countries).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Whole countries to read when no places or addresses are given. Empty with nothing else given means all six countries, starting with the USA. A country with more than 300 units is walked state by state.",
            "items": {
              "type": "string",
              "enum": [
                "usa",
                "mexico",
                "costa-rica",
                "belize",
                "aruba",
                "canada"
              ],
              "enumTitles": [
                "United States (US)",
                "Mexico (MX)",
                "Costa Rica (CR)",
                "Belize (BZ)",
                "Aruba (AW)",
                "Canada (CA)"
              ]
            },
            "default": []
          },
          "startUrls": {
            "title": "Vacasa addresses",
            "type": "array",
            "description": "vacasa.com unit pages (/unit/112665), place pages (/usa/Oregon/Bend/ or an explore page) and search addresses (/search?place=...). The filters in a search address are applied; filters set below override them.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "unitIds": {
            "title": "Unit numbers",
            "type": "array",
            "description": "Single units by number or address, one per line, for example 112665 or https://www.vacasa.com/unit/112665. Works in units, reviews and availability modes.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "housingTypes": {
            "title": "Housing types",
            "type": "array",
            "description": "Only these kinds of home. Empty means all.",
            "items": {
              "type": "string",
              "enum": [
                "apartment",
                "bed & breakfast",
                "bungalow",
                "cabin",
                "castle",
                "chalet",
                "condo",
                "cottage",
                "estate",
                "farmhouse",
                "guest house",
                "hotel",
                "house",
                "lodge",
                "loft",
                "resort",
                "studio",
                "townhouse",
                "tree house",
                "villa",
                "yurt"
              ],
              "enumTitles": [
                "Apartment",
                "Bed & breakfast",
                "Bungalow",
                "Cabin",
                "Castle",
                "Chalet",
                "Condo",
                "Cottage",
                "Estate",
                "Farmhouse",
                "Guest house",
                "Hotel",
                "House",
                "Lodge",
                "Loft",
                "Resort",
                "Studio",
                "Townhouse",
                "Tree house",
                "Villa",
                "Yurt"
              ]
            },
            "default": []
          },
          "amenities": {
            "title": "Must have amenities",
            "type": "array",
            "description": "Units that have all of the chosen amenities (hot tub and pool means both). Empty means no requirement.",
            "items": {
              "type": "string",
              "enum": [
                "HotTub",
                "Pool",
                "PoolSpa",
                "Internet",
                "Pets",
                "AirConditioning",
                "CentralAC",
                "Heating",
                "Fireplace",
                "WasherDryer",
                "ElectricVehicleCharger",
                "Elevator",
                "Balcony",
                "EnclosedYard",
                "OceanFront",
                "OceanView",
                "BeachAccess",
                "LakeFront",
                "LakeView",
                "RiverFront",
                "WaterFront",
                "WaterView",
                "SoundView",
                "Soundfront",
                "gulffront",
                "gulfview",
                "MountainView",
                "SkiInOut",
                "Golf",
                "Tennis",
                "Dock",
                "Kayak",
                "AdultBikes",
                "PingPong",
                "PoolTable",
                "Pack-n-Play",
                "Wheelchairaccessible",
                "StepfreeAccess",
                "AccessibleBathShower",
                "WideClearance",
                "Limitedmobilityaccess",
                "EventsAllowed",
                "Snowbird",
                "Premier"
              ],
              "enumTitles": [
                "Hot tub",
                "Pool",
                "Pool spa",
                "Internet",
                "Dog-friendly",
                "Air conditioning",
                "A/C",
                "Heating",
                "Fireplace",
                "Washer/dryer",
                "Electric vehicle charger",
                "Elevator",
                "Balcony",
                "Enclosed yard",
                "Oceanfront",
                "Ocean view",
                "Beach access",
                "Lakefront",
                "Lake view",
                "Riverfront",
                "Waterfront",
                "Water view",
                "Sound view",
                "Soundfront",
                "Gulf-front",
                "Gulf view",
                "Mountain view",
                "Ski-in/ski-out",
                "Golf on-site",
                "Tennis court",
                "Dock",
                "Kayaks",
                "Bikes",
                "Ping-pong table",
                "Pool table",
                "Pack-N-Play",
                "Wheelchair accessible",
                "Step-free access",
                "Accessible bath/shower",
                "Wide clearance",
                "Limited mobility access",
                "Meeting and events allowed",
                "Snowbird-friendly",
                "Premier"
              ]
            },
            "default": []
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "At least this many bedrooms. Empty or 0 means any (studios included)."
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms",
            "minimum": 1,
            "maximum": 40,
            "type": "integer",
            "description": "At most this many bedrooms. Empty means no limit."
          },
          "minBathrooms": {
            "title": "Minimum bathrooms",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "At least this many bathrooms. Empty or 0 means any."
          },
          "guests": {
            "title": "Guests (adults)",
            "minimum": 1,
            "maximum": 60,
            "type": "integer",
            "description": "Only units that sleep at least this many adults."
          },
          "petFriendly": {
            "title": "Pet friendly",
            "type": "boolean",
            "description": "Only units that accept pets.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum nightly price (USD)",
            "minimum": 0,
            "maximum": 100000,
            "type": "integer",
            "description": "Keep units whose nightly rate is at least this (the average rate shown on the search card, or the average rate of your stay dates). Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Maximum nightly price (USD)",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Keep units whose nightly rate is at most this. Leave empty for no maximum."
          },
          "minRating": {
            "title": "Minimum guest rating",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "Keep units rated at least this on the 0 to 5 scale. Units without reviews are left out when this is set."
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "First night as YYYY-MM-DD. With both dates the search returns only units that are free for the stay and each row carries the priced stay: rent, fees and total. Leave both empty for the general nightly rate.",
            "default": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Departure day as YYYY-MM-DD, after the check-in date and at most 90 nights later.",
            "default": ""
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "recommended",
              "rate_asc",
              "rate_desc",
              "rating",
              "newest",
              "bedroom_desc",
              "bedroom_asc"
            ],
            "type": "string",
            "description": "Order of the units inside a place. With a small maxItems it decides which units you get.",
            "default": "recommended"
          },
          "onlyInsidePlace": {
            "title": "Only units inside the place",
            "type": "boolean",
            "description": "vacasa.com treats neighbouring towns as one search area (a search for San Jose del Cabo also lists Cabo San Lucas). On keeps only the units whose own city lies inside the place you asked for. Off returns exactly what the site shows for that place.",
            "default": false
          },
          "includeDetails": {
            "title": "Read the full unit page",
            "type": "boolean",
            "description": "Units mode. On: one extra request per unit for the full description, all photos, amenity groups, bed layout and permit number (unit-detail record). Off: only the search-card data (unit record), faster and cheaper.",
            "default": true
          },
          "includeContactDetails": {
            "title": "Include property manager contact",
            "type": "boolean",
            "description": "Adds the business phone and email of the local property manager office (never private persons). Turn on only if you have a lawful reason to process contact data.",
            "default": false
          },
          "includeRaw": {
            "title": "Include raw payload",
            "type": "boolean",
            "description": "Adds a raw field with the unmapped data of the search card (units) or review (reviews). Reviewer names are never included.",
            "default": false
          },
          "maxReviewsPerUnit": {
            "title": "Reviews per unit",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Reviews mode: newest reviews to read per unit. The overall maximum items still applies.",
            "default": 20
          },
          "calendarDays": {
            "title": "Calendar days",
            "minimum": 1,
            "maximum": 732,
            "type": "integer",
            "description": "Availability mode: how many days from today the summary covers (the site publishes up to about two years).",
            "default": 365
          },
          "includeDailyCalendar": {
            "title": "Include day-by-day calendar",
            "type": "boolean",
            "description": "Availability mode: adds the full list of days with bookable flag, check-in and check-out flags, nightly rate and fees.",
            "default": false
          },
          "includeChildPlaces": {
            "title": "Include places inside",
            "type": "boolean",
            "description": "Places mode: also return one row per child place (the states of a country, the cities of a state) in addition to the place itself.",
            "default": true
          },
          "onlyNew": {
            "title": "Only new records",
            "type": "boolean",
            "description": "Skips records delivered by an earlier run of the same search (units, reviews and managers). Nothing skipped is charged.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Also report price changes",
            "type": "boolean",
            "description": "With Only new records on in units mode: a unit seen before comes back when its nightly price differs from the last delivered price, with the previous price, the change and the change in percent.",
            "default": false
          },
          "stateKey": {
            "title": "Monitor name",
            "type": "string",
            "description": "Optional label to keep several monitors with identical settings apart.",
            "default": ""
          },
          "resetSeen": {
            "title": "Forget what was delivered",
            "type": "boolean",
            "description": "Clears the memory of this search before the run, so everything counts as new.",
            "default": false
          },
          "maxSearchRequests": {
            "title": "Maximum search requests",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Cap on the search calls of one run. A search call returns up to 300 units, so 400 calls reach a few state sized areas. The Actor makes about one request per second, so 400 calls take about 7 minutes. Raise it to read very large areas completely.",
            "default": 400
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many unit page, review or calendar requests wait for an answer at the same time. Requests still start at most once per second, so this only overlaps the waiting time.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Leave proxy off (the default): the site works without one. Turn it on only if requests start failing; the Apify proxy then uses US exit addresses, because vacasa.com refuses other countries.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}