MCP VRBO
MCP server for searching VRBO vacation rental listings using browser automation.
Overview
This server provides VRBO search capabilities by leveraging mcp-browser for browser automation. Unlike the Airbnb MCP which uses embedded JSON extraction, VRBO requires full browser rendering to access listing data.
Port: 3046 URL: https://mcp-vrbo.local.jbmurphy.com
Architecture
mcp-vrbo (3042) --> mcp-browser (3020) --> browser-pool --> LXC browsers
The server:
- Receives search/listing requests
- Calls mcp-browser to navigate to VRBO pages
- Executes JavaScript to extract listing data from the DOM
- Returns structured property information
Tools
| Tool | Description |
|---|---|
vrbo_search | Search VRBO listings with filters (location, dates, guests, price range, bedrooms) |
vrbo_listing_details | Get detailed information about a specific VRBO property |
Usage
Search for listings
curl -X POST https://mcp-vrbo.local.jbmurphy.com/mcp/call_tool \
-H "Content-Type: application/json" \
-d '{
"name": "vrbo_search",
"arguments": {
"location": "New York",
"checkin": "2025-03-01",
"checkout": "2025-03-05",
"adults": 2,
"min_bedrooms": 2
}
}'
Get listing details
curl -X POST https://mcp-vrbo.local.jbmurphy.com/mcp/call_tool \
-H "Content-Type: application/json" \
-d '{
"name": "vrbo_listing_details",
"arguments": {
"id": "4515867"
}
}'
Search Parameters
| Parameter | Type | Description |
|---|---|---|
location | string | Required. City, state, or region to search |
checkin | string | Check-in date (YYYY-MM-DD) |
checkout | string | Check-out date (YYYY-MM-DD) |
adults | number | Number of adults (default: 2) |
children | number | Number of children (default: 0) |
min_bedrooms | number | Minimum number of bedrooms |
min_bathrooms | number | Minimum number of bathrooms |
min_price | number | Minimum price per night |
max_price | number | Maximum price per night |
Response Format
{
"searchUrl": "https://www.vrbo.com/search?destination=...",
"location": "New York",
"totalAvailable": "300+",
"returnedCount": 17,
"properties": [
{
"id": "4515867",
"name": "Spacious apartment in Brooklyn",
"url": "https://www.vrbo.com/4515867",
"price": "$1,181",
"priceNumeric": 1181,
"rating": 9.4,
"reviews": 10,
"propertyType": "Apartment",
"sleeps": 16,
"bedrooms": 4,
"bathrooms": "3+",
"neighborhood": "Brooklyn"
}
]
}
Dependencies
mcp-browser- Browser automation service (must be running)browser-pool- LXC browser container pool
Build & Deploy
# Build locally
docker-compose up -d --build
# Or via main docker-compose
cd .. && docker-compose up -d --build mcp-vrbo
Technical Notes
- VRBO uses React and loads data dynamically via GraphQL
- Data extraction is done by parsing the rendered DOM, not embedded JSON
- The browser pool handles anti-bot measures through real browser instances
- Slower than Airbnb scraping (~3-5 seconds per search) due to full page rendering
Comparison: Airbnb vs VRBO
| Aspect | mcp-airbnb | mcp-vrbo |
|---|---|---|
| Method | Embedded JSON extraction | DOM parsing via browser |
| Speed | Fast (~1 second) | Slower (~3-5 seconds) |
| Browser required | No | Yes (via mcp-browser) |
| Reliability | May break on JSON structure changes | May break on DOM changes |