Skip to content

Rent vs Booking Apartment User Overlap

Rent vs Booking Apartment User Overlap Analysis

Date: 2026-02-16 Analysis Period: Nov 17, 2025 – Feb 16, 2026 (limited by sadb_user_listing_event_logs retention) Data Source: sadb_user_listing_event_logs (logged-in user views only)

Executive Summary

This analysis examines the overlap between logged-in users who view Apartments for Rent (category 1, monthly rental listings) and Apartments for Booking (category 101, short-term bookable units). The goal is to understand whether these are distinct audiences or the same users exploring both options.

Key Findings

MetricValue
Apartment for Rent viewers701,882
Apartment for Booking viewers67,363
Overlap (viewed both)53,316
% of booking viewers who also view rent79.2%
% of rent viewers who also view bookings7.6%

The booking audience is largely a subset of the rent audience. Nearly 4 in 5 users who browse bookable apartments also browse traditional rental listings, while booking is a niche interest for rent viewers.

User Segments

SegmentUsers% of Total
Rent Only648,56690.6%
Both (Overlap)53,3167.4%
Booking Only14,0472.0%

Only ~14K users exclusively browse booking apartments without also looking at rental listings. The “booking-only” audience is very small.

Overlap by City

CityRent UsersBooking UsersOverlap% Booking→Rent% Rent→Booking
الرياض (Riyadh)410,98137,10027,50974.1%6.7%
جدة (Jeddah)133,69711,8487,58064.0%5.7%
الخبر (Khobar)68,2775,8923,04151.6%4.5%
الدمام (Dammam)79,4024,9483,47570.2%4.4%
المدينة المنورة (Madinah)31,5783,3781,76752.3%5.6%
بريدة (Buraydah)16,2592,5381,05141.4%6.5%
مكة المكرمة (Makkah)22,4991,75495754.6%4.3%
الطائف (Taif)9,1601,11145841.2%5.0%
ابها (Abha)11,84490449755.0%4.2%
الهفوف (Hofuf)13,87275253571.1%3.9%

Notable patterns:

  • Riyadh dominates booking demand with 55% of all booking viewers
  • Al Jubail has the highest overlap rate at 75.1% — suggesting booking supply doesn’t meet demand there
  • Buraydah and Taif have the lowest overlap (~41%) — indicating more distinct booking-focused audiences, likely driven by tourism/recreation

User Journey Direction

Among the 53,316 overlap users, which category did they explore first?

JourneyUsers%
Rent first → then Booking27,44051.5%
Same day16,48030.9%
Booking first → then Rent9,39617.6%

Over half of overlap users start with rental browsing and later discover bookings. This suggests bookings are a secondary consideration for most users — they come to Aqar for rentals and then explore short-term options.

Engagement Depth by Segment

MetricRent OnlyBothBooking Only
Users648,56653,31614,047
Avg views81.3170.132.7
Avg phone actions2.044.000.57
Avg WhatsApp actions3.356.290.72
Avg 30s+ sessions21.2742.638.80
% making any contact37.9%51.5%57.1%

Key observations:

  • Overlap users are power users — 2x the views, 2x the contact actions, and 2x the session depth vs rent-only users
  • Booking-only users have the highest contact rate (57.1%) but lowest absolute engagement — they tend to be purpose-driven with fewer but more targeted views
  • Overlap users are the most valuable segment with both high volume and high conversion

Engagement Patterns Among Overlap Users

PatternUsers%Avg Rent ViewsAvg Booking Views
Heavy Rent, Light Booking32,68261.3%118.52.6
Light Both13,99526.2%4.22.4
Heavy Both (10+ each)5,2009.8%170.226.3
Light Rent, Heavy Booking1,4392.7%4.121.9

61% of overlap users are primarily rental browsers who casually explore bookings (averaging just 2.6 booking views). Only ~10% are deeply engaged with both categories.

