Hotel Search API

The Starwood Hotel Search API allowed partners and developers to search Starwood's portfolio of hotels and resorts by location, dates, and availability. It supported querying by country, province, city, and date range, returning property details including name, address, category, best available rate, and SPG points redemption options. This API underpinned partner booking integrations, OTA connections, and travel management platform integrations.

OpenAPI Specification

starwood-hotel-search-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Starwood Hotel Search API
  description: >-
    The Starwood Hotel Search API provided partners and developers with programmatic access
    to search Starwood Hotels & Resorts Worldwide's portfolio of over 1,300 hotel properties
    across approximately 100 countries. This API supported searching by geographic location
    (country, province, city) and travel dates, returning property details including name,
    address, category, best available rate, and Starwood Preferred Guest (SPG) points
    redemption options. Starwood was acquired by Marriott International in September 2016
    and the SPG loyalty program was subsequently merged into Marriott Bonvoy in 2019.
  version: 1.0.0
  contact:
    name: Starwood Developer Support
    url: https://www.starwoodhotels.com
  termsOfService: https://www.starwoodhotels.com/corporate/terms.html
  license:
    name: Proprietary
    url: https://www.starwoodhotels.com/corporate/terms.html
servers:
  - url: https://www.starwoodhotels.com/api
    description: Starwood Hotels API
tags:
  - name: Hotels
    description: Hotel search and property operations
  - name: Availability
    description: Rate and availability operations
  - name: Properties
    description: Property detail operations
paths:
  /v1/hotels/search:
    get:
      operationId: searchHotels
      summary: Search Hotels
      description: >-
        Search Starwood hotel properties by geographic location and travel dates.
        Returns a list of available hotels with rates, property details, and
        SPG points redemption options.
      tags:
        - Hotels
      parameters:
        - name: country
          in: query
          description: Two-letter ISO country code (e.g., US, CN, FR)
          required: true
          schema:
            type: string
            pattern: '^[A-Z]{2}$'
            example: US
        - name: province
          in: query
          description: Province or state code within the country (e.g., USIL, CNHP)
          required: false
          schema:
            type: string
            example: USIL
        - name: city
          in: query
          description: City name for hotel search
          required: false
          schema:
            type: string
            example: Chicago
        - name: arrivalDate
          in: query
          description: Check-in date in YYYY-MM-DD format
          required: true
          schema:
            type: string
            format: date
            example: '2026-06-15'
        - name: departureDate
          in: query
          description: Check-out date in YYYY-MM-DD format
          required: true
          schema:
            type: string
            format: date
            example: '2026-06-18'
        - name: adults
          in: query
          description: Number of adult guests
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9
            default: 1
        - name: brand
          in: query
          description: Filter by Starwood brand code
          required: false
          schema:
            type: string
            enum:
              - SH
              - WI
              - WH
              - SR
              - LM
              - FP
              - AL
              - EL
              - TP
              - DH
            example: WI
        - name: categoryMin
          in: query
          description: Minimum SPG category for luxury filtering (1-7)
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 7
      responses:
        '200':
          description: Successful hotel search results
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelSearchResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No hotels found for given criteria
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /v1/hotels/{hotelId}:
    get:
      operationId: getHotelById
      summary: Get Hotel by ID
      description: >-
        Retrieve detailed information for a specific Starwood hotel property by its
        unique identifier, including full address, contact information, amenities,
        room types, dining options, and meeting space availability.
      tags:
        - Properties
      parameters:
        - name: hotelId
          in: path
          description: Unique Starwood hotel identifier
          required: true
          schema:
            type: string
            example: '1234'
      responses:
        '200':
          description: Hotel property details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Hotel'
        '404':
          description: Hotel not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

  /v1/hotels/{hotelId}/availability:
    get:
      operationId: getHotelAvailability
      summary: Get Hotel Availability
      description: >-
        Check room availability and current rates for a specific Starwood hotel property
        for given travel dates. Returns available room categories, rates, and SPG points
        options including cash-and-points combinations.
      tags:
        - Availability
      parameters:
        - name: hotelId
          in: path
          description: Unique Starwood hotel identifier
          required: true
          schema:
            type: string
            example: '1234'
        - name: arrivalDate
          in: query
          description: Check-in date in YYYY-MM-DD format
          required: true
          schema:
            type: string
            format: date
        - name: departureDate
          in: query
          description: Check-out date in YYYY-MM-DD format
          required: true
          schema:
            type: string
            format: date
        - name: adults
          in: query
          description: Number of adult guests
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 9
            default: 1
      responses:
        '200':
          description: Hotel availability and rates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelAvailabilityResponse'
        '404':
          description: Hotel not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: No availability for requested dates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'

