Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output avatar

Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output

Vrbo Scraper – Vacation Rentals, Reviews & Enriched Output

Extract vacation rental data from Vrbo.com by location, region, coordinates, property URL, or property ID. Returns prices, availability signals, amenities, photos, geo data, ratings, full guest reviews, and structured listing details.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

2

Monthly active users

4 days ago

Last modified

Share

Vrbo Vacation Rentals Scraper 🏖️

Extract vacation rental listings, prices, availability signals, amenities, photos, geo, ratings and full guest reviews from vrbo.com, by location, region, coordinates, property URL, or property ID.

You get clean, structured records that are fast, reliable, and inexpensive to run.


✨ Why this scraper

This ActorBasic scrapers
Input formsLocation, region ID, coordinates, property URL, bare ID, dotted ID, /reviews link, search URLURL or location only
ReviewsFull paginated guest reviews, manager responses, category ratingsLimited or none
Output40+ fields incl. sleeps, bedrooms, bathrooms, property type, badges, geoTitle and price only
ReliabilityKeeps working through Vrbo site updates and recovers automatically from blocksOften stop returning results
Proxy spendResidential-first proxy handling with fallback guidanceResidential always on

🔑 Input

Run in Search mode (by location) or URL mode (by specific properties or search URLs). Everything is optional except the stay dates, which default sensibly.

Search mode

FieldDescription
destinationLocation text, e.g. Orlando, Florida, Bali, Tulum Mexico
destinationIdOptional region ID to pin an exact region
latitude / longitudeSearch by coordinates instead of a name
checkIn / checkOutDate or relative value (1 day, 30 days). Drives nightly pricing
adults, children, roomsGuest configuration
bedroomsMinimum bedrooms filter
minPrice / maxPriceNightly price range
sortByRECOMMENDED, PRICE_LOW_TO_HIGH, PRICE_HIGH_TO_LOW, DISTANCE, REVIEW

URL mode

Paste any mix into startUrls:

  • Full property URL, e.g. https://www.vrbo.com/2165911
  • Bare ID, e.g. 2165911
  • Dotted ID, e.g. 321.2880733.3452770
  • Reviews link, e.g. https://www.vrbo.com/2165911/reviews
  • Search URL, e.g. https://www.vrbo.com/search?destination=Bali

Reviews and output options

FieldDescription
reviewsOnlyOutput one row per review instead of property cards
includeReviewsEmbed up to N reviews inside each property card
maxReviewsPerPropertyCap reviews per property
reviewsFromOnly keep reviews on or after YYYY-MM-DD
includeCategoryRatingsAttach cleanliness, communication, location and accuracy scores
currency, localeOutput currency and language
maxItemsHard cap on total records
proxyProxy configuration (Residential recommended)

Resume & recurring updates

FieldDescription
resumeFromRunIdPaste a previous run ID or dataset ID to continue an interrupted crawl — properties already saved there are skipped, so this run only fetches new ones.
incrementalModeOff by default. Turn on for scheduled/recurring runs of the same search: the Actor remembers the previous run itself and classifies every property as NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED.
stateKeyOnly used with Incremental mode. Name this monitoring campaign so it keeps its own baseline; leave empty to derive one automatically from your search/URL and stay settings (destination/URLs, dates, guests, filters, sort, currency/locale, review options). Raising maxItems or maxReviewsPerProperty never starts a new baseline.
emitUnchangedOff by default. When off, UNCHANGED properties are skipped and not billed. Turn on to also return (and pay for) every unchanged property.
emitExpiredOff by default. When on, a previously-tracked property missing from a complete, uncapped scan is returned once (and billed) as an EXPIRED tombstone with its last known data. Skipped automatically whenever the scan was capped, resumed, or otherwise incomplete.

These two features are independent and can be combined: resumeFromRunId finishes one interrupted crawl; incrementalMode is for recurring monitoring of the same search. Note: reviews embedded via includeReviews never affect NEW/UPDATED/UNCHANGED classification — reordered or newly-added reviews alone never make a property look changed. A field that goes from unobserved (null) to populated, or back, is also never classified as an update on its own (only a value-to-different-value change is) — Vrbo occasionally answers the same property through a leaner or fuller response path, and that must not look like the listing itself changed. title is excluded from classification entirely for the same reason: it is fetched via two different underlying paths that can render different headline copy for the same property (confirmed live, e.g. "Recently Remodeled Studio Condo in the Heart of Aspen" vs "Remodeled studio in city centre Aspen" for the same listing) — a real title edit by the host will still appear in the output field, it just never drives changeType.


📤 Output

Property record (Search / URL mode)

{
"mode": "search",
"vrboId": "2165911",
"listingUrl": "https://www.vrbo.com/2165911",
"title": "Beachfront Villa with Private Pool",
"propertyType": "Villa",
"sleeps": 8,
"bedrooms": 4,
"bathrooms": 3,
"pricePerNight": 412,
"priceFormatted": "$412 nightly",
"priceStrikeout": "$520",
"priceCurrency": "USD",
"rating": 9.8,
"ratingScale": 10,
"ratingLabel": "Exceptional",
"reviewCount": 137,
"latitude": -8.6887,
"longitude": 115.1700,
"image": "https://...",
"images": ["https://...", "https://..."],
"imagesCount": 24,
"badges": ["Great location"],
"description": "Completely renovated beachfront villa...",
"provider": "vrbo",
"searchLocation": "Bali",
"checkIn": "2026-07-15",
"checkOut": "2026-07-20",
"adults": 2,
"scrapedAt": "2026-06-13T10:00:00Z",
"changeType": "UPDATED",
"changedFields": ["pricePerNight", "priceFormatted"],
"firstSeenAt": "2026-06-01T10:00:00Z",
"lastSeenAt": "2026-06-13T10:00:00Z"
}

changeType, changedFields, firstSeenAt, and lastSeenAt are only present when incrementalMode is on.

{
"mode": "reviews",
"vrboId": "2165911",
"reviewId": "abc123",
"rating": 10,
"ratingScale": 10,
"ratingLabel": "Excellent",
"reviewTitle": "Perfect family getaway",
"reviewText": "The villa exceeded our expectations...",
"authorName": "Sarah M.",
"reviewDate": "2026-05-02",
"stayDuration": "Stayed 5 nights in April 2026",
"liked": ["Cleanliness", "Location"],
"disliked": [],
"managerResponse": { "text": "Thank you Sarah!", "author": "Host", "date": "2026-05-03" },
"photos": ["https://..."],
"categoryRatings": { "Cleanliness": 10, "Communication": 9.8, "Location": 10 },
"propertyReviewCount": 137,
"provider": "vrbo",
"scrapedAt": "2026-06-13T10:00:00Z"
}

Detail and URL-mode records add address, city, country, postalCode, neighborhood, amenities, amenitiesCount, and categoryRatings where available.


💸 Pricing

You are charged a small property-detail event only when fetching a specific property by URL or ID in URL mode. Location-search property cards and review rows are not charged that event. You also pay your own Apify platform compute and proxy usage.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape, and the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.