UAE Dataset Categories & APIs
Explore government datasets organized by category with direct links, API endpoints, and integration examples.
External Data Sources - Important Information These UAE government datasets are third-party services outside the Open Finance platform: Availability & Reliability:
APIs may experience downtime, rate limiting, or slow response times
No guarantee of availability during the hackathon
Not covered by hackathon technical support
Data Quality:
Data freshness varies by source (some updated monthly, some real-time)
Accuracy and completeness may vary
Always validate data before relying on it for critical features
Implementation Risk:
Budget significant time for integration challenges
Test API availability early in your development cycle
Implement fallback strategies (cached data, sample datasets)
Optional Enhancement:
These datasets are inspirational additions, not requirements
You can build excellent projects using only Open Finance APIs
Best Practice : Test all external APIs within the first few hours of the hackathon. If unavailable or unreliable, pivot to alternative features or use sample data.
💡 Quick Tip : Each dataset includes sample API calls you can test immediately in your browser or Postman.
💰 Finance, Economy & Business
Central Bank of the UAE (CBUAE)
Banking indicators, financial stability, monetary statistics
Website : CBUAE Statistics
Data Format : Excel, PDF (quarterly reports)
Update Frequency : Monthly/Quarterly
Key Datasets :
Banking indicators by emirate
Financial Stability Indicators (FSIs)
Money supply (M0, M1, M2, M3)
Credit and deposits by sector
Interest rates and exchange rates
Integration Example :
// Parse CBUAE Excel data (after download)
import * as XLSX from 'xlsx' ;
async function parseCBUAEData ( filePath ) {
const workbook = XLSX . readFile ( filePath );
const sheet = workbook . Sheets [ workbook . SheetNames [ 0 ]];
const data = XLSX . utils . sheet_to_json ( sheet );
return data . map ( row => ({
indicator: row [ 'Indicator' ],
value: parseFloat ( row [ 'Value' ]),
date: row [ 'Date' ],
emirate: row [ 'Emirate' ]
}));
}
Ministry of Finance
Federal budgets, government financial statistics
Website : MOF Open Data
Data Format : PDF, Excel
Update Frequency : Annual
Key Datasets :
Federal budget allocations
Government revenue and expenditure
GFS time series data
Dubai Financial Market (DFM)
Market indices, trading volumes, listed companies
API Endpoint : Via Dubai Pulse
Sample Request :
// Fetch DFM index data from Dubai Pulse
const DFM_API = 'https://www.dubaipulse.gov.ae/api/dataset/dfm-indices' ;
async function getDFMIndex () {
const response = await fetch ( DFM_API , {
headers: { 'Accept' : 'application/json' }
});
return response . json ();
}
Dubai DED Business Licenses
Complete business registration data for Dubai
// Search businesses by sector
const DED_API = 'https://api.dubaipulse.gov.ae/v1/ded/businesses' ;
async function searchBusinesses ( sector , area ) {
const params = new URLSearchParams ({
sector: sector ,
area: area ,
limit: 100
});
const response = await fetch ( ` ${ DED_API } ? ${ params } ` );
return response . json ();
}
National Economic Register (NER)
Unified business registry across UAE
Website : NER Portal
Access : Public search (no bulk API)
Use Case : KYB verification, business validation
🏠 Real Estate & Urban Development
Dubai Land Department (DLD)
Property transactions, prices, ownership data
const DLD_API = 'https://api.dubaipulse.gov.ae/v1/dld/transactions' ;
async function getPropertyTransactions ( area , propertyType ) {
const params = new URLSearchParams ({
area: area ,
property_type: propertyType ,
year: 2024 ,
limit: 500
});
const response = await fetch ( ` ${ DLD_API } ? ${ params } ` );
const data = await response . json ();
// Calculate average price per sqft
const avgPrice = data . reduce (( sum , t ) => sum + t . price_per_sqft , 0 ) / data . length ;
return { transactions: data , avgPricePerSqft: avgPrice };
}
// Example: Get Palm Jumeirah apartment prices
getPropertyTransactions ( 'Palm Jumeirah' , 'Apartment' );
Rental Market Data
Rental prices, contracts, trends
API : Dubai Pulse Rental Index
Sample Data Structure :
{
"area" : "Dubai Marina" ,
"property_type" : "1BR Apartment" ,
"avg_annual_rent" : 95000 ,
"min_rent" : 75000 ,
"max_rent" : 120000 ,
"sample_size" : 450 ,
"last_updated" : "2024-01-15"
}
Abu Dhabi Municipality
Property data for Abu Dhabi emirate
🚗 Transport & Mobility
RTA Dubai
Public transport ridership, traffic, parking
API Base : https://api.dubaipulse.gov.ae/v1/rta/
Available Endpoints :
// Metro ridership data
const METRO_API = 'https://api.dubaipulse.gov.ae/v1/rta/metro/ridership' ;
async function getMetroRidership ( station , month ) {
const response = await fetch ( ` ${ METRO_API } ?station= ${ station } &month= ${ month } ` );
return response . json ();
}
// Parking availability
const PARKING_API = 'https://api.dubaipulse.gov.ae/v1/rta/parking/availability' ;
async function getParkingAvailability ( zone ) {
const response = await fetch ( ` ${ PARKING_API } ?zone= ${ zone } ` );
return response . json ();
}
Dubai Police Traffic Incidents
Real-time traffic incidents, accident hotspots
API : Contact center incident logs via Dubai Pulse
Sample Request :
const TRAFFIC_API = 'https://api.dubaipulse.gov.ae/v1/police/traffic-incidents' ;
async function getTrafficIncidents ( date , area ) {
const params = new URLSearchParams ({
date: date ,
area: area ,
severity: 'all'
});
const response = await fetch ( ` ${ TRAFFIC_API } ? ${ params } ` );
const incidents = await response . json ();
// Create heatmap data
return incidents . map ( i => ({
lat: i . latitude ,
lng: i . longitude ,
severity: i . severity ,
time: i . incident_time
}));
}
🏨 Tourism & Retail
Dubai Tourism (DET)
Visitor statistics, hotel data, events
const DET_API = 'https://api.dubaipulse.gov.ae/v1/tourism/' ;
async function getTourismStats ( year , month ) {
const endpoints = [
` ${ DET_API } visitors?year= ${ year } &month= ${ month } ` ,
` ${ DET_API } hotels/occupancy?year= ${ year } &month= ${ month } ` ,
` ${ DET_API } visitors/nationality?year= ${ year } &month= ${ month } `
];
const [ visitors , occupancy , nationality ] = await Promise . all (
endpoints . map ( url => fetch ( url ). then ( r => r . json ()))
);
return {
totalVisitors: visitors . total ,
hotelOccupancy: occupancy . rate ,
topMarkets: nationality . slice ( 0 , 10 )
};
}
Mall visitors, retail trends
Source : Dubai Statistics Center
Access : Quarterly reports, some API access via Dubai Pulse
👥 Demographics & Social
Federal Competitiveness & Statistics Centre (FCSC)
Population, employment, social indicators
const FCSC_API = 'https://api.fcsc.gov.ae/v1/' ;
// Population by emirate
async function getPopulationData () {
const response = await fetch ( ` ${ FCSC_API } population/emirates` );
return response . json ();
}
// CPI and inflation
async function getInflationData ( year ) {
const response = await fetch ( ` ${ FCSC_API } economy/cpi?year= ${ year } ` );
return response . json ();
}
KHDA Education Data
School information, fees, performance
const KHDA_API = 'https://api.dubaipulse.gov.ae/v1/khda/schools' ;
async function getSchoolData ( curriculum , rating ) {
const params = new URLSearchParams ({
curriculum: curriculum , // 'British', 'American', 'IB', etc.
rating: rating , // 'Outstanding', 'Good', etc.
fields: 'name,fees,location,rating'
});
const response = await fetch ( ` ${ KHDA_API } ? ${ params } ` );
return response . json ();
}
Health Statistics
Healthcare facilities, disease statistics
🌿 Environment & Energy
Dubai Electricity & Water Authority (DEWA)
Energy consumption, generation, tariffs
const DEWA_API = 'https://api.dubaipulse.gov.ae/v1/dewa/' ;
// Electricity consumption by sector
async function getEnergyConsumption ( year , sector ) {
const response = await fetch (
` ${ DEWA_API } consumption?year= ${ year } §or= ${ sector } `
);
return response . json ();
}
// Green energy statistics
async function getGreenEnergy () {
const response = await fetch ( ` ${ DEWA_API } renewable/statistics` );
return response . json ();
}
Air Quality Data
Real-time air quality indices
const AIR_QUALITY_API = 'https://api.ead.gov.ae/v1/airquality/' ;
async function getAirQuality ( station ) {
const response = await fetch ( ` ${ AIR_QUALITY_API } stations/ ${ station } /current` );
const data = await response . json ();
return {
aqi: data . aqi ,
pm25: data . pm25 ,
pm10: data . pm10 ,
quality: data . aqi < 50 ? 'Good' : data . aqi < 100 ? 'Moderate' : 'Poor'
};
}
Weather & Climate
Weather data, forecasts, historical climate
const WEATHER_API = 'https://api.ncm.ae/v1/weather/' ;
async function getWeatherData ( emirate ) {
const current = await fetch ( ` ${ WEATHER_API } current?emirate= ${ emirate } ` );
const forecast = await fetch ( ` ${ WEATHER_API } forecast?emirate= ${ emirate } &days=5` );
return {
current: await current . json (),
forecast: await forecast . json ()
};
}
🏛️ One-Stop Government Hubs
Dubai Pulse
3000+ datasets, unified API access
Portal : Dubai Pulse
API Documentation : Developer Guide
Authentication : None required for public datasets
Rate Limits : 1000 requests/hour per IP
Universal API Pattern :
class DubaiPulseClient {
constructor () {
this . baseURL = 'https://api.dubaipulse.gov.ae/v1' ;
this . cache = new Map ();
}
async fetchDataset ( path , params = {}) {
const url = new URL ( ` ${ this . baseURL } / ${ path } ` );
Object . entries ( params ). forEach (([ key , value ]) => {
url . searchParams . append ( key , value );
});
// Check cache
const cacheKey = url . toString ();
if ( this . cache . has ( cacheKey )) {
return this . cache . get ( cacheKey );
}
// Fetch with retry logic
let retries = 3 ;
while ( retries > 0 ) {
try {
const response = await fetch ( url );
if ( ! response . ok ) throw new Error ( `HTTP ${ response . status } ` );
const data = await response . json ();
this . cache . set ( cacheKey , data );
// Clear cache after 5 minutes
setTimeout (() => this . cache . delete ( cacheKey ), 300000 );
return data ;
} catch ( error ) {
retries -- ;
if ( retries === 0 ) throw error ;
await new Promise ( r => setTimeout ( r , 1000 )); // Wait 1 second
}
}
}
}
// Usage
const client = new DubaiPulseClient ();
const businesses = await client . fetchDataset ( 'ded/businesses' , {
sector: 'Technology' ,
limit: 100
});
Bayanat (UAE Federal Portal)
National statistics, cross-emirate data
Portal : Bayanat.ae
Features :
Bilingual datasets (AR/EN)
Federal statistics
Time series data
Excel/CSV downloads
Abu Dhabi Open Data
Abu Dhabi emirate-specific datasets
Portal : Abu Dhabi Data
Categories : Government, economy, environment, social
Formats : CSV, JSON, GeoJSON for maps
🔧 Integration Patterns
Batch Data Fetching
// Fetch multiple datasets efficiently
async function fetchMultipleDatasets () {
const datasets = [
{ name: 'businesses' , url: 'ded/businesses' , params: { limit: 100 } },
{ name: 'properties' , url: 'dld/transactions' , params: { year: 2024 } },
{ name: 'tourism' , url: 'tourism/visitors' , params: { month: 'latest' } }
];
const results = await Promise . allSettled (
datasets . map ( async ( dataset ) => {
const data = await fetch (
`https://api.dubaipulse.gov.ae/v1/ ${ dataset . url } ? ${ new URLSearchParams ( dataset . params ) } `
). then ( r => r . json ());
return { name: dataset . name , data };
})
);
return results . reduce (( acc , result ) => {
if ( result . status === 'fulfilled' ) {
acc [ result . value . name ] = result . value . data ;
}
return acc ;
}, {});
}
Error Handling & Fallbacks
// Robust data fetching with fallbacks
class DataService {
constructor () {
this . fallbackData = {
businesses: [], // Load from local JSON
properties: [],
tourism: []
};
}
async getData ( dataset , params ) {
try {
// Try primary API
return await this . fetchFromAPI ( dataset , params );
} catch ( error ) {
console . warn ( `API failed for ${ dataset } , using fallback` , error );
// Try alternative source
try {
return await this . fetchFromAlternative ( dataset , params );
} catch ( altError ) {
// Use cached/fallback data
return this . fallbackData [ dataset ] || [];
}
}
}
async fetchFromAPI ( dataset , params ) {
const response = await fetch (
`https://api.dubaipulse.gov.ae/v1/ ${ dataset } ` ,
{ signal: AbortSignal . timeout ( 5000 ) } // 5 second timeout
);
if ( ! response . ok ) {
throw new Error ( `API returned ${ response . status } ` );
}
return response . json ();
}
async fetchFromAlternative ( dataset , params ) {
// Implement alternative data source
// Could be another API, cached data, or synthetic data
return [];
}
}
📊 Data Visualization Tips
Creating Interactive Maps
// Plot businesses on map using Leaflet
function plotBusinessLocations ( businesses ) {
const map = L . map ( 'map' ). setView ([ 25.2048 , 55.2708 ], 11 ); // Dubai coordinates
L . tileLayer ( 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png' ). addTo ( map );
// Group by sector for different colors
const sectors = [ ... new Set ( businesses . map ( b => b . sector ))];
const colors = [ 'red' , 'blue' , 'green' , 'purple' , 'orange' ];
businesses . forEach ( business => {
const color = colors [ sectors . indexOf ( business . sector ) % colors . length ];
L . circleMarker ([ business . lat , business . lng ], {
radius: 5 ,
fillColor: color ,
fillOpacity: 0.7
})
. bindPopup ( `<b> ${ business . name } </b><br> ${ business . sector } ` )
. addTo ( map );
});
}
Time Series Analysis
// Analyze property price trends
function analyzePropertyTrends ( transactions ) {
// Group by month
const monthlyData = transactions . reduce (( acc , t ) => {
const month = t . date . substring ( 0 , 7 ); // YYYY-MM
if ( ! acc [ month ]) {
acc [ month ] = { total: 0 , count: 0 };
}
acc [ month ]. total += t . price ;
acc [ month ]. count ++ ;
return acc ;
}, {});
// Calculate averages
return Object . entries ( monthlyData ). map (([ month , data ]) => ({
month ,
avgPrice: data . total / data . count ,
volume: data . count
})). sort (( a , b ) => a . month . localeCompare ( b . month ));
}
🚀 Quick Start Templates
Personal Finance Dashboard
// Combine financial and real estate data
async function createDashboard ( userIncome , userArea ) {
const [ properties , businesses , cpi ] = await Promise . all ([
fetch ( ` ${ DLD_API } ?area= ${ userArea } ` ). then ( r => r . json ()),
fetch ( ` ${ DED_API } ?area= ${ userArea } ` ). then ( r => r . json ()),
fetch ( ` ${ FCSC_API } economy/cpi` ). then ( r => r . json ())
]);
return {
affordabilityIndex: calculateAffordability ( userIncome , properties . avgPrice ),
localBusinesses: businesses . filter ( b => b . sector === 'Retail' ). length ,
inflationAdjustedIncome: userIncome / ( 1 + cpi . rate / 100 )
};
}
SME Risk Assessment
// Analyze business environment
async function assessSMERisk ( businessSector , location ) {
const [ sectorData , tourismData , propertyData ] = await Promise . all ([
fetch ( ` ${ DED_API } ?sector= ${ businessSector } ` ). then ( r => r . json ()),
fetch ( ` ${ DET_API } visitors/monthly` ). then ( r => r . json ()),
fetch ( ` ${ DLD_API } ?area= ${ location } &type=commercial` ). then ( r => r . json ())
]);
return {
marketSaturation: sectorData . length / 1000 , // Businesses per 1000 population
demandTrend: calculateTrend ( tourismData ),
rentAffordability: propertyData . avgRent / averageRevenue ,
riskScore: calculateRiskScore ( /* factors */ )
};
}
Support & Documentation
Dubai Pulse Developers API documentation and examples
Bayanat Support Federal data portal assistance
Performance Tip : Always implement caching for government APIs. Use localStorage for client-side apps or Redis for server-side to avoid rate limits and improve response times.
Important : Some datasets require Arabic text handling. Ensure your application properly supports UTF-8 encoding and right-to-left (RTL) text display when working with bilingual data.