Length of stay (LOS)

As flexible as your prices are

With LOS you can define every possible price structure you may have defined on your side already. For every possible checkin day, for every possible stay length, you can define the price as you want.

📘

LOS basics

  • LOS data contains prices and availabilities at the same time.
  • For every possible checkin day you push the price for every possible length of stay (up to 62 nights) and occupancy (up to the max persons of the property).
  • To update a price or availability inside a LOS, you need to push the entire LOS object; updates for a single row are not possible.

How it works

  • The general concept is that each row in the LOS represents the availability and prices for one specific checkin day.
  • The LOS object contains the possible check-in days (format: "YYYY-MM-DD").
  • Each check-in day has an array of objects.
  • Check-in days for maximum 2 years can be pushed.
  • Every object contains the currency of prices, the maximum amount of guests for which the rates are applicable and the prices according to length of stay.

the length of stay object

ParameterTypeRequiredUsage
"los"objectYESObject of check in days
"los"."key"objectYESEach possible check in day is represented by an array of objects.
"los"."key"[i]."currency" stringYESChoose from the list of supported currency parameters.
"los"."key"[i]."guests"intYESThe number of guests for which the prices defined in this object are valid.
"los"."key"[i]."price"array of numbersYESEach row contains the price for the corresponding length of stay. When a row has value "0" this length of stay is not possible (for example, row 1 represents the length of stay of 1 night, row 7 represents the length of stay 7 nights)
"los"."key"[i]."price"[i]."number"numberPrice for the length of stay

Example

3 guests can check in on the 5th of May 2024 and stay from 4 to 7 nights, while 2 guests can stay for a minimum of 7 nights.

{
   "los": {
      "2024-05-01": [
         {
            "currency": "EUR",
            "guests": 2,
            "price": [
               0,   // Check-out not allowed on "2024-05-02"
               0,   // Check-out not allowed on "2024-05-03"
               0,   // Check-out not allowed on "2024-05-04"
               0,   // Check-out not allowed on "2024-05-05"
               0,   // Check-out not allowed on "2024-05-06"
               0,   // Check-out not allowed on "2024-05-07"
              900  // Check-out allowed on "2024-05-08"
              
            ]
         },
         {
            "currency": "EUR",
            "guests": 3,  // Extra guest added
            "price": [
               0,   // Check-out not allowed on "2024-05-02"
               0,   // Check-out not allowed on "2024-05-03"
               0,   // Check-out not allowed on "2024-05-04"
              600,  // Check-out allowed on "2024-05-05"
              700,  // Check-out allowed on "2024-05-06"
              800,  // Check-out allowed on "2024-05-07"
              900   // Check-out allowed on "2024-05-08"
            ]
         }
      ]
   }
}

You can also find the recipe for a simple LOS here:

LOS do not work together with availabilities

Be aware that if you choose LOS we will not consider data sent to the endpoints RATES and AVAILABILITIES. The LOS contains both.


Using rateId with LOS (Length of Stay)


a) Delete LOS for an apartment (DELETE /v2/los)
You can delete LOS for a specific rate by adding rateId in your DELETE request:

Example Request:

DELETE /v2/los?providerApartmentId=ABC123&rateId=NON_REFUNDABLE

Notes:

  • If rateId is provided, only LOS data for that specific rate will be deleted.
  • If rateId is omitted, the default/main LOS will be affected.

b) Get LOS for an apartment (GET /v2/los)
You can retrieve LOS for a specific rate by including rateId:

Example Request:

GET /v2/los?providerApartmentId=ABC123&rateId=NON_REFUNDABLE

Response:
You'll receive LOS data filtered for the given rateId.


c) Create or Update LOS for an apartment (POST /v2/los)
When creating or updating LOS, you can assign LOS entries to a specific rate by including rateId in the body:

Example Request Body:

{
  "rateId": "NON_REFUNDABLE",
  "los": {
    "2025-04-01": [
      {
        "currency": "EUR",
        "guests": 2,
        "price": [100, 200]
      }
    ],
    "2025-04-02": [
      {
        "currency": "EUR",
        "guests": 3,
        "price": [150]
      }
    ]
  }
}