Vrbo Scraper avatar

Vrbo Scraper

Pricing

$2.40 / 1,000 results

Go to Apify Store
Vrbo Scraper

Vrbo Scraper

Extract public Vrbo property details from listing URLs: title, price, rating, review count, photos, amenities, location, policies, and host information.

Pricing

$2.40 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Scrape Vrbo property pages and export Vrbo rental data to CSV, JSON, or spreadsheet files. This Vrbo API alternative turns a list of public property URLs into consistent records containing descriptions, displayed prices, ratings, review totals, photos, amenities, location, house rules, and publicly shown host information.

Each input property produces at most one dataset row. The current version is intended for collecting and refreshing known listings. It does not discover properties by destination or provide individual guest reviews or a calendar of available nights. Those routes returned rate limits during development, so the actor reports only fields available in a property page's structured data.

What data can you extract from Vrbo?

FieldDescriptionExample
propertyIdInternal identifier attached to the property page70477069
listingIdPublic number in the listing URL2430840
listingUrlLink to the public property pagehttps://www.vrbo.com/2430840
nameProperty titleQuiet Oasis in Lovely Neighborhood
descriptionPublic listing description, with markup removedWe are 10 minutes south of downtown Orlando...
ratingDisplayed guest rating on a ten-point scale9.8
reviewCountNumber of reviews in the rating summary198
pricePrice displayed on the property page, including currency symbol$171
addressPublic city and region rather than a private street addressOrlando, FL
latitudeLatitude of the displayed map point28.503244
longitudeLongitude of the displayed map point-81.356541
photosArray of gallery image URLs, in page orderhttps://media.vrbo.com/...
photoCountNumber of gallery image URLs collected19
amenitiesPublic amenity labels as an arrayAir conditioning, Parking
hostNamePublic host display name, when shownA name or null
hostPhotoUrlPublic host image URL, when shownAn image URL or null
hostBioText in the public host sectionText or null
hostLanguagesLanguages listed in the host sectionEnglish, French
premierHostWhether the page shows a Premier Host badgetrue
policiesHouse rules and policy textCheck in after 4:00 PM
importantInfoOther public property noticesProperty # 2430840
rawSelected structured page sections, if requestedAn object; absent by default

The public listing number and the internal property identifier may differ. Keep both when joining this dataset with another source. The listing URL is the most useful key for refreshing the same property later, while the internal identifier helps distinguish a similarly numbered record in a separate data feed. Prices are the formatted text shown on the requested page. A price is not a guaranteed quote for a booking, and fees, taxes, stay length, occupancy, and date selection can change what a traveler ultimately pays.

The photos and amenities fields are arrays so that image order and amenity labels remain usable after export. A spreadsheet export may display each array in one cell. Use JSON when you need to process every photo or amenity separately. photoCount provides a quick completeness check without opening the full array. Coordinates reflect the site's displayed map point and should not be interpreted as an exact property entrance.

How to scrape Vrbo

  1. Copy one or more public property links. A link with a numeric path, such as https://www.vrbo.com/2430840, is suitable. You can also enter the public number alone.
  2. Paste each link or number into Property URLs or listing numbers. Put one entry on each line. Remove duplicates if you already have a clean source list; the actor also ignores repeated normalized URLs within a run.
  3. Optionally enter both a check-in and check-out date; they are echoed in the output, but Vrbo currently does not expose stay-specific prices to anonymous requests, so the price stays the listing's from-price (see priceBasis). Set Maximum properties to limit dataset rows and control spend.
  4. Run the actor. Open the dataset when it finishes, then download the results as JSON, CSV, or spreadsheet files. Review the run log for any URLs that could not be extracted.

A run with a single property returns one row. A run with several accessible property URLs can return one row per unique property until the maximum is reached. Invalid URLs do not produce placeholder rows. A property page that does not expose the expected structured data is logged and skipped, so the final row count can be lower than the number of supplied URLs.

Input

ParameterTypeDefaultDescription
propertyUrlsString listOne sample property URLPublic property URLs or public listing numbers. At least one is required.
checkInStringEmptyArrival date in YYYY-MM-DD format. Use together with checkOut.
checkOutStringEmptyDeparture date in YYYY-MM-DD format, later than checkIn.
includeRawBooleanfalseInclude selected structured page sections in a raw object. This creates larger output rows.
maxItemsInteger100Maximum property rows across the run. Set 0 for no actor-level row cap.
proxyConfigurationObjectEnabledProxy settings for public property page requests.

A realistic input for a property audit:

{
"propertyUrls": [
"https://www.vrbo.com/2430840"
],
"maxItems": 1,
"includeRaw": false
}

