Dynamic Web Lab
v1.0REST API

Dubai Real Estate Data API

Integrate real-time Dubai property market data into your application. Access DLD transactions, rental yield, building analytics, and AI-powered search.

Quick Start

Step 1

Get API Key

Sign up and request access. Receive your Bearer token instantly.

Step 2

Make Request

Add your token to the Authorization header.

Step 3

Get Data

Parse JSON responses with property data from DLD.

Authentication

Base URL

https://api.buyorsell24.com

Bearer Token Authentication

All API requests require a Bearer token in the Authorization header.

HTTP Header
Authorization: Bearer YOUR_API_KEY

API Endpoints

GET/transactions

Fetch property transactions (sales, rentals, off-plan) from the Dubai Land Department.

Query Parameters

ParameterType
typestring
areastring
min_pricenumber
max_pricenumber
from_datestring (ISO 8601)
to_datestring (ISO 8601)
limitinteger (max 100)
cursorstring

Response Fields

FieldType
idstring
property_namestring
price_aednumber
area_sqftnumber
transaction_datestring (ISO 8601)
locationobject
developerstring
GET/api/v1/buildings

Paginated building list with filters. Sub-endpoints: /buildings/Building ID, /buildings/Building ID/stats, /buildings/Building ID/transactions, /buildings/Building ID/units.

GET/api/v1/areas

All Dubai areas with building counts. Sub-endpoints: /areas/ID, /areas/ID/buildings, /areas/ID/projects, /areas/ID/stats, /areas/ID/transactions, /areas/compare, /areas/summary/NAME.

GET/api/v1/projects

Paginated project list. Sub-endpoints: /projects/ID, /projects/ID/buildings, /projects/ID/stats, /projects/ID/transactions, /projects/ID/units, /projects/ID/price-trends, /projects/ID/rentals, /projects/top-performing.

GET/api/v1/rent-contracts

Ejari rent contracts. Sub-endpoints: /rent-contracts/stats, /rent-contracts/summary, /rent-contracts/trends, /rent-contracts/areas, /rent-contracts/yield-by-area, /rent-contracts/ejari, /rent-contracts/ejari/stats, /rent-contracts/ejari/yield, /rent-contracts/ID/full.

POST/api/v1/search/properties

AI-powered semantic property search. Also: GET /search/autocomplete, GET /search/buildings, GET /search/buildings/autocomplete, GET /search/projects, POST /search/describe.

GET/api/v1/developers

Developer directory with AI-generated profiles. Sub-endpoints: /developers/ID, /developers/ID/projects, /developers/ID/stats, /developers/ID/transactions.

GET/api/v1/brokers

Broker directory. Sub-endpoints: /brokers/top, /brokers/ID, /brokers/ID/areas, /brokers/ID/stats, /brokers/ID/transactions.

GET/api/v1/analytics/*

Market analytics: /analytics/rental-by-area, /analytics/yield-by-building, /analytics/offplan-premium, /analytics/seasonality, /analytics/top-areas.

GET/api/v1/maps/*

Map data: /maps/areas, /maps/areas/NAME, /maps/bounds, /maps/config, /maps/heatmap/properties, /maps/pois, /maps/pois/categories.

Code Examples

JavaScriptNode.js / Browser

// Fetch Dubai property transactions
const response = await fetch('https://api.buyorsell24.com/api/v1/transactions', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log(data.transactions);

Pythonrequests library

import requests

# Fetch Dubai property transactions
response = requests.get(
    'https://api.buyorsell24.com/api/v1/transactions',
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

data = response.json()
print(data['transactions'])

PHPcURL

<?php
$ch = curl_init('https://api.buyorsell24.com/api/v1/transactions');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$data = json_decode($response, true);
print_r($data['transactions']);
?>

Gonet/http

package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
)

func main() {
    req, _ := http.NewRequest("GET", "https://api.buyorsell24.com/api/v1/transactions", nil)
    req.Header.Add("Authorization", "Bearer YOUR_API_KEY")

    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()

    body, _ := ioutil.ReadAll(res.Body)
    fmt.Println(string(body))
}

Rate Limits

Startup Lite

100

requests per minute

Data from 2020 onwards

Startup Growth

300

requests per minute

AI search + webhooks

Enterprise

Custom

unlimited requests

Full historical data from 1998

Error Codes

CodeStatusDescription
200OKRequest successful
400Bad RequestInvalid parameters
401UnauthorizedInvalid or missing API key
403ForbiddenInsufficient permissions
404Not FoundResource not found
429Too Many RequestsRate limit exceeded
500Server ErrorInternal server error

Official SDKs

JavaScript / Node.js

npm install @dynamicweblab/realestate-api

Full TypeScript support, auto-generated types

Python

pip install dynamicweblab-realestate

Async/await support, Pydantic models

PHP

composer require dynamicweblab/realestate-php

PSR-4 autoloading, Laravel integration

Go

go get github.com/dynamicweblab/realestate-go

Context support, connection pooling

Ready to Integrate?

Get your API key and start building with Dubai's most comprehensive real estate data.

UAE PDPL
SOC 2 Type II
GDPR
FTA Ready
CCPA