API reference · v1 · REST + JSON

Build on live UAE
off-plan data.

Projects, units, payment plans, floor plans and developers through one clean JSON API. Make your first call in a minute, then go as deep as your product needs.

terminal

$

off-plan projects
0+
live available units
0+
developers
0+
UAE emirates covered
0
On this page / Introduction▾

Getting started

Introduction

The Dubai Property Leads API is a REST API for UAE off-plan real estate: projects with media and payment plans, live unit availability with prices and floor plans, developers, emirates and districts. Responses are JSON, timestamps are ISO 8601 in UTC, and prices are in AED.

All seven emirates are covered, alongside a growing set of projects outside the UAE. Every image, floor plan and brochure link is served from our own domain, so you can show it in your product as is.

Endpoints at a glance

base url
https://api.dubaipropertyleads.ae

Quick start

  1. 1

    Get a key

    Start free on RapidAPI (Basic plan), or subscribe directly for a production key and an SLA. Enterprise Direct adds the right to store the data.

  2. 2

    Make your first call

    Send the key in the X-API-Key header. The request on the right lists projects on sale in Dubai.

  3. 3

    Go deeper

    Take an id from the list and call /v1/projects/{id} for the full record: payment plan, floor plans, documents and live units.

curl -G "https://api.dubaipropertyleads.ae/v1/projects" \
  -d region=Dubai \
  -d status=on_sale \
  -H "X-API-Key: $API_KEY"
200example response
{
  "total": 3,
  "page": 1,
  "limit": 3,
  "max_pages": 1,
  "items": [
    {
      "id": "3303",
      "name": "Maybach Ultimate Luxury",
      "status": "on_sale",
      "location": {
        "lat": 25.16469890210313,
        "lng": 55.324032173768316,
        "district_name": "Meydan (Nad Al Sheba  1)"
      },
      "country_code": "AE",
      "country": "United Arab Emirates",
      "region": "Dubai",
      "data_completeness": "full",
      "cover_image": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
      "images": [
        "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
        "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
        "… 38 more"
      ],
      "brochure_url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
      "price": {
        "from": 1350000,
        "currency": "AED"
      },
      "payment_plan": [
        {
          "name": "Payment Plan",
          "items": [
            {
              "name": "10%",
              "description": "On booking",
              "percentage": 10.0,
              "stage_type": "on_booking"
            },
            {
              "name": "30%",
              "description": "During construction",
              "percentage": 30.0,
              "stage_type": "during_construction"
            },
            "… 1 more"
          ]
        }
      ],
      "completion_date": "2028-06-30",
      "developer": {
        "developer_id": "80",
        "name": "Binghatti",
        "logo": {
          "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
          "conversions": null
        },
        "overview": "Binghatti is a visionary real estate developer renowned for its commitment to iconic architecture and innovative design. From its incepti…"
      },
      "updated_at": "2026-10-21T18:46:29.648687Z"
    }
  ]
}

Authentication

Every request needs your API key in the X-API-Key header. Direct keys start with sk_live_ and are emailed to your technical contact when your subscription starts.

Using RapidAPI? Call the API through RapidAPI with your RapidAPI key; the playground on RapidAPI shows the exact URL and headers for your account.

Keep your key secret

Call the API from your server, not from browser or app code, and store the key in an environment variable. If a key leaks, contact support to have it replaced.
request header
X-API-Key: sk_live_YOUR_KEY

Pagination

Projects and developers return at most 10 results per request. Move through them with page; every response includes total and max_pages. The full catalogue of 2,963 projects is 297 pages, so filter by region, developer or status to fetch only what you need.

Units return up to 100 per request and districts 10, both paged with limit and offset.

Loading the whole catalogue

Page with sort=project_id&order=asc. Projects added while you page then land at the end instead of shifting the pages you have not read yet. After the first load, sync only what changed.
curl -G "https://api.dubaipropertyleads.ae/v1/projects" \
  -d sort=project_id \
  -d order=asc \
  -d page=2 \
  -H "X-API-Key: $API_KEY"

Rate limits

Limits are set per key by your plan.

