Skip to content

Bookings Supply & Demand Dynamics 2025

Bookings Supply & Demand Dynamics 2025

Date: 2026-01-20 Analysis Period: January - December 2025 Data Sources: sadb_listings, sadb_daily_renting_listing_bookings, sadb_daily_renting_listing_register, sadb_user_listing_views


Executive Summary

This analysis examines the supply-demand dynamics of Aqar’s daily rental (bookings) marketplace throughout 2025, focusing on inventory growth, demand patterns, and market equilibrium.

Key Metrics (2025)

MetricValueTrend
Total Bookings22,052+76% vs H2 2024
Gross Merchandise ValueSAR 5.15M+103% vs 2024
Active Inventory (Dec)7,481 listings+39% from Jul
View-to-Booking Rate0.52% avgStable
Nights Booked (2025)263,787-

Market Health Indicators

IndicatorStatusAssessment
Supply GrowthStrong+39% inventory growth H2 2025
Demand GrowthStrongBookings peaked at 2,530 in September
Conversion RateImproving0.70% in December (best month)
Market BalanceRiyadh-heavy60% of bookings in one city

1. Supply Analysis

1.1 Inventory Growth

The bookings inventory grew significantly throughout 2025, with the availability register showing:

MonthActive ListingsAvailable NightsTotal RegisteredAvailability Rate
Jul 20255,39175,81689,54384.7%
Aug 20255,896145,138173,24083.8%
Sep 20256,366160,711184,34287.2%
Oct 20256,838176,695205,24786.1%
Nov 20257,129174,108209,90583.0%
Dec 20257,481191,446226,90584.4%

Growth Rate: +38.8% in active listings from July to December 2025

SELECT
toStartOfMonth (toDate (r.day_date)) AS MONTH,
count(DISTINCT r.listing_id) AS listings_in_inventory,
countIf (r.availability = 1) AS available_nights,
count(*) AS total_nights_registered,
round(
countIf (r.availability = 1) * 100.0 / count(*),
2
) AS availability_rate
FROM
sadb_daily_renting_listing_register r FINAL
WHERE
r._peerdb_is_deleted = 0
AND toYear (r.day_date) = 2025
GROUP BY
MONTH
ORDER BY
MONTH

1.2 New Listings by Category

MonthApartmentsStudiosChaletsVillasTentsFarms
Jan 2025514182582293
Feb 2025354129521160
Mar 2025371142124614
Apr 202535213068632
May 202533911858405
Jun 202538013661612
Jul 2025346150441142
Aug 20252768657231
Sep 202530210644952
Oct 2025312103401051
Nov 20251785633894
Dec 202520475484172

Key Finding: New supply slowed significantly in November (289 total) but recovered in December (352). Apartment and Studio categories dominate supply growth consistently.

1.3 Supply Retention

Not all new listings remain active. Here’s the survival rate:

Month CreatedNew ListingsStill ActiveRetention Rate
Jan 202578814318.1%
Feb 202555213825.0%
Mar 202564820431.5%
Apr 202556222339.7%
May 202552618334.8%
Jun 202558625844.0%
Jul 202555924443.6%
Aug 202542518643.8%
Sep 202546926055.4%
Oct 202547129863.3%
Nov 202528917761.2%
Dec 202535223165.6%

Key Finding: Retention improves for newer listings (natural decay). Early 2025 cohorts show ~25-40% retention after 6+ months.

1.4 YoY Supply Comparison

Period2024 New Listings2025 New ListingsYoY Change
Q11,1251,988+76.7%
Q22,5341,674-34.0%
Q33,1991,453-54.6%
Q42,1261,112-47.7%

Key Finding: 2025 saw a significant slowdown in new supply compared to 2024’s rapid growth phase. This suggests market maturation or saturation in key areas.


2. Demand Analysis

MonthTotal BookingsCompletedCanceledCancel RateGMV (SAR)Avg Value
Jan1,021181727.1%288,761283
Feb1,385190554.0%406,618294
Mar2,0761751075.2%309,869149
Apr1,673208835.0%470,556281
May1,711215643.7%429,145251
Jun1,612178523.2%466,640289
Jul2,352242843.6%541,447230
Aug2,246223693.1%404,828180
Sep2,530164481.9%330,478131
Oct1,606162583.6%350,730218
Nov2,3452442109.0%817,301349
Dec1,495145583.9%337,853226

Seasonality Patterns:

  • Peak Months: July (2,352), September (2,530), November (2,345)
  • Trough Months: January (1,021), December (1,495)
  • Best GMV Month: November (SAR 817K) - likely driven by National Day events

2.2 Stay Duration Analysis (Nights Booked)

