VRBO Scraper - Vacation Rentals, Prices & Reviews avatar

VRBO Scraper - Vacation Rentals, Prices & Reviews

Pricing

from $3.00 / 1,000 listing or property scrapeds

Go to Apify Store
VRBO Scraper - Vacation Rentals, Prices & Reviews

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

a day ago

Last modified

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 checkIn and checkOut,
  • AI-agent workflows through Apify MCP,
  • spreadsheet, BI, warehouse, and custom-script pipelines.

A practical routing pattern is:

  1. Search a destination with destination or a search URL in startUrls. 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.
  2. Use sourceUrl, propertyId, and scrapedAt for 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

FieldTypeDescription
destinationstringSearch VRBO by place name, city, region, or area. Example: Lake Tahoe.
startUrlsarrayProvide exact VRBO search URLs, property URLs, or property IDs. Mixed lists are accepted.
checkInstringOptional stay start date in YYYY-MM-DD format for availability-aware pricing.
checkOutstringOptional stay end date in YYYY-MM-DD format paired with checkIn.
adultsintegerAdult guest count used for search filtering and pricing. Default: 2.
maxResultsintegerHard cap on listing or property records returned across all inputs. Default: 50.
enrichDetailsbooleanOpen each search result on its property page for full detail and reviews. Default: false.
includeReviewsbooleanReturn guest reviews as separate review records. Default: true.
maxReviewsPerPropertyintegerUpper bound on reviews fetched per property. Default: 20.
debugDumpToKvbooleanSave raw extraction artifacts to the key-value store for troubleshooting.
proxyConfigurationobjectProxy 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.

FieldTypeDescription
recordTypestringRecord type: listing, property, or review.
idstringVRBO listing or property ID.
urlstringCanonical VRBO URL for the record.
namestringListing or property headline.
propertyTypestringProperty category such as condo, house, or cabin.
bedroomsintegerBedroom count.
bathroomsnumberBathroom count.
sleepsintegerStated guest capacity.
ratingnumberAverage guest rating for listing or property, or the review rating.
reviewCountintegerReview count for the listing or property.
priceLabelstringFormatted price as shown on VRBO.
pricePerNightnumberNightly price in numeric form.
currencystringCurrency code.
citystringCity on the record.
regionstringRegion or state on the record.
countrystringCountry on the record.
postalCodestringPostal code when present.
latitudenumberLatitude when present.
longitudenumberLongitude when present.
imageUrlstringPrimary image URL.
amenitiesarrayAmenity names from the property record.
hoststringHost or host label.
descriptionstringProperty description.
reviewIdstringReview ID on review records.
titlestringReview title on review records.
textstringReview body on review records.
reviewerstringReview author or reviewer name.
stayDatestringStay date on review records.
publishedDatestringReview publish date.
propertyIdstringForeign key linking a review to its property.
propertyUrlstringProperty URL linked to the review.
sourceUrlstringURL the record was scraped from.
scrapedAtstringISO-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:

  • listing records support destination scans and shortlist building.
  • property records contain the expanded property detail view.
  • review records are linked to a property through propertyId.

Provenance and scope:

  • sourceUrl captures the page each record came from.
  • scrapedAt marks extraction time in ISO-8601 format.
  • propertyUrl and propertyId connect review records back to the property.
  • maxResults caps listing and property records across all inputs.
  • Reviews are counted separately from the record cap.
  • maxReviewsPerProperty bounds 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.