Business Direct

300 requests / minute

25,000 requests / month

Enterprise Direct

500 requests / minute

100,000 requests / month

RapidAPI

Per your plan

Set by RapidAPI

Going over the per-minute limit returns 429 with a Retry-After header (seconds to wait) and X-RateLimit-Limit. Images and documents do not count towards your limits.

429too many requests
{
  "error": "Rate limit exceeded: 300 per 1 minute"
}

Errors

Errors use standard HTTP status codes. The body is JSON with a detail message (error for rate limits).

400

Bad request

e.g. a webhook URL that is not public HTTPS.

403

Not allowed

Missing, invalid or revoked key, or an expired subscription.

404

Not found

No project with that ID.

422

Invalid parameter

A value is out of range, e.g. limit above the maximum.

429

Rate limited

Wait for Retry-After seconds, then retry.

5xx

Server error

Retry with backoff; contact support if it persists.

403error body
{
  "detail": "Invalid API Key"
}

Data freshness

Every 6 hours

Project information: details, media, prices, payment plans.

Daily

Unit availability: units that sold or were reserved drop out.

Only records whose content changed are rewritten, and each one carries updated_at. When a project has nothing left to sell, its status moves to out_of_stock and its availability_summary updates with it.

Recommended sync

Load the catalogue once, then on a schedule request /v1/projects?sort=updated_at&order=desc and stop paging when you reach records older than your last sync. Re-fetch the detail only for those projects; a webhook tells you about new projects as they arrive.

Images & documents

Images, floor plans, master plans and PDF brochures come as links on api.dubaipropertyleads.ae. They are public (no key needed), so you can use them directly in <img> tags and download links.

Links are long-lived and cached for a year, so browsers and CDNs serve repeat views without calling us. Loading media does not count towards your request limits.

media link
https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…

Endpoints

List projects

GET/v1/projects

Returns a paginated list of projects. Combine any of the filters below.

Query parameters

pageinteger · default 1
Page number.
limitinteger · default 10, max 10
Results per page.
project_namestring
Search by project name; tolerant of typos.
developerstring
Developer name, e.g. Emaar.
districtstring
District name, e.g. Business Bay.
statusstring
Sales status; values below.
countrystring
ISO code or name, e.g. AE.
regionstring
Emirate or province, e.g. Dubai, Abu Dhabi. See Regions.
sortstring · default project_id
project_id, updated_at or created_at.
orderstring · default desc
desc or asc.

Sales status values

on_sale
The developer is selling units now; live units are listed.
start_of_sales
Sales are opening; inventory is being released.
presale
Pre-launch stage, before general sales.
announced
Announced by the developer; sales have not started.
out_of_stock
No unsold units left to sell directly: primary inventory is sold out. Common on projects handing over years from now; resale units may still exist.
curl -G "https://api.dubaipropertyleads.ae/v1/projects" \
  -d country=AE \
  -d region=Dubai \
  -d status=on_sale \
  -H "X-API-Key: $API_KEY"
200example response
{
  "total": 3,
  "page": 1,
  "limit": 3,
  "max_pages": 1,
  "items": [
    {
      "id": "3303",
      "name": "Maybach Ultimate Luxury",
      "status": "on_sale",
      "location": {
        "lat": 25.16469890210313,
        "lng": 55.324032173768316,
        "district_name": "Meydan (Nad Al Sheba  1)"
      },
      "country_code": "AE",
      "country": "United Arab Emirates",
      "region": "Dubai",
      "data_completeness": "full",
      "cover_image": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
      "images": [
        "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
        "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
        "… 38 more"
      ],
      "brochure_url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
      "price": {
        "from": 1350000,
        "currency": "AED"
      },
      "payment_plan": [
        {
          "name": "Payment Plan",
          "items": [
            {
              "name": "10%",
              "description": "On booking",
              "percentage": 10.0,
              "stage_type": "on_booking"
            },
            {
              "name": "30%",
              "description": "During construction",
              "percentage": 30.0,
              "stage_type": "during_construction"
            },
            "… 1 more"
          ]
        }
      ],
      "completion_date": "2028-06-30",
      "developer": {
        "developer_id": "80",
        "name": "Binghatti",
        "logo": {
          "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
          "conversions": null
        },
        "overview": "Binghatti is a visionary real estate developer renowned for its commitment to iconic architecture and innovative design. From its incepti…"
      },
      "updated_at": "2026-10-21T18:46:29.648687Z"
    }
  ]
}

