VRBO Scraper — Vacation Rental Data, Pricing & Availability avatar

VRBO Scraper — Vacation Rental Data, Pricing & Availability

Pricing

from $4.00 / 1,000 listing scrapeds

Go to Apify Store
VRBO Scraper — Vacation Rental Data, Pricing & Availability

VRBO Scraper — Vacation Rental Data, Pricing & Availability

Scrape VRBO listings with full pricing, amenities, house rules, availability, images & reviews. Pay per result. No coding required.

Pricing

from $4.00 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Jaxay Prajapati

Jaxay Prajapati

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

VRBO Scraper — Extract Vacation Rental Data, Pricing & Availability

VRBO Scraper extracts rich, structured data from VRBO.com vacation rental listings — including fee-inclusive pricing, full amenities, house rules, availability, and 20-30+ images per property. Just enter a location and dates, and get clean JSON output ready for analysis. You only pay for results you get.

💡 No coding required. Enter your search in the input tab, click Start, and download your data as JSON, CSV, or Excel.


What does VRBO Scraper do?

VRBO Scraper searches any location worldwide and extracts 25+ data fields per listing — far more than any other VRBO scraping tool available today.

Pricing — Nightly rate + fee-inclusive total price + cleaning/service/tax breakdown ✅ Property details — Bedrooms, bathrooms, max guests, property type ✅ Full amenities — 25-40 items per listing (WiFi, pool, parking, kitchen, etc.) ✅ House rules — Check-in/out times, pet policy, smoking, events, age limits ✅ Availability — Whether the property is available + minimum/maximum stay ✅ Images — Full gallery with 20-30+ high-resolution image URLs ✅ Location — Latitude/longitude coordinates + neighborhood description ✅ Guest ratings — Rating score + review count ✅ Booking flags — Instant book, free cancellation, pets allowed ✅ Reviews — Overall summary, category scores, and up to 5 recent guest reviews (optional, anonymized) ✅ Currency — Detected from the listing's price symbol (USD, EUR, GBP, JPY, INR)

What data can you extract from VRBO?

Data PointExample
Title"Peaceful 2BR king beds suite next to DT w/ pool"
Nightly price$94
Total price$1,313 (fee-inclusive)
Cleaning / Service / Taxes$0 / $0 / $0 (when not itemized; often bundled into total_price)
CurrencyUSD (always — site is hardcoded to en_US)
Property typeApartment, House, Condo, Hotel
Bedrooms / Bathrooms2 / 2
Max guests6
AmenitiesFree wifi, Pool, Kitchen, Parking, Washer... (25-40 items)
Rating9.2 / 10
Reviews23
Pets allowed✅ true
Check-in time"Check in after 4:00 PM"
Check-out time"Check out before 10:00 AM"
Minimum stay1 night
DescriptionFull property description (HTML stripped)
House rulesComplete list of rules
Latitude / Longitude30.235172, -97.72347
Neighborhood"East Riverside - Oltorf, a neighborhood in Austin..."
Images13-32 high-res image URLs
Review summary"9.4/10 Exceptional" + "12 verified reviews"
Review categories["Cleanliness 9.8", "Communication 10.0", ...]
Recent reviewsUp to 5 anonymized reviews: rating, full text, stay info, review_id

Why scrape VRBO? Use cases for VRBO data

🏠 Real Estate Investors — Analyze revenue potential before buying a vacation rental property. Compare nightly rates, occupancy indicators, and total fee-inclusive pricing across neighborhoods.

📊 Property Managers — Monitor competitor pricing in your market. Track ratings, review counts, amenity offerings, and availability patterns. Schedule weekly runs to catch pricing changes.

📈 STR Analytics Platforms — Feed structured VRBO data into your dashboards. Clean JSON output integrates with Snowflake, BigQuery, S3, or any data pipeline.

🔍 Market Researchers — Study vacation rental supply, pricing trends, amenity patterns, and availability across US and international markets.

