Charter Boats
Charter Boats API
Passages

List Passages

List sailing passages between locations

Endpoint

GET /passages

Description

List sailing passages (routes between two locations) with optional filtering by location and difficulty. Each passage includes distance, difficulty rating, and departure/arrival location details.

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.)

Query Parameters

ParameterTypeRequiredDescription
location_idnumberNoFilter passages that start or end at this location
difficultystringNoFilter by difficulty level
sortstringNoSort order: distance (default), rating, or variants
limitnumberNoMax results (default: 50, max: 100)
offsetnumberNoPagination offset (default: 0)

Example Request

curl "https://charter.boats/api/passages?sort=distance&limit=10"

Example Response

[
  {
    "id": "7f71404b-e5a5-403c-92b1-93e4a462da42",
    "from_location_id": 2058,
    "to_location_id": 20002,
    "slug": "sivota-to-anchorage",
    "title": "Sivota to Anchorage",
    "description": null,
    "distance_nm": 5.3,
    "typical_duration_hours": null,
    "difficulty": null,
    "rating": null,
    "rating_count": 0,
    "variant_count": 1,
    "geojson": {
      "type": "Feature",
      "geometry": { "type": "LineString", "coordinates": [[20.6837, 38.6219], [20.7139, 38.6720]] },
      "properties": { "segments": 1, "waypoints": 19, "distance_km": 9.9, "distance_nm": 5.3 }
    },
    "created_at": "2026-02-13T11:30:04.296607+00:00",
    "updated_at": "2026-02-13T11:30:04.362704+00:00",
    "from_location": {
      "id": 2058,
      "name": "Sivota",
      "country_code": "gr",
      "lat": 38.6219613,
      "lon": 20.6837174
    },
    "to_location": {
      "id": 20002,
      "name": "Anchorage",
      "country_code": "gr",
      "lat": 38.6720921,
      "lon": 20.7139492
    }
  }
]

Response Fields

FieldTypeDescription
idstringRoute ID (UUID)
from_location_id / to_location_idnumberDeparture / arrival location IDs
slugstringURL-friendly slug
titlestringRoute title
descriptionstring|nullRoute description
distance_nmnumber|nullDistance in nautical miles
difficultystring|nullDifficulty level
typical_duration_hoursnumber|nullEstimated sailing time in hours
ratingnumber|nullAverage rating
rating_countnumberNumber of ratings (0 when none)
variant_countnumber|nullNumber of route variants
geojsonobject|nullRoute geometry as a GeoJSON Feature (geometry LineString + properties with distance_nm, waypoints, etc.)
created_at / updated_atstringRow timestamps
from_locationobjectDeparture location (id, name, country_code, lat, lon)
to_locationobjectArrival location (same shape)

In the list endpoint the embedded from_location / to_location carry only id, name, country_code, lat, and lon (no country, image_url, or harbour_category — those appear in Get Passage). country_code is lowercase.

Sort Options

ValueDescription
distanceShortest passages first (default)
ratingHighest rated first
variantsMost route variants first

On this page