Get a project

GET/v1/projects/{id}

The full project record: identity, developer, location, pricing and payment plan, timeline, Dubai Land Department registration, media and documents, an availability summary and the live units.

Path parameter

idstringrequired
Project ID from List projects.

Key fields

idstring
Project ID. Use it with /v1/projects/{id} and /units.
namestring
Project name as marketed by the developer.
status, sale_statusstring
Sales status (see List projects for values).
country, regionstring
Country and emirate or province, e.g. United Arab Emirates, Dubai.
locationobject
lat, lng and district_name, ready for maps.
developerobject
developer_id, name, logo and overview.
priceobject
Starting price: from (number) and currency (AED).
payment_planarray
Payment plan stages, each with name, description, percentage and stage_type (on_booking, during_construction, on_handover…).
completion_date, handover_yearstring
Expected completion as published by the developer.
service_chargestring
Annual service charge, e.g. "18 AED/sqft".
dld_registrationobject
Dubai Land Department registry: project_number, status, escrow_bank, registered_units, registration_start_date.
cover_image, imagesurl, url[]
Gallery images on our domain.
floor_plansarray
One entry per layout: name and image url. A unit's layout_name matches a floor plan's name.
master_plan_image, brochure_urlurl
Master plan image and brochure PDF, when the developer has published them.
documentsarray
Every PDF for the project: name, type (brochure, floor_plan…) and url.
availability_summaryobject
available_total, declared_total, sold_or_reserved_percent, and a by_bedroom breakdown with price and size ranges.
unitsarray
Live available units: name (unit code), bedrooms, size_sqft, floor, price_aed, price_per_sqft_aed, layout_name.
updated_attimestamp
When this record last changed. Use it to sync only what changed.

Fields the developer has not published yet are null or empty arrays.

curl "https://api.dubaipropertyleads.ae/v1/projects/3301" \
  -H "X-API-Key: $API_KEY"
200example response
{
  "id": "3301",
  "name": "Project Maybach",
  "status": "on_sale",
  "sale_status": "on_sale",
  "region": "Dubai",
  "country": "United Arab Emirates",
  "price": {
    "from": 1350000,
    "currency": "AED"
  },
  "payment_plan": [
    {
      "name": "Payment Plan",
      "items": [
        {
          "name": "10%",
          "description": "On booking",
          "percentage": 10.0,
          "stage_type": "on_booking"
        },
        {
          "name": "30%",
          "description": "During construction",
          "percentage": 30.0,
          "stage_type": "during_construction"
        },
        "… 1 more"
      ]
    }
  ],
  "handover_year": "2027",
  "service_charge": "18 AED/sqft",
  "dld_registration": {
    "project_number": "4319",
    "status": "Active",
    "escrow_bank": "Dubai Islamic Bank (Public Joint Stock Company)",
    "registered_units": 831,
    "registration_start_date": "2026-01-14",
    "checked_at": "2026-09-05T13:27:36.063425Z"
  },
  "floor_plans": [
    {
      "name": "0 BR Type A",
      "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…"
    },
    {
      "name": "0 BR Type B",
      "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…"
    },
    "… 130 more"
  ],
  "documents": [
    {
      "name": "Project Maybach.pdf",
      "type": "brochure",
      "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…"
    },
    {
      "name": "Project Maybach FloorPlan (1).pdf",
      "type": "floor_plan",
      "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…"
    }
  ],
  "availability_summary": {
    "available_total": 488,
    "declared_total": 816,
    "declared_total_source": "configurations",
    "unavailable_estimate": 328,
    "sold_or_reserved_percent": 40.2,
    "by_bedroom": [
      {
        "bedrooms": 0.0,
        "available": 350,
        "declared": 608,
        "unavailable_estimate": 258,
        "price_range_aed": {
          "from": 1350000,
          "to": 1420000
        },
        "size_range_sqft": {
          "from": 362.31,
          "to": 408.28
        }
      },
      {
        "bedrooms": 1.0,
        "available": 33,
        "declared": 76,
        "unavailable_estimate": 43,
        "price_range_aed": {
          "from": 2303000,
          "to": 2400000
        },
        "size_range_sqft": {
          "from": 632.16,
          "to": 632.16
        }
      },
      "… 2 more"
    ]
  },
  "units": [
    {
      "id": 762335,
      "name": "PMYB-1008",
      "status": "available",
      "type": "off_plan",
      "unit_type": "apartments",
      "bedrooms": 0.0,
      "size_sqft": 400.53,
      "floor": 10.0,
      "floor_label": "10",
      "price_aed": 1370000,
      "price_per_sqft_aed": 3420,
      "building_id": 6733,
      "layout_name": "0 BR Type A",
      "layout_id": 85659,
      "modified": "2026-10-05T17:13:48.031646Z"
    },
    {
      "id": 650987,
      "name": "PMYB-308",
      "status": "available",
      "type": "off_plan",
      "unit_type": "apartments",
      "bedrooms": 0.0,
      "size_sqft": 400.53,
      "floor": 3.0,
      "floor_label": "3",
      "price_aed": 1351000,
      "price_per_sqft_aed": 3373,
      "building_id": 6733,
      "layout_name": "0 BR Type A",
      "layout_id": 85659,
      "modified": "2026-10-05T17:14:31.861948Z"
    },
    "… 486 more"
  ]
}