🌐 Travel Aggregators — Pull listing data, images, and availability for display or comparison tools. Full image galleries included at no extra cost.


How to scrape VRBO listings

  1. Go to the VRBO Scraper input tab
  2. Enter a location (e.g. "Miami Beach, FL" or "Austin, Texas")
  3. Optionally set check-in and check-out dates (YYYY-MM-DD format)
  4. Set max_listings to control how many results you want (default: 50, max: 1,000)
  5. Toggle Include Property Details for amenities, description, house rules, and coordinates
  6. Toggle Include Availability for minimum stay and availability status
  7. Toggle Include Reviews for review summary, category scores, and up to 5 anonymized recent reviews per listing
  8. Click Start and wait for results
  9. Download your data as JSON, CSV, Excel, or export via API

💡 Tip: Start with include_details: false for a fast market scan. Enable it when you need the full dataset for deeper analysis.


How much does it cost to scrape VRBO?

VRBO Scraper uses pay-per-result pricing. You only pay for listings successfully extracted — zero results means zero charge.

  • $0.005 per actor run (one-time start fee)
  • $0.004 per listing extracted ($4.00 per 1,000 listings)
  • $0.001 per listing when include_reviews is enabled ($1.00 per 1,000 listings) — only charged when reviews are successfully extracted
Scrape sizeEstimated cost
50 listings~$0.21
200 listings~$0.81
500 listings~$2.01
1,000 listings~$4.01
1,000 listings + reviews~$5.01

💰 Free tier: Apify's free plan includes $5/month platform credits — enough to scrape ~1,000 listings per month at no cost.


VRBO Scraper vs other VRBO scrapers

FeatureThis ActorOther VRBO Scrapers
Fee-inclusive total price❌ Nightly only
Full amenities (25-40 items)
Property description
House rules + check-in/out times
Pets allowed flag
Availability + min/max stay
Image gallery (20-30+ images)❌ Thumbnail only
Latitude / longitude
Neighborhood description
Free cancellation flag
Instant Book flag
Review summary + categories✅ Optional
Recent guest reviews (up to 5, anonymized)✅ Optional
Smart location resolution✅ Any city worldwide❌ Brittle matching
Crash recovery✅ Streaming output❌ All-or-nothing
Auto-healing on VRBO updates✅ All 6 hashes❌ Breaks silently
Pricing modelPay-per-resultFlat monthly fee

Input configuration

FieldTypeRequiredDefaultDescription
locationstringSearch location (e.g. "Miami Beach, FL")
check_instringCheck-in date (YYYY-MM-DD)
check_outstringCheck-out date (YYYY-MM-DD)
max_listingsinteger50Max listings to scrape (1–1,000)
include_detailsbooleanfalseFetch amenities, description, house rules, lat/lng
include_availabilitybooleanfalseFetch availability status and min/max stay
include_reviewsbooleanfalseFetch review summary, category scores, and up to 5 anonymized recent reviews per listing

Example: Fast market scan

{
"location": "Miami Beach, FL",
"check_in": "2026-12-20",
"check_out": "2026-12-27",
"max_listings": 100
}

Example: Full investment research

{
"location": "Austin, Texas",
"check_in": "2026-07-01",
"check_out": "2026-07-07",
"max_listings": 50,
"include_details": true,
"include_availability": true,
"include_reviews": true
}

Location query tips

Use the most specific location name possible:

QueryResult
"Miami Beach, FL"✅ Miami Beach, Florida, USA
"Austin, Texas"✅ Austin, TX, USA
"London, England, United Kingdom"✅ London, UK
"Melbourne, Victoria, Australia"✅ Melbourne, Australia
"Cancun, Quintana Roo, Mexico"✅ Cancún, Mexico

💡 For ambiguous queries like "London" or "Melbourne", non-US matches are preferred. Add the state/country to get a specific US city.

Neighborhood and POI queries are also supported — e.g. "Queens", "Manhattan", "SoHo" — and will resolve correctly even though VRBO returns them as NEIGHBORHOOD rather than CITY geo types.


