Skip to content

JLT Property Transaction Data: Sales & Rental History (Jumeirah Lake Towers)

BayutAPI Team · · Updated October 26, 2026

Jumeirah Lake Towers (JLT) is one of Dubai’s most-traded apartment communities — a dense cluster of towers around four artificial lakes, popular with both end-users and buy-to-let investors. That activity makes JLT a perfect candidate for transaction-data analysis: enough volume to produce reliable medians, and a wide enough quality range to make price-per-square-foot trends meaningful.

This post shows how to pull registered JLT property transaction data — actual agreed prices, not asking prices — through the BayutAPI transactions endpoint, and how to turn it into the metrics analysts and investors care about. It is a community-level deep dive built on the approach in our Dubai real estate transaction data pillar.

Updated 26 October 2026. All figures now come from the complete transaction dataset and cover homes only (apartments, villas, townhouses, penthouses, hotel apartments). The June edition included JLT’s office contracts and a smaller sample, so its headline median (AED 110,000/year) was too high. This edition also adds registered sale prices and gross yields.

JLT rental transaction data (last 12 months)

The figures below are computed from registered residential rental (Ejari) contracts in Jumeirah Lake Towers with start dates between 23 October 2025 and 22 October 2026 — the same registered records Bayut surfaces, delivered as JSON. They are real signed rents, not advertised asking prices. We analysed 9,033 contracts for this snapshot.

  • Median annual rent: AED 85,000/year (AED 7,083/month)
  • Middle 50% (25th–75th percentile): AED 68,000–115,000/year
  • Median rent per sqft: AED 100.8/sqft/year — this is annual rent per square foot, not a sale price
  • Median home size: 866 sqft
  • Change vs the previous 12 months: 0.0% (median unchanged on 8,637 contracts)

A clear way to read rent per sqft: at AED 100.8/sqft/year, an 866 sqft unit pencils out close to the AED 85,000/year median. The middle-50% band of AED 68,000–115,000 reflects JLT’s spread — older, lake-facing, and newer towers price differently for the same bedroom count. Renewals made up 48% of contracts (4,322 renewals, 4,711 new leases), so JLT turns over more tenants than the citywide average of 62% renewals.

JLT rent by bedroom

Bedroom count is the strongest driver of rent within a single community. These are median annual rents from the same 12-month window:

BedroomsMedian annual rentApprox. monthlyContracts
StudioAED 58,000/yearAED 4,833/month1,763
1 bedAED 80,000/yearAED 6,667/month4,322
2 bedAED 120,000/yearAED 10,000/month2,262
3 bedAED 145,000/yearAED 12,083/month514
4+ bedAED 247,308/yearAED 20,609/month46

One-bedroom apartments are almost half of JLT’s lettings, which is why the overall median (AED 85,000/year) sits just above the 1-bed figure. Apartments are effectively the whole market here — the registered median for apartments matches the overall AED 85,000/year. The 4+ bedroom figure rests on only 46 contracts, so treat it as indicative. For deeper context on how these rents fit the wider city, see the Dubai rental market report 2026.

JLT sale prices and rental yield

The same endpoint returns for-sale transactions (purpose=for-sale). Over the same 12 months, 1,595 homes sold in JLT:

  • Median sale price: AED 1,510,000 (middle 50%: AED 1,045,440–2,300,000)
  • Median sale price per sqft: AED 1,667/sqft
  • Off-plan share: 28% of sales were first sales of new units; 72% were resales
BedroomsMedian sale priceSales
StudioAED 838,200374
1 bedAED 1,350,000658
2 bedAED 2,450,000431
3 bedAED 3,425,000115

Setting rents against ready resales of apartments with the same bedroom count gives the gross yield. Off-plan sales are left out because those units cannot be let yet:

BedroomsMedian rentMedian resale priceGross yield
StudioAED 58,000/yearAED 749,0427.7%
1 bedAED 80,000/yearAED 1,225,0006.5%
2 bedAED 120,000/yearAED 2,125,0005.6%
3 bedAED 145,000/yearAED 2,500,0005.8%