WeekRent ViewersBooking ViewersBooking as % of Rent
Nov 16, 2025117,2849,6018.2%
Nov 23138,48912,1628.8%
Nov 30144,13311,2817.8%
Dec 7138,8449,9007.1%
Dec 14139,5385,9874.3%
Dec 21148,4545,5913.8%
Dec 28144,6604,9933.5%
Jan 4, 2026142,7874,7203.3%
Jan 11145,4474,2072.9%
Jan 18155,5224,6493.0%
Jan 25150,4874,5153.0%
Feb 1147,4065,9994.1%
Feb 8143,4024,9533.5%

Notable: Booking viewership peaked in late November 2025 and declined through January — this could be seasonal (post-holiday travel demand) or related to supply changes.

Booking Conversion Rates by Segment

Note on booking status classification: CLOSED_NOT_PAID represents a booking attempt where payment was never completed. These are counted as attempted bookings, not actual bookings. Only CONFIRMED and COMPLETED are counted as actual bookings.

Full Funnel: View → Attempt → Booking

StageOverlapBooking Only
Booking listing viewers53,71314,114
Attempted booking (CLOSED_NOT_PAID)1,530 (2.85%)586 (4.15%)
Actual booking (CONFIRMED/COMPLETED)176 (0.33%)89 (0.63%)
Attempt → Booking conversion11.5%15.2%

Booking-only users convert at ~2x the rate at every stage of the funnel. They are 1.5x more likely to attempt a booking (4.15% vs 2.85%), and among those who attempt, they are 1.3x more likely to successfully complete payment (15.2% vs 11.5%).

Booking Attempts vs Actual Bookings

The vast majority of booking interactions are attempted bookings that fail at payment:

MetricTotalOverlapBooking OnlyOther*
Attempted bookings (CLOSED_NOT_PAID)2,722 users1,530 (56%)586 (22%)606 (22%)
Actual bookings (CONFIRMED/COMPLETED)332 users176 (53%)89 (27%)67 (20%)

*Other = users with rent-only views or no booking category views in event logs

For every user who successfully books, roughly 8 users attempt but fail at payment. This ratio is consistent across segments, making the payment funnel the single largest conversion bottleneck.

Conversion by City

CitySegmentViewersAttemptersBookers
الرياض (Riyadh)Overlap27,646865 (3.1%)127 (0.46%)
Booking Only9,651321 (3.3%)60 (0.62%)
جدة (Jeddah)Overlap7,608277 (3.6%)20 (0.26%)
Booking Only4,291109 (2.5%)15 (0.35%)
الدمام (Dammam)Overlap3,49189 (2.5%)2 (0.06%)
Booking Only1,47516 (1.1%)3 (0.20%)
المدينة المنورة (Madinah)Overlap1,77686 (4.8%)9 (0.51%)
Booking Only1,63548 (2.9%)4 (0.24%)
الخبر (Khobar)Overlap3,05484 (2.8%)8 (0.26%)
Booking Only2,87227 (0.9%)3 (0.10%)

Riyadh dominates with 70%+ of all booking attempts and completions. The booking-only advantage in actual booking rate is consistent in Riyadh (0.62% vs 0.46%) and Jeddah (0.35% vs 0.26%).

Implications

  1. Cross-sell opportunity is real but asymmetric — 79% of booking users already browse rentals, but only 7.6% of rental users explore bookings. There’s a large untapped pool of rental browsers who could be surfaced booking options.

  2. Overlap users are the most engaged and valuable — they view 2x more listings and make 2x more contacts. Identifying and nurturing this segment could drive significant engagement gains.

  3. Most overlap is casual — 61% of overlap users are heavy rental browsers who glance at bookings (avg 2.6 views). Better booking discovery within the rental journey could convert these casual explorers.

  4. Booking-only users are purpose-driven — small audience (14K) but highest contact rate (57.1%). These users know what they want and convert efficiently.

  5. City-level variation matters — tourism/recreation cities (Buraydah, Taif) have more distinct booking audiences, while business cities (Riyadh, Dammam) show higher overlap, suggesting different use cases.

  6. Booking-only users convert at 2x the rate — 0.63% vs 0.33% successful booking rate. They’re purpose-driven and more prepared to complete transactions.

  7. Payment failure is the #1 conversion blocker — for every successful booking, ~8 users attempt but fail at payment (CLOSED_NOT_PAID). Fixing the payment funnel would have a far greater impact on bookings than improving discovery or user targeting.

