Charter Boats API
Points of Interest

Search POIs

Find points of interest near a location or coordinates

Endpoint

GET /pois/search

Description

Search for points of interest (restaurants, shops, fuel stations, etc.) near a location. Supports three search modes: by location ID, by coordinates with radius, or by geographic region (country, state, city).

Authentication

No authentication required. This is a public endpoint.

Query Parameters

Use one of the three search modes:

Mode 1: By Location ID

ParameterTypeRequiredDescription
location_idnumberYesLocation ID to find nearby POIs
categorystringNoFilter by POI category
minRatingnumberNoMinimum rating filter
limitnumberNoMax results (default: 50, max: 200)

Mode 2: By Coordinates

ParameterTypeRequiredDescription
latnumberYesLatitude
lonnumberYesLongitude
radiusnumberNoSearch radius in km (default: 1, max: 10)
categorystringNoFilter by POI category
minRatingnumberNoMinimum rating filter
limitnumberNoMax results (default: 50, max: 200)

Mode 3: By Region

ParameterTypeRequiredDescription
location_typestringYesOne of: country, state, city, municipality
location_valuestringYesRegion name or country code
country_codestringNoISO country code (narrows state/city/municipality results)
categorystringNoFilter by POI category
minRatingnumberNoMinimum rating filter
limitnumberNoMax results (default: 50, max: 200)
offsetnumberNoPagination offset (default: 0)

Example Requests

By Location

curl "https://charter.boats/api/pois/search?location_id=4521&category=restaurant"

By Coordinates

curl "https://charter.boats/api/pois/search?lat=38.83&lon=20.71&radius=2"

By Country

curl "https://charter.boats/api/pois/search?location_type=country&location_value=gr&limit=20"

Example Response (Location Mode)

{
  "pois": [
    {
      "id": "poi-uuid-1",
      "osm_id": 987654321,
      "name": "Taverna Nidri",
      "name_en": "Nidri Tavern",
      "category": "restaurant",
      "subcategory": "taverna",
      "lat": 38.8312,
      "lon": 20.7089,
      "address": "Waterfront Road",
      "city": "Lefkada",
      "country": "Greece",
      "phone": "+30 2645 099999",
      "website": "https://example.com",
      "opening_hours": "Mo-Su 12:00-23:00",
      "is_seasonal": true,
      "description": "Traditional Greek taverna on the waterfront",
      "cuisine": "greek",
      "image_url": "https://example.com/taverna.jpg",
      "rating": 4.7,
      "distance_meters": 350,
      "walking_time_minutes": 4
    }
  ],
  "total": 1,
  "location_id": 4521
}

Example Response (Region Mode)

{
  "pois": [
    {
      "id": "poi-uuid-2",
      "name": "Port Fuel Station",
      "category": "fuel",
      "lat": 38.7420,
      "lon": 20.7380,
      "rating": 4.2,
      "distance_meters": 50,
      "walking_time_minutes": 1
    }
  ],
  "total": 245,
  "hasMore": true,
  "location_type": "country",
  "location_value": "gr"
}

Response Fields

FieldTypeDescription
poisarrayList of POIs
totalnumberTotal number of matching POIs
hasMorebooleanWhether more results exist (region mode with pagination)
location_idnumberEchoed location ID (location mode)
centerobjectEchoed search center (coordinate mode)
radius_kmnumberEchoed search radius (coordinate mode)
location_typestringEchoed location type (region mode)
location_valuestringEchoed location value (region mode)

POI Fields

FieldTypeDescription
idstringPOI ID (UUID)
osm_idnumber|nullOpenStreetMap ID
namestringPOI name (local language)
name_enstring|nullEnglish name
categorystringPOI category
subcategorystring|nullMore specific category
latnumberLatitude
lonnumberLongitude
addressstring|nullStreet address
citystring|nullCity
countrystring|nullCountry
phonestring|nullPhone number
websitestring|nullWebsite URL
opening_hoursstring|nullOpening hours (OSM format)
is_seasonalboolean|nullWhether the business is seasonal
descriptionstring|nullDescription
cuisinestring|nullCuisine type (restaurants only)
image_urlstring|nullImage URL
ratingnumber|nullRating
distance_metersnumber|nullDistance from the reference location
walking_time_minutesnumber|nullEstimated walking time

Error Responses

400 Bad Request

{
  "statusCode": 400,
  "message": "Either location_id or lat/lon coordinates required"
}

On this page