UAE Dataset Categories & APIs
Explore government datasets organized by category with direct links, API endpoints, and integration examples.
External Data Sources - Important InformationThese 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
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.