# Vrbo Vacation Rentals Scraper (`ulitron34/vrbo-scraper`) Actor

Fast and reliable Vrbo scraper. Extract vacation rental listings, nightly prices, bedrooms, bathrooms, guest capacity, star ratings, review counts, Premier Host badges, and photos across Vrbo.

- **URL**: https://apify.com/ulitron34/vrbo-scraper.md
- **Developed by:** [ulises salgado diaz](https://apify.com/ulitron34) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 1 monthly users, 66.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 🏖️ Vrbo Vacation Rentals Scraper

Extract comprehensive vacation rental property listings, nightly prices, guest capacity, bedroom & bathroom counts, star ratings, review counts, Premier Host badges, and high-resolution photos from **Vrbo.com** (part of Expedia Group).

Engineered for real estate investors, short-term rental (STR) operators, property managers, travel aggregators, and hospitality researchers. Built with anti-detect browser emulation to seamlessly navigate dynamic JavaScript rendering and bypass anti-scraping challenges.

***

### 🌟 Key Features

- **Comprehensive Property Metadata:**
  - Nightly price and currency identification (USD, EUR, GBP, CAD, etc.).
  - Guest capacity (*Sleeps* count).
  - Bedroom & bathroom counts.
  - Property classification (House, Villa, Condo, Cabin, Apartment, Cottage, Chalet, Studio).
- **Social Proof & Host Quality:**
  - Real guest review ratings (e.g. 9.8 / 10).
  - Total review count.
  - **Premier Host** badge detection.
- **Location & Neighborhoods:**
  - Extracts precise destination and neighborhood details.
- **High-Resolution Imagery:**
  - Captures full-resolution primary listing photographs.
- **Smart Automated Pagination:**
  - Automatically advances through search results pages until reaching your requested property target.
- **Stealth Architecture:**
  - Powered by Crawlee + Camoufox (anti-detect browser engine) and Apify Proxy integration.

***

### 💡 Real Estate & Travel Use Cases

1. **Airbnb vs. Vrbo Arbitrage Analysis:** Cross-reference listing occupancy, nightly pricing, and fees between Airbnb and Vrbo in identical neighborhoods.
2. **Short-Term Rental (STR) Market Research:** Analyze average daily rates (ADR) and revenue potential for prospective vacation home investments.
3. **Property Management Benchmarking:** Monitor local competitor pricing, seasonal rate adjustments, and minimum night stay strategies.
4. **Travel Deal Sourcing:** Scan vacation hotspots for below-market rates and newly listed properties before peak season.
5. **Algorithmic Pricing Feed:** Feed real-time competitor rates into dynamic pricing tools and revenue management models.

***

### 📥 Input Parameters

| Parameter | Type | Required | Default | Description |
| :--- | :---: | :---: | :---: | :--- |
| `destination` | String | No | `"Miami Beach, FL"` | City, region, or vacation hotspot to search on Vrbo (e.g. `'Maui, HI'`, `'Cancun, Mexico'`, `'Lake Tahoe, CA'`). |
| `start_urls` | Array | No | `[]` | Optional direct search or filtered URLs on Vrbo. Overrides destination if supplied. |
| `max_items` | Integer | No | `40` | Maximum number of vacation rentals to collect (1 to 1,000). |
| `check_in` | String | No | `null` | Optional check-in date in `YYYY-MM-DD` format (e.g. `'2026-10-15'`). |
| `check_out` | String | No | `null` | Optional check-out date in `YYYY-MM-DD` format (e.g. `'2026-10-20'`). |
| `guests` | Integer | No | `2` | Number of adult guests. |
| `min_price` | Number | No | `null` | Optional minimum nightly price filter in USD ($). |
| `max_price` | Number | No | `null` | Optional maximum nightly price filter in USD ($). |
| `min_bedrooms` | Integer | No | `null` | Minimum number of bedrooms required. |
| `proxy_configuration` | Object | No | `{"useApifyProxy": true}` | Apify Proxy configuration to avoid IP bans. |

#### Example Input (JSON)

```json
{
    "destination": "Miami Beach, FL",
    "max_items": 50,
    "check_in": "2026-10-15",
    "check_out": "2026-10-20",
    "guests": 4,
    "min_price": 150,
    "max_price": 600,
    "min_bedrooms": 2,
    "proxy_configuration": {
        "useApifyProxy": true
    }
}
```

***

### 📤 Output Data Format

The Actor pushes structured records to the default dataset. You can view them in an interactive table or export to **JSON, CSV, Excel (XLSX), or XML**.

#### Sample Output Record

```json
{
    "id": "1234567ha",
    "title": "Luxury Oceanfront Villa with Private Heated Pool & Hot Tub",
    "price_per_night": 450.0,
    "price_formatted": "$450 / night",
    "currency": "USD",
    "property_type": "Villa",
    "sleeps": 10,
    "bedrooms": 4,
    "bathrooms": 3,
    "rating": 9.8,
    "reviews_count": 56,
    "is_premier_host": true,
    "location": "South Beach, Miami Beach",
    "url": "https://www.vrbo.com/1234567ha",
    "image_url": "https://images.vrbo.com/villa_main.jpg",
    "scraped_at": "2026-09-24T19:38:00.000Z"
}
```

***

### ⚙️ Performance & Resources

- **Recommended Memory:** **512 MB – 1024 MB**.
- **Execution Speed:** ~20–40 seconds for 40 properties.
- **Export Formats:** JSON, CSV, Excel, XML, HTML table.

***

### 🔒 Legal & Ethical Notice

This Actor extracts publicly available vacation rental data from Vrbo.com for statistical analysis, market research, and personal productivity. Please adhere to local regulations regarding web data collection and consult Vrbo's Terms of Service.

# Actor input Schema

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

City, region, or vacation destination to search on Vrbo (e.g. 'Miami Beach, FL', 'Maui, HI', 'Cancun, Mexico', 'Orlando, FL', 'Lake Tahoe, CA').

## `start_urls` (type: `array`):

Optional list of direct search or filtered URLs on Vrbo. Takes priority over destination parameter if provided.

## `max_items` (type: `integer`):

Maximum number of vacation rental properties to scrape.

## `check_in` (type: `string`):

Optional check-in date in YYYY-MM-DD format (e.g. '2026-10-15').

## `check_out` (type: `string`):

Optional check-out date in YYYY-MM-DD format (e.g. '2026-10-20').

## `guests` (type: `integer`):

Number of adult guests.

## `min_price` (type: `number`):

Optional minimum nightly price filter.

## `max_price` (type: `number`):

Optional maximum nightly price filter.

## `min_bedrooms` (type: `integer`):

Minimum number of bedrooms required.

## `proxy_configuration` (type: `object`):

Select Apify Proxy to bypass anti-scraping challenges and bot detection. Residential proxies are the default because this site blocks datacenter IPs.

## Actor input object example

```json
{
  "destination": "Miami Beach, FL",
  "start_urls": [],
  "max_items": 10,
  "guests": 2,
  "proxy_configuration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Scraped Vrbo vacation rental properties with prices, bedrooms, ratings, and locations.

# 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 = {
    "destination": "Miami Beach, FL",
    "start_urls": [],
    "max_items": 10,
    "proxy_configuration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ulitron34/vrbo-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 = {
    "destination": "Miami Beach, FL",
    "start_urls": [],
    "max_items": 10,
    "proxy_configuration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "destination": "Miami Beach, FL",
  "start_urls": [],
  "max_items": 10,
  "proxy_configuration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ulitron34/vrbo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ulitron34/vrbo-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/qMBHKo0zQok41PlMd/builds/zUIQKpJtfcwRsgIvc/openapi.json
