{
  "openapi": "3.0.1",
  "info": {
    "title": "VRBO Scraper - Vacation Rentals, Prices & Reviews",
    "description": "Scrape VRBO vacation rentals by destination or URL — listings, full property detail, and guest reviews. Akamai-hardened, MCP-ready.",
    "version": "1.1",
    "x-build-id": "YSJJnGmITXpVUcAKV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/khadinakbar~vrbo-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-khadinakbar-vrbo-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/khadinakbar~vrbo-scraper/runs": {
      "post": {
        "operationId": "runs-sync-khadinakbar-vrbo-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/khadinakbar~vrbo-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-khadinakbar-vrbo-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": {
          "destination": {
            "title": "Destination (search)",
            "type": "string",
            "description": "Use this to search VRBO by place: a free-text city, region, or area such as 'Destin, Florida, United States of America' or 'Lake Tahoe'. The actor opens VRBO search, collects vacation-rental listings, and auto-paginates up to Max results. Leave empty if you instead pass property or search URLs in Start URLs. NOT a property URL — to scrape one rental use Start URLs."
          },
          "startUrls": {
            "title": "Start URLs (search or property)",
            "type": "array",
            "description": "Use this for exact VRBO URLs instead of a text search. Accepts VRBO search-result URLs (https://www.vrbo.com/search?destination=...) and individual property URLs or IDs (https://www.vrbo.com/1234567 or just 1234567). Each URL's mode (search vs property) is auto-detected. Mixed lists are fine; non-VRBO URLs are skipped with a warning.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "Optional stay start date in YYYY-MM-DD format (e.g. '2026-08-01') used to fetch availability-aware nightly prices in search mode. Leave empty for undated 'from' prices. Must be earlier than Check-out. NOT a duration — pass an explicit calendar date."
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "Optional stay end date in YYYY-MM-DD format (e.g. '2026-08-08'), paired with Check-in to price a specific stay window. Leave empty for undated prices. Must be after Check-in or both dates are ignored. NOT the number of nights — pass a calendar date."
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 16,
            "type": "integer",
            "description": "Number of adult guests used to filter and price search results (e.g. 4). Defaults to 2. Range 1–16. Ignored for direct property URLs.",
            "default": 2
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on how many listing/property records to return across all inputs (e.g. 100). Defaults to 50. Pagination stops once this is reached, so it also bounds cost. Reviews do not count against this cap.",
            "default": 50
          },
          "enrichDetails": {
            "title": "Visit each listing for full detail",
            "type": "boolean",
            "description": "When on, every search result is opened on its own property page to collect full fields (description, amenities, host, exact geo) and reviews. When off (default), search returns faster, cheaper listing cards only. Direct property URLs always return full detail regardless of this flag. Turning this on increases run time and cost.",
            "default": false
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "When on (default), property pages also return guest reviews as separate review records linked by propertyId. Applies to direct property URLs and, when Visit each listing is on, to search results too. Turn off to skip reviews entirely. Each review is billed separately — see pricing.",
            "default": true
          },
          "maxReviewsPerProperty": {
            "title": "Max reviews per property",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Upper bound on reviews fetched per property (e.g. 20). Defaults to 20, max 200. Set 0 to disable reviews even if Include reviews is on. Caps per-property review cost.",
            "default": 20
          },
          "debugDumpToKv": {
            "title": "Debug: dump raw page to key-value store",
            "type": "boolean",
            "description": "Diagnostic only. When on, saves raw HTML, script summaries, and intercepted API payloads to the key-value store (DEBUG-* keys) to troubleshoot extraction. Leave off for normal runs. Does not change billing.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy settings. VRBO is protected by Akamai, so residential proxies are strongly recommended and on by default (US). Datacenter proxies will be blocked. Leave default unless you have a reason to change country or group.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "US"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}