Inventory Impact on Contacts: Riyadh Temporal Analysis
Date: 2026-01-15 Analysis Period: 2024-01-01 to 2026-01-15 Focus: Riyadh - Villa, Apartment, Big Flat, Land (Sale & Rent) Filter: Listings with ≥10 views/month only (excludes low-visibility listings)
Executive Summary
Section titled “Executive Summary”This analysis examines how inventory levels affect contact rates over time in Riyadh across four key property categories. By filtering to listings with meaningful visibility (≥10 views/month), we focus on active market participants.
Key Findings
Section titled “Key Findings”- Rental markets maintain stable contacts/listing despite inventory growth (30-140% YoY)
- Sales markets show severe contact dilution - contacts/listing dropped 40-68% YoY as inventory surged
- Land for Sale is the exception - inventory decreased 25-60% while contacts/listing shows mixed trends
- Correlation strengthens over time - negative correlation between inventory and contacts/listing became more pronounced in 2025, reaching -0.41 for Villa for Sale
Monthly Trends by Category
Section titled “Monthly Trends by Category”Apartment for Rent (الشقق للإيجار)
Section titled “Apartment for Rent (الشقق للإيجار)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 10,101 | 31.37 | 4.30% |
| Jun 2024 | 10,532 | 25.51 | 3.85% |
| Dec 2024 | 20,444 | 19.89 | 4.74% |
| Jun 2025 | 25,139 | 21.13 | 6.18% |
| Dec 2025 | 25,198 | 23.76 | 6.62% |
Trend: Inventory increased 149%, contacts/listing dropped 24%, but contact rate improved 54%.
Inventory Growth: ████████████████████████████████████████████████ +149%Contacts/Listing: ██████████ -24%Contact Rate: ██████████████████████████ +54%Apartment for Sale (الشقق للبيع)
Section titled “Apartment for Sale (الشقق للبيع)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 4,454 | 10.65 | 2.91% |
| Jun 2024 | 5,017 | 8.17 | 2.91% |
| Dec 2024 | 7,122 | 12.12 | 3.88% |
| Jun 2025 | 7,014 | 6.35 | 3.69% |
| Dec 2025 | 10,301 | 3.95 | 3.31% |
Trend: Inventory increased 131%, contacts/listing collapsed 63%. Classic supply glut.
Inventory Growth: ██████████████████████████████████████████ +131%Contacts/Listing: ████████████████████████ -63%Contact Rate: ████████████ +14%Villa for Rent (الفلل للإيجار)
Section titled “Villa for Rent (الفلل للإيجار)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 2,337 | 12.67 | 3.70% |
| Jun 2024 | 2,093 | 16.76 | 4.26% |
| Dec 2024 | 3,781 | 11.19 | 4.47% |
| Jun 2025 | 3,631 | 16.15 | 6.45% |
| Dec 2025 | 4,264 | 13.48 | 6.12% |
Trend: Inventory up 82%, contacts/listing stable (+6%). Healthy rental demand.
Inventory Growth: ██████████████████████████████ +82%Contacts/Listing: ██ +6%Contact Rate: ██████████████████████████████████ +65%Villa for Sale (الفلل للبيع)
Section titled “Villa for Sale (الفلل للبيع)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 15,907 | 7.47 | 2.46% |
| Jun 2024 | 13,849 | 7.70 | 2.66% |
| Dec 2024 | 17,062 | 9.44 | 3.06% |
| Jun 2025 | 10,903 | 7.93 | 2.75% |
| Dec 2025 | 17,763 | 5.05 | 2.86% |
Trend: Inventory fluctuated, ending +12%. Contacts/listing dropped 32%. Market saturation evident.
Inventory Growth: ████ +12%Contacts/Listing: ████████████ -32%Contact Rate: ██████████████ +16%Big Flat for Rent (الأدوار للإيجار)
Section titled “Big Flat for Rent (الأدوار للإيجار)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 1,502 | 22.48 | 3.45% |
| Jun 2024 | 1,287 | 24.65 | 3.63% |
| Dec 2024 | 2,316 | 16.79 | 4.06% |
| Jun 2025 | 2,490 | 27.22 | 6.10% |
| Dec 2025 | 3,068 | 20.30 | 5.65% |
Trend: Inventory doubled (+104%), contacts/listing stable (-10%). Strong demand resilience.
Inventory Growth: ████████████████████████████████████████ +104%Contacts/Listing: ████ -10%Contact Rate: ██████████████████████████████████ +64%Big Flat for Sale (الأدوار للبيع)
Section titled “Big Flat for Sale (الأدوار للبيع)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 2,970 | 7.93 | 3.49% |
| Jun 2024 | 3,827 | 6.03 | 3.39% |
| Dec 2024 | 6,421 | 8.42 | 4.22% |
| Jun 2025 | 6,298 | 4.84 | 4.29% |
| Dec 2025 | 9,695 | 2.69 | 3.37% |
Trend: Inventory up 226%, contacts/listing collapsed 66%. Severe oversupply crisis.
Inventory Growth: ████████████████████████████████████████████████████████ +226%Contacts/Listing: ████████████████████████ -66%Contact Rate: ██ -3%Land for Rent (الأراضي للإيجار)
Section titled “Land for Rent (الأراضي للإيجار)”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 449 | 7.46 | 4.33% |
| Jun 2024 | 485 | 5.46 | 4.31% |
| Dec 2024 | 584 | 6.80 | 5.38% |
| Jun 2025 | 548 | 7.32 | 7.17% |
| Dec 2025 | 693 | 6.84 | 7.55% |
Trend: Modest growth (+54%), contacts/listing stable (-8%). Niche market consistency.
Inventory Growth: ██████████████████████ +54%Contacts/Listing: ███ -8%Contact Rate: ██████████████████████████████ +74%Land for Sale (الأراضي للبيع) ⭐ Unique Pattern
Section titled “Land for Sale (الأراضي للبيع) ⭐ Unique Pattern”| Period | Inventory | Contacts/Listing | Contact Rate % |
|---|---|---|---|
| Jan 2024 | 13,768 | 6.25 | 4.22% |
| Jun 2024 | 10,030 | 6.97 | 4.28% |
| Dec 2024 | 9,710 | 8.98 | 4.46% |
| Jun 2025 | 6,477 | 6.88 | 4.64% |
| Dec 2025 | 8,598 | 6.77 | 5.32% |
Trend: Inventory contracted 38%, contacts/listing increased 8%. Supply reduction may reflect regulatory changes.
Inventory Change: ███████████████ -38%Contacts/Listing: ███ +8%Contact Rate: ██████████████████████████ +26%Year-over-Year Comparison (2024 vs 2025)
Section titled “Year-over-Year Comparison (2024 vs 2025)”Rental Categories - Resilient Demand
Section titled “Rental Categories - Resilient Demand”| Category | Inventory YoY Range | CPL YoY Range | Pattern |
|---|---|---|---|
| Apartment for Rent | +23% to +139% | —36% to +20% | Demand scaling |
| Villa for Rent | +13% to +74% | —10% to +21% | Healthy balance |
| Big Flat for Rent | +33% to +94% | —28% to +25% | Strong absorption |
| Land for Rent | +4% to +30% | —10% to +38% | Stable niche |
Pattern: Rental markets absorbed 50-100%+ inventory growth while maintaining contacts per listing within ±30%.
Sales Categories - Supply Glut Crisis
Section titled “Sales Categories - Supply Glut Crisis”| Category | Inventory YoY Range | CPL YoY Range | Pattern |
|---|---|---|---|
| Apartment for Sale | +11% to +56% | —67% to +60% | H2 collapse |
| Villa for Sale | —50% to +4% | —46% to +157% | Volatile, declining |
| Big Flat for Sale | +23% to +111% | —68% to +66% | Severe H2 dilution |
| Land for Sale | —59% to -11% | —29% to +136% | Contracting supply |
Pattern: Sales markets experienced dramatic contact dilution in H2 2025, with CPL dropping 40-68% YoY.
Quarterly Correlation Trends
Section titled “Quarterly Correlation Trends”The correlation between inventory and contacts/listing at the district level:
Apartment for Rent
Section titled “Apartment for Rent”| Quarter | Districts | Correlation | Avg Inventory | Avg CPL |
|---|---|---|---|---|
| Q1 2024 | 97 | —0.381 | 160 | 75.36 |
| Q2 2024 | 101 | —0.342 | 163 | 76.24 |
| Q3 2024 | 109 | —0.393 | 211 | 89.68 |
| Q4 2024 | 108 | —0.327 | 258 | 64.82 |
| Q1 2025 | 117 | —0.386 | 273 | 52.30 |
| Q2 2025 | 122 | —0.365 | 290 | 68.07 |
| Q3 2025 | 124 | —0.348 | 311 | 76.97 |
| Q4 2025 | 126 | —0.330 | 309 | 69.14 |
Insight: Consistent negative correlation (~-0.35). High-inventory districts reliably show lower CPL.
Villa for Sale
Section titled “Villa for Sale”| Quarter | Districts | Correlation | Avg Inventory | Avg CPL |
|---|---|---|---|---|
| Q1 2024 | 101 | —0.298 | 192 | 21.56 |
| Q2 2024 | 102 | —0.299 | 189 | 22.71 |
| Q3 2024 | 107 | —0.295 | 207 | 29.69 |
| Q4 2024 | 104 | —0.357 | 215 | 31.98 |
| Q1 2025 | 99 | —0.385 | 175 | 39.45 |
| Q2 2025 | 98 | —0.391 | 132 | 29.89 |
| Q3 2025 | 103 | -0.396 | 184 | 27.24 |
| Q4 2025 | 107 | -0.407 | 195 | 19.48 |
Insight: Correlation strengthened from -0.30 to -0.41 over the period. Competition intensified significantly.
Big Flat for Sale
Section titled “Big Flat for Sale”| Quarter | Districts | Correlation | Avg Inventory | Avg CPL |
|---|---|---|---|---|
| Q1 2024 | 40 | —0.364 | 88 | 34.76 |
| Q2 2024 | 41 | —0.377 | 111 | 27.20 |
| Q3 2024 | 48 | —0.384 | 134 | 39.97 |
| Q4 2024 | 50 | —0.286 | 150 | 35.60 |
| Q1 2025 | 56 | —0.384 | 130 | 40.89 |
| Q2 2025 | 56 | -0.394 | 121 | 25.82 |
| Q3 2025 | 72 | —0.331 | 127 | 28.77 |
| Q4 2025 | 75 | -0.394 | 139 | 15.58 |
Insight: Strong negative correlation throughout. CPL collapsed from 35 to 16 as market expanded.
Land for Sale
Section titled “Land for Sale”| Quarter | Districts | Correlation | Avg Inventory | Avg CPL |
|---|---|---|---|---|
| Q1 2024 | 110 | -0.007 | 153 | 15.03 |
| Q2 2024 | 106 | —0.117 | 131 | 18.40 |
| Q3 2024 | 110 | —0.041 | 146 | 21.36 |
| Q4 2024 | 108 | —0.228 | 134 | 21.84 |
| Q1 2025 | 106 | —0.139 | 103 | 26.30 |
| Q2 2025 | 91 | -0.265 | 86 | 26.22 |
| Q3 2025 | 108 | —0.180 | 92 | 26.01 |
| Q4 2025 | 107 | —0.182 | 98 | 18.94 |
Insight: Started with near-zero correlation, shifted moderately negative as supply contracted.
Key Insights & Implications
Section titled “Key Insights & Implications”1. Rental vs Sales Divergence
Section titled “1. Rental vs Sales Divergence”The rental market demonstrates network effects:
- More inventory → more seekers → stable per-listing engagement
- Contact rate improving (4.3% → 6.6% for apartments)
The sales market shows supply dilution:
- Fixed buyer pool spread across growing inventory
- Per-listing engagement dropping 40-68%
2. Seasonal Patterns
Section titled “2. Seasonal Patterns”| Season | Effect |
|---|---|
| August | Peak contacts - relocation season |
| February | Trough - lowest engagement |
| Q4 | Softening - end-of-year decline |
| Ramadan | Variable impact by category |
3. 2025 Sales Market Warning Signs
Section titled “3. 2025 Sales Market Warning Signs”The dramatic CPL drops signal:
- Oversupply crisis in apartments and big flats for sale
- Price adjustment pressure expected
- Promotion opportunity - SOV/Golden campaigns more valuable
4. Land Market Anomaly
Section titled “4. Land Market Anomaly”Unlike other categories, Land for Sale:
- Inventory decreased 38% (regulatory? consolidation?)
- CPL remained stable
- May indicate shift to institutional holdings
Market Health Summary
Section titled “Market Health Summary”| Category | Health | Inventory Δ | CPL Δ | Recommendation |
|---|---|---|---|---|
| Apartment for Rent | ✅ Strong | +149% | —24% | Expand in undersupplied districts |
| Villa for Rent | ✅ Healthy | +82% | +6% | Stable growth opportunity |
| Big Flat for Rent | ✅ Growing | +104% | —10% | Monitor for 2026 saturation |
| Land for Rent | ✅ Stable | +54% | —8% | Niche, maintain levels |
| Apartment for Sale | ⚠️ Oversupplied | +131% | —63% | Price pressure, promote |
| Villa for Sale | ⚠️ Saturated | +12% | —32% | Differentiation needed |
| Big Flat for Sale | 🔴 Crisis | +226% | —66% | Expect corrections |
| Land for Sale | 📊 Contracting | —38% | +8% | Monitor regulatory impact |
SQL Queries Used
Section titled “SQL Queries Used”Monthly Trends (Filtered for ≥10 views/month)
Section titled “Monthly Trends (Filtered for ≥10 views/month)”WITH monthly_listing_stats AS ( SELECT s.id AS listing_id, l.category AS category_id, l.district_id, toStartOfMonth (toDate (s.day_time)) AS MONTH, sum(s.views) AS monthly_views, sum(s.calls + s.whatsapp + s.msgs) AS monthly_contacts FROM sadb_stats_listings_stats s FINAL JOIN sadb_listings l FINAL ON s.id = l.id JOIN sadb_districts d FINAL ON l.district_id = d.district_id WHERE l._peerdb_is_deleted = 0 AND toDate (s.day_time) >= '2024-01-01' AND d.city_name = 'الرياض' GROUP BY s.id, l.category, l.district_id, MONTH HAVING monthly_views >= 10 -- Filter: minimum 10 views per month )SELECT c.name_en AS category, mls.month, count(DISTINCT mls.listing_id) AS inventory, sum(mls.monthly_contacts) AS total_contacts, sum(mls.monthly_views) AS total_views, round( sum(mls.monthly_contacts) / count(DISTINCT mls.listing_id), 2 ) AS contacts_per_listing, round( sum(mls.monthly_contacts) / nullIf(sum(mls.monthly_views), 0) * 100, 2 ) AS contact_rate_pctFROM monthly_listing_stats mls JOIN sadb_categories c FINAL ON mls.category_id = c.category_idWHERE c.name_en IN ( 'Villa for Sale', 'Villa for Rent', 'Apartment for Sale', 'Apartment for Rent', 'Big Flat for Sale', 'Big Flat for Rent', 'Land for Sale', 'Land for Rent' )GROUP BY c.name_en, mls.monthORDER BY category, MONTHQuarterly District Correlation (Filtered for ≥30 views/quarter)
Section titled “Quarterly District Correlation (Filtered for ≥30 views/quarter)”WITH quarterly_listing_stats AS ( SELECT s.id AS listing_id, l.category AS category_id, d.district_name, toStartOfQuarter (toDate (s.day_time)) AS quarter, sum(s.views) AS quarterly_views, sum(s.calls + s.whatsapp + s.msgs) AS quarterly_contacts FROM sadb_stats_listings_stats s FINAL JOIN sadb_listings l FINAL ON s.id = l.id JOIN sadb_districts d FINAL ON l.district_id = d.district_id WHERE l._peerdb_is_deleted = 0 AND toDate (s.day_time) >= '2024-01-01' AND d.city_name = 'الرياض' GROUP BY s.id, l.category, d.district_name, quarter HAVING quarterly_views >= 30 -- ~10 views/month * 3 months ), quarterly_district AS ( SELECT c.name_en AS category, qls.quarter, qls.district_name, count(DISTINCT qls.listing_id) AS inventory, sum(qls.quarterly_contacts) AS total_contacts FROM quarterly_listing_stats qls JOIN sadb_categories c FINAL ON qls.category_id = c.category_id WHERE c.name_en IN ( 'Villa for Sale', 'Villa for Rent', 'Apartment for Sale', 'Apartment for Rent', 'Big Flat for Sale', 'Big Flat for Rent', 'Land for Sale', 'Land for Rent' ) GROUP BY c.name_en, qls.quarter, qls.district_name HAVING inventory >= 10 )SELECT category, quarter, count(*) AS num_districts, round(corr(inventory, total_contacts / inventory), 3) AS corr_inv_contacts_per_listing, round(avg(inventory), 0) AS avg_inventory, round(avg(total_contacts / inventory), 2) AS avg_contacts_per_listingFROM quarterly_districtGROUP BY category, quarterHAVING num_districts >= 10ORDER BY category, quarterYear-over-Year Comparison (Filtered)
Section titled “Year-over-Year Comparison (Filtered)”WITH monthly_listing_stats AS ( SELECT s.id AS listing_id, l.category AS category_id, toMonth (toDate (s.day_time)) AS month_num, toYear (toDate (s.day_time)) AS YEAR, sum(s.views) AS monthly_views, sum(s.calls + s.whatsapp + s.msgs) AS monthly_contacts FROM sadb_stats_listings_stats s FINAL JOIN sadb_listings l FINAL ON s.id = l.id JOIN sadb_districts d FINAL ON l.district_id = d.district_id WHERE l._peerdb_is_deleted = 0 AND toDate (s.day_time) >= '2024-01-01' AND d.city_name = 'الرياض' GROUP BY s.id, l.category, month_num, YEAR HAVING monthly_views >= 10 ), monthly_agg AS ( SELECT c.name_en AS category, mls.month_num, mls.year, count(DISTINCT mls.listing_id) AS inventory, round( sum(mls.monthly_contacts) / count(DISTINCT mls.listing_id), 2 ) AS contacts_per_listing FROM monthly_listing_stats mls JOIN sadb_categories c FINAL ON mls.category_id = c.category_id WHERE c.name_en IN ( 'Villa for Sale', 'Villa for Rent', 'Apartment for Sale', 'Apartment for Rent', 'Big Flat for Sale', 'Big Flat for Rent', 'Land for Sale', 'Land for Rent' ) GROUP BY c.name_en, mls.month_num, mls.year )SELECT category, month_num, maxIf (inventory, YEAR = 2024) AS inventory_2024, maxIf (contacts_per_listing, YEAR = 2024) AS cpl_2024, maxIf (inventory, YEAR = 2025) AS inventory_2025, maxIf (contacts_per_listing, YEAR = 2025) AS cpl_2025, round( ( maxIf (inventory, YEAR = 2025) - maxIf (inventory, YEAR = 2024) ) / maxIf (inventory, YEAR = 2024) * 100, 1 ) AS inventory_yoy_pct, round( ( maxIf (contacts_per_listing, YEAR = 2025) - maxIf (contacts_per_listing, YEAR = 2024) ) / maxIf (contacts_per_listing, YEAR = 2024) * 100, 1 ) AS cpl_yoy_pctFROM monthly_aggWHERE YEAR IN (2024, 2025)GROUP BY category, month_numHAVING inventory_2024 > 0 AND inventory_2025 > 0ORDER BY category, month_num