SQL Queries Used

User segment counts

SELECT
CASE
WHEN viewed_rent AND viewed_booking THEN 'Both'
WHEN viewed_rent THEN 'Rent Only'
ELSE 'Booking Only'
END as segment,
count() as users
FROM (
SELECT
user_id,
countIf(category = 1) > 0 as viewed_rent,
countIf(category = 101) > 0 as viewed_booking
FROM sadb_user_listing_event_logs
WHERE type = 'view'
AND category IN (1, 101)
AND toDate(createdAt) >= '2024-01-01'
AND user_id > 0
AND _peerdb_is_deleted = 0
GROUP BY user_id
)
GROUP BY segment

Per-city overlap

SELECT
city_name,
countIf(viewed_rent AND viewed_booking) as overlap_users,
countIf(viewed_rent) as total_rent_users,
countIf(viewed_booking) as total_booking_users,
round(countIf(viewed_rent AND viewed_booking) / countIf(viewed_booking) * 100, 1) as pct_booking_also_rent
FROM (
SELECT
e.user_id, e.city_id,
countIf(e.category = 1) > 0 as viewed_rent,
countIf(e.category = 101) > 0 as viewed_booking
FROM sadb_user_listing_event_logs e
WHERE e.type = 'view'
AND e.category IN (1, 101)
AND toDate(e.createdAt) >= '2024-01-01'
AND e.user_id > 0
AND e._peerdb_is_deleted = 0
GROUP BY e.user_id, e.city_id
) sub
JOIN (SELECT DISTINCT city_id, city_name FROM sadb_districts FINAL WHERE _peerdb_is_deleted = 0) cities
ON sub.city_id = cities.city_id
GROUP BY city_name
HAVING total_booking_users > 100
ORDER BY total_booking_users DESC

Booking conversion by segment

-- Attempted bookings = CLOSED_NOT_PAID (payment never completed)
-- Actual bookings = CONFIRMED or COMPLETED only
-- Step 1: classify bookers/attempters by their viewer segment
SELECT
CASE
WHEN viewed_rent AND viewed_booking THEN 'Overlap'
WHEN viewed_booking THEN 'Booking Only'
WHEN viewed_rent THEN 'Rent Only'
ELSE 'No booking category views'
END as segment,
count() as users
FROM (
SELECT
b.user_id,
countIf(e.category = 1 AND e.type = 'view') > 0 as viewed_rent,
countIf(e.category = 101 AND e.type = 'view') > 0 as viewed_booking
FROM (
SELECT DISTINCT user_id
FROM sadb_daily_renting_listing_bookings
WHERE _peerdb_is_deleted = 0
AND user_id > 0
AND status IN ('CONFIRMED', 'COMPLETED') -- or 'CLOSED_NOT_PAID' for attempts
AND toDate(createdAt) >= '2025-11-17'
) b
LEFT JOIN sadb_user_listing_event_logs e
ON b.user_id = e.user_id AND e._peerdb_is_deleted = 0
GROUP BY b.user_id
)
GROUP BY segment
-- Step 2: compute rates using viewer segment counts as denominators

Journey direction

SELECT
CASE
WHEN first_rent < first_booking THEN 'Rent first → Booking'
WHEN first_booking < first_rent THEN 'Booking first → Rent'
ELSE 'Same day'
END as journey_direction,
count() as users
FROM (
SELECT
user_id,
minIf(toDate(createdAt), category = 1) as first_rent,
minIf(toDate(createdAt), category = 101) as first_booking
FROM sadb_user_listing_event_logs
WHERE type = 'view'
AND category IN (1, 101)
AND toDate(createdAt) >= '2024-01-01'
AND user_id > 0
AND _peerdb_is_deleted = 0
GROUP BY user_id
HAVING countIf(category = 1) > 0 AND countIf(category = 101) > 0
)
GROUP BY journey_direction