AI Integrations
Search Boats (AI)
Search charter boats with fuzzy location matching, availability checking, and deal ranking
GET
/ai/boatsSearch available charter boats by location, type, dates, capacity, and budget. Optimized for AI consumption with fuzzy location matching, availability bitmask filtering, and batch price resolution.
Authentication
No authentication required. Rate limited to 60 requests per 10 minutes (30 for Custom GPT clients).
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
location | string | No | Destination name -- marina, city, island, region, or country. Fuzzy matched against location names, cities, states, and countries. |
boat_type | string | No | One of: sailboat, catamaran, motor, gulet, motorboat, motoryacht, trawler, rib |
guests | integer | No | Minimum guest capacity (1-50) |
date_from | string | No | Charter start date (YYYY-MM-DD). Enables availability filtering and total price calculation. |
date_to | string | No | Charter end date (YYYY-MM-DD). Typical charters are 7 days (Saturday to Saturday). |
price_min | number | No | Minimum price per day in EUR |
price_max | number | No | Maximum price per day in EUR |
cabins | integer | No | Minimum number of cabins |
sort | string | No | Sort order: deals (default), price_low, price_high, rating, newest |
limit | integer | No | Results to return (default: 5, max: 20) |
Request
Response
Response Fields
| Field | Type | Description |
|---|---|---|
boats | array | Matching boats ranked by the selected sort order |
boats[].id | string | Boat UUID |
boats[].title | string | Boat name and model |
boats[].boat_type | string | Type of boat |
boats[].manufacturer | string|null | Manufacturer name |
boats[].year | integer | Build year |
boats[].length_ft | number | Length in feet |
boats[].capacity | integer | Maximum guests |
boats[].cabins | integer | Number of cabins |
boats[].price_per_day | number | Daily rate in EUR |
boats[].price_total | number|null | Total charter price for the date range. null if no dates provided. |
boats[].currency | string | Currency code (e.g. EUR) |
boats[].discount_percentage | number | Active discount percentage. 0 if none. |
boats[].discount_label | string|null | Discount description (e.g. "Early booking", "Last minute") |
boats[].location | string | Formatted location string (marina, city, country) |
boats[].rating | number|null | Average rating (1-5) |
boats[].review_count | integer | Number of reviews |
boats[].hero_image_url | string|null | Primary boat image URL |
boats[].url | string | Direct link to boat page on charter.boats |
boats[].available | boolean|null | true if available for requested dates. null if no dates provided. |
boats[].instant_book | boolean | Whether the boat supports instant booking |
location_matched | object|null | The location the search query resolved to |
total_matching | integer | Total boats matching criteria (before limit) |
search_url | string | Link to full search results on charter.boats |
Location Matching
The location parameter is fuzzy-matched against the database in priority order:
- Exact name match (e.g., "D-Marin Lefkas")
- City match (e.g., "Lefkada" matches all marinas in Lefkada)
- State/region match (e.g., "Western Greece")
- Country match (e.g., "Greece" or "Croatia")
When a city or marina is matched, boats from all locations in that city are included. For country/state matches, all locations in the region are searched.
Sort Orders
| Value | Description |
|---|---|
deals | Best discounts first, then lowest price (default) |
price_low | Cheapest per-day rate first |
price_high | Most expensive first |
rating | Highest rated first |
newest | Newest build year first |