Browse documentation
GET

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

GET https://api.stayapi.com/v1/marriott/bonvoy/rooms

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 Cash room rate for the check-in night only. Nightly rates vary; see nightly_rates, and use total for the stay
total float Total cash price for the stay including taxes and fees (cash rates). Award rates also carry a cash figure Marriott attaches to the product; it is not the award price, use points_total
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 for the check-in night only (points-based rates). Not a stay total; use points_total
points_total integer Bonvoy points for the whole stay (points-based rates). Equals the sum of nightly_rates[].points
points_saved integer Points saved vs standard redemption (when available)
free_nights integer Number of free nights included in points redemption
nightly_rates array Per-night breakdown in stay order, one object per night: date (YYYY-MM-DD), cash (room rate before taxes and fees, cash rates), points (points-based rates), free_night (boolean)

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_id from the Search endpoint first
  • Each room type may have multiple rate plans with different prices and policies
  • Check members_only to identify Bonvoy member-exclusive rates
  • Use free_cancellation_until to show flexible booking options
  • Rates bookable with Bonvoy points include points, points_total, points_saved, and free_nights fields
  • For multi-night stays use points_total or sum nightly_rates. points and per_night are the check-in night only and nightly prices vary by day of week
  • The same room can list several award rate plans (for example two "Redemption with Points Upgrade" plans at different prices), so key on rate_plan_code, not on the rate name
  • Check available_rooms to 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 →

Meta Search

Search across multiple booking platforms

View Documentation →
Request
curl -X GET "https://api.stayapi.com/v1/marriott/bonvoy/rooms?property_id=BKKDT&check_in=2026-04-15&check_out=2026-04-18&adults=2&currency=USD" \
  -H "X-API-Key: YOUR_API_KEY"
Response
{
  "success": true,
  "property_id": "BKKDT",
  "room_types": [
    {
      "name": "Deluxe Room",
      "bed_type": "1 King",
      "view": "City View",
      "category": "STANDARD",
      "available_rooms": 5,
      "rates": [
        {
          "name": "Best Available Rate",
          "rate_plan_code": "BAR",
          "per_night": 185.00,
          "total": 555.00,
          "fees": 0,
          "currency": "USD",
          "members_only": false,
          "free_cancellation_until": "2026-04-13T18:00:00",
          "points": null,
          "points_total": null,
          "points_saved": null,
          "free_nights": null,
          "nightly_rates": [
            {"date": "2026-04-14", "cash": 185.00, "points": null, "free_night": false},
            {"date": "2026-04-15", "cash": 185.00, "points": null, "free_night": false},
            {"date": "2026-04-16", "cash": 185.00, "points": null, "free_night": false}
          ]
        },
        {
          "name": "Member Rate",
          "rate_plan_code": "MBR",
          "per_night": 166.50,
          "total": 499.50,
          "fees": 0,
          "currency": "USD",
          "members_only": true,
          "free_cancellation_until": "2026-04-13T18:00:00",
          "points": null,
          "points_total": null,
          "points_saved": null,
          "free_nights": null,
          "nightly_rates": [
            {"date": "2026-04-14", "cash": 166.50, "points": null, "free_night": false},
            {"date": "2026-04-15", "cash": 166.50, "points": null, "free_night": false},
            {"date": "2026-04-16", "cash": 166.50, "points": null, "free_night": false}
          ]
        }
      ]
    },
    {
      "name": "Executive Suite",
      "bed_type": "1 King",
      "view": "City View",
      "category": "SUITE",
      "available_rooms": 2,
      "rates": [
        {
          "name": "Redemption",
          "rate_plan_code": "MRYA",
          "per_night": null,
          "total": 555.00,
          "fees": 0,
          "currency": "USD",
          "members_only": true,
          "free_cancellation_until": "2026-04-13T18:00:00",
          "points": 45000,
          "points_total": 125000,
          "points_saved": 0,
          "free_nights": 0,
          "nightly_rates": [
            {"date": "2026-04-14", "cash": null, "points": 45000, "free_night": false},
            {"date": "2026-04-15", "cash": null, "points": 45000, "free_night": false},
            {"date": "2026-04-16", "cash": null, "points": 35000, "free_night": false}
          ]
        }
      ]
    }
  ],
  "total": 2
}