# Dubai Real Estate Projects API – DLD Off-Plan Register (`data_daemon/dubai-real-estate-projects`) Actor

Registered Dubai real estate projects from the official Dubai Land Department register: developer, status, project value, escrow account, % completed, units, area, dates. Plus the DLD registered-developers list with licence dates. $5 per 1,000 records.

- **URL**: https://apify.com/data_daemon/dubai-real-estate-projects.md
- **Developed by:** [Daemon Data](https://apify.com/data_daemon) (community)
- **Categories:** Real estate, Agents
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.50 / 1,000 project records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Dubai Real Estate Projects API – DLD Off-Plan Register

**Every registered Dubai real estate project as JSON in one call.** The Dubai Land Department (DLD) publishes its project register as open data; this Actor returns it as clean rows: project name and number, developer, status (pending, active, finished, cancelled), declared project value, **escrow account number**, construction progress, unit counts, area, planning zone, and the approval, start, planned-end and completion dates. It also reads the DLD **registered developers** list (licence number and dates). No UAE Pass, API key or proxy.

```bash
curl -X POST "https://api.apify.com/v2/acts/data_daemon~dubai-real-estate-projects/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
  -d '{"status": "all", "maxItems": 0}'
```

**This is the regulator's register, not a portal's project list.** Listing portals show the projects developers choose to advertise; the DLD register shows every project the regulator has approved, with the escrow account every buyer's payments must go to, the value the developer declared, and the progress reported to DLD. On 9 November 2026 the register held **915 projects** worth **AED 212 billion** and 323,000 units: 601 active, 114 pending approval, 180 finished this year, 14 cancelled.

$5 per 1,000 records ($0.005 per project or developer), read live from the DLD register on every run.

### Dubai off-plan projects data: 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.005 per record (Apify Free and Starter plans; higher plans pay 15-30% less; Apify platform compute adds a few tenths of a cent per run). Counts read from the DLD register on 9 November 2026.

| Job | Input | Rows (measured) | Cost |
|---|---|---|---|
| **Sample**: the 50 most recently approved active projects | `{}` | 50 | $0.25 |
| **Backfill**: the whole project register (every status) | below | 915 projects | about $4.58 |
| **Backfill + developers**: the register plus the DLD registered-developers list | below | 915 + 215 | about $5.65 |
| **Daily change feed**: new approvals and changed records only | below | 15-30 new approvals a month, plus records whose status, progress, value, dates or escrow account changed | about $1 a month, often less |

The register is the current year's projects (approved, started, due or completed in 2026), so there is no "year backfill" beyond the full register; older years are in the Dubai Pulse open-data files.

**Sample** (the default input; also what **Try for free** runs):

```json
{}
```

**Backfill** (whole register; add `"dataset": "developers"` in a second run for the 215 registered developers):

```json
{"status": "all", "maxItems": 0}
```

**Daily change feed** (save as a task, schedule it daily; the first run delivers the register, later runs only `new` or `updated` projects):

```json
{"status": "all", "maxItems": 0, "onlyNew": true, "stateName": "register-watch"}
```

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); the whole DLD project register here is under $5, billed per record, with no seat licence.