List project units

GET/v1/projects/{id}/units

Live available units for one project, with filters and sorting. The response also lists available_values (bedrooms, unit types, floors) so you can build filters without guessing.

Query parameters

limitinteger · default 20, max 100
Units per request.
offsetinteger · default 0
Units to skip.
bedroomsinteger
Exact bedroom count; 0 is a studio.
unit_typestring
e.g. apartments, retail, villa.
min_price / max_priceinteger · AED
Price range.
min_size / max_sizenumber · sqft
Size range.
floorinteger
Exact floor.
layout_idinteger
Units of one floor-plan type.
sortstring
price_asc, price_desc, size_asc, size_desc, floor_asc, floor_desc.
curl -G "https://api.dubaipropertyleads.ae/v1/projects/3301/units" \
  -d bedrooms=2 \
  -d sort=price_asc \
  -H "X-API-Key: $API_KEY"
200example response
{
  "project_id": "3301",
  "project_name": "Project Maybach",
  "total": 62,
  "limit": 3,
  "offset": 0,
  "returned": 3,
  "filters_applied": {
    "bedrooms": 2,
    "sort": "price_asc"
  },
  "available_values": {
    "bedrooms": [
      0.0,
      1.0,
      "… 2 more"
    ],
    "status": [
      "available"
    ],
    "unit_type": [
      "apartments",
      "retail"
    ],
    "floors": [
      0,
      2,
      "… 22 more"
    ]
  },
  "items": [
    {
      "id": 651382,
      "name": "PMYB-319",
      "status": "available",
      "type": "off_plan",
      "unit_type": "apartments",
      "bedrooms": 2.0,
      "size_sqft": 992.0,
      "floor": 3.0,
      "floor_label": "3",
      "price_aed": 3200000,
      "price_per_sqft_aed": 3225,
      "building_id": 6733,
      "layout_name": "2 BR Type A",
      "layout_id": 85749,
      "modified": "2026-10-05T17:13:59.350021Z"
    },
    {
      "id": 651383,
      "name": "PMYB-322",
      "status": "available",
      "type": "off_plan",
      "unit_type": "apartments",
      "bedrooms": 2.0,
      "size_sqft": 992.0,
      "floor": 3.0,
      "floor_label": "3",
      "price_aed": 3200000,
      "price_per_sqft_aed": 3225,
      "building_id": 6733,
      "layout_name": "2 BR Type B",
      "layout_id": 85750,
      "modified": "2026-10-05T17:13:59.270922Z"
    },
    "… 1 more"
  ]
}

