Skip to content

Hotels

Search hotels by city code (IATA-style, e.g. DXB — see /v1/content/cities), by hotel codes from your stored catalogue, or by a geo circle. Returns a session to poll, or the complete result when `wait` is true.

post/v1/hotels/search

  • Requires authentication

Request bodyHotelSearchRequest

  • DestinationSpec
    • countryCodestringnullable
    • cityCodestringnullable

      Platform city code (see /v1/content/cities).

    • hotelCodesstring[]nullable

      Canonical hotel codes (see /v1/content/hotels).

    • Geo
  • checkInstring

    yyyy-MM-dd.

  • checkOutstring
  • SearchRoom[]
    • adultsinteger (int32)
    • childrenAgesinteger (int32)[]nullable
  • nationalitystringnullable

    Guest nationality, ISO 3166-1 alpha-2.

  • Filters
    • starsinteger (int32)[]nullable
    • refundableOnlybooleannullable
    • mealIncludedbooleannullable
    • priceMinnumber (double)nullable
    • priceMaxnumber (double)nullable
  • sortstringnullable

    price_asc | price_desc | stars_desc | name.

  • pageinteger (int32)
  • pageSizeinteger (int32)
  • waitboolean
Example
{
  "destination": {
    "cityCode": "DXB"
  },
  "checkIn": "2026-11-15",
  "checkOut": "2026-11-18",
  "rooms": [
    {
      "adults": 2,
      "childrenAges": []
    }
  ],
  "wait": true
}

Responses

200OKHotelSearchResponse

  • searchIdstring
  • statusstring
  • cursorinteger (int32)
  • suppliersDoneinteger (int32)
  • supplierCountinteger (int32)
  • totalinteger (int32)
  • pageinteger (int32)
  • pageCountinteger (int32)
  • partialboolean
  • starFacetsobjectnullable
  • HotelResult[]
    • hotelCodestring
    • namestringnullable
    • starsinteger (int32)nullable
    • cityCodestringnullable
    • cityNamestringnullable
    • countryCodestringnullable
    • addressstringnullable
    • latitudenumber (double)nullable
    • longitudenumber (double)nullable
    • imagesstring[]
    • amenitiesstring[]
    • Money

      Money on the wire: decimal string (never a float) + ISO 4217.

    • HotelRoom[]
  • 400Bad RequestRFC 7807 problem details

Code samples

Complete programs that sign the request the way the gateway verifies it. Replace YOUR_KEY_ID and YOUR_SECRET.

# Sign the request: METHOD \n path+query \n unix time \n nonce \n sha256(body)
KEY_ID="YOUR_KEY_ID"
SECRET="YOUR_SECRET"
BODY='{
  "destination": {
    "cityCode": "DXB"
  },
  "checkIn": "2026-11-15",
  "checkOut": "2026-11-18",
  "rooms": [
    {
      "adults": 2,
      "childrenAges": []
    }
  ],
  "wait": true
}'
TS=$(date +%s)
NONCE=$(openssl rand -hex 16)
BODY_HASH=$(printf '%s' "$BODY" | openssl dgst -sha256 | sed 's/^.* //')
CANON=$(printf 'POST\n/v1/hotels/search\n%s\n%s\n%s' "$TS" "$NONCE" "$BODY_HASH")
SIG=$(printf '%s' "$CANON" | openssl dgst -sha256 -hmac "$SECRET" | sed 's/^.* //')

curl -X POST "https://api.dubaitrip.com/v1/hotels/search" \
  -H "X-API-Key: $KEY_ID" \
  -H "X-Timestamp: $TS" \
  -H "X-Nonce: $NONCE" \
  -H "X-Signature: $SIG" \
  -H "Content-Type: application/json" \
  -d "$BODY"