Unofficial Virgin Voyages Itineraries avatar

Unofficial Virgin Voyages Itineraries

Pricing

from $2.00 / 1,000 sailings

Go to Apify Store
Unofficial Virgin Voyages Itineraries

Unofficial Virgin Voyages Itineraries

Unofficial scraper for public Virgin Voyages voyage-search pages: itineraries, sailing dates, ports of call, and visible cabin starting prices.

Pricing

from $2.00 / 1,000 sailings

Rating

0.0

(0)

Developer

Chris Caputo

Chris Caputo

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Collect public Virgin Voyages sailing data from the voyage-search experience. The Actor returns one dataset item per sailing date, including itinerary name, ship, sailing dates, ports of call, day-by-day itinerary details when available, and the visible public starting cabin price.

This Actor is useful for cruise inventory tracking, itinerary research, travel-market monitoring, price snapshots, and importing Virgin Voyages sailings into your own database or BI workflow.

This Actor is unofficial and is not affiliated with, endorsed by, sponsored by, or otherwise connected to Virgin Voyages.

Example Apify dataset preview for Virgin Voyages sailings

What It Scrapes

  • Public Virgin Voyages voyage-search result cards
  • Public fullCruiseDetails itinerary pages, when detail fetching is enabled
  • Itinerary or package name
  • Ship name and voyage duration
  • Sailing start and end dates
  • Public ports of call
  • Day-by-day itinerary stops, including arrival and departure text when Virgin exposes it
  • Visible public starting cabin price, original strikethrough price when shown, currency label, and price basis
  • Virgin package and voyage identifiers
  • Source URLs and scrape timestamp

The Actor intentionally stays on public search and itinerary-detail pages. It does not automate checkout, cabin selection, account login, booking, payment, reservation management, or any other non-public purchase flow.

Typical Use Cases

  • Track upcoming Virgin Voyages sailings by date, ship, home port, or duration
  • Build a searchable itinerary catalog
  • Monitor visible starting prices over time
  • Compare sailings across ships or regions
  • Feed cruise data into spreadsheets, dashboards, CRMs, or travel-planning tools
  • Keep an internal destination or package database up to date

Input

You can run the Actor with no input to scrape the default Virgin Voyages find-a-voyage page. Use filters when you want a smaller, more targeted dataset.

{
"dateFrom": "2027-01-01",
"dateTo": "2027-03-31",
"ships": ["SC", "VL"],
"homePorts": ["MIA"],
"durations": ["4", "5"],
"maxItems": 50,
"includeDetails": true,
"maxDetailPages": 25,
"currency": "USD",
"requestDelayMillis": 750
}

Input Fields

FieldTypeDescription
startUrlsarrayOptional Virgin Voyages find-a-voyage URLs. Existing query parameters are preserved, and the filters below are added or overwritten.
dateFromstringEarliest sailing date to include, in YYYY-MM-DD format.
dateTostringLatest sailing date to include, in YYYY-MM-DD format.
shipsarrayShip codes to include: BR Brilliant Lady, RS Resilient Lady, SC Scarlet Lady, VL Valiant Lady.
homePortsarrayDeparture port codes to include, such as MIA, SJU, BCN, ATH, CIV, LAX, SEA, or VAN.
durationsarrayVoyage lengths to include: 1-3, 4, 5, 6, 7, 8, 9-14, or 15+.
maxItemsintegerMaximum number of sailing-date rows to return. The Actor caps this at 250.
includeDetailsbooleanWhen true, fetches public detail pages for richer day-by-day itinerary data.
maxDetailPagesintegerMaximum number of detail pages to fetch by package code. Use 0 for no detail-page limit.
currencystringCurrency label attached to parsed public prices. The default is USD.
requestDelayMillisintegerDelay between Virgin Voyages requests. Increase this for gentler, slower runs.

Output

The Actor saves results to the default Apify dataset. Each item represents one sailing date, not one itinerary package. If a package has several available departure dates, the dataset will contain several rows with the same package_code and different sailing_id / sailing_start_date values.

Example output row with itinerary stops and dataset JSON shape

{
"schema_version": "1.0",
"cruise_line": "Virgin Voyages",
"cruise_line_slug": "virgin-voyages",
"itinerary_name": "Southern Caribbean Cruise",
"sailing_id": "SC2803117NSJRP",
"voyage_id": "SC2803117NSJRP",
"package_code": "7NSJRP",
"ship_name": "Scarlet Lady",
"duration_nights": 7,
"sailing_start_date": "2028-03-11",
"sailing_end_date": "2028-03-18",
"starting_price": 903,
"starting_original_price": 1268,
"currency": "USD",
"price_basis": "per Sailor",
"ports_of_call": [
"San Juan, Puerto Rico, USA",
"Charlotte Amalie, St. Thomas, U.S. Virgin Islands"
],
"itinerary": [
{
"day": 1,
"port_name": "San Juan, Puerto Rico, USA",
"is_sea_day": false,
"arrival_time": null,
"departure_time": "06:00 PM",
"schedule_text": "Departs at 06:00 PM, local time"
}
],
"cabin_pricing": [
{
"cabin_type": "Insider",
"price": 903,
"original_price": 1268,
"currency": "USD",
"basis": "per Sailor",
"source": "public_search_card"
}
],
"source": {
"website": "virginvoyages.com",
"search_url": "https://www.virginvoyages.com/book/voyage-planner/find-a-voyage",
"detail_url": "https://www.virginvoyages.com/book/voyage-planner/fullCruiseDetails?packageCode=7NSJRP"
},
"scraped_at": "2026-06-16T12:33:20.982Z"
}

The dataset also includes compatibility aliases such as cruise_date, cruise_end_date, cruise_price, detail_url, source_url, and flat itinerary fields like stop_1_port, stop_1_arrival_time, and stop_1_departure_time for importers that prefer wide rows.

Public Price Notes

Virgin currently exposes a visible starting cabin price on public search result cards. The Actor records that visible public price and, when shown, the matching strikethrough/original price. It does not enter checkout or cabin-selection pages, so it should not be treated as a complete live cabin inventory feed.

For trend analysis, schedule repeated runs and compare rows by sailing_id, package_code, starting_price, and scraped_at.

Tips For Better Results

  • Use date filters to keep runs focused and easier to review.
  • Start with a small maxItems value while testing a new configuration.
  • Keep includeDetails enabled when you need day-by-day ports, arrival times, or departure times.
  • Lower maxDetailPages when you only need search-card data or want faster runs.
  • Increase requestDelayMillis for larger runs or when you want to reduce request intensity.
  • Use ships, homePorts, and durations together to create clean segments for dashboards.
  • Store historical datasets instead of overwriting them if you want price-change reporting.

Limitations

  • Results depend on what Virgin Voyages makes visible on public pages at scrape time.
  • Public prices can change, disappear, or differ from prices shown later in the booking process.
  • Detail-page timing is only available when Virgin exposes it in the public itinerary markup.
  • The Actor does not verify availability beyond the public search-card result.
  • Website layout changes may require parser updates.

Exporting Results

After a run finishes, open the Actor dataset in Apify to preview, filter, download, or connect the results. Common export formats include JSON, CSV, Excel, XML, RSS, and HTML table. For downstream systems, use sailing_id as the sailing-level identifier and package_code as the itinerary/package-level identifier.

Public-Page Compliance

This Actor is designed for public itinerary research. It avoids automated access to checkout and choose-a-cabin routes and does not collect account, payment, passenger, or booking data.