List developers

GET/v1/developers

Developer profiles with logo and overview, ready for a developers page or a filter.

Query parameters

pageinteger · default 1
Page number.
limitinteger · default 10, max 10
Results per page.
developer_namestring
Partial name match, e.g. binghatti.
sortstring · default name
name or updated_at.
orderstring · default asc
asc or desc.
curl -G "https://api.dubaipropertyleads.ae/v1/developers" \
  -d developer_name=binghatti \
  -H "X-API-Key: $API_KEY"
200example response
{
  "total": 2,
  "page": 1,
  "limit": 1,
  "max_pages": 2,
  "items": [
    {
      "developer_id": "80",
      "name": "Binghatti",
      "logo": {
        "url": "https://api.dubaipropertyleads.ae/v1/proxy/image?token=v1.…",
        "conversions": null
      },
      "overview": "Binghatti is a visionary real estate developer renowned for its commitment to iconic architecture and innovative design. From its incepti…",
      "created_at": "2026-10-20T15:53:25.949728Z",
      "updated_at": "2026-10-21T17:36:27.109866Z"
    }
  ]
}

Regions

GET/v1/regions

Every country and region (emirate or province) in the catalogue with its project count. Use the names as the country and region filters on List projects.

curl "https://api.dubaipropertyleads.ae/v1/regions" \
  -H "X-API-Key: $API_KEY"
200example response
{
  "total_projects": 2968,
  "unlocated_projects": 0,
  "countries": [
    {
      "country_code": "AE",
      "country": "United Arab Emirates",
      "projects": 2798,
      "regions": [
        {
          "region": "Dubai",
          "projects": 2289
        },
        {
          "region": "Abu Dhabi",
          "projects": 200
        },
        "… 5 more"
      ]
    },
    {
      "country_code": "ID",
      "country": "Indonesia",
      "projects": 69,
      "regions": [
        {
          "region": "Bali",
          "projects": 68
        },
        {
          "region": "East Nusa Tenggara",
          "projects": 1
        }
      ]
    }
  ],
  "attribution": "Region boundaries © OpenStreetMap contributors / geoBoundaries (ODbL / CC BY)."
}

Districts

GET/v1/districts

Areas and sub-communities with a description and, where available, average price per square foot overall and by bedroom type.

Query parameters

limitinteger · default 10, max 10
Results per page.
offsetinteger · default 0
Results to skip.
curl -G "https://api.dubaipropertyleads.ae/v1/districts" \
  -d limit=10 \
  -d offset=0 \
  -H "X-API-Key: $API_KEY"
200example response
{
  "total": 368,
  "limit": 1,
  "offset": 0,
  "items": [
    {
      "id": 81,
      "name": "Business Bay",
      "description": "Business Bay is a commercial, residential and business hub straddling the Dubai Water Canal.\n The most popular and most famous attraction…",
      "metrics": {
        "avgPricePerSquare": 3538.41,
        "avgPricePerSquareFor1BR": 2736.94,
        "avgPricePerSquareFor2BR": 3069.76,
        "avgPricePerSquareForStudio": 2835.2
      }
    }
  ]
}

Market analytics

GET/v1/analytics/trends

A market snapshot computed from the live catalogue: the market pulse (total, active and sold-out projects, new launches and projects added this month), average and median starting prices by district, and the most active developers. Filter by country or emirate.

Query parameters

countrystring
ISO code or name, e.g. AE.
regionstring
Emirate or province, e.g. Dubai. See Regions.
curl -G "https://api.dubaipropertyleads.ae/v1/analytics/trends" \
  -d region=Dubai \
  -H "X-API-Key: $API_KEY"