components:
  schemas:
    HotelSearchResponse:
      type: object
      description: Response containing a list of matching hotels
      properties:
        hotels:
          type: array
          description: List of matching hotel properties
          items:
            $ref: '#/components/schemas/Hotel'
        totalCount:
          type: integer
          description: Total number of matching hotels
          example: 12
        searchParameters:
          type: object
          description: Echo of the search parameters used
          properties:
            country:
              type: string
              example: US
            city:
              type: string
              example: Chicago
            arrivalDate:
              type: string
              format: date
            departureDate:
              type: string
              format: date

    Hotel:
      type: object
      description: A Starwood hotel property
      properties:
        id:
          type: string
          description: Unique Starwood hotel identifier
          example: '1234'
        name:
          type: string
          description: Full hotel property name
          example: The Westin Michigan Avenue Chicago
        brand:
          type: string
          description: Starwood brand code
          example: WI
        brandName:
          type: string
          description: Full Starwood brand name
          example: Westin
        category:
          type: integer
          description: SPG category level (1-7, higher is more luxury)
          minimum: 1
          maximum: 7
          example: 4
        thumbnail:
          type: string
          description: URL to the hotel thumbnail image
          format: uri
          example: https://www.starwoodhotels.com/images/hotels/1234/thumb.jpg
        address:
          type: string
          description: Street address
          example: 909 N. Michigan Ave.
        city:
          type: string
          description: City name
          example: Chicago
        state:
          type: string
          description: State or province code
          example: IL
        country:
          type: string
          description: Two-letter ISO country code
          example: US
        zipcode:
          type: string
          description: Postal code
          example: '60611'
        phone:
          type: string
          description: Hotel front desk phone number
          example: +1-312-943-7200
        fax:
          type: string
          description: Hotel fax number
          example: +1-312-943-7201
        description:
          type: string
          description: Hotel property description
          example: >-
            A landmark Michigan Avenue hotel with breathtaking views of Lake Michigan
            and the Chicago skyline.
        latitude:
          type: number
          format: double
          description: Geographic latitude
          example: 41.8981
        longitude:
          type: number
          format: double
          description: Geographic longitude
          example: -87.6240
        bestRate:
          type: number
          format: double
          description: Best available rate per night in USD
          example: 289.00
        currency:
          type: string
          description: Currency code for rates
          example: USD
        redeemPoints:
          type: integer
          description: SPG Starpoints required for award redemption per night
          example: 12000
        redeemCashPoints:
          type: integer
          description: Starpoints required for cash-and-points redemption
          example: 6000
        amenities:
          type: array
          description: List of hotel amenity codes
          items:
            type: string
          example:
            - POOL
            - FITNESS
            - SPA
            - WIFI
            - RESTAURANT
            - BUSINESS_CENTER

    HotelAvailabilityResponse:
      type: object
      description: Hotel availability and rate information
      properties:
        hotelId:
          type: string
          description: Unique Starwood hotel identifier
          example: '1234'
        arrivalDate:
          type: string
          format: date
          description: Check-in date
        departureDate:
          type: string
          format: date
          description: Check-out date
        nights:
          type: integer
          description: Number of nights
          example: 3
        rooms:
          type: array
          description: Available room types and rates
          items:
            $ref: '#/components/schemas/RoomRate'

    RoomRate:
      type: object
      description: A room type with its available rates
      properties:
        roomTypeCode:
          type: string
          description: Room type code
          example: KING
        roomTypeName:
          type: string
          description: Room type name
          example: Deluxe King Room
        rateCode:
          type: string
          description: Rate plan code
          example: BAR
        rateName:
          type: string
          description: Rate plan name
          example: Best Available Rate
        pricePerNight:
          type: number
          format: double
          description: Rate per night in quoted currency
          example: 289.00
        totalPrice:
          type: number
          format: double
          description: Total price for the stay
          example: 867.00
        currency:
          type: string
          description: Currency code
          example: USD
        pointsPerNight:
          type: integer
          description: SPG Starpoints required for award night
          example: 12000
        availability:
          type: string
          description: Availability status
          enum:
            - AVAILABLE
            - LIMITED
            - UNAVAILABLE
          example: AVAILABLE

    Error:
      type: object
      description: Error response
      properties:
        code:
          type: string
          description: Error code
          example: INVALID_REQUEST
        message:
          type: string
          description: Human-readable error message
          example: Invalid arrival date format. Expected YYYY-MM-DD.
        details:
          type: array
          description: Additional error detail objects
          items:
            type: object
            properties:
              field:
                type: string
                description: Field name that caused the error
              message:
                type: string
                description: Field-specific error message