VRBO Scraper - Vacation Rentals, Prices & Reviews
Pricing
from $3.00 / 1,000 listing or property scrapeds
VRBO Scraper - Vacation Rentals, Prices & Reviews
Scrape VRBO vacation rentals by destination or URL — listings, full property detail, and guest reviews. Akamai-hardened, MCP-ready.
Pricing
from $3.00 / 1,000 listing or property scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
VRBO Scraper is an Apify Actor for travel and real-estate workflows that start with a destination, a VRBO search URL, or a VRBO property URL or ID. It accepts one search location or one or more exact VRBO URLs, and each dataset record represents one listing, one property, or one review. The useful fields include names, property type, bedrooms, bathrooms, sleeps, ratings, review counts, price fields, city, region, country, coordinates, image URL, amenities, host, description, review metadata, source URL, and scraped timestamp. This Actor runs on Apify, is usable through Apify MCP, and returns structured records that are ready for filtering, joining, and downstream analysis.
Best fit and connected workflows
This Actor fits workflows that begin with a VRBO market question and end with structured records you can sort, filter, join, and pass into downstream analysis.
It is a strong fit for:
- destination searches that return VRBO listing cards,
- direct property scraping from known VRBO URLs or property IDs,
- review collection linked back to each property by
propertyId, - stay-specific pricing checks using
checkInandcheckOut, - AI-agent workflows through Apify MCP,
- spreadsheet, BI, warehouse, and custom-script pipelines.
A practical routing pattern is:
- Search a destination with
destinationor a search URL instartUrls. a bounded number of Review the listing cards and shortlist relevant properties. a bounded number of Run the selected property URLs again for full detail and guest reviews. - Use
sourceUrl,propertyId, andscrapedAtfor traceability.
Practical scenario
A rental analyst starts with destination: "Lake Tahoe" and wants a short market scan. The run returns listing records with name, propertyType, bedrooms, bathrooms, sleeps, rating, reviewCount, and price fields. She uses rating and reviewCount to narrow the set, then opens a few property URLs in a second run to get amenities, host, description, exact geo fields, and guest reviews. Her next action is to compare the selected properties side by side and share the review-linked dataset with her team.
Input fields
| Field | Type | Description |
|---|---|---|
destination | string | Search VRBO by place name, city, region, or area. Example: Lake Tahoe. |
startUrls | array | Provide exact VRBO search URLs, property URLs, or property IDs. Mixed lists are accepted. |
checkIn | string | Optional stay start date in YYYY-MM-DD format for availability-aware pricing. |
checkOut | string | Optional stay end date in YYYY-MM-DD format paired with checkIn. |
adults | integer | Adult guest count used for search filtering and pricing. Default: 2. |
maxResults | integer | Hard cap on listing or property records returned across all inputs. Default: 50. |
enrichDetails | boolean | Open each search result on its property page for full detail and reviews. Default: false. |
includeReviews | boolean | Return guest reviews as separate review records. Default: true. |
maxReviewsPerProperty | integer | Upper bound on reviews fetched per property. Default: 20. |
debugDumpToKv | boolean | Save raw extraction artifacts to the key-value store for troubleshooting. |
proxyConfiguration | object | Proxy settings for the run. Residential proxy is the default. |
Focused JSON example
{"destination": "Destin, Florida, United States of America","checkIn": "2026-08-01","checkOut": "2026-08-08","adults": 4,"maxResults": 25,"enrichDetails": true,"includeReviews": true,"maxReviewsPerProperty": 10}
Output fields
Each dataset item is a flat JSON record. recordType identifies whether the record is a listing, property, or review. Review records link back to the property through propertyId.
| Field | Type | Description |
|---|---|---|
recordType | string | Record type: listing, property, or review. |
id | string | VRBO listing or property ID. |
url | string | Canonical VRBO URL for the record. |
name | string | Listing or property headline. |
propertyType | string | Property category such as condo, house, or cabin. |
bedrooms | integer | Bedroom count. |
bathrooms | number | Bathroom count. |
sleeps | integer | Stated guest capacity. |
rating | number | Average guest rating for listing or property, or the review rating. |
reviewCount | integer | Review count for the listing or property. |
priceLabel | string | Formatted price as shown on VRBO. |
pricePerNight | number | Nightly price in numeric form. |
currency | string | Currency code. |
city | string | City on the record. |
region | string | Region or state on the record. |
country | string | Country on the record. |
postalCode | string | Postal code when present. |
latitude | number | Latitude when present. |
longitude | number | Longitude when present. |
imageUrl | string | Primary image URL. |
amenities | array | Amenity names from the property record. |
host | string | Host or host label. |
description | string | Property description. |
reviewId | string | Review ID on review records. |
title | string | Review title on review records. |
text | string | Review body on review records. |
reviewer | string | Review author or reviewer name. |
stayDate | string | Stay date on review records. |
publishedDate | string | Review publish date. |
propertyId | string | Foreign key linking a review to its property. |
propertyUrl | string | Property URL linked to the review. |
sourceUrl | string | URL the record was scraped from. |
scrapedAt | string | ISO-8601 timestamp of extraction. |
Illustrative JSON record
{"recordType": "property","id": "1234567","url": "https://www.vrbo.com/1234567","name": "Beachfront Condo with Gulf Views","propertyType": "Condo","bedrooms": 2,"bathrooms": 2,"sleeps": 6,"rating": 4.8,"reviewCount": 137,"priceLabel": "$245 / night","pricePerNight": 245,"currency": "USD","city": "Destin","region": "Florida","country": "United States","postalCode": "32541","latitude": 30.3935,"longitude": -86.4958,"imageUrl": "https://example.com/image.jpg","amenities": ["Pool", "Wi-Fi", "Beach access"],"host": "Gulf Coast Rentals","description": "Oceanfront condo with balcony views.","sourceUrl": "https://www.vrbo.com/1234567","scrapedAt": "2026-06-14T10:00:00.000Z"}
How it works
This Actor accepts either a destination search or exact VRBO URLs and auto-detects whether each URL points to a search result page or a property page. Search mode collects vacation-rental listings and auto-paginates until it reaches maxResults. When enrichDetails is enabled, each search result is opened on its property page to collect full detail fields such as description, amenities, host, exact geo, and reviews. Direct property URLs always return full detail.
The live implementation uses a stealth Playwright Chromium flow with residential or mobile proxy support for Akamai-protected pages. If every browser proxy is blocked, a bounded public-index fallback accepts only genuine canonical VRBO property pages returned by SerpAPI; it rejects search, editorial, and third-party pages. The contract also includes a diagnostic mode that can save raw page data and intercepted payloads to the key-value store for troubleshooting.
Pricing
This Actor uses Pay per event pricing on the Apify platform, and Apify platform usage is billed separately. Open the live Pricing tab on the Actor page for the current configuration.
A simple event-count example: if a run returns one hundred listing or property records and twenty guest reviews, the billed work is one actor start event, one hundred listing-or-property events, and twenty review events. You can reduce record count with maxResults, and you can bound review collection with maxReviewsPerProperty.
Use with AI agents (MCP)
This Actor is available as an Apify Actor usable through Apify MCP. The precise tool target is the Actor identity khadinakbar/vrbo-scraper.
Use it when an agent needs VRBO search results, property detail, or review records in a structured dataset.
Scrape VRBO for Lake Tahoe with up to 20 results. Return listing cards first, then enrich selected property URLs for full detail and guest reviews. Keep the output keyed by propertyId and include sourceUrl for provenance.
Output interpretation:
listingrecords support destination scans and shortlist building.propertyrecords contain the expanded property detail view.reviewrecords are linked to a property throughpropertyId.
Provenance and scope:
sourceUrlcaptures the page each record came from.scrapedAtmarks extraction time in ISO-8601 format.propertyUrlandpropertyIdconnect review records back to the property.maxResultscaps listing and property records across all inputs.- Reviews are counted separately from the record cap.
maxReviewsPerPropertybounds per-property review collection.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {destination: 'Destin, Florida, United States of America',maxResults: 10,enrichDetails: true,includeReviews: true,maxReviewsPerProperty: 5,};const run = await client.actor('khadinakbar/vrbo-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Use destination for broad discovery and startUrls when you already have a VRBO page to target. Use checkIn and checkOut together when you want stay-specific nightly prices. Keep maxResults aligned with the market slice you want to review. Turn on enrichDetails when you need amenities, host, and exact location fields for each search result. Use includeReviews and maxReviewsPerProperty when review records are part of your analysis.
Design note
I found that the dataset contract separates listing, property, and review records through recordType, and that review records are linked back to properties with propertyId. That makes it practical to process search results and review records in the same dataset while keeping provenance clear.
FAQ
When should I use destination instead of startUrls?
Use destination when you want VRBO to search by place name. Use startUrls when you already have a VRBO search page, a property page, or a raw property ID.
Can I mix search URLs and property URLs in startUrls?
Yes. The input contract auto-detects search versus property mode for each URL, so mixed lists are accepted.
How do I get full property fields from search results?
Set enrichDetails to true. Each search result is then opened on its own property page to collect full detail fields and reviews.
How are reviews connected to properties?
Review records include propertyId, and they also include propertyUrl when available. That lets you join reviews to the corresponding property record.
Where should I check current pricing?
Open the live Pricing tab on the Actor page. This README explains the Pay per event structure, while the live tab shows the current pricing configuration.
Focused standalone workflow
This Actor is designed as a focused standalone workflow.
Responsible use
Use this Actor in ways that respect VRBO, applicable laws, and data-protection requirements. Keep your automation aligned with the data you need, and review the live pricing and proxy settings before running large jobs.