Output example

You can download the dataset extracted by VRBO Scraper in various formats such as JSON, CSV, HTML, or Excel.

Here's a real sample output with all fields:

{
"listing_id": "2482015",
"title": "Peaceful 2BR king beds suite next to DT w/ pool",
"url": "https://www.vrbo.com/2482015?chkin=2026-06-06&chkout=2026-06-20",
"property_type": "Apartment",
"nightly_price": 94,
"total_price": 1313,
"cleaning_fee": 0,
"service_fee": 0,
"taxes": 0,
"currency": "USD",
"bedrooms": 2,
"bathrooms": 2,
"max_guests": 6,
"amenities": [
"Free wifi", "Air conditioning", "Kitchen", "Refrigerator",
"Dishwasher", "Microwave", "Pool", "Washing machine", "Dryer",
"Parking", "Coffee maker", "Pet friendly"
],
"rating": 9.2,
"total_reviews": 23,
"instant_book": false,
"free_cancellation": false,
"pets_allowed": true,
"description": "Welcome to your new home in Riverside - a fast-growing community right next to Downtown Austin...",
"house_rules": [
"Check in after 4:00 PM",
"Minimum age to rent: 18",
"Check out before 10:00 AM",
"Pets allowed",
"Smoking is not permitted"
],
"check_in_time": "Check in after 4:00 PM",
"check_out_time": "Check out before 10:00 AM",
"minimum_stay": 1,
"maximum_stay": 999,
"available": true,
"latitude": 30.235172,
"longitude": -97.72347,
"neighborhood": "East Riverside - Oltorf, a neighborhood in Austin...",
"thumbnail_url": "https://media.vrbo.com/.../1f5a362e.jpg",
"image_urls": [
"https://media.vrbo.com/.../1f5a362e.jpg",
"https://media.vrbo.com/.../3ea74f67.jpg",
"https://media.vrbo.com/.../73a3c401.jpg"
],
"review_summary": {
"overall_text": "9.2/10 Wonderful",
"review_count_text": "23 verified reviews"
},
"review_categories": [
"Cleanliness 8.4",
"Check-in 9.4",
"Communication 9.6",
"Location 9.0",
"Listing accuracy 9.4",
"Value for money 8.0"
],
"recent_reviews": [
{
"review_id": "6a03d0c0f3e117606d0abfb9",
"rating_text": "8/10 Good",
"text": "Overall the place was nice, but could use a few upgrades. Parking was convenient and close to entrance...",
"stay_info": "Stayed 1 night in Apr 2026"
},
{
"review_id": "69c2b0ba29803057f04fe143",
"rating_text": "6/10 Okay",
"text": "It was fine. It is a dated property but it felt safe and location was good...",
"stay_info": "Stayed 4 nights in Mar 2026"
}
]
}

Field reference

FieldModeDescription
listing_idBasicVRBO's unique property ID
titleBasicFull listing title
urlBasicClean listing URL with dates
property_typeBasicApartment, House, Condo, Hotel, etc.
nightly_priceBasicPer-night rate
total_priceBasicFull stay total (fee-inclusive)
cleaning_feeBasicCleaning fee line item (0 if not itemized)
service_feeBasicService/booking fee line item (0 if not itemized)
taxesBasicOccupancy/vacation tax line item (0 if not itemized)
currencyBasicISO currency code. Always USD in practice because the actor hits the en_US site; the field is empty only as a defensive fallback when no currency symbol is recognized in the price text.
bedroomsBasicNumber of bedrooms
bathroomsBasicNumber of bathrooms
max_guestsBasicMaximum occupancy
ratingBasicGuest rating out of 10
total_reviewsBasicNumber of reviews
instant_bookBasicWhether instant booking is available
free_cancellationBasicWhether free cancellation is offered
thumbnail_urlBasicFirst listing image
image_urlsBasicAll gallery images (20-30+)
amenitiesDetailsFull amenity list (25-40 items)
descriptionDetailsComplete property description
house_rulesDetailsAll house rules
check_in_timeDetailse.g. "Check in after 4:00 PM"
check_out_timeDetailse.g. "Check out before 11:00 AM"
pets_allowedDetailsBoolean, parsed from rules + amenities
latitudeDetailsApproximate coordinates
longitudeDetailsApproximate coordinates
neighborhoodDetailsArea description paragraph
minimum_stayAvailabilityMinimum nights required
maximum_stayAvailabilityMaximum nights (999 = no limit)
availableAvailabilityWhether property is available for dates
review_summary.overall_textReviewse.g. "9.4/10 Exceptional"
review_summary.review_count_textReviewse.g. "12 verified reviews"
review_categoriesReviewsList of category scores (Cleanliness, Communication, etc.)
recent_reviews[]ReviewsUp to 5 most recent reviews (anonymized: rating, text, stay info, review_id — no reviewer name)

