Vrbo Scraper at a glance
Vrbo Scraper is a ready-to-run Apify actor from abotapi for collecting travel data. Its documented output includes property, type, beds, sleeps and price/night, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Travel, Automation, Developer Tools
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.40 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 32 options
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.
What Vrbo Scraper can do
- Five ways to find a property. Search by destination text, region ID, or coordinates, or paste property URLs, bare IDs, dotted IDs, reviews links, or a full Vrbo search URL, all in the same run.
- Full guest reviews. Paginated review collection with ratings, review text, liked and disliked tags, manager responses, stay duration and category ratings (cleanliness, communication, location, accuracy).
- Reviews on demand. Embed a capped number of reviews inside each property card, or switch to review rows only and get one record per review.
- Real capacity fields. Sleeps, bedrooms, bathrooms and a detected property type, read directly off the listing.
- Currency-honest pricing. priceCurrency reports the currency Vrbo actually rendered for the connection used, and the run tells you plainly when your requested currency could not be served.
- Built for schedules. Resume one interrupted crawl by run or dataset ID, or turn on Incremental mode to see only new, updated, and expired properties on a recurring search.
Choose what to collect
These inputs let you configure Vrbo Scraper - Vacation Rentals, Reviews & Enriched Output. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
checkInstring · required | Pick a date, or type a relative value such as 1 day (tomorrow) or 30 days. Drives nightly pricing and availability. |
checkOutstring · required | Pick a date, or type a relative value such as 6 days. Most rentals require a multi-night stay. |
modestring | Search mode runs a location query and paginates results. URL mode fetches specific properties, reviews, or search pages you paste below. |
destinationstring | Search mode only. Type a location (for example Orlando, Bali, Tulum Mexico). |
destinationIdstring | Numeric Vrbo/Expedia region ID. If left empty, the Actor resolves the Destination text above. Useful to pin an exact region. |
latitudestring | Search by coordinates instead of a location name. Provide both Latitude and Longitude. |
longitudestring | Search by coordinates instead of a location name. Provide both Latitude and Longitude. |
Show 25 more inputs
| Input | What it controls |
|---|---|
startUrlsarray | URL mode only. Paste any mix of: full property URLs (https://www.vrbo.com/2165911), bare IDs (2165911), dotted IDs (321.2880733.3452770), reviews links (https://www.vrbo.com/2165911/reviews), or Vrbo search URLs (auto-paginated). |
adultsinteger | Number of adult guests. Affects pricing and availability. |
childrenarray | Add one entry per child and type the age in years (0 to 17). |
roomsinteger | Number of units. Most vacation rentals are whole properties, so leave at 1 unless booking multiple units. |
bedroomsinteger | Only return properties with at least this many bedrooms. Leave empty for no minimum. |
minPriceinteger | Minimum nightly price filter in the selected currency. Leave empty for no minimum. |
maxPriceinteger | Maximum nightly price filter in the selected currency. Leave empty for no maximum. |
sortBystring | Order in which properties are returned. |
reviewsOnlyboolean | When enabled, the output is individual review records (one row per review) instead of property cards. Works in both Search and URL modes. |
includeReviewsboolean | When enabled, each property card gets up to Max Reviews per Property reviews embedded under extra.reviews. Ignored if Scrape reviews only is on. |
maxReviewsPerPropertyinteger | Cap on reviews collected per property. Applies to Include reviews and to Scrape reviews only (per property). |
reviewsFromstring | YYYY-MM-DD. Only keep reviews on or after this date. Speeds up runs when you only need recent reviews. |
includeCategoryRatingsboolean | Attach property-level aggregate category ratings (cleanliness, communication, location, accuracy) to each review record. |
currencystring | Currency for prices shown on property cards. |
localestring | Language and region for content and review language. |
maxItemsinteger | Hard cap on the total number of records saved to the dataset across all pages and properties. |
resumeFromRunIdstring | Paste 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. Leave empty for a normal fresh run. Distinct from Incremental mode below. |
incrementalModeboolean | When enabled, the Actor remembers this search between scheduled runs and classifies each property as NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED. Pairs with State key below. Off by default so a single run behaves exactly as before. |
stateKeystring | Only used when Incremental mode is on. Give this monitoring campaign a name so it keeps its own baseline across runs; leave empty to derive one automatically from your search/URL and stay settings. |
emitUnchangedboolean | Only used when Incremental mode is on. When off (default), properties classified UNCHANGED since the last run are skipped and NOT billed. Turn on to also return (and pay for) every unchanged property. |
emitExpiredboolean | Only used when Incremental mode is on. When on, a property tracked by a previous run that no longer appears in a complete, uncapped scan of this search is returned once (and billed) as an EXPIRED tombstone carrying its last known data. |
ignoreFieldsForChangesarray | Only used when Incremental mode is on. Field names that must NOT count as a change, e.g. rating or extra.starRating (use dots for nested fields). The fields stay in the output; they just never turn a property into UPDATED or appear in changedFields. scrapedAt and title are always ignored. Leave empty to detect changes in every other field. |
mcpConnectorsarray | Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON. The complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
titleProperty (text)propertyTypeType (text)bedroomsBeds (number)sleepsSleeps (number)pricePerNightPrice/Night (number)ratingRating (number)reviewCountReviews (number)listingUrlURL (link)bathroomsBaths (number)priceCurrencyCurrency (text)cityCity (text)countryCountry (text)Show 14 more fields
imagesCountPhotos (number)descriptionDescription (text)reviewDateDate (text)authorNameAuthor (text)reviewTitleReview title (text)reviewTextReview (text)stayDurationStay (text)likedLiked (text)dislikedDisliked (text)managerResponseHost response (text)changeTypeChange (text)changedFieldsChanged fields (text)firstSeenAtFirst seen (text)lastSeenAtLast seen (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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.17,
"image": "https://media.example.com/villa-1.jpg",
"images": [
"https://media.example.com/villa-1.jpg",
"https://media.example.com/villa-2.jpg"
],
"imagesCount": 24,
"badges": [
"Premier Host"
],
"description": "Completely renovated beachfront villa with private pool and ocean views.",
"address": "Leeward Settlement, Caicos Islands, TCA",
"provider": "vrbo",
"searchLocation": "Bali",
"checkIn": "2026-11-01",
"checkOut": "2026-11-06",
"adults": 2,
"scrapedAt": "2026-09-28T10:00:00Z",
"extra": {
"starRating": 4.5
}
}Ways to use this data
- Vacation rental price and market research: track nightly rates, price drops and availability windows across a destination.
- Rental pricing and revenue management: compare rates, ratings and reviews across similar properties to price your own listing.
- Travel apps and metasearch: feed structured property data into your own listings site, comparison tool or chatbot.
- Reputation and review monitoring: collect a property's full review history to track rating trends and guest feedback themes over time.
- Market monitoring: schedule the actor with Incremental mode to see new listings, price changes and delisted properties for a destination as they happen.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Vrbo Scraper return?
The documented output for Vrbo Scraper includes property, type, beds, sleeps, price/night, rating, reviews and url. Availability of each field depends on the source page and the selected mode.
How much does Vrbo Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.40 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed properties on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated properties for the same search, and unchanged ones are not billed unless you turn on Emit unchanged properties. Turn on Emit expired properties too if you also want a one-time tombstone row when a tracked property disappears from a complete scan.
Why did the same property come back with a different title or a different currency?
Vrbo can answer the same property through more than one internal response path, and those paths occasionally render slightly different headline text for the same listing. Most title differences you will see run to run are this, not a real edit, which is why title is excluded from Incremental mode's change detection. Vrbo also renders prices for the market its connection lands in, not necessarily the currency you requested; priceCurrency always reports what was actually rendered, and the run's status message says so plainly if your requested currency could not be served.
Why did my run fail instead of returning an empty dataset?
The run fails outright when it saves no records and sees no properties at all (every connection attempt was refused, Vrbo answered but nothing matched, or none of the provided URLs is a supported shape), when resumeFromRunId does not point to a run or dataset this Apify account can read, or when you combine resumeFromRunId with Incremental mode on a search that already has saved state. A Search mode run with no destination, region ID, or coordinates, or a URL mode run with no URLs, instead logs an error and finishes with an empty dataset, so check the run log if you get zero results without a failure.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