MonthBookingsTotal NightsUnique ListingsAvg Stay
Jan1,1238,3926267.5
Feb1,18312,05459510.2
Mar1,81017,4708259.7
Apr1,72019,73383611.5
May1,46518,33378312.5
Jun1,62820,53786412.6
Jul2,21327,1871,06612.3
Aug2,25626,1841,07311.6
Sep2,14237,7391,04817.6
Oct1,86034,4441,00218.5
Nov2,10122,7511,10110.8
Dec1,46518,96385212.9

Key Finding: September and October have the longest average stays (17-18 nights), suggesting corporate/relocation demand in these months.

2.3 Booking Category Performance

CategoryBookingsCompletedGMV (SAR)Avg ValueAvg Stay
Apartment13,2311,4023,890,34829414.8 nights
Studio5,169694929,13218013.0 nights
Chalet3,172197226,279712.3 nights
Villa3211590,34528110.7 nights
Tent1281512,107951.8 nights
Farm2846,0162152.1 nights

Key Finding: Apartments and Studios dominate with 84% of bookings and 93% of GMV. Chalets have high volume but very short stays (weekend use case).


3. Supply-Demand Balance

3.1 Views-to-Booking Funnel

MonthViewsBookingsConversionListings ViewedListings Booked
Jan228,2461,0210.45%3,894537
Feb281,0241,3850.49%3,229655
Mar316,5252,0760.66%3,535837
Apr346,8261,6730.48%3,687819
May360,3511,7110.47%3,782855
Jun391,3901,6120.41%3,977860
Jul461,3962,3520.51%4,2721,085
Aug466,9822,2460.48%4,3331,073
Sep369,5212,5300.68%4,3001,130
Oct345,7531,6060.46%4,424902
Nov362,2292,3450.65%4,5071,173
Dec213,8401,4950.70%4,387834

Key Finding: December achieved the highest conversion rate (0.70%) despite lowest views, indicating more qualified traffic during holiday season.

WITH
monthly_views AS (
SELECT
toStartOfMonth (toDate (v.createdAt)) AS MONTH,
count(*) AS views,
count(DISTINCT v.listing_id) AS listings_viewed
FROM
sadb_user_listing_views v FINAL
JOIN sadb_listings l FINAL ON v.listing_id = l.id
WHERE
l.daily_rentable = 1
AND v._peerdb_is_deleted = 0
AND l._peerdb_is_deleted = 0
AND toYear (v.createdAt) = 2025
GROUP BY
MONTH
),
monthly_bookings AS (
SELECT
toStartOfMonth (toDate (b.createdAt)) AS MONTH,
count(*) AS bookings,
count(DISTINCT b.listing_id) AS listings_booked,
round(sum(b.total_amount), 0) AS gmv
FROM
sadb_daily_renting_listing_bookings b FINAL
WHERE
b._peerdb_is_deleted = 0
AND toYear (b.createdAt) = 2025
GROUP BY
MONTH
)
SELECT
v.month,
v.views,
b.bookings,
round(b.bookings * 100.0 / v.views, 2) AS view_to_booking_rate,
b.gmv
FROM
monthly_views v
JOIN monthly_bookings b ON v.month = b.month
ORDER BY
v.month

3.2 City-Level Supply-Demand

CityActive ListingsBookingsGMV (SAR)Booked ListingsUtilizationBookings/Listing
Riyadh2,02413,3114,032,3542,559126.4%6.6
Jeddah5963,665524,557692116.1%6.1
Khobar126812117,761166131.7%6.4
Dammam110812116,846139126.4%7.4
Madinah101661116,038148146.5%6.5
Abha8049459,76884105.0%6.2
Taif10047347,089100100.0%4.7
Diriyah1813238,94925138.9%7.3
Buraydah3836235,79871186.8%9.5
Bahah20909,03020100.0%4.5

Key Findings:

  • Riyadh dominates: 60% of all bookings, 78% of GMV
  • Undersupplied markets: Buraydah (9.5 bookings/listing), Dammam (7.4), Diriyah (7.3)
  • Oversupplied markets: Taif (4.7), Bahah (4.5)

Note: Utilization >100% means bookings came from listings that have since become inactive.

3.3 Pricing by Category

CategoryAvg Daily PriceMedian PriceP25P75
HallSAR 5,447SAR 9,358SAR 66SAR 9,358
FarmSAR 4,122SAR 1,101SAR 771SAR 2,202
VillaSAR 3,509SAR 1,046SAR 720SAR 1,651
ChaletSAR 2,031SAR 840SAR 550SAR 1,320
ApartmentSAR 1,058SAR 371SAR 275SAR 550
StudioSAR 956SAR 275SAR 210SAR 330
TentSAR 910SAR 716SAR 440SAR 1,101

