Machine-readable field catalog for all 159 CSV files. Generated from registry.db built by scripts/build_registry.py.
Available in multiple formats:
- JSON (for AI tools and APIs):
data/schema.json(compact, 80 KB) anddata/registry.json(full, 478 KB) - CSV (for pandas, Excel, SQL):
data/registry_files.csv,data/registry_fields.csv,data/registry_enums.csv - SQLite:
registry.db(rebuild withpython3 scripts/build_registry.py)
41 canonical English field names mapped from Arabic headers. The Files column shows how many of the 159 CSVs contain each field.
| Canonical Name | Arabic Header(s) | Type | Files | Description |
|---|---|---|---|---|
region |
المنطقة / region_ar | text | 155 | Administrative region (13 total) |
city |
المدينة / city_ar | text | 155 | City name |
date_gregorian |
التاريخ ميلادي / تاريخ الصفقة ميلادي | date | 102 | Gregorian date (YYYY/MM/DD or M/D/YYYY) |
sector_type |
نوع القطاع | text | 79 | Public or private sector (enum) |
service_type |
نوع الخدمة | text | 79 | Electronic or partially electronic service (enum) |
reference_number |
الرقم المرجعي | integer | 54 | Transaction reference number (operations) |
date_hijri |
التاريخ هجري / تاريخ الصفقة هجري | date | 47 | Hijri (Islamic calendar) date |
year |
السنة / yearnumber | integer | 46 | Year (in aggregate/indicator files) |
property_type |
نوع العقار | text | 45 | Property type: land, apartment, villa, etc. (enum) |
quarter |
الربع / ربع السنة | text | 45 | Quarter of the year |
property_classification |
تصنيف العقار / typecategoryar | text | 41 | Sector classification: residential, commercial, agricultural, industrial (enum) |
district |
الحي / district_ar | text | 33 | Neighborhood / district name |
deed_count |
عدد الصكوك / deed_counts | integer | 32 | Number of title deeds |
area_m2 |
المساحة M2 | decimal | 31 | Area in square meters (REGA indicators) |
avg_price_per_m2 |
متوسط سعر المتر | decimal | 31 | Average price per m² (REGA indicators) |
max_price_per_m2 |
الحد الأعلى لسعر المتر | decimal | 31 | Maximum price per m² (REGA indicators) |
min_price_per_m2 |
الحد الأدنى لسعر المتر | decimal | 31 | Minimum price per m² (REGA indicators) |
area |
المساحة | decimal | 24 | Area in m² (MOJ sales — comma-formatted) |
operation_count |
عدد العمليات | integer | 24 | Number of operations (monthly aggregates) |
operation_type |
نوع العملية | text | 24 | Type of RE operation (monthly aggregates) |
property_count |
عدد العقارات | integer | 24 | Number of properties in transaction |
city_district |
المدينة / الحي | text | 23 | Combined city/district field (MOJ sales) |
price |
السعر | decimal | 23 | Transaction price in SAR (comma-formatted) |
transaction_ref |
الرقم المرجعي للصفقة | integer | 23 | Transaction reference (sales) |
transaction_value |
قيمة الصفقات | decimal | 15 | Total transaction value (REGA indicators) |
average |
المتوسط | decimal | 11 | Average value (REGA rental indicators) |
total_transactions |
مجموع الصفقات | integer | 11 | Total transaction count (REGA rental) |
decision_date_gregorian |
تاريخ القرار ميلادي | date | 4 | Court decision date (enforcement sales) |
main_document_type |
نوع السند الرئيسي | text | 4 | Legal document type (enforcement sales, enum) |
female_owner_count |
عدد الملاك النساء | integer | 3 | Female property owner count |
female_ownership_rate |
نسبة تملك النساء | decimal | 3 | Female ownership percentage |
decision_date_hijri |
تاريخ القرارهجري | date | 1 | Court decision date in Hijri |
month |
الشهر | integer | 1 | Month number |
quarter_id |
quarterid | integer | 1 | Quarter identifier (consolidated) |
quarter_name_ar |
quarternamear | text | 1 | Quarter name in Arabic (consolidated) |
quarter_number |
quarternumber | integer | 1 | Quarter number (consolidated) |
total_price |
RealEstatePrice_SUM | decimal | 1 | Sum of prices (consolidated) |
weighted_avg_price_per_m2 |
Meter_Price_W_Avg_IQR | decimal | 1 | Weighted avg price/m² with IQR (consolidated) |
gender |
Gender | text | 1 | Gender (gender stats file) |
registered_count |
RENs | integer | 1 | Registered entity count (gender stats) |
created_date |
Created Date | date | 1 | Record creation date (gender stats) |
22 categories, 113 files, 4,856,938 rows
| Category | Files | Rows | Columns | Date Range | Description |
|---|---|---|---|---|---|
sales |
24 | 1,407,120 | 10–13 | 2020–2025 | Individual sale transactions with price, area, location |
seizure |
3 | 736,808 | 6 | 2025 Q1–Q3 | Court-ordered property freezes |
poa |
3 | 758,003 | 6 | 2025 Q1–Q3 | Real estate power of attorney |
release_seizure |
3 | 505,725 | 6 | 2025 Q1–Q3 | Lifting of seizure orders |
physical_reg |
3 | 501,050 | 6 | 2025 Q1–Q3 | In-rem property registration |
operations |
27 | 282,401 | 6–8 | 2024–2025 | Monthly aggregate operations by type |
transfer |
3 | 221,229 | 6 | 2025 Q1–Q3 | Ownership transfers |
register_old_deed |
3 | 143,027 | 6 | 2025 Q1–Q3 | Registration of pre-existing deeds |
division |
3 | 90,250 | 6 | 2025 Q1–Q3 | Property subdivision |
mortgage_release |
3 | 42,781 | 6 | 2025 Q1–Q3 | Mortgage discharge |
mortgage |
3 | 36,525 | 6 | 2025 Q1–Q3 | New property mortgages |
update_deed |
3 | 27,907 | 6 | 2025 Q1–Q3 | Title deed modifications |
property_identity |
2 | 22,050 | 6 | 2025 Q1+Q3 | Linking deeds to property identity system |
deed_define_divide |
3 | 21,963 | 6 | 2025 Q1–Q3 | Deed definition for subdivision |
register_no_deed |
3 | 21,341 | 6 | 2025 Q1–Q3 | Ownership registration without deed |
merge_re |
3 | 10,426 | 6 | 2025 Q1–Q3 | Property merging |
enforcement |
4 | 8,286 | 5–6 | 2025 Q1–Q4 | Court-ordered forced sales |
poa_fund |
2 | 7,060 | 6 | 2025 Q1+Q3 | RE Development Fund POA |
ownership |
3 | 5,210 | 6 | 2025 Q1–Q3 | Ownership rate statistics |
index |
3 | 3,002 | 13–15 | 2018–2021 | Historical price indices (pivot-table exports) |
update_old_deed |
3 | 1,315 | 6 | 2025 Q1–Q3 | Old deed modifications |
ownership_men |
3 | 416 | 6 | 2025 | Male ownership rates by city |
merge_deed |
3 | 37 | 6 | 2025 Q1–Q3 | Title deed merging |
4 categories, 46 files, 73,560 rows
| Category | Files | Rows | Columns | Date Range | Description |
|---|---|---|---|---|---|
consolidated |
1 | 32,730 | 11 | 2018–2023 | Quarterly report with district-level aggregates |
sales_indicators |
31 | 20,874 | 14 | 2024–2025 | Regional sales indicators: avg/min/max price per m² |
rental_indicators |
13 | 19,954 | 7 | 2019–2024 | Rental market indicators by city (all 13 regions) |
gender_stats |
1 | 2 | 3 | — | Registered real estate by gender |
Fields with a limited set of known values (up to 50 distinct). Full enum data in data/registry_enums.csv.
Used in MOJ sales and REGA indicators. In MOJ sales, this is the broad sector:
| Value | English |
|---|---|
| سكني | Residential (~85% of sales) |
| تجاري | Commercial (~10.6%) |
| زراعي | Agricultural (~4%) |
| صناعي | Industrial (<0.1%) |
| جميع التصانيف | All classifications (used in REGA indicators as a "total" row) |
In the REGA consolidated file (typecategoryar), more granular types appear:
| Value | English |
|---|---|
| قطعة أرض-سكنى | Residential land plot |
| قطعة أرض-تجارى | Commercial land plot |
| فيلا | Villa |
| شقة | Apartment |
| قطعة أرض- زراعي | Agricultural land plot |
| عمارة | Building / apartment block |
Only available in 2023 Q1–Q3 sales and REGA rental indicators. Distinguishes land from built properties:
| Value | English |
|---|---|
| قطعة أرض | Land plot |
| شقة | Apartment |
| أرض زراعية | Agricultural land |
| أرض | Land (generic) |
| بيت | House |
| فيلا | Villa |
| دوبلكس | Duplex |
| معرض/محل | Showroom / shop |
| عمارة | Building |
| شقة - سكني | Apartment - residential |
| دور - سكني | Floor unit - residential |
| محل - تجاري | Shop - commercial |
| فيلا - سكني | Villa - residential |
| استديو - سكني | Studio - residential |
| معرض تجاري - تجاري | Showroom - commercial |
| مكتب - تجاري | Office - commercial |
| دوبلاكس - سكني | Duplex - residential |
| Value | English |
|---|---|
| القطاع العام | Public sector |
| القطاع الخاص | Private sector |
| Value | English |
|---|---|
| خدمة إلكترونية | Electronic service (~97%) |
| خدمة إلكترونية جزئيا | Partially electronic (~3%) |
Enforcement sales only:
| Value | English | % |
|---|---|---|
| احكام و قرارات | Judgments & decisions | 49.3% |
| أوراق تجارية | Commercial papers | 32.8% |
| عقود | Contracts | 7.3% |
| اخلاء | Eviction | 5.3% |
| أوراق تجارية إلكترونية | Electronic commercial papers | 3.3% |
| مزاد | Auction | 1.4% |
| عام | General | 0.4% |
Date columns use two different formats across the CSVs. Most files use YYYY/MM/DD, but several categories switched to M/D/YYYY. Both Gregorian and Hijri calendars are present. REGA files have no per-record dates — they use separate year + quarter integer columns instead.
| Format | Example | Categories |
|---|---|---|
YYYY/MM/DD |
2025/01/01 |
sales (2020–2022, 2024–2025), operations, mortgage, mortgage_release, transfer, division, physical_reg, poa, poa_fund, register_old_deed, register_no_deed, update_deed, update_old_deed, deed_define_divide, merge_re, merge_deed, ownership, enforcement |
M/D/YYYY |
1/1/2025 |
property_identity, release_seizure, seizure, sales (2023 Q2–Q4) |
| Year + Quarter columns | 2024 + Q1 |
All REGA categories (sales_indicators, rental_indicators, consolidated) |
Hijri dates (date_hijri / تاريخ الصفقة هجري) follow the same format as their Gregorian counterpart in each file. Present in sales and operations files. Not present in REGA files.
Parsing tip: Detect format per file by checking whether the first date component is >12 (must be YYYY/...) or ≤12 (ambiguous — check the third component length). Or use the category table above.
Automatically detected quirks in the raw CSV data:
| Note | Meaning | Affected Fields |
|---|---|---|
quoted_commas |
Values contain commas inside quotes (e.g., "1,800,000") |
price, area, reference_number |
NULL_literal |
The string NULL used instead of empty |
Some operation files |
percentage_strings |
Values end with % symbol |
female_ownership_rate |
See the formatting_notes column in data/registry_fields.csv for per-field detail.
| File | Size | Description |
|---|---|---|
data/schema.json |
80 KB | Compact schema: one entry per category with field union, data types, enum values, date formats, and a canonical field index. Designed for feeding into Claude, ChatGPT, Gemini, or any LLM/agent context |
data/registry.json |
478 KB | Full registry: every file with all fields, sample values, null counts, min/max values, region coverage. Use when you need per-file detail |
schema.json structure:
{
"description": "...",
"purpose": "...",
"total_categories": 27,
"canonical_field_index": {
"region": ["المنطقة", "region_ar"],
"price": ["السعر"],
...
},
"schemas": [
{
"source": "MOJ",
"category": "sales",
"file_count": 24,
"date_format": "YYYY/MM/DD",
"fields": [
{
"name_ar": "المنطقة",
"canonical_name": "region",
"data_type": "text",
"in_files": "24/24",
"nullable": false,
"enum_values": [{"value": "منطقة الرياض", "count": 477347}, ...]
},
...
]
},
...
]
}| File | Rows | Description |
|---|---|---|
data/registry_files.csv |
159 | One row per CSV file: source, category, row/column counts, encoding, date range, region coverage |
data/registry_fields.csv |
1,388 | One row per field per file: Arabic name, canonical English name, data type, nullability, distinct values, min/max, sample values |
data/registry_enums.csv |
3,864 | One row per enum value per field: value text, count, percentage |
The registry.db SQLite database is the authoritative metadata catalog. It is not tracked in git (regenerate with python3 scripts/build_registry.py).
Schema:
| Table | Rows | Description |
|---|---|---|
files |
159 | One row per CSV: source, category, path, size, row/col counts, encoding, date range, region coverage |
fields |
1,388 | One row per column per file: Arabic/English names, data type, null stats, distinct count, min/max, samples |
enum_values |
3,864 | Distinct values for text columns with ≤50 unique values, with counts and percentages |
samples |
1,580 | 10 raw sample rows per file, both as CSV lines and parsed JSON |
field_aliases |
56 | Cross-file mapping of Arabic header variants to canonical English names |
See scripts/build_registry.py for the full schema and Arabic-to-English field mapping (41 entries).