Use the public listing number from the end of a property URL. An internal property identifier shown in an export can be different and may not load as a public URL. If you have an internal identifier only, find its public listing link before entering it. Extra query parameters in a supplied property link are removed so the same listing is requested consistently. When dates are supplied, the actor adds the stay dates to that normalized link.

The maximum applies to successful dataset rows, not attempted URLs. For example, a list of 80 URLs with maxItems set to 50 stops after 50 rows are pushed. If some URLs fail, the actor continues through the list to seek successful rows. The value 0 removes that explicit limit, although the run still ends when it has processed the submitted inputs or reaches the run's spending limit.

Output example

The following values came from a successful run against a public Orlando listing. The description, photo URLs, amenity list, host section, policies, and notices are shortened here; the dataset contains the full public values when present.

{
"propertyId": "70477069",
"listingId": "2430840",
"listingUrl": "https://www.vrbo.com/2430840",
"name": "Quiet Oasis in Lovely Neighborhood",
"rating": 9.8,
"reviewCount": 198,
"price": "$171",
"address": "Orlando, FL",
"latitude": 28.503244,
"longitude": -81.356541,
"photoCount": 19,
"amenities": ["Wireless internet", "Free wifi", "Air conditioning"],
"hostLanguages": ["English", "French", "German"],
"premierHost": true
}

The example is a trimmed view of one row, not a second schema. A real row also contains the listing description, the full photo and amenity arrays, and available host and policy text. A row may omit raw because the input defaults to includeRaw: false. Empty source fields become null, an empty array, or an absent optional field, depending on the field type. Do not infer that an empty field means the property lacks that feature; the page may simply omit that particular value.

Use cases

  • Property portfolio checks: Refresh a known set of listing URLs and compare titles, prices, review totals, and public amenities across runs. Keep listingId as your stable key.
  • Vacation rental research: Build a working table of properties you have already identified, including displayed ratings, approximate locations, and links back to the source pages.
  • Content audits: Find descriptions that need review, missing photos, or inconsistent amenity labels in a supplied group of listings. The actor preserves the original public text for inspection.
  • Pricing snapshots: Record the displayed page price at a particular time. Use check-in and check-out together when you need a page requested for a specific stay, and store the input dates alongside each exported batch.
  • Host and policy review: Examine publicly listed languages, badge status, check-in rules, pet rules, and event rules for selected properties. Confirm booking-critical policies on the live page before making decisions.
  • Image inventory: Collect gallery URLs and photoCount for a visual audit. Image URLs may contain sizing parameters; follow the link back to the property before reusing photographs.

For comparisons over time, schedule the same URL list and retain each dated export. A changed reviewCount shows that the public rating summary has updated; it does not indicate which guest left a review. A changed price is a change in displayed page text under the given request conditions, not necessarily a change to every date on the calendar.

How much does it cost to scrape Vrbo?

The configured charge is $2.40 per 1,000 dataset rows, or $0.0024 for one successfully pushed property row. A run with 100 rows is $0.24; 1,000 rows are $2.40; and 5,000 rows are $12.00. These examples describe the charge for delivered rows. They are arithmetic examples, not a promise that every submitted URL will load or that a run will reach those counts.

Each valid, accessible property contributes at most one chargeable row. Failed or skipped inputs do not add a dataset row. A maximum item count caps the number of rows this actor will push. A spending limit on the run provides another stop condition. The actor stops pushing when that limit is reached. Enabling includeRaw increases the size of each row; keep it off for routine tables unless you need the nested source sections.

A one-property sample run produced one row. The amount shown in a run's total usage can differ from the simple per-row calculation because account usage and run reporting are distinct from this actor's configured result price. Check the price shown on the run page before starting a large batch. Vrbo can rate-limit requests, so plan for retries and incomplete batches when estimating how many rows a set of URLs will yield.

Tips for best results

Start with a small set of property URLs that you can open publicly. Confirm that the URL path ends in a public numeric listing number. When importing a list from another system, do not assume its internal property ID is also a working public path. In the verified example, the public number and internal ID are different. Use listingUrl from earlier exports to refresh records.

Supply both stay dates or neither. A date pair asks for a page associated with that stay, but the output remains a property detail record. It is not a per-night calendar. Compare prices only when date selection, currency, and other request conditions are comparable. The displayed price can be absent if the page does not provide one, even when other details are present.

Keep includeRaw off for a compact table. Turn it on for a short investigative run when you need fields inside the selected page sections that are not yet flattened. The raw object can be large and may change when the site changes its page data. If you need to process stable columns in a downstream workflow, rely on documented top-level fields first.

