# Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output (`abotapi/vrbo-vacation-rentals-scraper`) Actor

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.

- **URL**: https://apify.com/abotapi/vrbo-vacation-rentals-scraper.md
- **Developed by:** [AbotAPI](https://apify.com/abotapi) (community)
- **Categories:** Travel, Automation, Developer tools
- **Stats:** 3 total users, 2 monthly users, 87.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Vrbo Vacation Rentals Scraper 🏖️

Extract **vacation rental listings, prices, availability signals, amenities, photos, geo, ratings and full guest reviews** from vrbo.com, by location, region, coordinates, property URL, or property ID.

You get clean, structured records that are fast, reliable, and inexpensive to run.

---

### ✨ Why this scraper

| | This Actor | Basic scrapers |
|---|---|---|
| Input forms | Location, region ID, coordinates, property URL, bare ID, dotted ID, `/reviews` link, search URL | URL or location only |
| Reviews | Full paginated guest reviews, manager responses, category ratings | Limited or none |
| Output | 40+ fields incl. sleeps, bedrooms, bathrooms, property type, badges, geo | Title and price only |
| Reliability | Keeps working through Vrbo site updates and recovers automatically from blocks | Often stop returning results |
| Proxy spend | Residential budget cap plus automatic downgrade to cheaper pools | Residential always on |

---

### 🔑 Input

Run in **Search mode** (by location) or **URL mode** (by specific properties or search URLs). Everything is optional except the stay dates, which default sensibly.

#### Search mode
| Field | Description |
|---|---|
| `destination` | Location text, e.g. `Orlando, Florida`, `Bali`, `Tulum Mexico` |
| `destinationId` | Optional region ID to pin an exact region |
| `latitude` / `longitude` | Search by coordinates instead of a name |
| `checkIn` / `checkOut` | Date or relative value (`1 day`, `30 days`). Drives nightly pricing |
| `adults`, `children`, `rooms` | Guest configuration |
| `bedrooms` | Minimum bedrooms filter |
| `minPrice` / `maxPrice` | Nightly price range |
| `sortBy` | `RECOMMENDED`, `PRICE_LOW_TO_HIGH`, `PRICE_HIGH_TO_LOW`, `DISTANCE`, `REVIEW` |

#### URL mode
Paste any mix into `startUrls`:
- Full property URL, e.g. `https://www.vrbo.com/2165911`
- Bare ID, e.g. `2165911`
- Dotted ID, e.g. `321.2880733.3452770`
- Reviews link, e.g. `https://www.vrbo.com/2165911/reviews`
- Search URL, e.g. `https://www.vrbo.com/search?destination=Bali`

#### Reviews and output options
| Field | Description |
|---|---|
| `reviewsOnly` | Output one row per review instead of property cards |
| `includeReviews` | Embed up to N reviews inside each property card |
| `maxReviewsPerProperty` | Cap reviews per property |
| `reviewsFrom` | Only keep reviews on or after `YYYY-MM-DD` |
| `includeCategoryRatings` | Attach cleanliness, communication, location and accuracy scores |
| `currency`, `locale` | Output currency and language |
| `maxItems` | Hard cap on total records |
| `maxConcurrency` | Parallel requests (3 to 6 recommended) |
| `maxResidentialItems` | Optional residential traffic budget cap |
| `proxy` | Proxy configuration (Residential recommended) |

---

### 📤 Output

#### Property record (Search / URL mode)
```json
{
  "mode": "search",
  "vrboId": "2165911",
  "listingUrl": "https://www.vrbo.com/2165911",
  "title": "Beachfront Villa with Private Pool",
  "propertyType": "Villa",
  "sleeps": 8,
  "bedrooms": 4,
  "bathrooms": 3,
  "pricePerNight": 412,
  "priceFormatted": "$412 nightly",
  "priceStrikeout": "$520",
  "priceCurrency": "USD",
  "rating": 9.8,
  "ratingScale": 10,
  "ratingLabel": "Exceptional",
  "reviewCount": 137,
  "latitude": -8.6887,
  "longitude": 115.1700,
  "image": "https://...",
  "images": ["https://...", "https://..."],
  "imagesCount": 24,
  "badges": ["Great location"],
  "description": "Completely renovated beachfront villa...",
  "provider": "vrbo",
  "searchLocation": "Bali",
  "checkIn": "2026-07-15",
  "checkOut": "2026-07-20",
  "adults": 2,
  "scrapedAt": "2026-06-13T10:00:00Z"
}
````

#### Review record (`reviewsOnly` or `/reviews` link)

```json
{
  "mode": "reviews",
  "vrboId": "2165911",
  "reviewId": "abc123",
  "rating": 10,
  "ratingScale": 10,
  "ratingLabel": "Excellent",
  "reviewTitle": "Perfect family getaway",
  "reviewText": "The villa exceeded our expectations...",
  "authorName": "Sarah M.",
  "reviewDate": "2026-05-02",
  "stayDuration": "Stayed 5 nights in April 2026",
  "liked": ["Cleanliness", "Location"],
  "disliked": [],
  "managerResponse": { "text": "Thank you Sarah!", "author": "Host", "date": "2026-05-03" },
  "photos": ["https://..."],
  "categoryRatings": { "Cleanliness": 10, "Communication": 9.8, "Location": 10 },
  "propertyReviewCount": 137,
  "provider": "vrbo",
  "scrapedAt": "2026-06-13T10:00:00Z"
}
```

Detail and URL-mode records add `address`, `city`, `country`, `postalCode`, `neighborhood`, `amenities`, `amenitiesCount`, and `categoryRatings` where available.

***

### 💸 Pricing

You are charged a small **property-detail** event only when fetching a specific property by URL or ID in URL mode. Location-search property cards and review rows are not charged that event. You also pay your own Apify platform compute and proxy usage.

### Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step **after** the scrape — the Apify dataset is never changed.

**What gets written to the connector:** a condensed, human-readable **summary** of each record — not the full JSON. Each item becomes one entry with a **title** and its key fields flattened to plain text. The **complete record always stays in the Apify dataset**.

1. Authorize a connector once under **Apify → Settings → Integrations** (Notion, Linear, Airtable, or Apify).
2. Select it in the **"Pipe results into your apps"** input field. (If the picker is empty, you haven't authorized a connector yet.)
3. For **Notion**, also set `notionParentPageUrl` to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

# Actor input Schema

## `mode` (type: `string`):

Search mode runs a location query and paginates results. URL mode fetches specific properties, reviews, or search pages you paste below.

## `destination` (type: `string`):

Search mode only. Type a location (for example Orlando, Bali, Tulum Mexico).

## `destinationId` (type: `string`):

Numeric Vrbo/Expedia region ID. If left empty, the Actor resolves the Destination text above. Useful to pin an exact region.

## `latitude` (type: `string`):

Search by coordinates instead of a location name. Provide both Latitude and Longitude.

## `longitude` (type: `string`):

Search by coordinates instead of a location name. Provide both Latitude and Longitude.

## `startUrls` (type: `array`):

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).

## `checkIn` (type: `string`):

Pick a date, or type a relative value such as 1 day (tomorrow) or 30 days. Drives nightly pricing and availability.

## `checkOut` (type: `string`):

Pick a date, or type a relative value such as 6 days. Most rentals require a multi-night stay.

## `adults` (type: `integer`):

Number of adult guests. Affects pricing and availability.

## `children` (type: `array`):

Add one entry per child and type the age in years (0 to 17).

## `rooms` (type: `integer`):

Number of units. Most vacation rentals are whole properties, so leave at 1 unless booking multiple units.

## `bedrooms` (type: `integer`):

Only return properties with at least this many bedrooms. Leave empty for no minimum.

## `minPrice` (type: `integer`):

Minimum nightly price filter in the selected currency. Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Maximum nightly price filter in the selected currency. Leave empty for no maximum.

## `sortBy` (type: `string`):

Order in which properties are returned.

## `reviewsOnly` (type: `boolean`):

When enabled, the output is individual review records (one row per review) instead of property cards. Works in both Search and URL modes.

## `includeReviews` (type: `boolean`):

When enabled, each property card gets up to Max Reviews per Property reviews embedded under extra.reviews. Ignored if Scrape reviews only is on.

## `maxReviewsPerProperty` (type: `integer`):

Cap on reviews collected per property. Applies to Include reviews and to Scrape reviews only (per property).

## `reviewsFrom` (type: `string`):

YYYY-MM-DD. Only keep reviews on or after this date. Speeds up runs when you only need recent reviews.

## `includeCategoryRatings` (type: `boolean`):

Attach property-level aggregate category ratings (cleanliness, communication, location, accuracy) to each review record.

## `currency` (type: `string`):

Currency for prices shown on property cards.

## `locale` (type: `string`):

Language and region for content and review language.

## `maxItems` (type: `integer`):

Hard cap on the total number of records saved to the dataset across all pages and properties.

## `maxConcurrency` (type: `integer`):

Number of parallel requests. Higher is faster but more likely to trigger rate limits. 3 to 6 is the sweet spot.

## `maxResidentialItems` (type: `integer`):

Optional safety cap. When running on Residential proxies, stop after this many records to bound residential traffic spend. Leave empty for no cap.

## `proxy` (type: `object`):

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` (type: `array`):

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` (type: `string`):

URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.

## `maxNotifyListings` (type: `integer`):

Cap on items written to each connector per run. Does not affect the dataset.

## Actor input object example

```json
{
  "mode": "search",
  "destination": "Orlando, Florida",
  "startUrls": [
    {
      "url": "https://www.vrbo.com/2165911"
    }
  ],
  "checkIn": "1 day",
  "checkOut": "6 days",
  "adults": 2,
  "children": [],
  "rooms": 1,
  "sortBy": "RECOMMENDED",
  "reviewsOnly": false,
  "includeReviews": false,
  "maxReviewsPerProperty": 25,
  "includeCategoryRatings": true,
  "currency": "USD",
  "locale": "en_US",
  "maxItems": 20,
  "maxConcurrency": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  },
  "maxNotifyListings": 50
}
```

# Actor output Schema

## `results` (type: `string`):

Records matching the selected mode

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "destination": "Orlando, Florida",
    "startUrls": [
        {
            "url": "https://www.vrbo.com/2165911"
        }
    ],
    "checkIn": "1 day",
    "checkOut": "6 days",
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("abotapi/vrbo-vacation-rentals-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "destination": "Orlando, Florida",
    "startUrls": [{ "url": "https://www.vrbo.com/2165911" }],
    "checkIn": "1 day",
    "checkOut": "6 days",
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("abotapi/vrbo-vacation-rentals-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "destination": "Orlando, Florida",
  "startUrls": [
    {
      "url": "https://www.vrbo.com/2165911"
    }
  ],
  "checkIn": "1 day",
  "checkOut": "6 days",
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call abotapi/vrbo-vacation-rentals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=abotapi/vrbo-vacation-rentals-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
