Starwood Hotels and Resorts Hotels API
Hotel search and property operations
Hotel search and property operations
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