Every field, and what its absence means
The reference for the JSON records and for every machine-readable representation of this index.
- Edition DWI-DOCS-FIELDS
A null in these records is a suppressed figure, not a zero. That distinction is the one most often lost in translation, so every field below states what its absence means as well as what its presence does.
Identity and provenance
- id
- Stable absolute identifier for the record, of the form <canonicalUrl>#record. It does not change across data refreshes.
- Grainone building recordWhen nullNever null.
- canonicalUrl
- The human-readable page this record mirrors. Cite this, not the JSON URL.
- Grainone building recordWhen nullNever null.
- dataAsOfISO date
- The edition of the registered data every figure in the record was computed from. Quote it with any figure taken from here.
- Grainthe whole recordWhen nullNever null on a published record.
- sources
- The registries the figures came from. Airbnb appears only where short-let metrics are present.
- Grainthe whole recordWhen nullNever null.
- bedroom
- One of all, studio, 1br, 2br, 3br, 4br_plus. "all" is the building-wide median across every unit size, not a sum or an average of the rows below it.
- Grainone metric rowWhen nullNever null.
- purpose
- Which market the row measures: sale, rent, offplan or short_let. A building has a row per bedroom type per purpose.
- Grainone metric rowWhen nullNever null.
Sale prices
- medianPriceAED
- Median registered sale price. A median of recorded transactions — not an asking price, not a valuation, and not the price of any particular unit.
- Grainbuilding × bedroom, trailing 24 monthsWhen nullToo few registered sales in the window to publish a median that would hold. It does not mean nothing sold.
- medianPriceSqftAED per sqft
- Median registered sale price per square foot of measured floor area.
- Grainbuilding × bedroom, trailing 24 monthsWhen nullNo publishable price median, or no measured area on the records.
- fairPsfAED per sqft
- The recorded price: median price per square foot over the most recent window holding at least five registered sales of READY units — 3 months, else 6, else 12. Ready-only and never wider than a year, unlike medianPriceSqft (24 months, all sales) and yieldPrice (pooled with off-plan, falls back to the last five sales however old). Read it with fairWindowMonths and fairSaleCount; the figure is not publishable without them.
- Grainbuilding x bedroom, freshest window clearing 5 ready salesWhen nullNo window in the last 12 months held five ready sales. Not zero and not stale — the building has not traded enough recently for a median to mean anything.
- fairPriceAED
- Median total price over the same window as fairPsf. A median across the units that happened to trade, never a valuation of one apartment: floor, view, condition and layout all move a real price and none is in this figure.
- Grainbuilding x bedroom, same window as fairPsfWhen nullAs fairPsf.
- fairWindowMonthsmonths
- Which rung of the ladder fairPsf landed on: 3, 6 or 12. A price whose window is unstated is not evidence, so every surface prints this beside the figure.
- Grainbuilding x bedroomWhen nullfairPsf is null.
- fairSaleCountsales
- Registered ready sales inside the window. Never fewer than five: a price computed from two sales moves by a third when one penthouse trades.
- Grainbuilding x bedroomWhen nullfairPsf is null.
- fairAsofdate
- Date of the most recent sale inside the window. A 12-month window whose newest sale is eleven months old is a different claim from one closing last week, and this is what separates them.
- Grainbuilding x bedroomWhen nullfairPsf is null.
- growth12mPctpercent
- Change in the median price per square foot, last 12 months against the 12 before. Positive is a rise.
- Grainbuilding × bedroomWhen nullOne of the two windows has too few sales to compare. A flat market returns 0, not null.
- yearlyAED and AED per sqft
- Per-year medians and transaction counts. Rows exist per bedroom type and per purpose — filter to one of each before plotting a line, or a mix shift reads as a price move.
- Grainbuilding × bedroom × purpose × yearWhen nullEmpty for a building with no history in the registry.
- monthlyAED and AED per sqft
- Monthly medians. Carried at bedroom 'all' only. Future-dated rent contracts exist in the registry, so clip the series at dataAsOf.
- Grainbuilding × month × purposeWhen nullEmpty where the monthly series is too thin to publish.
Registered rents
- medianRentAED per year
- Median annual rent on new Ejari contracts. Registered contracts, not listing asks.
- Grainbuilding × bedroom, trailing 24 monthsWhen nullToo few registered contracts in the window to publish a median.
- medianRentSqftAED per year per sqft
- Median annual rent per square foot. Annual, not monthly — the most common misreading of this field.
- Grainbuilding × bedroom, trailing 24 monthsWhen nullNo publishable rent median, or no measured area.
- medianRentRenewAED per year
- Median annual rent on renewal contracts — what a sitting tenant pays, as against medianRent for a new one.
- Grainbuilding × bedroom, trailing 24 monthsWhen nullToo few renewals registered in the window.
- rentSource
- The grain the rent was measured at: building, project or vicinity. A project- or vicinity-grain rent is pooled from nearby stock and is weaker evidence for this building than a building-grain one.
- Grainone metric rowWhen nullNo rent figure on the row.
Returns
- grossYieldPctpercent
- A year of registered rent as a share of the median resale price. Gross — before service charge, agency fees, maintenance and vacant months.
- Grainbuilding × bedroomWhen nullSuppressed, not zero: the price base behind the yield was too thin to publish, or the median price falls below the publication floor.
- yieldBasis
- How the yield's denominator was built: 'current' means the last 3 months of sales, 'last_sales' means the last 5 sales however old they are.
- Grainone metric rowWhen nullNo published yield on the row.
- yieldPriceNcount
- How many sales the yield's denominator rests on.
- Grainone metric rowWhen nullNo published yield on the row.
- yieldPriceAsofISO date
- Date of the most recent sale in the yield's denominator. The 'last_sales' fallback is uncapped, so this can be years old — check it before treating a yield as current.
- Grainone metric rowWhen nullNo published yield on the row.
- turnoverUpsidePctpercent
- The gap between what a new tenant pays and what a sitting tenant renews at, in the same building and bedroom type.
- Grainbuilding × bedroomWhen nullBelow the materiality floor, or too few renewals. Dubai rents cluster on round numbers, so small gaps are noise and are not published.
- offplanUpliftPctpercent
- What off-plan buyers made when their units later resold: resale price against off-plan purchase price. Longitudinal, not a windowed median.
- Grainbuilding × bedroomWhen nullNo off-plan units in this building have resold. Units that never resold cannot appear, so the published set skews toward the ones that performed.
Short-let
- medianAdrAED per night
- Median nightly asking rate from public Airbnb search results, sampled for every month of the next twelve. An asking rate, not a transaction.
- Grainbuilding × bedroomWhen nullNo short-let listings seen for this building and bedroom type.
- distinctListingscount
- How many distinct public listings the nightly rate was taken from. A floor, not a census of the building's short-let stock.
- Grainbuilding × bedroomWhen nullNo short-let listings seen.
- shortLetMonthlyAED per night
- The forward nightly-rate curve: one row per month of the next twelve, with the listing count behind each. strSource says whether the rate is the building's own or pooled from within 500m.
- Grainbuilding × bedroom × stay monthWhen nullEmpty where no short-let pricing was collected.
Evidence
- txnCount24mcount
- Registered sales in the trailing 24 months. This is the sample size behind the price figures — quote it with them.
- Grainbuilding × bedroomWhen nullNever null; zero means no registered sales in the window.
- rentCount24mcount
- Registered new rental contracts in the trailing 24 months. The sample size behind the rent figures.
- Grainbuilding × bedroomWhen nullNever null; zero means no new contracts registered in the window.
- isPageEligible
- Whether this row cleared the publication gate. False rows exist in the data and are not published as pages.
- Grainone metric rowWhen nullNever null.