When I started building Ghost Workforce — a Dubai real estate intelligence dashboard — I assumed scraping the Dubai Land Department (DLD) was going to be the hard part.
It wasn't. The DLD publishes most of what you need: transaction-level data going back 15 years, M-codes (a building registry), Ejari rent registrations, RERA escrow status. The data is public. APIs exist. CSVs are downloadable.
The hard part was bridging it. Specifically — bridging a transaction's listed building name to the actual physical building.
This post is about that problem.
The shape of the data
Each DLD transaction record looks roughly like this:
{ "transaction_id" : "..." , "transaction_date" : "2018-04-12" , "area_name" : "Marina" , "building_name_en" : "Marina Pearl" , "developer_name" : "Select Group" , "price_aed" : 2150000 , "size_sqft" : 1240 , "rooms" : 2 }
Enter fullscreen mode
Exit fullscreen mode
After 15 years of records, you have:
533K+ transaction rows
4,200+ distinct building_name_en strings
1,387 actual…