Get Boat
Get detailed information about a specific boat
/boats/:idRetrieve complete details for a single boat, including location, images, amenities, reviews, seasonal pricing, and calculated ratings.
Authentication
No authentication required for server-side requests — this is a public read endpoint. (A key is only needed for cross-origin calls made from a browser on another domain; see Authentication.)
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The boat's UUID or slug |
Request
Response
Note on the
companyblock. The live response carries acompanyobject. The documented API contract exposes only the cancellation- and guest-terms fields shown above (base_currency,cancel_refund_days,cancel_refund_percent,terms_guest). Operator identity fields are not part of the documented contract and should not be relied upon.
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Unique boat identifier (UUID) |
slug | string | URL-friendly identifier |
title | string | Boat name |
boat_type | string | yacht, catamaran, sailboat, motorboat, rib, or other |
mmsi | string|null | Maritime MMSI number, if known |
capacity | integer | Maximum guests |
length_ft | number | Length overall (LOA) in feet — see the note below |
year | integer | Year built |
cabins | integer|null | Number of cabins |
crew_cabins | integer|null | Number of crew cabins |
berths | integer|null | Number of berths |
toilets | integer|null | Number of toilets |
specs | object|null | Extra specs (beam, draft, engine_desc, fuel_capacity, water_capacity, transit_log, …) |
description | string|null | Full description |
pricing_source | string | Active pricing source: direct, nausys, or mmk |
price_per_day | number | Effective daily rate |
original_price_per_day | number|null | Price before discount |
discount_percentage | number|null | Active discount percentage |
discount_label | string|null | Discount label text |
price_from | number|null | Lowest seasonal price |
price_to | number|null | Highest seasonal price |
charter_day | integer|null | Preferred charter start weekday (0=Sun … 6=Sat) |
check_in_periods | array|null | Raw check-in/out windows from the source platform |
checkin_time | string|null | Check-in time (e.g. 17:00:00) |
checkout_time | string|null | Check-out time (e.g. 09:00:00) |
length_ft is length overall (LOA), the figure charter platforms and manufacturers advertise — not hull length, which runs shorter. For boats priced from a connected platform it is the length of the boat's model, so sister ships of the same model report the same figure rather than each platform's per-hull number. Boats you manage directly keep whatever length you set.
| min_charter_days | integer|null | Minimum charter duration in days |
| instant_book | boolean | Whether instant booking is enabled |
| security_deposit | number|null | Security deposit amount |
| deposit_with_waiver | number|null | Reduced deposit when a damage waiver is taken |
| seo_released_at | string|null | Timestamp the detail page was released for indexing |
| company_id | string | Operator company UUID |
| location_id | integer | Location ID |
| model | string|null | Boat model name |
| updated_at | string | ISO 8601 last-updated timestamp |
| manufacturer_id | string|null | Manufacturer UUID |
| rental_type | string | bareboat, skippered, cabin, or flotilla |
| average_rating | number|null | Average review rating (1-5) |
| review_count | integer | Total number of reviews |
| import_source | string|null | Source platform the boat was imported from |
| is_published | boolean | Whether the listing is published |
| photo_descriptions | object|null | AI-generated per-category photo captions |
| seo_variant | string|null | SEO copy variant label |
| has_valid_name | boolean|null | Whether the boat has a human-readable name |
| has_multi_port | boolean | Whether the boat rotates between marinas seasonally |
| avail_weeks | integer | Packed availability bitmask, relative to avail_weeks_anchor |
| best_internal_discount_pct | number | Best internal discount percentage available |
| company | object | Cancellation/guest-terms fields only (see note above) |
| manufacturer | object|null | { id, name, slug, logo_url } |
| location | object | Marina/location details (see below) |
| images | array | Active images with id, url, category, is_active, is_primary, sort_order |
| videos | array | Boat videos |
| amenities | array | Amenity objects |
| reviews | array | Reviews with id, rating, comment, created_at |
| prices | array | Seasonal pricing rows filtered to the active pricing source |
| best_price | number | Best available daily price |
| best_source | string | Pricing source for best_price |
| best_currency | string | Currency code (e.g. EUR) |
| internal_discount_pct | number|null | Internal discount percentage when applicable |
| lowest_price_per_day | number | Lowest effective per-day price after any internal discount |
| mmk_products | array|null | MMK product variants with name and isDefault (MMK boats only) |
| avail_weeks_anchor | string|null | Anchor date (YYYY-MM-DD) for decoding avail_weeks |
Company Object
| Field | Type | Description |
|---|---|---|
base_currency | string | Default currency (e.g. EUR) |
cancel_refund_percent | number|null | Refund percentage under the cancellation policy |
cancel_refund_days | number|null | Days before charter that the refund window applies |
terms_guest | object|null | Guest-facing terms: insurance_requirements, damage_liability, license_requirements |
Location Object
| Field | Type | Description |
|---|---|---|
id | integer | Location ID |
name | string | Marina/location name |
city | string|null | City |
municipality | string|null | Municipality |
state | string|null | State/region |
country | string|null | Country name |
country_code | string|null | ISO country code (lowercase) |
lat | number|null | Latitude |
lon | number|null | Longitude |
website | string|null | Marina website |
phone | string|null | Contact phone |
image_url | string|null | Marina image |
rating | number|null | Marina rating |
capacity | number|null | Berth capacity |
max_draft | number|null | Maximum draft (m) |
max_length | number|null | Maximum vessel length (m) |
vhf_channel | string|null | VHF hailing channel |
neighbors | array|null | Nearby location IDs |
description | string|null | Marina description |
Errors
| Status | Message |
|---|---|
400 | Boat ID is required |
404 | Boat not found |