Starwood Hotels and Resorts Hotels API

Hotel search and property operations

OpenAPI Specification

starwood-hotels-and-resorts-hotels-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Starwood Hotel Search Availability Hotels 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
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'
components:
  schemas:
    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
    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.624
        bestRate:
          type: number
          format: double
          description: Best available rate per night in USD
          example: 289.0
        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
    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