Studios return the most per dirham invested (7.7% gross), and JLT’s 1-bed yield of 6.5% is higher than Dubai Marina’s (5.8%) across the water. Gross yield is before service charges, maintenance, vacancy and fees. The 3-bed row rests on 82 resales. Do not mix annual rent per sqft (AED 100.8) with sale price per sqft (AED 1,667) — they measure different things.

Step 1: Get the JLT Location ID

The transactions endpoint filters by area using a location_ids value. Look it up once with the autocomplete endpoint:

curl --request GET \
  --url 'https://uae-real-estate3.p.rapidapi.com/autocomplete?query=jumeirah%20lake%20towers' \
  --header 'x-rapidapi-host: uae-real-estate3.p.rapidapi.com' \
  --header 'x-rapidapi-key: YOUR_API_KEY'

The response returns location suggestions with their external IDs. Grab the ID for Jumeirah Lake Towers and reuse it — it does not change.

Step 2: Pull JLT Transactions

With the location ID in hand, request recent transactions for apartments in JLT. Set purpose to for-rent for registered rents (the data behind the medians above) or for-sale for registered sale prices:

import requests

URL = "https://uae-real-estate3.p.rapidapi.com/transactions"
HEADERS = {
    "x-rapidapi-host": "uae-real-estate3.p.rapidapi.com",
    "x-rapidapi-key": "YOUR_API_KEY",
}
JLT_ID = "5152"  # from autocomplete

def fetch_transactions(purpose: str, max_pages: int = 10, **extra) -> list[dict]:
    """Collect JLT apartment transactions across multiple pages."""
    out, page = [], 1
    while page <= max_pages:
        resp = requests.get(URL, headers=HEADERS, params={
            "purpose": purpose,
            "location_ids": JLT_ID,
            "category_ids": "apartments",
            "time_period": "12m",
            "sort_by": "date_desc",
            "page": str(page),
            **extra,  # e.g. beds="2", price_max="115000"
        })
        resp.raise_for_status()
        hits = resp.json().get("data", {}).get("hits", [])
        if not hits:
            break
        out.extend(hits)
        page += 1
    return out

rents = fetch_transactions("for-rent")
print(f"Collected {len(rents)} JLT rental transactions")

Step 3: Compute the Rent Distribution

The median and percentile spread are the headline metrics for a rental community like JLT, because they normalize across unit quality. Run over the full 12 months, this reproduces the AED 85,000/year median and the AED 68,000–115,000 middle-50% band:

from statistics import median