Use maxItems to bound the row count. Submit batches of known URLs when you need to distinguish failures from successful records. After a run, compare the dataset row count with the number of unique input URLs and inspect warnings in the log. A warning can mean an invalid URL, a missing property page, rate limiting, or an unexpected source format. Repeat only the missing URLs when appropriate.

Limits

This version does not search by city, coordinates, polygon, or search URL. It does not provide autocomplete suggestions, individual review rows, host-only rows, or per-day calendar availability. These were capabilities considered for the broader use case, but the relevant public routes returned HTTP 429 during investigation. A property page did load and exposed structured data, which is the source used here. The actor's inputs and README therefore cover property details only.

A property page can also be rate-limited. The fetch layer rotates sessions and can try a browser and residential proxy after blocks, but access still depends on the site's current controls. This actor does not promise a fixed success rate or throughput. The sample property succeeded in the golden run; other pages and future runs can behave differently.

price is a formatted display value, not a normalized numeric amount. rating is on a ten-point scale for the verified page, while individual guest reviews, if shown elsewhere, may use a different scale. address may provide only city and region. A map point may be approximate. Host sections vary by listing, and some can omit the name, photo, languages, or badge. Amenities are the labels present in the page state; they are not a universal taxonomy.

The actor reads public property pages without signing in. It cannot access private booking data, account information, or unpublished listings. The structure of the embedded page state can change. If extraction stops producing records, inspect the warning log and the source page before relying on an older export. No historical prices, booking occupancy, or calendar history are inferred from a single page.

Use with automated workflows

Two examples of instructions for a workflow that can run this actor:

  • “For these ten public Vrbo property links, export the current title, price, rating, review count, amenities, and listing URL, then identify records with missing prices.”
  • “Refresh my saved listing URLs every week and compare each property by listingId, highlighting changes to the public review total and house rules.”

Provide the actual URLs as propertyUrls. A workflow should treat missing rows as extraction failures or unavailable pages, and should not silently count them as deleted properties. If a workflow needs nested photo or host data beyond the top-level fields, it can enable includeRaw for selected listings and inspect the returned object. Keep source links in any derived report so a human can verify time-sensitive details.

FAQ

The actor reads information available on public property pages. You are responsible for following applicable terms, privacy law, and rules for how you use or share the results. Avoid collecting or reusing personal information for unrelated purposes. Review a site's current terms before running a large project, and use public data responsibly.

Do I need to configure a proxy?

A proxy is enabled by default. Most users can leave that setting alone. The fetch layer begins with a data center route and can escalate when a block is detected. Proxy escalation is an attempt to recover a public page, not a guarantee of access. If your account has a strict usage budget, start with a small input list.

How fast will a run finish?

The one-property verification run finished successfully. Larger runs depend on how quickly the site responds and whether requests are rate-limited. A blocked page can take longer because the fetch layer retries and changes sessions. Estimate throughput from a small run using your own URL list before planning a large refresh.

Can I collect every rental in a city?

No. The current input accepts known property URLs or public listing numbers. It does not traverse city search pages or discover new listings. If you already have a list from a permitted source, you can use this actor to collect details for that list. A city name alone is not a valid property input.

Can I retrieve reviews or a 12-month availability calendar?

No. The actor records the overall rating and review count displayed on a property page, but it does not create one row per review. It does not return daily availability or nightly rates. Vrbo currently serves stay-specific prices only to its own browser app (its pricing API rejects anonymous automated requests), so when dates are given the actor still returns the standard listing data with the from-price and marks the row priceBasis: "listingFrom" and datedPriceAvailable: false. Search by destination is not supported because Vrbo's search pages sit behind a bot challenge.

Can I schedule exports or send results to a spreadsheet?

Yes. Schedule a run using the same input URLs and export its dataset in CSV or spreadsheet format. Keep each run's date and input settings with the export so that later comparisons have context. Array fields such as photos and amenities may need additional processing in a spreadsheet.

Why is a field empty or an input missing from the dataset?

Some pages do not show every field. A missing hostPhotoUrl or price can reflect source data rather than a parser error. An entire missing row means the input was invalid, the page could not be fetched, or the structured property data was absent. Check run warnings, verify the public URL, and retry the missing entry if the page is accessible.

Integrations

The default dataset can be read through the platform API, sent by webhook after a run, or downloaded for spreadsheet and database workflows. Scheduled runs can keep a known listing portfolio current. Downstream systems should key records by listingId or listingUrl, preserve the collection date, and account for missing rows when a page is blocked. Use the top-level columns for routine reports and the optional raw object only when you need the nested source sections.

Support

Open an issue on the Issues tab; we reply within 24h and add fields on request.