Dubai DLD Property Transactions API – Sold Prices, Price/Sqm
Pricing
from $0.70 / 1,000 transactions
Dubai DLD Property Transactions API – Sold Prices, Price/Sqm
Dubai real estate transactions from the official Dubai Land Department (DLD) register, for brokers, valuers, proptech and investors: registered sales, off-plan sales, mortgages and gifts with AED value, price per sqm, area, project, rooms and size. Any dates this year. $1 per 1,000 transactions.
Pricing
from $0.70 / 1,000 transactions
Rating
0.0
(0)
Developer
Daemon Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Features
Share
Dubai Land Department (DLD) transactions as JSON in one call. DLD publishes its transaction register as open data (a search page on dubailand.gov.ae for the current year, bulk files on Data.Dubai for earlier years); this Actor returns the current year as clean JSON rows for any date range, with no UAE Pass, API key or proxy:
curl -X POST "https://api.apify.com/v2/acts/data_daemon~dubai-property-transactions/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \-d '{"daysBack": 1, "maxItems": 0}'
$1 per 1,000 transactions, read live from the register on every run. Checked on 5 November 2026: DLD registered 4,319 transactions from 29 October to 4 November 2026 (2,825 sales, 1,505 of them off-plan; 1,149 mortgages; 345 gifts).
Dubai DLD Property Transactions is a pay-per-result Apify Actor that returns the Dubai Land Department's registered property transactions as JSON, CSV or Excel: every sale, off-plan sale, mortgage and gift with the transaction date, value in AED, computed price per square metre, area and project, property type and sub-type, rooms, parking, size, off-plan and freehold flags and the nearest metro, mall and landmark. It is for brokers and agencies, valuers and mortgage teams, proptech portals and data teams, developers and investors who need registered prices rather than asking prices. Price: $1 per 1,000 transactions; no UAE Pass, API key or proxy. In the week to 18 October 2026 the register recorded about 4,100 transactions: 2,600 sales (1,650 off-plan, 950 ready), 1,300 mortgages and 160 gifts.
Pick a date range, or leave it empty and set Days back (default 7; for a daily feed use 2 with Only new transactions on). Filter by sales / mortgages / gifts, off-plan vs ready, freehold, residential vs commercial, and unit / building / land. No UAE Pass, no API key, no proxy. $1 per 1,000 transactions.
Dubai property transactions API: what common jobs cost
Three ways teams use this Actor, with the rows each job returned when we measured it and the price at the listed $0.001 per transaction (Apify Free and Starter plans; higher plans pay 15-30% less; Apify platform compute adds about $0.004 per 1,000 rows). Row counts are the DLD gateway's own totals, read on 9 November 2026.
| Job | Input | Rows (measured) | Cost |
|---|---|---|---|
| Sample: 200 transactions from the last 7 days | {} | 200 | $0.20 |
| Backfill, one month: every transaction registered in October 2026 | below | 17,646 (11,978 of them sales) | about $17.65 (sales only about $12) |
| Backfill, year to date: 1 January to 9 November 2026 | fromDate / toDate | 187,282 (138,303 sales) | about $187 (sales only about $138) |
| Daily feed: one scheduled run a day, each row delivered and charged once | below | about 520-570 a day (17,646 in October; 4,183 on 1-8 November) | about $16-18 a month |
Sample (the default input; also what Try for free runs):
{}
Backfill (one calendar month, about 3 minutes; for the year so far repeat it month by month, or use "fromDate": "2026-01-01" with a run timeout above the default 30 minutes):
{"fromDate": "2026-10-01", "toDate": "2026-10-31", "maxItems": 0}
Daily feed (save as a task, schedule it daily; onlyNew skips rows an earlier run already delivered, so the 2-day window never double-charges):
{"daysBack": 2, "onlyNew": true, "stateName": "dld-daily", "maxItems": 0}
Every run also writes a Daily feed and back-fill tab in Output (NEXT-STEPS.html): this feed input with the run's own filters, its monthly cost from the current price and the gateway's row count, and one-click example tasks for the other two registers.
For comparison, per-seat analytics subscriptions for Dubai property data are typically listed at about AED 1,000 a month, or AED 5,000-15,000 a year, per seat (published and estimated list prices, November 2026); a full month of every registered DLD transaction here is about $18, billed per row, with no seat licence. The DLD gateway serves the current calendar year only (every 2025 date range returned no rows on 10 November 2026); for earlier years see "Can I get earlier years?" in the FAQ below.
One product line, three registers. Registered sales here, registered rents in Dubai Rent Contracts API (Ejari) and the project register in Dubai Real Estate Projects API: same gateway, same field style, so area and project join across the three. Overview, free sample files (500 sales, 500 rent contracts, all active projects as CSV/JSON) and the cost table for all three: Dubai Property Data API.
What teams run, and what it costs
Volumes measured in the week to 18 October 2026: about 4,100 transactions, of which 2,600 were sales (1,650 off-plan, 950 ready), 1,300 mortgages and 160 gifts.
| You are | You run | Cost |
|---|---|---|
| Broker / agency | Last 30 days of sales (about 11,000 rows), then group by area and project for a CMA or client report | about $11 per month of data |
| Valuer / mortgage team | Weekly residential sales feed for price-per-sqm benchmarks by area and project | about $2.50 per week |
| Proptech / portal / data team | Daily scheduled feed of all transactions into your database (daysBack: 2, onlyNew: true) | about $17 per month, each row charged once |
| Developer sales team / investor | Weekly off-plan sales (offPlan: "offplan") to track absorption by project | about $1.60 per week |
Export JSON, CSV or Excel, connect by API, webhook, Google Sheets, Make or n8n, or ask through an AI agent ("what did 2-bedroom flats in Business Bay sell for last month?").
Why use this instead of a portal or a paid feed
- Registered prices, not asking prices. Listing portals show what sellers want; DLD shows what buyers actually paid.
- Complete. A typical week has 3,000–6,000 transactions; the Actor pages through all of them, 2,000 at a time, and keeps the rows that share one transaction number (portfolio mortgages, up to ~100 rows) in a single page, so no row is repeated or lost at a page boundary.
- Analysis-ready. Numeric AED values and areas, ISO dates, boolean off-plan/freehold flags,
pricePerSqmAedprecomputed, optional Arabic names. - Pre-registration vs completed sale. The
procedurefield separates developer pre-registrations (Sell - Pre registration) from completed sales (Sale,Delayed Sell), and mortgage registrations from modifications. - Open data, no personal data. Published by the Dubai Land Department for reuse; no owner names or contacts are included.
What a month looks like (1–29 October 2026, run T6ufNxkMMy6eAuIwE): 16,108 transactions after dedupe: 11,027 sales (6,420 off-plan, 4,607 ready; AED 31.9 billion), 4,123 mortgages and 958 gifts. Off-plan flats registered at a median AED 19,303 per sqm against AED 15,434 for ready flats, with the gap ranging from +7% in Majan to +87% in Motor City; the ten busiest areas took 42% of unit sales. The full area and bedroom tables, with the cleaning steps and a tested pandas snippet, are in Dubai off-plan vs ready prices per sqm by area, October 2026.
Rents too: the registered Ejari rent contracts (annual rent, rent per sq m, area, project, new vs renewal) are in Dubai Rent Contracts API, same register, same price. Combine the two for rental yield by area.
From an AI assistant: add the MCP connector https://mcp.apify.com/?tools=data_daemon/dubai-property-transactions in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
Input
{"daysBack": 7,"transactionGroup": "sales","offPlan": "all","usage": "residential","propertyType": "unit","maxItems": 2000}
| Field | Description |
|---|---|
fromDate, toDate | Date range on transactionDate, both ends included, YYYY-MM-DD (or DD/MM/YYYY). toDate defaults to today. An invalid date is ignored with a warning; a reversed range is swapped. |
daysBack | Used when fromDate is empty: the last N days up to toDate, both ends included (1 = yesterday and today). Default 7, range 1–365. |
transactionGroup | all, sales, mortgages, gifts. |
offPlan | all, offplan, ready. |
freehold | all, freehold, nonfreehold. |
usage | all, residential, commercial. |
propertyType | all, unit, building, land. |
includeArabic | Add an arabic object with the Arabic names. No extra charge. |
maxItems | Stop after this many transactions (0 = all in range). Default 200 = $0.20; set 0 to get every transaction in the date range. |
onlyNew | For scheduled feeds: skip transactions an earlier only-new run already delivered, so overlapping windows are never charged twice. Off by default. |
stateName | Name of the only-new feed (default default); each name and filter combination keeps its own memory for 120 days. |
dateFilter | Advanced. transactionDate (default): calendar days of transactionDate. dldBusinessDay: the gateway's working-day filing, as before version 0.2. |
sort | Advanced. Transaction number ascending (default) or descending. |
areaId | Advanced. DLD's internal area id, passed through unchanged. The gateway currently returns no rows for any id and reports areaId 0 on every row, so leave it empty and filter on area in the results. |
Unknown option values fall back to the default with a warning in the log and in the run's status message; a run never fails because of its input.
Output
{"transactionNumber": "11-29816-2026","transactionDate": "2026-10-14","transactionDateTime": "2026-10-14T12:19:09","group": "Sales","procedure": "Sale","usage": "Residential","offPlan": false,"freehold": true,"area": "BURJ KHALIFA","project": "BURJ KHALIFA TOWERS","masterProject": null,"propertyType": "Unit","propertySubType": "Flat","rooms": "2 B/R","parking": "B2-7328,B2-7328T","parcelId": 3450829,"actualAreaSqm": 146.6,"transactionValueAed": 6175000,"pricePerSqmAed": 42121.42,"nearestMetro": "Buj Khalifa Dubai Mall Metro Station","nearestMall": "Dubai Mall","nearestLandmark": "Burj Khalifa","source": "Dubai Land Department open data"}
Every row also carries groupId, procedureId, areaId, buildingAge, propertyId, procedureAreaSqm, totalSellers, totalBuyers and scrapedAt. DLD returns areaId, totalSellers and totalBuyers as 0 on every row; they are kept so that column layouts stay stable. Some fields depend on what DLD registers: in the 2,473 sales of 18 to 25 October 2026, project and rooms were filled on every off-plan sale and on about 78% of ready ones, the nearest metro/mall on about 61% of ready and 35% of off-plan sales, parcelId on about 40%, and masterProject on fewer than 1% of rows (DLD rarely names one). A few procedures (for example Lease to Own Registration) come as two rows with the same transactionNumber and different values, so dedupe on the full row rather than on transactionNumber alone.
Download as JSON, CSV or Excel, or connect via API, webhooks and Google Sheets. Field names are stable; they will not be renamed, so your Sheets, Zapier and Make mappings keep working.
Scheduling & automation
Daily feed in four steps
- Leave From date empty, set Days back to
2, turn on Only new transactions, give the feed a Feed state name and pick your filters (for example sales only). - Click Save as task.
- Open Schedules → Create schedule, pick Daily (for example
0 4 * * *, 08:00 Dubai time) and add the task. - Optional: in the task's Integrations tab add Google Sheets to append rows, Slack or email for a message per run, or a webhook to your backend. Make, Zapier and n8n all have an Apify module that starts the task and reads the dataset.
DLD registers most transactions on working days and a few on weekends (121 on Saturday 31 October 2026); a range returns every row whose transactionDate falls in it, weekends included. The window includes today and DLD keeps adding to (and occasionally correcting) the last few days, so a 2-day window catches late registrations; with Only new transactions on, rows already delivered are skipped and not charged again. A row DLD later corrects counts as new, because its content changed. Don't start two only-new runs of the same feed at the same time. The run's status message says how many rows were saved and why it stopped (range exhausted, maxItems, charge limit or an upstream error), so a webhook or n8n flow can decide what to do without opening the dataset.
One call from your own code (waits for the run and returns the items):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~dubai-property-transactions/run-sync-get-dataset-items?token=YOUR_API_TOKEN&format=csv" \-H "Content-Type: application/json" \-d '{"daysBack":1,"transactionGroup":"sales","maxItems":5000}'
The same endpoint works with the Apify client libraries for Python and JavaScript. For long back-fills, set fromDate and toDate, use the asynchronous runs endpoint and fetch the dataset when the run finishes.
Pricing
Pay per event: $0.001 per transaction record, that is $1 per 1,000. Platform compute is included. Only rows saved to your dataset are charged; rows skipped by only-new are not.
| You fetch | Rows (Oct 2026) | Cost |
|---|---|---|
| One working day, all transactions | about 600 | about $0.60 |
| One week, all transactions | about 4,100 | about $4.10 |
| One week, sales only | about 2,600 | about $2.60 |
| One week, mortgages only | about 1,300 | about $1.30 |
| One month, sales only | about 11,000 | about $11 |
| One year, all transactions (back-fill) | about 175,000 | about $175 |
Tips
- Build per-community price indices by grouping sales on
areaandproject, withpropertyTypeUnitand the median ofpricePerSqmAed. proceduredistinguishes developer pre-registrations (Sell - Pre registration,Development Registration Pre-Registration) from completed sales (Sale,Delayed Sell), and mortgage registrations from modifications.- Back-fill with
fromDate,toDateandmaxItems: 0; a month is 16,000-18,000 rows (October 2026: 17,646). Back-fill a year month by month, or raise the run timeout: on 10 November 2026 a full month (October, 17,559 rows) took 3 minutes, while a whole-year range (188,045 rows, about 95 pages of 2,000) took 23-26 seconds per page, so one whole-year run may not finish inside the default 30-minute run timeout. A run that reaches its timeout keeps the rows it has and says so in its status message. - The gateway serves the current calendar year only (checked 10 November 2026: 2025 dates return no rows). A run with older dates ends with 0 rows, no charge and a status message that says why; see "Can I get earlier years?" in the FAQ.
nearestMetro,nearestMallandnearestLandmarkare filled for about 60-75% of ready properties and 35-50% of off-plan ones; group onareawhen you need full coverage.
FAQ
How much does it cost to get Dubai property transactions?
$0.001 per transaction. A full week of all DLD transactions (about 4,100 rows) costs about $4.10; a week of sales alone about $2.60.
Is this the official DLD data?
Yes. It reads the Dubai Land Department's open-data transactions service, the same register that paid DLD data products resell.
Can I filter by area or off-plan?
Off-plan vs ready, sales / mortgages / gifts, freehold, usage and property type are input filters. For areas, filter the output on the area and project names: DLD's area-id parameter returns no rows and areaId is 0 on every row, so that field is hidden under Advanced.
Does it include price per square metre?
Yes, pricePerSqmAed is computed from the transaction value and the actual area.
Is off-plan cheaper than ready property in Dubai?
Per square metre, no. In the 8,639 residential unit sales registered 1–29 October 2026 the median off-plan flat cost AED 19,303 per sqm, 25% above the ready median of AED 15,434; off-plan units are smaller (68 vs 81 sqm), so the median ticket was almost the same (AED 1.18m vs 1.20m). Area-by-area and bedroom tables: Dubai off-plan vs ready prices per sqm by area, October 2026.
Can I get earlier years (2025 and before)?
Not from this Actor. Checked on 10 November 2026: the DLD open-data gateway answers for the current calendar year only. Every 2025 and earlier date range returned 0 rows, a range from 25 December 2025 to 5 January 2026 returned only 2026 rows, and 1 January to 10 November 2026 held 188,045 transactions (138,762 of them sales). A run with older dates ends successfully with 0 rows, no charge and a status message that says so. DLD's open-data page says "For previous year data kindly visit data.dubai": the official history is the Data.Dubai dataset "Real Estate Transactions" (published by the Dubai Land Department as open data, CSV and JSON files, listed that day as two CSV parts of about 582 MB each; Data.Dubai replaced the retired Dubai Pulse portal). Data.Dubai's FAQ states that the portal is currently reachable only from inside the United Arab Emirates, and it refused our requests from Japan and the United States that day, so this Actor does not read it. To get the history from the source: download the files at data.dubai on a UAE connection (its FAQ says open datasets need no login), or create an account there and use the "Request API Access Key" form on the dataset page.
How do I build my own history from now on?
Two steps. First back-fill the current year once, month by month ({"fromDate": "2026-10-01", "toDate": "2026-10-31", "maxItems": 0} and so on): the year to 10 November 2026 is 188,045 rows, about $188 for everything or about $139 for sales only ("transactionGroup": "sales"). Then save the daily feed as a scheduled task ({"daysBack": 2, "onlyNew": true, "stateName": "dld-daily", "maxItems": 0}): about 520-570 rows a day, about $16-18 a month, each row delivered and charged once. Because the gateway answers only for the current year, pull a year's rows before it ends; rows you have not saved by 31 December may no longer be available here in January.
Can I run it every day without editing dates?
Yes. Leave fromDate empty, set daysBack to 2 and onlyNew to true; the window moves with the run date and each transaction is delivered and charged once.
Which day does a date range cover?
Calendar days of transactionDate, both ends included, weekends too. The DLD gateway itself files each transaction under a working day (cut-off around 15:15, Fridays 11:45), so its own query for 29 October 2026 returns 183 rows registered on the afternoon of 28 October, and a weekend-only query returns nothing. Since version 0.2 the Actor widens the query by a few days and keeps the rows dated inside your range: back-to-back ranges never overlap or leave gaps (checked on 21 windows against a September–November pull, 7 November 2026), and the extra rows are not charged. Set Date filter to dldBusinessDay for the old gateway behaviour.
Related Actors by Daemon Data
- Abu Dhabi Property Transactions API (ADREC) – Abu Dhabi sales since 2019: AED price, price per sq m, district, project, bedrooms, off-plan or ready
- Dubai Real Estate Projects API (DLD register) – every DLD-registered project: developer, status, value, escrow account, % complete, units, dates
- Magicbricks Scraper – India property listings: price, price per sq ft, carpet area, BHK, locality, possession date
- Zap Imóveis & VivaReal Scraper – Brazil property listings for sale or rent: price, condo fee, IPTU, area, coordinates, agency
- India New Company Registrations – newly incorporated Indian companies daily: CIN, type, state, activity, capital
- UK Gazette Insolvency Notices – winding-up petitions, administrations and liquidations
All Daemon Data Actors: apify.com/data_daemon.
Support
Found a bug or need another field or source? Open an issue on the Issues tab; issues are usually answered within a day. Custom variants of this Actor are available on request. A quick review on the actor page helps other users find it.
Data source and licence
Data comes from the Dubai Land Department open-data transactions service published for public reuse. Please attribute the Dubai Land Department. The dataset contains no personal data.