def rent_summary(transactions: list[dict]) -> dict:
    rents = sorted(
        tx["price"] for tx in transactions
        if tx.get("price")
    )
    rpsf = sorted(
        tx["price"] / tx["area"]
        for tx in transactions
        if tx.get("price") and tx.get("area")
    )
    if not rents:
        return {"count": 0}
    return {
        "count": len(rents),
        "median_annual_rent": round(median(rents)),
        "p25": round(rents[len(rents) // 4]),
        "p75": round(rents[3 * len(rents) // 4]),
        "median_rent_per_sqft_year": round(median(rpsf), 1),
    }

print(rent_summary(rents))
# e.g. {'count': 9033, 'median_annual_rent': 85000, 'p25': 68000,
#       'p75': 115000, 'median_rent_per_sqft_year': 100.8}

median_rent_per_sqft_year is annual rent divided by area — AED 100.8/sqft/year for JLT — not a sale price per sqft. The gap between the 25th and 75th percentile tells you how much spread exists between budget and premium towers in JLT: a tight band means standardized pricing, a wide band means tower quality and lake views matter a lot.

Step 4: Break Rent Down by Bedroom

Bedroom count drives rent more than anything else within a single community. Loop over the beds filter to rebuild the per-bedroom table above:

Add a beds value to the params in fetch_transactions (pass it through as an extra request param), then take the median of each slice:

def rent_by_bed(beds: str) -> int:
    txns = fetch_transactions("for-rent", beds=beds)
    prices = sorted(tx["price"] for tx in txns if tx.get("price"))
    return round(median(prices)) if prices else 0

for label, beds in [("studio", "0"), ("1-bed", "1"),
                    ("2-bed", "2"), ("3-bed", "3")]:
    print(label, rent_by_bed(beds))
# studio 58000 / 1-bed 80000 / 2-bed 120000 / 3-bed 145000

Pass beds="0" for studios and comma-separate values for multiple bedroom counts. Because every figure comes from registered transactions rather than advertised listings, the rents reflect what owners and tenants actually agreed — a more honest figure than one built from asking prices.

Step 5: Estimate Gross Rental Yield

To estimate gross yield, pull for-sale transactions the same way and compare the registered sale-price median against the registered rent median. Both sides come from real transactions, so the result reflects agreed values rather than asking prices:

sales = fetch_transactions("for-sale")

def gross_yield(sales: list[dict], rents: list[dict]) -> float:
    sale_prices = sorted(tx["price"] for tx in sales if tx.get("price"))
    annual_rents = sorted(tx["price"] for tx in rents if tx.get("price"))
    if not sale_prices or not annual_rents:
        return 0.0
    return round(median(annual_rents) / median(sale_prices) * 100, 2)

print(f"JLT gross rental yield: {gross_yield(sales, rents)}%")

For a like-for-like figure, do it per bedroom count (add beds) and keep only ready resales, as in the yield table above — off-plan prices are for units that cannot be let yet. For the full methodology, see Analyzing UAE Rental Yields and the rental yield definition.

Step 6: Narrow by Price or Size Segment

To isolate a specific slice — say only larger units, or rents above the median — bound results with price_min / price_max and area_min / area_max:

params = {
    "purpose": "for-rent",
    "location_ids": JLT_ID,
    "category_ids": "apartments",
    "area_min": "850",       # only units near or above the 866 sqft median
    "price_max": "115000",   # cap at the 75th-percentile rent
    "time_period": "12m",
    "page": "1",
}

This is exactly how you build comparables for a valuation tool — filter to the segment that matches a subject property, then take the median of the registered transactions that come back.

From One Community to a Whole Portfolio

The exact code above works for any Dubai community — swap the location_ids value and you have transaction data for Downtown Dubai, JVC, Business Bay, Dubai Marina, or anywhere else. That is how you build a market research dashboard or an investment screener that ranks communities by yield and price trend.

JLT is a strong starting point precisely because its volume produces stable numbers. Once your pipeline works here, scaling it across the city is a loop over location IDs.

Frequently Asked Questions

What is the average rent in JLT? The median annual rent for homes in Jumeirah Lake Towers over the last 12 months is AED 85,000/year (about AED 7,083/month), computed from 9,033 registered rental contracts. The middle 50% of contracts fall between AED 68,000 and AED 115,000/year, and the median is unchanged from the previous 12 months. A 1-bedroom has a median of AED 80,000/year and a studio AED 58,000/year.

How much is rent per square foot in JLT? Median rent per square foot is AED 100.8/sqft per year. Note this is annual rent per sqft, not a sale price per sqft — an 866 sqft unit at that rate works out close to the AED 85,000/year median.

What are property prices and rental yields in JLT? The median JLT home sold for AED 1,510,000 over the last 12 months, or AED 1,667/sqft, across 1,595 registered sales. Comparing rents with ready resales, gross yields are 7.7% for studios, 6.5% for 1-bedrooms and 5.6% for 2-bedrooms, before costs.

Where does JLT transaction data come from? Registered sale and rental transactions originate with the Dubai Land Department. Bayut aggregates and surfaces those DLD-registered records, and BayutAPI serves them as query-ready JSON through the transactions endpoint.

Can I get rental (Ejari) transaction data for JLT? Yes — set purpose=for-rent. This returns registered tenancy values, which power the medians above and which you can compare against for-sale prices to estimate gross yield.

How do I do this for another area? Look up the new area’s ID with the autocomplete endpoint and pass it as location_ids. Everything else stays the same.

Next steps

JLT shows how a single community’s registered transactions become real, defensible market metrics. Point the same pipeline at the rest of Dubai and you have a city-wide view.

B

BayutAPI Team

Building tools for UAE real estate developers

Ready to Build with UAE Real Estate Data?

Get your API key and start making requests in minutes. Free tier available with 900 requests per month.