Open data

Open Dubai Property Graph

A public join of Dubai's unit register with registered sales and Ejari rents: every building (or project) by home type and bedrooms, with its registered stock, sale and rent ranges, turnover, and the DLD IDs that link the registers. Built from Dubai Land Department open data, with the hit rate of the join published below.

Data as of · 25,980 archetypes · 22,668 crosswalk rows · prices only with at least 6 ready sales in 12 months (rents: 6 new contracts).

Download

FileFormatRowsSizeSHA-256
Archetypes
One row per building (or project) × home type × bedrooms
PARQUET 25,980 1.1 MB 55580076
CSV 25,980 9.0 MB a66c4b3b
JSONL 25,980 30.7 MB e4c85b77
Crosswalk
DLD IDs and names linking units, buildings, projects, sales and Ejari
PARQUET 22,668 547 KB 95689919
CSV 22,668 2.8 MB f29f2b0a
JSONL 22,668 9.1 MB 5937ceed
Match report
How many sales and Ejari contracts reach a building, and how
JSON 7 KB 98c5e85a
MD 5 KB 1be87365
Data package
Frictionless descriptor: column dictionary, sources, licence, hashes
JSON

Parquet is the smallest and keeps column types. Each file name stays the same between versions; the folder carries the date (/data/open/2026-10-26/). Full hashes are in the data package.

How well the registers join

The DLD publishes sales, Ejari rent contracts, the unit register, buildings and projects as separate datasets with no common key for a building. We join them only on official identifiers: the DLD project number, or else an exact project name that points to a single project in the same DLD area. Nothing else is matched: no fuzzy names, no guessing which tower is which.

Records, last 12 monthsnBuildingProject onlySale name onlyUnassigned
DLD sales · All151,18250.0%44.4%4.9%0.7%
DLD sales · Apartments, off-plan107,05558.7%41.1%0.2%0.0%
DLD sales · Apartments, ready28,24044.9%29.4%25.7%0.0%
DLD sales · Villas, off-plan10,5830.0%100.0%0.0%0.0%
DLD sales · Villas, ready5,3040.0%79.6%0.0%20.4%
Ejari rents · All613,44915.6%15.9%0.0%68.5%
Ejari rents · Apartments, new contracts218,77828.3%17.5%0.0%54.2%
Ejari rents · Apartments, renewals331,67610.1%8.4%0.0%81.5%
Ejari rents · Villas, new contracts28,7060.0%64.7%0.0%35.3%
Ejari rents · Villas, renewals34,2890.0%38.0%0.0%62.0%
  • Building: assigned to one building of the DLD unit register (single-building projects, or buildings with no project).
  • Project only: the project has several towers and the register does not say which is which, or it is a villa project. Those rows stay at project level.
  • Sale name only: a sale with no DLD project, kept under its own building name in its DLD area, with no register stock and no rent.
  • Unassigned: no project and no building name. Ejari never names the building.

Where a record carries both a project number and a matching name, the two methods disagree in 0 sales and 0 Ejari contracts.

Unit register: 1,491,416 residential units, 82.0% assigned to a building or project.

Limitations

  • Ejari (rent_contracts) never names the building, and about two thirds of contracts carry no DLD project, so they can only be linked to an area or master project. Rents are attached to a building only when the project has one residential building.
  • In projects with several towers, `units` identifies each building by an ID but not by name, and `transactions` names the tower but gives no ID. Those projects are published at project level, never split by guesswork.
  • Older freehold buildings with no DLD project in the records (International City, Discovery Gardens, The Greens, parts of Business Bay and others) appear only under their transaction building name: no registry stock and no rent.
  • The units registry includes off-plan units registered before completion, so stock and turnover in projects under construction count units that are not built yet.
  • Bedrooms come from the DLD record; sales and units without a bedroom count are left out of the archetypes. Villa sales without bedrooms take them from the buildings registry by exact plot size (same rule as the site).
  • The `projects` table is the version served by data.dubai on the snapshot date (see datapackage sources), which may be newer than as_of.

What is in it, and what is not

  • Aggregates only. Nothing below building × home type × bedrooms: no unit numbers, no plot numbers, no transaction or contract numbers, no owners or tenants.
  • No value per unit. We do not publish an estimated value for each flat: it would add nothing to the building figures and would look like a valuation.
  • Registered figures, not forecasts. Our 12-month forecasts are a model and live on the area pages and the API, labelled as such; they are not in this dataset.
  • No portal data. Nothing comes from listing portals. Every figure comes from the DLD datasets below.
  • Abstention. A price is published only with enough registered deals; otherwise the row says why it abstains.

Method: how we price. One building at a time, with the same IDs: resolve_entity in our MCP server and API.

Column dictionary

