---
title: "Get a list of Rates Plans."
method: GET
path: "/rates/v1/rate-plans"
tags: ["Rate Plans"]
---

# Get a list of Rates Plans.

`GET /rates/v1/rate-plans`

## Request

- Base URL: `https://api.cloudbeds.com`
- URL: `https://api.cloudbeds.com/rates/v1/rate-plans`
- Auth: OAuth 2
  - Authorization code: `https://api.cloudbeds.com/auth/oauth/authorize`
  - Token URL: `https://api.cloudbeds.com/auth/oauth/token` scopes: `read:rate`

## Query parameters

- `offset` integer
- `limit` integer
- `filters` string
- `sort` string
- `includeTotal` boolean

## Headers

- `x-property-id` string, required

## Response `200`

List of Rates Plans.

- RatePlanListResponseSchema
  - `limit` integer, required
  - `offset` integer, required
  - `data` RatePlanResponseSchema[], nullable, required
    - `id` string
    - `propertyId` string, nullable
    - `isActive` boolean
    - `status` 'active' | 'expired' | 'no-intervals' | 'disabled': Derived from isActive and the intervals' end dates, using the property's current date. `disabled`: isActive is false. `no-intervals`: active with no intervals. `expired`: active and every interval's endDate is in the past. `active`: active with at least one interval whose endDate is today or later (or has no endDate).
    - `isDeleted` boolean
    - `derivedRatePlanId` string, nullable
    - `isDerived` boolean
    - `derivedType` string, nullable
    - `derivedValue` number, float, nullable
    - `addons` RatePlanAddonResponseSchema[], nullable
      - `id` string, nullable, required
      - `addonId` string, nullable, required
      - `settings` 'package_inclusive' | 'show_as_combined' | 'show_as_separate', nullable, required: The addon settings.
    - `promoCode` string, nullable
    - `sources` string[], nullable
    - `name` object, nullable
    - `description` object, nullable
    - `namePrivate` object, nullable
    - `terms` object, nullable
    - `intervals` RatePlanIntervalResponseSchema[], nullable
      - `name` string, nullable
      - `ratePlanId` integer, nullable, required
      - `roomTypeId` integer, nullable, required
      - `startDate` string, date-time, nullable, required
      - `endDate` string, date-time, nullable, required
      - `minLos` integer, nullable
      - `maxLos` integer, nullable
      - `days` number[], nullable, required: Base price per day-of-week, indexed 0=Sunday … 6=Saturday. A day with no base price is null.
      - `adultDays` object, nullable: Extra adults pricing. Outer key = day-of-week (0=Sunday … 6=Saturday); inner key = extra-guest count; value = additional price for that guest. Note: when fees are set on a contiguous run of days starting at day 0 (e.g. all 7 days), the payload serializes as a JSON array of per-day objects rather than the day-of-week-keyed object shown here.
      - `childDays` object, nullable: Extra children pricing. Outer key = day-of-week (0=Sunday … 6=Saturday); inner key = extra-guest count; value = additional price for that guest. Note: when fees are set on a contiguous run of days starting at day 0 (e.g. all 7 days), the payload serializes as a JSON array of per-day objects rather than the day-of-week-keyed object shown here.
      - `cutOff` integer, nullable: Cut-off: minimum number of days in advance a booking must be made. 0 = no restriction.
      - `lastMinuteBooking` integer, nullable: Last-minute booking: maximum number of days before arrival a booking may be made. 0 = no restriction.
      - `closedToArrival` boolean, nullable: Closed to arrival: when true, guests cannot start a stay on dates within this interval.
      - `closedToDeparture` boolean, nullable: Closed to departure: when true, guests cannot end a stay on dates within this interval.
      - `limitToNumberOfRooms` integer, nullable: Saleable Accommodations: caps how many rooms of the room type this rate may sell. Null means no limit — the rate may sell the room type's full capacity.
      - `agePolicyPricing` object[], nullable: Age-group pricing for this interval, one entry per priced age group — or, under per_each_guest pricing, one entry per extra-guest position within a group, so several entries can share an ageGroupId and differ by guestNumber. Null when the property does not use age-group pricing, or when this interval's rate still prices guests with the adultDays / childDays model — in which case those two fields carry the pricing. An empty array means age-group pricing applies to this interval but nothing is priced on it yet. Join ageGroupId against GET /age-policy/v1/policies for each group's name and age range.
        - `ageGroupId` integer, required: Age group this price applies to.
        - `isExtraGuestsPricing` boolean, required: True when the price applies to a guest beyond base occupancy rather than to the base rate.
        - `extraGuestsType` 'per_age_group' | 'per_each_guest', nullable: The property's extra-guest pricing mode: per_age_group prices every extra guest of a group alike, per_each_guest prices each position separately.
        - `guestNumber` integer, nullable: Extra-guest position this price applies to, counting from the first guest beyond base occupancy. Only set under per_each_guest pricing.
        - `days` object[], required: Price per day-of-week. A day with no price is absent from the list.
          - `dayOfWeek` integer, required: 0=Sunday … 6=Saturday.
          - `priceAmount` string, required: Decimal amount, with at least two decimal places and up to four — a price finer than cents keeps the decimals it needs, so do not parse this as a fixed-width two-decimal string.
          - `priceCurrency` string, required: ISO 4217 currency code.
    - `createdAt` string, date-time, nullable
    - `updatedAt` string, date-time, nullable
    - `policyId` string, nullable
    - `segmentId` string, nullable
    - `mealPlans` string[], required: Meal plans carried by the add-ons listed in `addons` (any attachment setting), as raw keys (not localized labels), deduplicated. Empty when none of them is a meal plan.
  - `total` integer, nullable: Total number of items matching the request; present only when includeTotal is requested.

## Other responses

- `400`: Bad request response.
- `403`: Forbidden response.
- `500`: Internal server error.

---

[API](https://skmtc.dev/cloudbeds/apis/cloudbeds-api-v2.md) - [All operations](https://skmtc.dev/cloudbeds/apis/cloudbeds-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/cloudbeds/apis/cloudbeds-api-v2/revisions/69bffac143cc?raw)
