Dubai Ejari rent contracts (DLD) as JSON API
Dubai Rent Contracts API is a pay-per-record Apify Actor by Daemon Data that returns Registered Dubai rent contracts (Ejari) from the official Dubai Land Department register: annual rent, contract value, size, rent per sqm, area, project, property type, new vs renewed, lease dates. Signed leases, not asking rents. $1 per 1,000 rows. as JSON, CSV or Excel. It costs $0.001 per rent contract row with the default options ($1.00 per 1,000); no login to the source site and no proxy or browser to set up on your side, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Dubai Rent Contracts API on Apify Listing as plain text
Checked on 8 Nov 2026
From 1 to 6 Nov 2026 Ejari registered 19,436 rent contracts (24,631 unit rows: 392 multi-unit contracts repeat their full amount on 5,587 rows). Of the 19,044 single-unit contracts, 53% were renewals and 76% residential. The median annual rent of 12,988 single-unit residential flats was AED 64,240; Marsa Dubai (Dubai Marina) AED 115,000 and Business Bay AED 90,000.
Why teams use it
- Registered rents. Every Ejari contract, not a sample of listings. New leases and renewals are both included and labelled.
- No double counting. DLD lists a contract that covers several units (a building, a labour camp) as one row per unit, and each row repeats the whole contract's rent. In the first week of November 2026, 392 such contracts produced 5,587 rows, one of them with 482 rows of AED 4,033,177.50 each. Summing those rows would add about AED 1.9 billion of rent for that one contract. Every row here carries
unitsInContract,annualRentPerSqmAedis only computed when rent and size describe the same thing, and One row per contract merges them (you then pay per contract). - Community names work. DLD uses official area names ("Marsa Dubai", "Al Barsha South Fourth"); this Actor also accepts Dubai Marina, JBR, Downtown, JVC, JVT, JLT, Dubai Hills, Sports City, Motor City, Damac Hills, Discovery Gardens, Al Furjan, International City, Silicon Oasis, Arjan, Town Square, Creek Harbour and Dubai South. A name like "Al Barsha" includes its numbered sub-areas.
- Complete paging. Rows come sorted by registration time; the rows of one contract always arrive together, so nothing is repeated or lost between pages. Checked against day-by-day pulls: 24,631 of 24,631 rows, 0 extra, 0 missing.
- Open data, no personal data. No tenant or landlord names, no contract numbers.
Output fields
The most useful top-level fields with values from a real record; the full list is registrationDate, registrationDateTime, startDate, endDate, contractDays, version, isNewContract, annualAmountAed, contractAmountAed, sizeSqm, annualRentPerSqmAed, unitsInContract, multiUnitContract, area, project, masterProject, propertyType, propertySubType, usage, freehold, rooms, parking, nearestMetro, nearestMall, nearestLandmark, unitRows, propertySubTypes, arabic, source, scrapedAt. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
registrationDate | string | "2026-11-05" |
registrationDateTime | string | "2026-11-05T10:45:57" |
startDate | string | "2026-11-01" |
endDate | string | "2027-10-31" |
contractDays | number | 365 |
version | string | "Renewed" |
isNewContract | boolean | false |
annualAmountAed | number | 41000 |
contractAmountAed | number | 41000 |
sizeSqm | number | 55.76 |
annualRentPerSqmAed | number | 735.29 |
unitsInContract | number | 1 |
multiUnitContract | boolean | false |
area | string | "Port Saeed" |
propertyType | string | "Unit" |
Input and how to call it
Example input. Fields and pricing were checked against the public listing on 2026-11-09; this build does not run paid example searches.
{
"daysBack": 7,
"areas": [
"Business Bay",
"Dubai Marina"
],
"propertySubTypes": [
"Flat"
],
"maxItems": 200
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~dubai-rent-contracts/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"daysBack": 7, "areas": ["Business Bay", "Dubai Marina"], "propertySubTypes": ["Flat"], "maxItems": 200}'
Python: ApifyClient(token).actor("data_daemon/dubai-rent-contracts").call(run_input=...). Python example · Node.js example · n8n workflow.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/dubai-rent-contracts with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
fromDate | string | Start of the range (included), YYYY-MM-DD (DD/MM/YYYY also accepted), matched against the date chosen in Date type (registration date by default). Leave empty to use Days back instead, so a scheduled run never needs a date edit. |
toDate | string | End of the range (included), YYYY-MM-DD. Defaults to today (UTC). |
daysBack | integer | Used when From date is empty: the last N days up to To date (or today), both ends included, so N=1 covers yesterday and today. Default 7. Dubai registers about 5,000 rent contract rows per working day (about 25,000-30,000 a week, Nov 2026). For a daily scheduled feed use 2 with Only new contracts on. |
dateType | string | Which contract date the range applies to. registrationDate (default) gives a clean daily feed of newly registered contracts; startDate finds leases starting in the range; endDate finds leases expiring in the range (renewal and churn prospecting). |
contractVersion | string | Filter by Ejari contract version. About 45% of registrations are new leases and 55% renewals (Nov 2026). |
usage | string | Filter by property usage: about 76% residential, 23% commercial (Nov 2026). |
freehold | string | Freehold areas are where foreigners can own property (Dubai Marina, Downtown, JVC...). |
areas | array | Official DLD area names, e.g. Business Bay, Al Barsha South Fourth, Marsa Dubai (Dubai Marina), Burj Khalifa (Downtown). 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. |
propertySubTypes | array | Keep only these sub-types, e.g. Flat, Villa, Office, Shop, Warehouse, Labor Camps, Hotel apartments. Leave empty for all. Filtered-out rows are not charged. |
oneRowPerContract | boolean | DLD lists a contract that covers several units (a building, a labour camp) as one row per unit, and every row repeats the whole contract's amount. On: such contracts are merged into one row with unitsInContract, the total sizeSqm and the sub-types, so rent totals are not inflated and you pay per contract (Nov 1-6 2026: 24,631 rows = 19,436 contracts). Off (default): one row per unit, as DLD publishes it. |
sort | string | Order by registration time. With Max items set, newestFirst returns the latest contracts. |
includeArabic | boolean | Add an arabic object with the Arabic area, project, property type and landmark names. |
maxItems | integer | Maximum rows to save (0 = everything in range). Each saved row is one charged event; the default of 200 keeps a first try cheap. |
onlyNew | boolean | For scheduled runs: skip (and do not charge) rows that an earlier only-new run with the same State name and filters already delivered. Memory lasts 120 days. |
stateName | string | Name of the only-new memory. Use a different name for each independent feed. |
Price
$0.001 per rent contract row ($1.00 per 1,000). List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Rent contract row | $0.001 | $1.00 | One registered Dubai rent contract row (or one merged contract with One row per contract) saved to the dataset. Rows left out by filters or already delivered in only-new mode are never charged. |
Cost example: 200 rent contract rows with default options cost $0.2, including any start fee. This is an illustrative record count; set explicit row and total-charge caps for your run. Apify's free plan includes $5 of usage a month, about 5,000 rent contract rows before start fees; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
Ready-made example pages
Saved inputs you can run with one click on Apify (Examples tab); each has its own page:
- Dubai Marina Rent Prices API - Ejari Flat Contracts, 7 Days: Every registered Ejari rent contract for a flat in Dubai Marina (DLD area Marsa Dubai) in the last 7 days, newest first: annual rent in AED, rent per sqm, size, new lease or renewal, lease start and end dates, and the pr
{"daysBack": 7, "areas": ["Marsa Dubai"], "usage": "residential", "propertySubTypes": ["Flat"], "oneRowPerContract": true, "sort": "newestFirst", "maxItems": 10 - Business Bay Office Rents API - Ejari Commercial Leases: Every registered Ejari office lease in Business Bay in the last 7 days, newest first: annual rent in AED, rent per sqm, size, building/project, new lease or renewal, start and end dates. About two in three rows are Ejari
{"daysBack": 7, "areas": ["Business Bay"], "usage": "commercial", "propertySubTypes": ["Office"], "oneRowPerContract": true, "sort": "newestFirst", "maxItems":
Alternatives, honestly
| Option | What it gives you | Where it falls short for this job |
|---|---|---|
| DLD open-data rents page | Official search and CSV download by hand | Manual extracts; multi-unit contracts repeat the full amount on every unit row |
| DXB Interact / rental index | Official charts and the RERA rental index | Averages, not contract-level rows; not a data feed |
| Paid property data platforms | Cleaned market data with support | Subscriptions; the Ejari register itself is open data |