**One product line, three registers.** The project register here, registered sales in [Dubai DLD Property Transactions API](https://apify.com/data_daemon/dubai-property-transactions) and registered rents in [Dubai Rent Contracts API (Ejari)](https://apify.com/data_daemon/dubai-rent-contracts): 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](https://datadmon.github.io/dubai-property-data/).

### What teams run, and what it costs

| You are | You run | Cost |
|---|---|---|
| Off-plan investor / fund | The whole register (`status: "all"`, `maxItems: 0`): value per unit, progress, developer, planned completion | 915 projects: about $4.60 |
| Broker / sales team | Newly approved launches: `daysBack: 30`, `dateType: "adoptionDate"` (15-30 a month in 2026) | cents |
| Buyer / due diligence | One developer's projects and escrow accounts (`developers: ["Binghatti"]`), or one community (`areas: ["JVC"]`) | cents |
| Lender / valuer | Projects finishing this year (`status: "finished"`) or due in a given year (`dateType: "endDate"`) for hand-over and delivery-risk tracking | about $1 |
| Proptech / data team | Scheduled change feed: `onlyNew: true` delivers a project only when it is new or its status, progress, value, dates or escrow account changed | a few cents per day |
| Developer / contractor | `dataset: "developers"`: developers registered with DLD this year, licence numbers and expiry dates | 215 rows: about $1 |

Export JSON, CSV or Excel, connect by API, webhook, Google Sheets, Make or n8n, or ask an AI agent through the Apify MCP server.

### What the register shows (9 November 2026)

| | Projects | Declared value (AED) | Units |
|---|---|---|---|
| Active (approved, in progress) | 601 | 147 bn | 202,000 |
| Pending approval | 114 | 23 bn | 12,700 |
| Finished in 2026 | 180 | 37 bn | 107,500 |
| Cancelled / conditional | 20 | 4 bn | 1,100 |

Most projects by developer: Binghatti 37, Emaar Development 29, Azizi 17, Reportage Plus 16, Dubai South Properties 12, Damac Prime 10, Dubai Hills Estate 10. Most projects by DLD area: Al Barsha South Fourth (JVC) 92, Madinat Al Mataar (Dubai South) 89, Wadi Al Safa 3 54, Palm Deira (Dubai Islands) 54, Wadi Al Safa 5 50. Largest active projects: Eden Hills (AED 3.2 bn), Al Habtoor Tower (AED 2.4 bn, 6,717 units, 90% complete), Sobha Central (AED 2.3 bn, 2,169 units). Computed from this Actor's output.

### Why use this instead of the DLD page or a portal

- **The complete register in one run.** DLD's open-data page shows the projects whose *chosen* date (start, planned end, approval or completion) falls in the current year, and the four views overlap only partly (401, 323, 280 and 171 rows). The Actor reads all four and merges them by project number, so a finished project keeps its completion date and an active one its approval date: 915 projects instead of 401.
- **Escrow account numbers.** Every active project carries the escrow account registered with DLD (803 of 915 rows). Off-plan payments in Dubai must go to this account; check it before paying a developer.
- **Change feed.** With `onlyNew` a project is delivered once, and again only when its status, construction progress, completion date, planned end, value, unit count or escrow account changes, labelled `changeType: "new"` or `"updated"`. Unchanged projects are not charged.
- **Community names work.** DLD uses official area names ("Madinat Al Mataar", "Al Barsha South Fourth"); this Actor also accepts Dubai South, Expo City, JVC, JVT, JLT, Dubai Marina, Downtown, Dubai Hills, Dubai Islands, Business Bay, Creek Harbour, Sports City, Motor City, Damac Hills, Arjan, Town Square and more.
- **Value per dwelling.** `valuePerUnitAed` divides the declared value by apartments plus villas (not by land plots), a quick sanity check against launch prices.
- **Open data, business data only.** Project and developer records as DLD publishes them; no buyer or owner data.

### How to use it

1. Click **Try for free**. The default input returns the 50 most recently approved active projects (about $0.25).
2. Pick a **Project status**: active (default), pending, finished, cancelled or all.
3. Optionally filter: **Areas**, **Developers** (name contains), **Minimum project value**, or a date range with **Date type** (approval, start, planned end or completion date).
4. Set **Max items** to `0` for the whole register, and run. Download as JSON, CSV or Excel, or call the API.

For a monitoring feed, schedule a daily run with `status: "all"`, `maxItems: 0` and `onlyNew: true`: the first run delivers the register, later runs only new registrations and changed projects.

### Input

| Field | What it does |
|---|---|
| `dataset` | `projects` (default) or `developers`. |
| `status` | Projects: `active` (default), `pending`, `finished`, `cancelled` or `all`. |
| `fromDate`, `toDate`, `daysBack` | Optional date range (both ends included, `YYYY-MM-DD`) applied to `dateType` (projects) or the registration date (developers). Empty = the whole register. |
| `dateType` | `adoptionDate` (DLD approval, default), `startDate`, `endDate` (planned completion) or `completionDate`. |
| `areas` | DLD area or community names, e.g. `["Dubai South", "JVC", "Palm Deira"]`. Empty = all Dubai. |
| `developers` | Keep records whose developer name contains one of these, e.g. `["Emaar", "Sobha"]`. |
| `minProjectValueAed` | Keep projects worth at least this amount, e.g. `500000000`. |
| `sort` | `newestFirst` (default, highest project number first) or `oldestFirst`. |
| `maxItems` | Records to save, `0` = all (default 50). |
| `onlyNew`, `stateName` | Deliver and charge only new or changed records (400-day memory per state name). |
| `includeArabic` | Add Arabic names. |

### Output

```json
{
  "projectNumber": 4588,
  "name": "YIGO LUXE",
  "developer": "YANGTZE INTERNATIONAL REAL ESTATE DEVELOPER L.L.C",
  "developerNumber": 2328,
  "status": "Active",
  "projectType": "Normal",
  "projectValueAed": 100000000,
  "valuePerUnitAed": 274725,
  "escrowAccountNumber": "1001226851309004",
  "percentCompleted": 0,
  "startDate": "2026-11-30",
  "endDate": "2030-03-30",
  "adoptionDate": "2026-10-12",
  "adoptionDateTime": "2026-10-12T11:53:28",
  "inspectionDate": "2026-09-24",
  "description": "Retail and Residential Building (2B+G+4P+24+R)",
  "area": "Nadd Hessa",
  "zone": "Dubai Silicon Oasis Authority",
  "landCount": 0,
  "buildingCount": 0,
  "villaCount": 0,
  "unitCount": 364,
  "totalUnits": 364,
  "source": "Dubai Land Department open data (real estate projects)",
  "scrapedAt": "2026-11-09T12:09:31.512Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

| Field | Meaning |
|---|---|
| `projectNumber`, `name`, `developer`, `developerNumber` | DLD project and developer identifiers. Project numbers are sequential, so a higher number is a later registration. |
| `status` | `Pending` (registered, awaiting approval), `Active`, `Finished`, `Cancelled`, `Conditional activating`. |
| `projectValueAed`, `valuePerUnitAed` | Declared project value; value per apartment or villa when the project has any. |
| `escrowAccountNumber` | Escrow account registered with DLD (every active and finished project; a few pending ones). |
| `percentCompleted` | Construction progress reported to DLD (0 for most newly approved projects; 100 when finished). |
| `adoptionDate`, `startDate`, `endDate`, `completionDate`, `inspectionDate` | DLD approval, planned start, planned completion, actual completion, last inspection. Pending projects have no approval date yet. |
| `description` | Building description as registered (floors, use, facilities). |
| `area`, `masterProject`, `zone` | DLD area, master community when DLD has it, planning authority (DDA, Trakhees, Dubai Municipality, Dubai South, DSOA). |
| `landCount`, `buildingCount`, `villaCount`, `unitCount`, `totalUnits` | Registered plots, buildings, villas, apartments and their total. |
| `changeType`, `previouslyDeliveredOn` | Only-new mode: `new` or `updated`, and when the record was last delivered. |
| Developers register | `developerNumber`, `name`, `registrationDate`, `licenseNumber`, `licenseIssueDate`, `licenseExpiryDate`, `licenseValid`, `licenseSource` (DED, Trakhees...), `licenseType`, `legalStatus`, `phone`, `fax`, `website` (contact fields only when DLD publishes them, about 1 in 5). |

### How much does it cost to get Dubai project data?

Pay per result: **$5 per 1,000 records** ($0.005 per project or developer; lower on higher Apify plans), no monthly fee. Records left out by filters, and unchanged records in only-new mode, are not charged. The whole project register is about 915 rows ($4.60), the developers register 215 rows ($1.08), a month of new approvals 15-30 rows (cents). A full run takes about 20 seconds.

### Tips

- **Launch radar:** `status: "pending"` lists projects registered but not yet approved, usually weeks before a launch; `status: "active"` with `daysBack: 30` lists the approvals of the last month.
- **Delivery tracking:** `dateType: "endDate"` with a year range gives the projects due that year, with their current `percentCompleted`.
- **Developer due diligence:** combine `developers: ["Name"]` on both registers: the projects and escrow accounts under that name, and its DLD registration and licence expiry.
- **Join with transactions and rents:** project names match the `project` field of [Dubai DLD Property Transactions](https://apify.com/data_daemon/dubai-property-transactions) and [Dubai Rent Contracts (Ejari)](https://apify.com/data_daemon/dubai-rent-contracts), so you can put registered sale prices and rents next to the developer's declared value per unit.
- `percentCompleted` is reported by developers to DLD and is occasionally inconsistent (one project shows 5200); treat outliers accordingly.

### FAQ

**Which projects are included?** Every project DLD's open-data gateway publishes: those whose start, planned end, approval or completion date falls in the current year. Projects from earlier years that are neither approved, due nor completed this year are not served by DLD (older years are on Dubai Pulse). On 1 January the register rolls over to the new year's projects.

**Why do pending projects have no escrow account or approval date?** DLD records them once the project is approved. The `onlyNew` feed delivers the project again as `updated` when that happens.

**Is this off-plan data?** Yes: the register is the list of development projects approved by DLD and RERA, which is where off-plan sales come from. Finished projects stay in the register for the year they complete.

**Is it legal?** The data is published by the Dubai Land Department as open data and contains business records only. You are responsible for how you use it.

**Something wrong or missing?** Open an issue on the Issues tab with the input you used.

### Related Actors by Daemon Data

- [Dubai DLD Property Transactions](https://apify.com/data_daemon/dubai-property-transactions) – registered sales, mortgages and gifts with AED value and price per sq m, daily
- [Dubai Rent Contracts (Ejari)](https://apify.com/data_daemon/dubai-rent-contracts) – registered rent contracts: annual rent, rent per sq m, area, new vs renewed
- [India New Company Registrations](https://apify.com/data_daemon/india-new-company-registrations) – newly incorporated Indian companies daily: CIN, type, state, activity, capital
- [UK Gazette Insolvency Notices](https://apify.com/data_daemon/uk-gazette-insolvency-notices) – winding-up petitions, administrations and liquidations
- [Magicbricks Scraper](https://apify.com/data_daemon/magicbricks-property-scraper) – India property listings: price, price per sq ft, carpet area, BHK, locality

All Daemon Data Actors: [apify.com/data_daemon](https://apify.com/data_daemon).

# Actor input Schema

## `dataset` (type: `string`):

Which DLD register to read. `projects` (default): every project DLD currently publishes, i.e. whose start, planned end, approval or completion date falls in the current year (915 projects on 9 Nov 2026, AED 212 billion, 323,000 units). `developers`: developers registered with DLD this year (215). Older years are not served by the DLD open-data gateway.

## `status` (type: `string`):

Projects only. `active` (default) = approved projects with an escrow account, approval date and construction progress; `pending` = newly registered projects awaiting approval (the earliest signal of a launch); `finished` = completed this year; `all` = everything incl. cancelled. On 9 Nov 2026: 601 active, 114 pending, 180 finished, 14 cancelled, 6 conditional.

## `fromDate` (type: `string`):

Optional. Start of a date range (included), `YYYY-MM-DD`, applied to **Date type** (projects) or the registration date (developers). Leave all date fields empty to read the whole current register.

## `toDate` (type: `string`):

Optional. End of the range (included), `YYYY-MM-DD`. Defaults to today when **From date** or **Days back** is set.

## `daysBack` (type: `integer`):

Optional. Instead of **From date**: the last N days up to **To date** (or today), both ends included. E.g. 30 with **Date type** `adoptionDate` gives the projects DLD approved in the last month (about 15-25 per month in 2026).

## `dateType` (type: `string`):

Projects only; which project date the range applies to. Ignored when no date range is given.

## `areas` (type: `array`):

Projects only. Official DLD area names or community names, e.g. `Madinat Al Mataar` (Dubai South), `Palm Deira` (Dubai Islands), `Al Barsha South Fourth` (JVC), `Business Bay`, `Wadi Al Safa 5`. Each area is fetched with its own query. Leave empty for all of Dubai. Unknown names are skipped with a suggestion in the run status.

## `developers` (type: `array`):

Keep only records whose developer name contains one of these texts (case-insensitive), e.g. `Emaar`, `Binghatti`, `Damac`, `Sobha`. Works for both registers. Filtered-out rows are not charged.

## `minProjectValueAed` (type: `integer`):

Projects only. Keep projects whose declared value is at least this amount, e.g. 500000000 for AED 500 million and above. Filtered-out rows are not charged.

## `sort` (type: `string`):

DLD numbers projects and developers in registration order, so `newestFirst` with **Max items** returns the latest registrations.

## `includeArabic` (type: `boolean`):

Add an `arabic` object with the Arabic project, developer, area and zone names.

## `maxItems` (type: `integer`):

Maximum records to save (0 = the whole register). Each saved record is one charged event; the default of 50 keeps a first try at about $0.25.

## `onlyNew` (type: `boolean`):

For scheduled runs: deliver (and charge) a project only when it is new to this **State name** or when its status, % completed, completion date, end date, value, unit count or escrow account changed since the last delivery. Each row then carries `changeType` (`new` or `updated`). Memory lasts 400 days.

## `stateName` (type: `string`):

Name of the only-new memory. Use a different name for each independent feed.

## `proxyConfiguration` (type: `object`):

Not needed: the DLD gateway answers directly. Provided in case DLD starts limiting requests.

## Actor input object example

```json
{
  "dataset": "projects",
  "status": "active",
  "dateType": "adoptionDate",
  "areas": [],
  "developers": [],
  "sort": "newestFirst",
  "includeArabic": false,
  "maxItems": 50,
  "onlyNew": false,
  "stateName": "default",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Registered projects (or developers) as JSON items in the default dataset (also downloadable as CSV, Excel, XML).

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("data_daemon/dubai-real-estate-projects").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("data_daemon/dubai-real-estate-projects").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call data_daemon/dubai-real-estate-projects --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,data_daemon/dubai-real-estate-projects"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/hWi68uNKaalGylgiP/builds/3bttLXTYDvDmxrZXa/openapi.json
