Rakuten Travel

AltexSoft & Rakuten Travel: Building an Algorithm to Set the Best Early Booking Prices

Business domain
PythonData Science


Rakuten Travel is Japan's largest online booking platform with over 20,000 accommodation options nationwide. The client engaged AltexSoft to build an algorithm for revenue optimization at a small family hotel.


The goal of our algorithm was to help the hotel decide on starting room prices  — those established well in advance of the actual check-in. While building such a tool for informed decision-making, we faced the following challenges:   

Solve data scarcity

Filter out non-informative bookings

Compare prices of the family hotel against direct competitors

Leverage occupancy and prices to maximize revenue

Value Delivered

Finding direct competitors and processing their booking data

The family hotel in question had only a one-year history of bookings. To make relevant price predictions, we needed data for at least two or three years. So, we decided to fill this gap with information about direct competitors that sold their rooms via Rakuten Travel platform. From all accommodation options in the same area, we selected those with similar location, size, reservation options, and prices. Their booking histories were used to predict average market prices.

Selecting reservations based on booking lead times

Hotel prices are dynamic meaning they constantly change depending on demand. If a room is booked just a couple of weeks in advance, the price could differ drastically from the initial one. As our objective was to recommend early-booking prices, we discarded all reservations made within 20 (and if it was possible even 40) days before check-in. Longer booking lead times, or periods between reservation and stay, gave us a more relevant picture of starting rates.

Creating a price predictor for average market rates

Market rates for similar products are one of the most important factors to consider in revenue management. We processed historical data of direct competitors to build an algorithm that predicted average prices for each day of the year. We could compare those results with rates of the family hotel and use price differentials as an input for occupancy rate forecasting.

Training a price-elasticity model with the potential to increase revenue

To find the perfect rate-demand ratio, we created a price elasticity model that predicts occupancy given seasonality, holidays, day of the week, general market trends, and, most importantly, hotel prices and their difference from average rates set by competitors. This enables revenue managers to track how changes in price differentials impact the occupancy and tweak initial prices of the family hotel to maximize income.

Approach and Technical Info

The project’s scope was 2 man-months. It was completed by two Data Scientists. The technology stack of the project included pandas and scikit-learn libraries, Python (for the algorithm), XGBoost algorithms.
PythonData Science