Integrations and scheduling

VRBO Scraper works with all Apify platform features out of the box:

Scheduled runs — Set up weekly or daily runs in Apify Console → Schedules to track pricing changes over time.

🔗 API access — Trigger runs and fetch results programmatically from any language.

📊 Export anywhere — Google Sheets, Snowflake, BigQuery, S3, webhooks, or direct download.

🔌 Make.com / Zapier — Output is clean, flat JSON. Works with no-code automation tools without custom mapping.

Run via Apify API (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("jaxay/vrbo-src").call(run_input={
"location": "Miami Beach, FL",
"check_in": "2026-12-20",
"check_out": "2026-12-27",
"max_listings": 200,
"include_details": True,
"include_availability": True,
"include_reviews": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["nightly_price"], item["pets_allowed"])

Run via Apify API (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('jaxay/vrbo-src').call({
location: 'Austin, Texas',
check_in: '2026-07-01',
check_out: '2026-07-07',
max_listings: 100,
include_details: true,
include_reviews: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Performance and speed tips

ConfigurationListingsEstimated Time
Basic (search only)10~40-60s
Basic (search only)50~70-90s
Basic (search only)200~140-180s
With include_details10~70-100s
Full enrichment (details + availability)10~120-180s
Full enrichment (details + availability)50~5-8min
Full enrichment + reviews10~4-6min
Full enrichment + reviews50~14-20min

Times shown are on a clean, unthrottled proxy IP. On a throttled IP, add 10-15s for warmup recovery. On a warm run (KV cache has fresh hashes), discovery is skipped and runs are typically 5-10s faster.

🚀 Speed tips:

  • Leave include_details, include_availability, and include_reviews off for fast market scans
  • Enable them only when you need amenities, description, availability, or review data
  • Run during off-peak hours (early morning US time) for fewer rate limits
  • Use max_listings to cap run time on large markets

Roadmap — What's coming next

🔜 Phase 3 — Scrape by URL or listing ID

Skip search entirely. Provide specific VRBO listing URLs or property IDs and get full data for those exact properties.

{
"listing_urls": [
"https://www.vrbo.com/456572",
"https://www.vrbo.com/3787326"
]
}

Perfect for monitoring competitors, tracking your comparable set, or watching specific investment targets.

📋 Phase 4 — Advanced filters & market analytics

Filter results by bedrooms, price range, rating, pets, and instant book directly in the input — no post-processing needed.

{
"location": "Miami Beach, FL",
"filters": {
"min_bedrooms": 2,
"max_nightly_price": 300,
"pets_allowed": true,
"min_rating": 8.0
}
}

Also planned: market summary output — average nightly rate, median total price, occupancy estimate, and top amenities by neighborhood.


This actor only accesses publicly visible data on VRBO.com — no login required, no private information, no personal data is collected. It operates the same way any person would when browsing VRBO in a web browser.

Our scrapers are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our scrapers, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.


FAQ

Q: Do I need my own proxies? No. The actor uses Apify's built-in residential proxy infrastructure, included in Apify paid plans.

Q: What if VRBO rate limits the requests? The actor retries automatically up to 7 times with exponential backoff. Failed listings are skipped — you are never charged for failed extractions.

Q: Can I scrape international VRBO listings? Yes. Use full location names for best accuracy:

  • "London, England, United Kingdom"
  • "Melbourne, Victoria, Australia"
  • "Cancun, Quintana Roo, Mexico"
  • "Paris, Île-de-France, France"

Q: Why is host_name empty? VRBO hides host identity on search and detail pages until after booking. This is a VRBO platform restriction, not a scraper limitation.

Q: Why are cleaning_fee, service_fee, and taxes showing 0? The actor parses these from VRBO's itemized line items in the price breakdown. They're populated when VRBO surfaces them as separate line items. Many listings bundle all fees into total_price without itemizing — in that case the three fields are 0 and total_price is the only authoritative number. If you need exact fees, the detail page often shows a more detailed breakdown than the search card; consider running with include_details: true.

Q: Why is currency empty for some listings? The actor always hits the en_US site (siteId: 9001001, locale en_US), so in practice every listing has currency USD. The actor still detects the symbol from the price text ($ → USD, → EUR, £ → GBP, ¥ → JPY, → INR) as a defensive safety net for forward compatibility — the field is empty only if the response contains no recognized symbol. Empty means "unknown," not "USD."

Q: How accurate are latitude and longitude? Coordinates are extracted from VRBO's map URL — accurate to the neighborhood level. Exact addresses are not disclosed by VRBO.

Q: How do I get full-resolution images? Remove the ?impolicy=resizecrop&ra=fit&rw=455&rh=455 query string from any image_urls entry to get the original full-size image.

Q: How are review counts counted? When include_reviews is enabled, the actor fetches each listing's review summary (overall rating + category scores) and up to 5 most recent individual review records. The full review count is shown in the review_count_text field (e.g., "12 verified reviews") but only the 5 most recent full review records are included. Charge is $0.001 per listing where reviews are successfully extracted (summary OR recent review records).

Q: Why is there no reviewer name in recent_reviews[]? Reviewer names are personal data. The actor intentionally omits reviewer_name (and all guest photos) to comply with PII best practices. Each review record contains only the rating, full text, stay info, and review ID.

Q: What's the recommended max_listings for full enrichment? 200-300 per run. For larger datasets split into multiple runs. Basic mode handles 1,000 comfortably.

Q: Can I scrape a specific listing by URL? Coming in Phase 3. For now, search by location and filter results by listing_id.

Q: How often is this actor maintained? Actively maintained. All 6 persisted query hashes (typeahead, search, detail, availability, reviews, review records) are hardcoded constants used on every run — zero HTTP overhead for hash lookup. If VRBO rotates a hash, the per-query wrapper auto-discovers the new value mid-run and persists it for the next run. Breaking changes are fixed within days.

Q: Something isn't working — where do I report issues? Use the Issues tab on this Actor's page. We actively monitor and respond to all reports. We're also open to building custom solutions — reach out via the Issues tab.


Technical details

  • Pure HTTP requests — no headless browser, no Playwright, no Puppeteer
  • Streaming output — results appear in real-time, partial results always saved
  • Per-item error isolation — one bad listing never crashes the entire run
  • Auto-healing GraphQL hash refresh — all 6 persisted query hashes (typeahead, search, detail, availability, reviews, review_records) are hardcoded constants; if VRBO rotates one, the per-query wrapper auto-discovers the new value mid-run and persists it for next time
  • Concurrent enrichment — 5 listings enriched in parallel for speed
  • Parallel JS bundle download — 5-bundle concurrent batches during hash discovery
  • Exponential backoff retry — up to 7 attempts on rate limits (429s)
  • Residential proxy support via Apify's proxy infrastructure
  • Smart multi-level location disambiguation for any city worldwide, with NEIGHBORHOOD/POI fallback
  • Per-run discovery cache — cold start with rotated hashes performs one discovery, not six