4. User Behavior Patterns

4.1 Repeat Booker Analysis

Booking FrequencyUsers% of Users
1 booking9,30371.2%
2 bookings2,07115.8%
3-5 bookings1,33810.2%
6+ bookings3582.7%

Key Finding: 28.8% of users are repeat bookers, indicating moderate retention. Power users (6+ bookings) represent high-value segment to nurture.

4.2 Weekend vs Weekday Patterns

Start Day TypeBookingsAvg ValueAvg Stay
Weekday Start14,493SAR 23213.2 nights
Weekend Start (Thu-Fri)6,599SAR 20811.9 nights

Key Finding: Weekday bookings have higher value (+12%) and longer stays, indicating business/relocation use cases. Weekend bookings are leisure-focused.

4.3 Cancellation Patterns

MonthCancel RateCanceled by HostCanceled by Guest
Jan7.1%--
Feb4.0%--
Mar5.2%--
Apr5.0%--
May3.7%--
Jun3.2%--
Jul3.6%--
Aug3.1%--
Sep1.9%--
Oct3.6%--
Nov9.0%--
Dec3.9%--

Key Finding: November had an unusually high cancellation rate (9.0%), likely due to National Day booking conflicts or speculative bookings.


5. Key Insights & Recommendations

Supply Side

  1. Inventory growth is healthy (+39% H2 2025), but new listing creation slowed vs 2024
  2. Retention needs work - only 25-40% of listings remain active after 6 months
  3. Geographic concentration risk - Riyadh has 60%+ of activity

Demand Side

  1. Clear seasonality - Summer (Jul-Aug) and late autumn (Nov) are peak periods
  2. Long-stay segment is growing - September/October saw 17-18 night average stays
  3. Conversion improving - December hit 0.70% view-to-booking rate

Market Balance

  1. Undersupplied cities: Buraydah, Dammam, Diriyah need more inventory
  2. Oversupplied cities: Taif, Bahah may have excess capacity
  3. Riyadh is critical - 78% of GMV, must maintain supply quality
PriorityActionRationale
HighAcquire supply in Buraydah9.5 bookings/listing indicates unmet demand
HighImprove listing retention25-40% survival rate leaves value on table
MediumDiversify outside Riyadh78% GMV concentration is business risk
MediumTarget long-stay segmentSep/Oct shows corporate relocation demand
LowInvestigate November cancellations9% cancel rate is 3x normal

Appendix: SQL Queries

Monthly Supply Growth

SELECT
toStartOfMonth (toDate (FROM_UNIXTIME (l.create_time))) AS created_month,
c.name_en AS category,
count(DISTINCT l.id) AS new_listings,
countIf (
l.status IN (0, 4)
AND l.published = 1
AND l.hidden = 0
) AS still_active
FROM
sadb_listings l FINAL
JOIN sadb_categories c FINAL ON l.category = c.category_id
WHERE
l.daily_rentable = 1
AND l._peerdb_is_deleted = 0
AND toYear (FROM_UNIXTIME (l.create_time)) = 2025
GROUP BY
created_month,
c.name_en
ORDER BY
created_month,
new_listings DESC

City Supply-Demand Balance

WITH
supply AS (
SELECT
d.city_name,
count(DISTINCT l.id) AS total_listings,
countIf (
l.status IN (0, 4)
AND l.published = 1
AND l.hidden = 0
) AS active_listings
FROM
sadb_listings l FINAL
JOIN sadb_districts d FINAL ON l.district_id = d.district_id
WHERE
l.daily_rentable = 1
AND l._peerdb_is_deleted = 0
GROUP BY
d.city_name
),
demand AS (
SELECT
d.city_name,
count(*) AS total_bookings,
round(sum(b.total_amount), 0) AS gmv,
count(DISTINCT b.listing_id) AS listings_with_bookings
FROM
sadb_daily_renting_listing_bookings b FINAL
JOIN sadb_listings l FINAL ON b.listing_id = l.id
JOIN sadb_districts d FINAL ON l.district_id = d.district_id
WHERE
b._peerdb_is_deleted = 0
AND l._peerdb_is_deleted = 0
AND toYear (b.createdAt) = 2025
GROUP BY
d.city_name
)
SELECT
s.city_name,
s.active_listings,
COALESCE(d.total_bookings, 0) AS total_bookings,
COALESCE(d.gmv, 0) AS total_gmv,
round(
COALESCE(d.total_bookings, 0) * 1.0 / s.active_listings,
1
) AS bookings_per_listing
FROM
supply s
LEFT JOIN demand d ON s.city_name = d.city_name
WHERE
s.active_listings > 10
ORDER BY
total_gmv DESC