# Thai address dataset > Thailand's provinces, districts and subdistricts, with codes, Thai and English names, history and postal codes. Built from official sources (DOPA, Thailand Post, MDES, ISO 3166-2) and published as immutable, versioned JSON and CSV snapshots. Pin a snapshot id; never build on latest.json. Codes are strings and are never reused. null means unknown. Every data file is an envelope {schema_version, snapshot, data}. Never guess a postal code from a district code: use the links in postal_codes.json. ## Docs - [Full documentation](https://data.farzai.com/thailand-address/llms-full.txt): every field, common tasks, "do not" rules, the kind-to-prefix table, licences - [Dataset page](https://data.farzai.com/thailand-address/index.html): the same, with schema.org Dataset metadata ## Data - [Snapshot index](https://data.farzai.com/thailand-address/v1/snapshots.json): every snapshot id with status published or withdrawn; pick the newest published id - [Latest pointer](https://data.farzai.com/thailand-address/v1/latest.json): the newest published snapshot, for people and discovery only - [Schema](https://data.farzai.com/thailand-address/v1/{snapshot}/schema.json): JSON Schema with a description and example for every field - [Provinces](https://data.farzai.com/thailand-address/v1/{snapshot}/provinces.json) - [Districts](https://data.farzai.com/thailand-address/v1/{snapshot}/districts.json) - [Subdistricts](https://data.farzai.com/thailand-address/v1/{snapshot}/subdistricts.json) - [Postal codes](https://data.farzai.com/thailand-address/v1/{snapshot}/postal_codes.json): many-to-many links with kind, coverage and a localized note; links are never removed, so filter on status active - [Changes](https://data.farzai.com/thailand-address/v1/{snapshot}/changes.json): against the previous published snapshot - [CSV](https://data.farzai.com/thailand-address/v1/{snapshot}/thailand-address.csv): one row per subdistrict and postal code; read by header - [Manifest](https://data.farzai.com/thailand-address/v1/{snapshot}/manifest.json): sha256 of every file, sources, licences - [Postal code index](https://data.farzai.com/thailand-address/v1/{snapshot}/index/postal_codes.json): postal code to subdistricts, for lookups without the full link list - [One province](https://data.farzai.com/thailand-address/v1/{snapshot}/by-province/10.json): a province's districts, subdistricts and postal links (by-province/{code}.json) ## Optional - [Library for PHP and Laravel](https://github.com/parsilver/thailand-provinces-php): farzai/thailand-address on Packagist, bundles a pinned snapshot