Skip to content

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)

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.

  1. Rental markets maintain stable contacts/listing despite inventory growth (30-140% YoY)
  2. Sales markets show severe contact dilution - contacts/listing dropped 40-68% YoY as inventory surged
  3. Land for Sale is the exception - inventory decreased 25-60% while contacts/listing shows mixed trends
  4. Correlation strengthens over time - negative correlation between inventory and contacts/listing became more pronounced in 2025, reaching -0.41 for Villa for Sale

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%
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%

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%.

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.


The correlation between inventory and contacts/listing at the district level:

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.

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.

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.

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.


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%
Season Effect
August Peak contacts - relocation season
February Trough - lowest engagement
Q4 Softening - end-of-year decline
Ramadan Variable impact by category

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

Unlike other categories, Land for Sale:

  • Inventory decreased 38% (regulatory? consolidation?)
  • CPL remained stable
  • May indicate shift to institutional holdings

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

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_pct
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
ORDER BY
category,
MONTH

Quarterly 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_listing
FROM
quarterly_district
GROUP BY
category,
quarter
HAVING
num_districts >= 10
ORDER BY
category,
quarter
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_pct
FROM
monthly_agg
WHERE
YEAR IN (2024, 2025)
GROUP BY
category,
month_num
HAVING
inventory_2024 > 0
AND inventory_2025 > 0
ORDER BY
category,
month_num