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)
| Metric | Value | Trend |
|---|---|---|
| Total Bookings | 22,052 | +76% vs H2 2024 |
| Gross Merchandise Value | SAR 5.15M | +103% vs 2024 |
| Active Inventory (Dec) | 7,481 listings | +39% from Jul |
| View-to-Booking Rate | 0.52% avg | Stable |
| Nights Booked (2025) | 263,787 | - |
Market Health Indicators
| Indicator | Status | Assessment |
|---|---|---|
| Supply Growth | Strong | +39% inventory growth H2 2025 |
| Demand Growth | Strong | Bookings peaked at 2,530 in September |
| Conversion Rate | Improving | 0.70% in December (best month) |
| Market Balance | Riyadh-heavy | 60% of bookings in one city |
1. Supply Analysis
1.1 Inventory Growth
The bookings inventory grew significantly throughout 2025, with the availability register showing:
| Month | Active Listings | Available Nights | Total Registered | Availability Rate |
|---|---|---|---|---|
| Jul 2025 | 5,391 | 75,816 | 89,543 | 84.7% |
| Aug 2025 | 5,896 | 145,138 | 173,240 | 83.8% |
| Sep 2025 | 6,366 | 160,711 | 184,342 | 87.2% |
| Oct 2025 | 6,838 | 176,695 | 205,247 | 86.1% |
| Nov 2025 | 7,129 | 174,108 | 209,905 | 83.0% |
| Dec 2025 | 7,481 | 191,446 | 226,905 | 84.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_rateFROM sadb_daily_renting_listing_register r FINALWHERE r._peerdb_is_deleted = 0 AND toYear (r.day_date) = 2025GROUP BY MONTHORDER BY MONTH1.2 New Listings by Category
| Month | Apartments | Studios | Chalets | Villas | Tents | Farms |
|---|---|---|---|---|---|---|
| Jan 2025 | 514 | 182 | 58 | 22 | 9 | 3 |
| Feb 2025 | 354 | 129 | 52 | 11 | 6 | 0 |
| Mar 2025 | 371 | 142 | 124 | 6 | 1 | 4 |
| Apr 2025 | 352 | 130 | 68 | 6 | 3 | 2 |
| May 2025 | 339 | 118 | 58 | 4 | 0 | 5 |
| Jun 2025 | 380 | 136 | 61 | 6 | 1 | 2 |
| Jul 2025 | 346 | 150 | 44 | 11 | 4 | 2 |
| Aug 2025 | 276 | 86 | 57 | 2 | 3 | 1 |
| Sep 2025 | 302 | 106 | 44 | 9 | 5 | 2 |
| Oct 2025 | 312 | 103 | 40 | 10 | 5 | 1 |
| Nov 2025 | 178 | 56 | 33 | 8 | 9 | 4 |
| Dec 2025 | 204 | 75 | 48 | 4 | 17 | 2 |
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 Created | New Listings | Still Active | Retention Rate |
|---|---|---|---|
| Jan 2025 | 788 | 143 | 18.1% |
| Feb 2025 | 552 | 138 | 25.0% |
| Mar 2025 | 648 | 204 | 31.5% |
| Apr 2025 | 562 | 223 | 39.7% |
| May 2025 | 526 | 183 | 34.8% |
| Jun 2025 | 586 | 258 | 44.0% |
| Jul 2025 | 559 | 244 | 43.6% |
| Aug 2025 | 425 | 186 | 43.8% |
| Sep 2025 | 469 | 260 | 55.4% |
| Oct 2025 | 471 | 298 | 63.3% |
| Nov 2025 | 289 | 177 | 61.2% |
| Dec 2025 | 352 | 231 | 65.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
| Period | 2024 New Listings | 2025 New Listings | YoY Change |
|---|---|---|---|
| Q1 | 1,125 | 1,988 | +76.7% |
| Q2 | 2,534 | 1,674 | -34.0% |
| Q3 | 3,199 | 1,453 | -54.6% |
| Q4 | 2,126 | 1,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
2.1 Monthly Booking Trends
| Month | Total Bookings | Completed | Canceled | Cancel Rate | GMV (SAR) | Avg Value |
|---|---|---|---|---|---|---|
| Jan | 1,021 | 181 | 72 | 7.1% | 288,761 | 283 |
| Feb | 1,385 | 190 | 55 | 4.0% | 406,618 | 294 |
| Mar | 2,076 | 175 | 107 | 5.2% | 309,869 | 149 |
| Apr | 1,673 | 208 | 83 | 5.0% | 470,556 | 281 |
| May | 1,711 | 215 | 64 | 3.7% | 429,145 | 251 |
| Jun | 1,612 | 178 | 52 | 3.2% | 466,640 | 289 |
| Jul | 2,352 | 242 | 84 | 3.6% | 541,447 | 230 |
| Aug | 2,246 | 223 | 69 | 3.1% | 404,828 | 180 |
| Sep | 2,530 | 164 | 48 | 1.9% | 330,478 | 131 |
| Oct | 1,606 | 162 | 58 | 3.6% | 350,730 | 218 |
| Nov | 2,345 | 244 | 210 | 9.0% | 817,301 | 349 |
| Dec | 1,495 | 145 | 58 | 3.9% | 337,853 | 226 |
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)
| Month | Bookings | Total Nights | Unique Listings | Avg Stay |
|---|---|---|---|---|
| Jan | 1,123 | 8,392 | 626 | 7.5 |
| Feb | 1,183 | 12,054 | 595 | 10.2 |
| Mar | 1,810 | 17,470 | 825 | 9.7 |
| Apr | 1,720 | 19,733 | 836 | 11.5 |
| May | 1,465 | 18,333 | 783 | 12.5 |
| Jun | 1,628 | 20,537 | 864 | 12.6 |
| Jul | 2,213 | 27,187 | 1,066 | 12.3 |
| Aug | 2,256 | 26,184 | 1,073 | 11.6 |
| Sep | 2,142 | 37,739 | 1,048 | 17.6 |
| Oct | 1,860 | 34,444 | 1,002 | 18.5 |
| Nov | 2,101 | 22,751 | 1,101 | 10.8 |
| Dec | 1,465 | 18,963 | 852 | 12.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
| Category | Bookings | Completed | GMV (SAR) | Avg Value | Avg Stay |
|---|---|---|---|---|---|
| Apartment | 13,231 | 1,402 | 3,890,348 | 294 | 14.8 nights |
| Studio | 5,169 | 694 | 929,132 | 180 | 13.0 nights |
| Chalet | 3,172 | 197 | 226,279 | 71 | 2.3 nights |
| Villa | 321 | 15 | 90,345 | 281 | 10.7 nights |
| Tent | 128 | 15 | 12,107 | 95 | 1.8 nights |
| Farm | 28 | 4 | 6,016 | 215 | 2.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
| Month | Views | Bookings | Conversion | Listings Viewed | Listings Booked |
|---|---|---|---|---|---|
| Jan | 228,246 | 1,021 | 0.45% | 3,894 | 537 |
| Feb | 281,024 | 1,385 | 0.49% | 3,229 | 655 |
| Mar | 316,525 | 2,076 | 0.66% | 3,535 | 837 |
| Apr | 346,826 | 1,673 | 0.48% | 3,687 | 819 |
| May | 360,351 | 1,711 | 0.47% | 3,782 | 855 |
| Jun | 391,390 | 1,612 | 0.41% | 3,977 | 860 |
| Jul | 461,396 | 2,352 | 0.51% | 4,272 | 1,085 |
| Aug | 466,982 | 2,246 | 0.48% | 4,333 | 1,073 |
| Sep | 369,521 | 2,530 | 0.68% | 4,300 | 1,130 |
| Oct | 345,753 | 1,606 | 0.46% | 4,424 | 902 |
| Nov | 362,229 | 2,345 | 0.65% | 4,507 | 1,173 |
| Dec | 213,840 | 1,495 | 0.70% | 4,387 | 834 |
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.gmvFROM monthly_views v JOIN monthly_bookings b ON v.month = b.monthORDER BY v.month3.2 City-Level Supply-Demand
| City | Active Listings | Bookings | GMV (SAR) | Booked Listings | Utilization | Bookings/Listing |
|---|---|---|---|---|---|---|
| Riyadh | 2,024 | 13,311 | 4,032,354 | 2,559 | 126.4% | 6.6 |
| Jeddah | 596 | 3,665 | 524,557 | 692 | 116.1% | 6.1 |
| Khobar | 126 | 812 | 117,761 | 166 | 131.7% | 6.4 |
| Dammam | 110 | 812 | 116,846 | 139 | 126.4% | 7.4 |
| Madinah | 101 | 661 | 116,038 | 148 | 146.5% | 6.5 |
| Abha | 80 | 494 | 59,768 | 84 | 105.0% | 6.2 |
| Taif | 100 | 473 | 47,089 | 100 | 100.0% | 4.7 |
| Diriyah | 18 | 132 | 38,949 | 25 | 138.9% | 7.3 |
| Buraydah | 38 | 362 | 35,798 | 71 | 186.8% | 9.5 |
| Bahah | 20 | 90 | 9,030 | 20 | 100.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
| Category | Avg Daily Price | Median Price | P25 | P75 |
|---|---|---|---|---|
| Hall | SAR 5,447 | SAR 9,358 | SAR 66 | SAR 9,358 |
| Farm | SAR 4,122 | SAR 1,101 | SAR 771 | SAR 2,202 |
| Villa | SAR 3,509 | SAR 1,046 | SAR 720 | SAR 1,651 |
| Chalet | SAR 2,031 | SAR 840 | SAR 550 | SAR 1,320 |
| Apartment | SAR 1,058 | SAR 371 | SAR 275 | SAR 550 |
| Studio | SAR 956 | SAR 275 | SAR 210 | SAR 330 |
| Tent | SAR 910 | SAR 716 | SAR 440 | SAR 1,101 |
4. User Behavior Patterns
4.1 Repeat Booker Analysis
| Booking Frequency | Users | % of Users |
|---|---|---|
| 1 booking | 9,303 | 71.2% |
| 2 bookings | 2,071 | 15.8% |
| 3-5 bookings | 1,338 | 10.2% |
| 6+ bookings | 358 | 2.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 Type | Bookings | Avg Value | Avg Stay |
|---|---|---|---|
| Weekday Start | 14,493 | SAR 232 | 13.2 nights |
| Weekend Start (Thu-Fri) | 6,599 | SAR 208 | 11.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
| Month | Cancel Rate | Canceled by Host | Canceled by Guest |
|---|---|---|---|
| Jan | 7.1% | - | - |
| Feb | 4.0% | - | - |
| Mar | 5.2% | - | - |
| Apr | 5.0% | - | - |
| May | 3.7% | - | - |
| Jun | 3.2% | - | - |
| Jul | 3.6% | - | - |
| Aug | 3.1% | - | - |
| Sep | 1.9% | - | - |
| Oct | 3.6% | - | - |
| Nov | 9.0% | - | - |
| Dec | 3.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
- Inventory growth is healthy (+39% H2 2025), but new listing creation slowed vs 2024
- Retention needs work - only 25-40% of listings remain active after 6 months
- Geographic concentration risk - Riyadh has 60%+ of activity
Demand Side
- Clear seasonality - Summer (Jul-Aug) and late autumn (Nov) are peak periods
- Long-stay segment is growing - September/October saw 17-18 night average stays
- Conversion improving - December hit 0.70% view-to-booking rate
Market Balance
- Undersupplied cities: Buraydah, Dammam, Diriyah need more inventory
- Oversupplied cities: Taif, Bahah may have excess capacity
- Riyadh is critical - 78% of GMV, must maintain supply quality
Recommended Actions
| Priority | Action | Rationale |
|---|---|---|
| High | Acquire supply in Buraydah | 9.5 bookings/listing indicates unmet demand |
| High | Improve listing retention | 25-40% survival rate leaves value on table |
| Medium | Diversify outside Riyadh | 78% GMV concentration is business risk |
| Medium | Target long-stay segment | Sep/Oct shows corporate relocation demand |
| Low | Investigate November cancellations | 9% 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_activeFROM sadb_listings l FINAL JOIN sadb_categories c FINAL ON l.category = c.category_idWHERE l.daily_rentable = 1 AND l._peerdb_is_deleted = 0 AND toYear (FROM_UNIXTIME (l.create_time)) = 2025GROUP BY created_month, c.name_enORDER BY created_month, new_listings DESCCity 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_listingFROM supply s LEFT JOIN demand d ON s.city_name = d.city_nameWHERE s.active_listings > 10ORDER BY total_gmv DESC