Search Charter Boats
search_boatsSearch charter boats by location, name, type, dates, capacity, budget. The response total_matching is the FULL count of matching boats — results are the top limit of those, so phrase counts from it ("8 of 48 available") and re-call with a higher limit when the guest wants more.
Pass the guest's dates as they gave them. Each boat sets its own changeover day (checkinout_days) and its own minimum stay (min_charter_days), so the week a boat can actually be sold may not start on the day asked for — price_summary always names the real week, and it is the one sentence to quote, as it stands: the boat page's own Total for the stay it names, for the guests given (else the boat's max guests), all in (charter, every required fee charged now or at pickup, the 45 EUR platform fee; refundable deposits never), and the discount applied (the percent the site's card shows); a stay other than a week names its dates and length ("for Jun 19–22 (3 nights), 4 guests"); with no dates it is the boat's lowest week ("From", at max guests, precomputed). list_price holds the same figures — total (the stay's), per_day (that total per day for the boat; from when no dates were given), party (the guests it is priced for), original_per_day and discount_pct when a discount applies. For Due now, Paid at pickup and each deposit by name call get_boat_details with the dates. No total here includes an optional extra — price_summary, list_price and the total_max screen all leave out a skipper where skippered is 'optional', a hostess, a cook — so for a total with one, call get_boat_details with the dates and add the fee it lists under fees.optional; until then say the figure is without it, never a typical or estimated rate, and call no budget met or exceeded on one. When boats is short, alternatives holds the closest boats, and each one's relaxed names what it loosened: dates (the week either side), place (a nearby base), model (another model of the same make), name (a boat carrying one word of the name). Say which — they are not what was asked for, and they count toward no total. List them AFTER the matches, in their own list, under a one-line heading naming what was loosened ("Close alternatives — the week either side"): never mixed into the same list. That heading is what splits the two on every card surface, so without it an alternative is rendered exactly like a match. alternative_inventory tells you which kind of "no" you are giving: total_boats 0 means this coast does not have that boat, while total_boats high with available_nearby_or_within_7_days 0 means it is the week, not the place. If a plain marina search has neither matches nor alternatives, listed_unavailable may carry published boats visibly listed at that exact marina. They are not bookable results: quote no price, explain the supplied reason, and offer an availability alert. A search with NO dates and NO price cap lists every published boat that matches, so boats can end with entries we hold no prices for: from unpriced_start_index onward every one carries bookable_as_searched: false and a not_offered_because saying so — they count as matches, but cannot be booked or quoted, so name them, link them and offer an alert without ever stating a price.
When you searched a boat by NAME, named_matches lists published boats carrying that name that this search could not offer — wrong dates, wrong place, or no prices loaded. Everything bookable AS SEARCHED is in boats; nothing in named_matches is — though one whose only reason is the place or the dates may still be sellable, which is what its not_offered_because tells you. Never say a named boat does not exist while it is in that list: name it, give its reason, and use get_boat_details for the dates it IS free. name_not_found means the opposite and is certain — that name is in no published boat anywhere.
alert_query + alert_horizon feed availability_alert. Both are absent when this search cannot be expressed on the website (search_url_unavailable says so) — then there is no link to give and no alert to set: say so rather than linking charter.boats/search, which would show boats this answer excluded.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order. Default: best_value (best value, available boats first). Use deals for biggest discounts first. | |
| limit | No | ||
| cabins | No | Minimum number of guest cabins (crew cabins are not counted) | |
| guests | No | Number of guests | |
| search | No | Boat NAME only ("Papillon", "Ziphius") — the name an operator gave one hull, matched as a WHOLE WORD, so send the name the guest said and not a shortening of it. NEVER a make or a model: both go in `makemodel`, a model on its own included ("Oceanis 46"). | |
| date_to | No | End date YYYY-MM-DD | |
| features | No | Equipment/amenity filters — boats must have ALL listed. Namespaced slugs ("dinghy:hypalon") are subtypes that already imply the parent — do not also list the parent. Map user phrasing to slugs: "ac"/"a/c"/"air con"/"aircon"/"klima" → air_conditioning, "heater"/"cabin heating"/"webasto" → heating, "warm water"/"boiler"/"water heater" → hot_water, "genset"/"power generator" → generator, "power inverter"/"12v to 220v" → inverter, "solar power"/"solar" → solar_panels, "water maker"/"desalinator" → watermaker, "wi-fi"/"internet"/"wireless internet"/"4g" → wifi, "cockpit shower"/"outdoor shower"/"transom shower" → deck_shower, "refrigerator"/"icebox" → fridge, "ice chest"/"cool box" → cooler, "deep freeze" → freezer, "icemaker" → ice_maker, "stove"/"cooker"/"hob"/"kitchen" → oven, "micro wave" → microwave, "dish washer" → dishwasher, "washer"/"dryer"/"laundry" → washing_machine, "coffee maker"/"espresso machine"/"nespresso" → coffee_machine, "electric wc"/"electric heads" → electric_toilet, "wc"/"restroom"/"bathroom" → toilet, "television"/"screen" → tv, "speakers"/"stereo"/"music" → sound_system, "auto pilot" → autopilot, "gps"/"chart plotter"/"plotter"/"navigation" → chartplotter, "ais transponder" → ais, "bowthruster" → bow_thruster, "electric anchor winch" → electric_windlass, "tender"/"zodiac" → dinghy, "dinghy davits" → davits, "outboard motor" → outboard, "shade"/"canopy"/"sun awning" → bimini, "spray hood" → sprayhood, "teak cockpit" → teak_deck, "passerelle" → gangway, "fly bridge" → flybridge, "swim platform"/"diving platform" → bathing_platform, "hot tub"/"whirlpool"/"swimming pool" → jacuzzi, "gyro stabilizer"/"seakeeper" → stabilizers, "child safety net"/"lifeline net" → railing_net, "lazyjack"/"lazybag"/"stack pack" → lazy_bag, "code zero" → gennaker, "e-winch" → electric_winch, "snorkel"/"masks and fins" → snorkeling_gear, "scuba gear"/"dive gear" → diving_equipment, "paddleboard"/"paddle board" → sup, "canoe" → kayak, "fishing equipment"/"rods" → fishing_gear, "towables"/"wakeboard"/"water skis"/"tubes" → water_toys, "underwater scooter" → seabob, "efoil"/"electric foil"/"fliteboard"/"wing foil" → e_foil, "windsurfing"/"windsurf board" → windsurf, "bicycle"/"e-bike"/"electric bike" → bikes, "waverunner"/"pwc" → jet_ski, "barbecue"/"grill" → bbq, "hard bottom dinghy"/"rigid dinghy"/"rib tender"/"hard bottom" → dinghy:hard_bottom, "hypalon dinghy"/"hypalon tender" → dinghy:hypalon, "console dinghy"/"console tender" → dinghy:console, "large dinghy"/"big tender" → dinghy:large, "electric outboard"/"torqeedo" → outboard:electric, "15hp outboard"/"powerful outboard"/"planing outboard" → outboard:hp_15_plus, "smart tv" → tv:smart, "satellite tv"/"sat tv" → tv:satellite, "bluetooth"/"bluetooth speakers"/"bluetooth sound system" → sound_system:bluetooth, "fridge on flybridge"/"flybridge fridge" → fridge:flybridge. | |
| location | No | Destination name (fuzzy matched) | |
| year_min | No | Minimum build year | |
| boat_type | No | ||
| date_from | No | Start date YYYY-MM-DD | |
| makemodel | No | Make and/or model, plain text, exactly as the guest said it: "Bali 4.2", "Fountaine Pajot", "FP 41", "Lagoon", "Oceanis 46". Make alone is fine and so is a MODEL alone. Do not split it, do not add punctuation, do not expand acronyms. | |
| price_max | No | Max price per day for the boat in EUR, all fees in — a boat's WEEKLY list figure: a week's grand total (charter, every required fee now or at pickup, the 45 EUR platform fee, our discounts; deposits never) at max guests ÷ its days; a dated row's `list_price.per_day` is its own stay's and may differ. Use ONLY for an explicit per-day cap; for a whole-trip/weekly budget use total_max instead. | |
| price_min | No | Min price per day for the boat in EUR, all fees in — a boat's WEEKLY list figure: a week's grand total (charter, every required fee now or at pickup, the 45 EUR platform fee, our discounts; deposits never) at max guests ÷ its days. A dated row's `list_price.per_day` is its own stay's and may differ | |
| total_max | No | Max grand total for the stay in EUR (the charter, every required fee now or at pickup and the flat 45 EUR platform fee; deposits never included): screened on the total `price_summary` states (`list_price.total`: the boat page's Total for the stay it names, for the `guests` given, else max guests); a month-wide range on `per_day` × days at max guests. Use this whenever the guest gives a total or per-week budget, e.g. "under €5000 for the week". Needs dates to apply. | |
| length_min | No | Minimum boat length in feet |