Skip to main content
GET
/
hotels
List hotels
curl --request GET \
  --url https://spaportal.cz/api/v2/hotels \
  --header 'X-SpaPortal-Public-Key: <api-key>'
{
  "data": [
    {
      "id": "66f16191f739705faa020001",
      "name": {
        "cs-CZ": "Pawlik",
        "de": "Pawlik-Aquaforum"
      },
      "stars": 4,
      "address": {
        "addressLine": "<string>",
        "city": "<string>",
        "postalCode": "<string>",
        "countryCode": "CZ"
      },
      "phoneNumber": "<string>",
      "description": {
        "cs-CZ": "Superior dvouluzkovy pokoj",
        "de": "Superior Doppelzimmer"
      },
      "commercialSlogan": {
        "cs-CZ": "Superior dvouluzkovy pokoj",
        "de": "Superior Doppelzimmer"
      },
      "equipment": {
        "cs-CZ": "Superior dvouluzkovy pokoj",
        "de": "Superior Doppelzimmer"
      },
      "services": {
        "cs-CZ": "Superior dvouluzkovy pokoj",
        "de": "Superior Doppelzimmer"
      },
      "images": [
        {
          "url": "<string>",
          "thumbnailUrl": "<string>"
        }
      ],
      "priceFrom": {
        "CZK": {
          "perNight": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "perNightOriginal": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "minimumStay": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "minimumStayOriginal": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "guests": 2,
          "minimumNights": 2
        },
        "EUR": {
          "perNight": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "perNightOriginal": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "minimumStay": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "minimumStayOriginal": {
            "amountMinor": 180000,
            "currencyExponent": 2
          },
          "guests": 2,
          "minimumNights": 2
        }
      },
      "amenities": [
        {
          "code": "wellness.sauna"
        },
        {
          "code": "connectivity.wifi"
        },
        {
          "code": "parking.parking",
          "quantity": 40
        },
        {
          "code": "pools.indoor_pool",
          "condition": "seasonal"
        }
      ],
      "roomTypes": [
        {
          "id": "66f16191f739705faa020003",
          "hotelId": "66f16191f739705faa020001",
          "code": "SUPERIOR-DBL",
          "category": {
            "cs-CZ": "Superior dvouluzkovy pokoj",
            "de": "Superior Doppelzimmer"
          },
          "beds": 2,
          "facilities": [
            "shower",
            "toilet"
          ],
          "images": [
            {
              "url": "<string>",
              "thumbnailUrl": "<string>"
            }
          ],
          "description": {
            "cs-CZ": "Superior dvouluzkovy pokoj",
            "de": "Superior Doppelzimmer"
          },
          "amenities": [
            {
              "code": "comfort.air_conditioning"
            },
            {
              "code": "connectivity.wifi"
            }
          ],
          "hotel": {
            "id": "66f16191f739705faa020001",
            "name": {
              "cs-CZ": "Pawlik",
              "de": "Pawlik-Aquaforum"
            },
            "stars": 4
          }
        }
      ]
    }
  ],
  "pagination": {
    "limit": 25,
    "nextCursor": "<string>",
    "hasMore": true,
    "total": 123
  }
}
Draft — not yet available. This is a work-in-progress contract for an endpoint that is not implemented yet. It may change before release; do not build against it.

Authorizations

X-SpaPortal-Public-Key
string
header
required

See Authentication for how to obtain and send your public key.

Headers

Accept-Language
string

Comma-separated BCP 47 language tags selecting which locale keys localized fields return. When omitted, all locale keys are returned. See Localization for details.

Example:

"cs-CZ,de"

X-Request-Id
string

Optional client-provided request identifier echoed in error responses.

Query Parameters

limit
integer
default:25

Number of records to return. See Pagination.

Required range: 1 <= x <= 100
cursor
string

Cursor from the previous page's pagination.nextCursor. See Pagination.

Full-text search of the hotel name across all supported languages (case- and diacritics-insensitive).

sort
enum<string>
default:createdAt:desc

Sort order. Ties are broken by id.

Available options:
createdAt:desc,
createdAt:asc
amenities
string

Draft. Comma-separated amenity codes; returns only hotels that have ALL listed amenities (AND semantics). E.g. wellness.sauna,parking.parking.

amenityCategory
string

Draft. Returns hotels that have any amenity in this category (e.g. wellness).

expand
enum<string>

Expand related resources inline. Set to roomTypes to embed each hotel's room types in the response (otherwise fetch them separately via GET /room-types?hotelId={hotelId}).

Available options:
roomTypes

Response

A paginated list of hotels.

data
object[]
required
pagination
object
required