Saudi Cities Dataset - National Design System

Bundled JSON dataset of 132 Saudi Arabian cities across all 13 administrative regions, with bilingual (English + Arabic) names. Drop into autocomplete inputs, region selectors, or any address flow.

Overview

A static JSON file at /assets/data/saudi-cities.json that any page can fetch. Designed as a drop-in source for the autocomplete component, but plain enough to feed into selects, maps, filters, or any other lookup UI.

132 cities

Major cities and regional towns. Capital cities of each region, governorate seats, and well-known towns are included; very small villages are not.

13 regions

Covers all administrative regions of the Kingdom: Riyadh, Makkah, Madinah, Eastern Province, Asir, Tabuk, Hail, Northern Borders, Jazan, Najran, Al Bahah, Al Jouf, Al Qassim.

Bilingual

Each entry carries both English (Name) and Arabic (NameAr) names. Switch which language drives display by changing data-name on the consuming component.

No build step

Static JSON served alongside the rest of the assets. Works with any consumer that can fetch() a URL — no Jekyll dependency, no rebuild required.

Schema

Each entry in the array follows this shape

FieldTypeDescription
IdintegerStable numeric identifier. Use as a row key when caching or submitting.
RegionstringAdministrative region the city belongs to, in English.
RegionArstringAdministrative region the city belongs to, in Arabic.
NamestringCity name in English (Latin transliteration).
NameArstringCity name in Arabic.

With Autocomplete

Point an autocomplete input at the JSON, set data-fetch="once", and you get an instant city picker that loads the dataset on first keystroke and filters it client-side

Live demo — type a city name

Bilingual Search & Custom Display

Pass filter and renderItem callbacks to NDS.Autocomplete.create() to match across both languages and show a richer label. The selected value still comes from data-name.

Live demo — type "Riy" or "الر"

Direct Access

For non-autocomplete use — populate a select, build a region tree, draw a map, etc.

Fetch + group by region

Notes

  • The dataset is editorial — it favors administrative seats and well-known towns over an exhaustive census of every village. Expect to extend it for use cases that need full coverage.
  • Latin transliterations follow common English-language conventions, not a strict standard. Searches may need to handle alternate spellings (e.g., Mecca vs Makkah) — wire that into your filter callback rather than duplicating entries.
  • Total response size is well under the autocomplete component's 1 MB cap. Safe to load with data-fetch="once" on any device.
Was this page useful?
60% of users said Yes from 2843 Feedbacks