{
  "openapi": "3.0.1",
  "info": {
    "title": "Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output",
    "description": "Extract vacation rental data from Vrbo.com by location, region, coordinates, property URL, or property ID. Returns prices, availability signals, amenities, photos, geo data, ratings, full guest reviews, and structured listing details.",
    "version": "0.2",
    "x-build-id": "PgHUlXTU1y4AnSrfg"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~vrbo-vacation-rentals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-vrbo-vacation-rentals-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/abotapi~vrbo-vacation-rentals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-vrbo-vacation-rentals-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/abotapi~vrbo-vacation-rentals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-vrbo-vacation-rentals-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": [
          "checkIn",
          "checkOut"
        ],
        "properties": {
          "mode": {
            "title": "Scraping mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode runs a location query and paginates results. URL mode fetches specific properties, reviews, or search pages you paste below.",
            "default": "search"
          },
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "Search mode only. Type a location (for example Orlando, Bali, Tulum Mexico)."
          },
          "destinationId": {
            "title": "Region ID (optional)",
            "type": "string",
            "description": "Numeric Vrbo/Expedia region ID. If left empty, the Actor resolves the Destination text above. Useful to pin an exact region."
          },
          "latitude": {
            "title": "Latitude (optional)",
            "type": "string",
            "description": "Search by coordinates instead of a location name. Provide both Latitude and Longitude."
          },
          "longitude": {
            "title": "Longitude (optional)",
            "type": "string",
            "description": "Search by coordinates instead of a location name. Provide both Latitude and Longitude."
          },
          "startUrls": {
            "title": "Property URLs / IDs",
            "type": "array",
            "description": "URL mode only. Paste any mix of: full property URLs (https://www.vrbo.com/2165911), bare IDs (2165911), dotted IDs (321.2880733.3452770), reviews links (https://www.vrbo.com/2165911/reviews), or Vrbo search URLs (auto-paginated).",
            "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": "Pick a date, or type a relative value such as 1 day (tomorrow) or 30 days. Drives nightly pricing and availability.",
            "default": "1 day"
          },
          "checkOut": {
            "title": "Check out Date",
            "type": "string",
            "description": "Pick a date, or type a relative value such as 6 days. Most rentals require a multi-night stay.",
            "default": "6 days"
          },
          "adults": {
            "title": "Adults",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of adult guests. Affects pricing and availability.",
            "default": 2
          },
          "children": {
            "title": "Children Ages",
            "type": "array",
            "description": "Add one entry per child and type the age in years (0 to 17).",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rooms": {
            "title": "Rooms / Units",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Number of units. Most vacation rentals are whole properties, so leave at 1 unless booking multiple units.",
            "default": 1
          },
          "bedrooms": {
            "title": "Minimum Bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Only return properties with at least this many bedrooms. Leave empty for no minimum."
          },
          "minPrice": {
            "title": "Min Price per Night",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum nightly price filter in the selected currency. Leave empty for no minimum."
          },
          "maxPrice": {
            "title": "Max Price per Night",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum nightly price filter in the selected currency. Leave empty for no maximum."
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "RECOMMENDED",
              "PRICE_LOW_TO_HIGH",
              "PRICE_HIGH_TO_LOW",
              "DISTANCE",
              "REVIEW"
            ],
            "type": "string",
            "description": "Order in which properties are returned.",
            "default": "RECOMMENDED"
          },
          "reviewsOnly": {
            "title": "Scrape reviews only",
            "type": "boolean",
            "description": "When enabled, the output is individual review records (one row per review) instead of property cards. Works in both Search and URL modes.",
            "default": false
          },
          "includeReviews": {
            "title": "Include reviews in property cards",
            "type": "boolean",
            "description": "When enabled, each property card gets up to Max Reviews per Property reviews embedded under extra.reviews. Ignored if Scrape reviews only is on.",
            "default": false
          },
          "maxReviewsPerProperty": {
            "title": "Max Reviews per Property",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Cap on reviews collected per property. Applies to Include reviews and to Scrape reviews only (per property).",
            "default": 25
          },
          "reviewsFrom": {
            "title": "Reviews From Date",
            "type": "string",
            "description": "YYYY-MM-DD. Only keep reviews on or after this date. Speeds up runs when you only need recent reviews."
          },
          "includeCategoryRatings": {
            "title": "Include Category Ratings",
            "type": "boolean",
            "description": "Attach property-level aggregate category ratings (cleanliness, communication, location, accuracy) to each review record.",
            "default": true
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "JPY",
              "AUD",
              "CAD",
              "NZD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "TRY",
              "CNY",
              "HKD",
              "TWD",
              "KRW",
              "SGD",
              "THB",
              "MYR",
              "IDR",
              "PHP",
              "INR",
              "AED",
              "SAR",
              "ILS",
              "ZAR",
              "MXN",
              "BRL",
              "ARS",
              "CLP",
              "COP",
              "PEN"
            ],
            "type": "string",
            "description": "Currency for prices shown on property cards.",
            "default": "USD"
          },
          "locale": {
            "title": "Locale",
            "enum": [
              "en_US",
              "en_GB",
              "en_AU",
              "en_CA",
              "en_IN",
              "en_SG",
              "fr_FR",
              "fr_CA",
              "de_DE",
              "de_AT",
              "es_ES",
              "es_MX",
              "it_IT",
              "nl_NL",
              "pt_BR",
              "pt_PT",
              "ja_JP",
              "ko_KR",
              "zh_CN",
              "zh_HK",
              "zh_TW",
              "sv_SE",
              "da_DK",
              "nb_NO",
              "fi_FI",
              "pl_PL",
              "th_TH",
              "tr_TR",
              "ar_SA"
            ],
            "type": "string",
            "description": "Language and region for content and review language.",
            "default": "en_US"
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Hard cap on the total number of records saved to the dataset across all pages and properties.",
            "default": 20
          },
          "maxConcurrency": {
            "title": "Max Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Number of parallel requests. Higher is faster but more likely to trigger rate limits. 3 to 6 is the sweet spot.",
            "default": 5
          },
          "maxResidentialItems": {
            "title": "Residential Budget Cap (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Optional safety cap. When running on Residential proxies, stop after this many records to bound residential traffic spend. Leave empty for no cap."
          },
          "proxy": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "Proxy settings. Residential proxies are strongly recommended because Vrbo blocks datacenter IPs. The Actor rotates country on blocks and falls back to a backup pool if needed."
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}