200example response (trimmed)
{
  "market_pulse": {
    "total_projects": 2288,
    "new_this_month": 31,
    "active_projects": 1542,
    "sold_out_projects": 746,
    "new_launches": 115
  },
  "price_trends": [
    {
      "district": "JVC (Jumeirah Village Circle)",
      "region": "Dubai",
      "avg_price": 1746443,
      "median_price": 1162934,
      "project_count": 140,
      "currency": "AED"
    },
    {
      "district": "Dubai Islands",
      "region": "Dubai",
      "avg_price": 3129777,
      "median_price": 2543000,
      "project_count": 105,
      "currency": "AED"
    },
    "… 18 more"
  ],
  "top_developers": [
    {
      "name": "Emaar",
      "count": 231
    },
    {
      "name": "DAMAC Properties",
      "count": 161
    },
    {
      "name": "Azizi",
      "count": 80
    },
    "… 7 more"
  ],
  "filters": {
    "country": null,
    "region": "Dubai"
  },
  "generated_at": "2026-10-26T16:10:36.477391+00:00"
}

Webhooks

Overview & events

Register an HTTPS URL and we POST to it when an event happens, so new projects reach your system without waiting for your next sync.

Catalogue sync

Signed POST

Your server

Events

project.created
New projects enter the catalogue. Sent after each sync, with one item per new project.

Each request carries X-Estate-Event (the event name) and X-Estate-Signature. Fetch the full record from the url in each item.

Delivery

We make one delivery attempt with a 5-second timeout and do not retry. Respond with any 2xx quickly and do the work afterwards, and keep your scheduled sync running as a safety net.
POST body · project.created
{
  "event": "project.created",
  "timestamp": 1792760400.52,
  "data": [
    {
      "id": "7312",
      "name": "Example Residences",
      "developer": "Example Developer",
      "country_code": "AE",
      "region": "Dubai",
      "sale_status": "presale",
      "data_completeness": "full",
      "url": "https://api.dubaipropertyleads.ae/v1/projects/7312"
    }
  ]
}

Manage webhooks

POST/v1/webhooks

Creates a subscription. The URL must be public HTTPS. The response includes a secret used to sign every delivery; store it securely (List webhooks also returns it).

Body (JSON)

urlstringrequired
Your HTTPS endpoint.
eventsstring[] · default ["project.created"]
Events to receive.

Also available

GET/v1/webhooks

Lists the webhooks on your key.

DELETE/v1/webhooks/{id}

Deletes a webhook.

curl -X POST "https://api.dubaipropertyleads.ae/v1/webhooks" \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/hooks/dpl","events":["project.created"]}'
200response
{
  "id": "3f6c2a9e-…",
  "url": "https://example.com/hooks/dpl",
  "events": ["project.created"],
  "secret": "9b1f…",
  "created_at": "2026-10-23T10:15:02Z"
}

Verify signatures

X-Estate-Signature is the hex HMAC-SHA256 of the raw request body, keyed with your webhook secret. Compute it on your side and compare in constant time before trusting the payload.

Use the raw body

Verify the body exactly as received. Parsing and re-serialising the JSON changes the bytes, and the check fails.
verify.js
import crypto from "node:crypto";

// rawBody: the request body exactly as received (string), before JSON.parse
function isValidSignature(rawBody, signature, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  if (!signature || signature.length !== expected.length) return false;
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signature));
}

// isValidSignature(rawBody, req.headers["x-estate-signature"], process.env.WEBHOOK_SECRET)
verify.py
import hashlib
import hmac

# raw_body: the request body exactly as received (bytes), before parsing
def is_valid_signature(raw_body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature or "")

# is_valid_signature(request.body, request.headers["X-Estate-Signature"], WEBHOOK_SECRET)

Resources

Changelog

23 Oct 2026

  • Documentation rebuilt: quick start, rate limits, errors, webhooks and a field reference for project records.

20 Oct 2026

  • Project records add brochure_url, documents[], master_plan_image and videos[].
  • Developer details on project records.

18 Oct 2026

  • Per-unit inventory on project records: units[], availability_summary, DLD registration and escrow data.
  • New endpoint: /v1/projects/{id}/units with filters and sorting.

17 Oct 2026

  • Media links now use encrypted tokens on api.dubaipropertyleads.ae.

Make your first call today.

Start free on RapidAPI, or subscribe directly for production limits and an SLA. Enterprise Direct adds the right to store the data.