Bowmark AIdocs

Four Seasons Yachts

Four Seasons Yachts' live Voyage Finder — every published sailing, its region and vessel, plus the real scheduled departure with per-suite pricing and…

Four Seasons Yachts' live Voyage Finder — every published sailing, its region and vessel, plus the real scheduled departure with per-suite pricing and cabin availability, read off the site's own booking-engine endpoints.

Domain: fourseasonsyachts.com

Also known as: Four Seasons Yachts, fourseasonsyachts, FSY, Four Seasons I

Call it directly

bowmark.providers.fourseasonsyachts.searchVoyages(filters?: { region?: string; vessel?: string; keyword?: string }): Promise<FourseasonsyachtsSearchResult>
bowmark.providers.fourseasonsyachts.getVoyage(voyageCodeOrSlug: string): Promise<FourseasonsyachtsVoyage>
bowmark.providers.fourseasonsyachts.getVoyageSailing(voyageCode: string): Promise<FourseasonsyachtsSailing | null>

Functions

FunctionWhat it does
searchVoyagesReads the live Voyage Finder inventory (50 published itineraries) and filters locally by region, vessel and/or a free-text keyword against the title/body.
getVoyageReads one voyage's itinerary — its day-by-day description, region, vessel and images — by voyageCode (server-side filtered, cheap) or by slug (matched locally against the full listing).…
getVoyageSailingReads the REAL scheduled departure for one voyageCode — exact embark/disembark ports and dates, the ship, and every suite category's live price and cabin availability, straight off the…

Types

interface FourseasonsyachtsVoyage {
  /** The site's own stable identifier for a sailing — what getVoyageSailing takes. */
  voyageCode: string;
  title: string;
  /** The path segment on fourseasonsyachts.com/voyages/<slug>. */
  slug: string;
  /** The site's own free-text category label, e.g. "Grand Mediterranean". */
  category: string;
  /** The resolved destination entry's title, when the link resolved; falls back to category. */
  destination: string;
  vessel: string;
  body: string;
  images: string[];
  url: string;
}
interface FourseasonsyachtsSuite {
  description: string;
  totalCabins: number;
  availableCabins: number;
  price: number;
  currency: string;
}
interface FourseasonsyachtsSailing {
  voyageCode: string;
  sailDays: number;
  fromPort: string;
  fromDateTime: string;
  toPort: string;
  toDateTime: string;
  ship: string;
  suites: FourseasonsyachtsSuite[];
}
interface FourseasonsyachtsSearchResult {
  voyages: FourseasonsyachtsVoyage[];
  /** What the filter DROPPED, in the same register the rest of the library uses. */
  warnings: string[];
}

Examples

// what Bahamas sailings does Four Seasons Yachts have, and what's the real price?
const { voyages } = await bowmark.providers.fourseasonsyachts.searchVoyages({ region: "Bahamas" });
for (const v of voyages) {
  const sailing = await bowmark.providers.fourseasonsyachts.getVoyageSailing(v.voyageCode);
  if (sailing) log(`${v.title}: ${sailing.fromDateTime.slice(0,10)} on ${sailing.ship}, from $${Math.min(...sailing.suites.map(s => s.price)).toLocaleString()}`);
}
// tell me about the Grand Mediterranean featuring Crete & Ischia voyage
const v = await bowmark.providers.fourseasonsyachts.getVoyage("grand-mediterranean-featuring-crete-and-ischia");
log(`${v.title} aboard ${v.vessel}: ${v.body.slice(0, 200)}...`);