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
| Function | What it does |
|---|---|
searchVoyages | Reads the live Voyage Finder inventory (50 published itineraries) and filters locally by region, vessel and/or a free-text keyword against the title/body. |
getVoyage | Reads 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).… |
getVoyageSailing | Reads 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)}...`);