Marriott Bonvoy Rooms API
Get room types and rates for a specific Marriott Bonvoy property with real-time availability.
Overview
Property Code Required
Use the property_id from the Search endpoint (e.g., "BKKDT", "LAXJW") to fetch rooms for a specific hotel.
The Marriott Bonvoy Rooms endpoint returns available room types with detailed rate plans, bed types, cancellation policies, and Bonvoy member-only pricing. Use this after the Search endpoint to get complete room-level details for a property.
Endpoint URL
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| property_id | string | Required | Marriott property code (e.g., "BKKDT", "LAXJW") |
| check_in | string | Required | Check-in date in YYYY-MM-DD format |
| check_out | string | Required | Check-out date in YYYY-MM-DD format |
| adults | integer | Optional | Number of adults (1-10). Default: 2 |
| rooms | integer | Optional | Number of rooms (1-8). Default: 1 |
| currency | string | Optional | Currency code (e.g., USD, EUR, GBP). Default: USD |
Property Codes
Get property codes from the Search endpoint. Each hotel in the search response includes a property_id field you can use here.
Response Format
The response includes room types grouped by category, each containing one or more rate plans with pricing and cancellation details.
Response Structure
- success: Boolean indicating request success
- property_id: The requested property code
- room_types: Array of room type objects
- total: Total number of room types available
Room Type Fields
| Field | Type | Description |
|---|---|---|
| name | string | Room type name (e.g., "Deluxe Room", "Executive Suite") |
| bed_type | string | Bed configuration (e.g., "1 King", "2 Double") |
| view | string | Room view (e.g., "City View", "Pool View") |
| category | string | Room category (e.g., "STANDARD", "SUITE") |
| available_rooms | integer | Number of rooms still available |
| rates | array | Array of rate plan objects (see below) |
Rate Plan Fields
| Field | Type | Description |
|---|---|---|
| name | string | Rate plan name (e.g., "Best Available Rate", "Member Rate") |
| rate_plan_code | string | Internal rate plan identifier |
| per_night | float | Price per night |
| total | float | Total price for the stay |
| fees | float | Additional fees |
| currency | string | Currency code |
| members_only | boolean | Whether rate requires Bonvoy membership |
| free_cancellation_until | string | Free cancellation deadline (ISO 8601 datetime) |
| points | integer | Bonvoy points required (for points-based rates) |
| points_saved | integer | Points saved vs standard redemption (when available) |
| free_nights | integer | Number of free nights included in points redemption |
Error Responses
The API returns standard HTTP error codes with detailed error messages following the RFC 7807 Problem Details format.
400 Bad Request
Invalid request parameters (e.g., invalid dates, missing property_id)
{
"type": "https://api.stayapi.com/errors/invalid-dates",
"title": "Invalid Dates",
"status": 400,
"detail": "Check-out date must be after check-in date"
}
502 Bad Gateway
Upstream service error from Marriott
{
"type": "https://api.stayapi.com/errors/upstream-error",
"title": "Upstream Error",
"status": 502,
"detail": "Failed to fetch rooms"
}
Usage Tips
Best Practices
- Get the
property_idfrom the Search endpoint first - Each room type may have multiple rate plans with different prices and policies
- Check
members_onlyto identify Bonvoy member-exclusive rates - Use
free_cancellation_untilto show flexible booking options - Rates bookable with Bonvoy points include
points,points_saved, andfree_nightsfields - Check
available_roomsto show urgency for limited inventory
Rate Limiting
This endpoint is subject to your plan's rate limits. Each request counts as one API call regardless of the number of room types returned.
Related Endpoints
Marriott Bonvoy Search
Search for Marriott hotels by coordinates to get property codes
View Documentation →