Archetypes (43 columns)
ColumnTypeMeaning
archetype_idstringStable key: entity_id + ':' + segment.
as_ofdateLast DLD transaction date in the data; all 12-month windows end here.
levelstringbuilding = one DLD registry building; project = a whole DLD project (several towers, or villas); transactions_only = a building name seen only in DLD transactions.
entity_idstringb<DLD building ID>, p<DLD project_id> or t<hash of area + building name>.
property_typestringapartment or villa (villas include townhouses).
segmentstringFairSqft segment key, e.g. apartment-2br, apartment-5br-plus, villa-4br.
bedroomsstringstudio, 1, 2, … with '+' for the top bucket (apartments 5+, villas 7+).
area_idstringDLD area_id.
area_name_enstringDLD area name (area_name_en).
fairsqft_area_slugstringFairSqft area (DLD master project, or DLD area) used for the site's area pages.
master_project_idstringDLD master_project_id (registry), when present.
master_project_enstringDLD master project name.
project_idstringDLD project_id (units, buildings, projects).
project_numberstringDLD project_number (projects, transactions, Ejari).
project_name_enstringDLD project name, most frequent spelling (registry first).
dld_building_idstringID of the building record: the parent_property_id shared by its units in DLD `units`. Never a unit's or a villa's ID.
building_name_enstringBuilding name as written in DLD transactions (most frequent spelling).
n_buildings_registryintegerResidential buildings of the project in DLD `units`.
names_seenarrayUp to 10 distinct names of this entity in units, buildings, transactions and Ejari, most frequent first (CSV: JSON-encoded list).
stock_unitsintegerRegistered units of this type and bedrooms: apartments from DLD `units` (complete registry), villas from DLD `buildings`. Includes off-plan units already registered.
stock_sourcestringunits or buildings.
ready_n_12mintegerReady (resale) DLD sales in 12 months, after the site's cleaning rules.
ready_p25_aedinteger25th percentile of ready sale prices (AED, rounded to 5,000); null if n < 6.
ready_median_aedintegerMedian ready sale price (AED, rounded to 5,000); null if n < 6.
ready_p75_aedinteger75th percentile of ready sale prices (AED, rounded to 5,000); null if n < 6.
ready_median_aed_per_sqftintegerApartments: median ready price per sqft; null if n < 6.
ready_abstainbooleanTrue when ready sales are below 6 in 12 months: no price verdict (FairSqft /method/).
ready_abstain_reasonstringWhy there is no price verdict.
offplan_n_12mintegerOff-plan DLD sales in 12 months.
offplan_p25_aedinteger25th percentile of off-plan prices (AED, 5,000); null if n < 6. Descriptive only: FairSqft never prices off-plan.
offplan_median_aedintegerMedian off-plan price (AED, 5,000); null if n < 6. Descriptive only.
offplan_p75_aedinteger75th percentile of off-plan prices (AED, 5,000); null if n < 6. Descriptive only.
rent_new_n_12mintegerNew Ejari contracts (single property) started in 12 months.
rent_new_p25_aedinteger25th percentile of new annual rents (AED, rounded to 1,000); null if n < 6.
rent_new_median_aedintegerMedian new annual rent (AED, 1,000); null if n < 6.
rent_new_p75_aedinteger75th percentile of new annual rents (AED, 1,000); null if n < 6.
rent_abstainbooleanTrue when new Ejari contracts are below 6 in 12 months: no rent verdict.
rent_abstain_reasonstringWhy there is no rent verdict.
rent_renewal_n_12mintegerEjari renewals started in 12 months.
rent_renewal_p25_aedinteger25th percentile of renewal rents (AED, 1,000); null if n < 6.
rent_renewal_median_aedintegerMedian renewal rent (AED, 1,000); null if n < 6.
rent_renewal_p75_aedinteger75th percentile of renewal rents (AED, 1,000); null if n < 6.
turnover_12mnumberready_n_12m / stock_units: share of the registered stock resold in 12 months.
Crosswalk (16 columns)
ColumnTypeMeaning
sourcestringDLD dataset of this row: transactions, rent_contracts, units, buildings (villas) or projects.
property_typestringapartment or villa.
area_idstringDLD area_id.
area_name_enstringDLD area name (area_name_en).
master_project_idstringDLD master_project_id (registry), when present.
master_project_enstringDLD master project name.
project_idstringDLD project_id (units, buildings, projects).
project_numberstringDLD project_number (projects, transactions, Ejari).
project_name_enstringDLD project name, most frequent spelling (registry first).
building_name_enstringBuilding name as written in DLD transactions (most frequent spelling).
dld_building_idstringID of the building record: the parent_property_id shared by its units in DLD `units`. Never a unit's or a villa's ID.
match_methodstringproject_number, project_name (exact name in the same area, unique project_id), project_id or parent_property_id (registry), building_name_in_area (transactions without a project), or none.
levelstringLevel of the entity the row is assigned to (null: not assigned).
entity_idstringArchetype entity the row is assigned to (null: not assigned).
n_recordsintegerRecords with this combination: sales and Ejari in 24 months, registry units or villas, or 1 for a project.
n_records_12mintegerSales or Ejari records with this combination in 12 months.

Licence and sources

Source: Dubai Land Department (DLD) open data, published on data.dubai. Analysis: FairSqft. Not endorsed by the DLD or the Government of Dubai.

These derived DLD figures are offered under the same Open Data Licence, with no additional terms (clauses 3.1 and 3.3). Credit the Dubai Land Department and link the source dataset (clause 3.2). Do not imply endorsement by the DLD or the Government of Dubai (clause 3.2.2). Licence: Dubai Open Data Licence (data.dubai). A link to this page is welcome but not required.

Based on Dubai Land Department open data. Not a valuation, not financial advice. FairSqft is independent and not endorsed by the DLD or the Government of Dubai. Questions or a number that looks wrong: hello@fairsqft.com.