Part of a Data Solution
- Explore →
Postal Codes Solution
Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.
API Access
Access dataset files directly from scripts, code, or AI agents.
Browse dataset files
API Access
Access dataset files directly from scripts, code, or AI agents.
Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.
Start with these files — they give you everything you need to understand and access the dataset.
- 1. Fetch datapackage.yaml to inspect schema and resources
- 2. Download data resources listed in datapackage.yaml
- 3. Read README.md for full context
Data Files
Explore with AIpostal-codes-ai
| Field | Type | Description | Title |
|---|---|---|---|
| country_code | string | ISO 3166-1 alpha-2 code for the country. | Country Code |
| postal_code | string | Anguilla's single territory-wide postal code (AI-2640), per the Anguilla Postal Service's own address; there is no per-district or per-address code. | Postal Code |
| place_name | string | District, the only administrative tier Anguilla has (ISO 3166-2:AI defines no subdivisions), as named by GeoNames. | Place Name |
| admin_name1 | string | Primary administrative division (e.g., state, region). | Administrative Name 1 |
| admin_code1 | string | Code for the primary administrative division. | Administrative Code 1 |
| admin_name2 | string | Secondary administrative division (e.g., county, district). | Administrative Name 2 |
| admin_code2 | string | Code for the secondary administrative division. | Administrative Code 2 |
| admin_name3 | string | Tertiary administrative division (e.g., municipality, borough). | Administrative Name 3 |
| admin_code3 | string | Code for the tertiary administrative division. | Administrative Code 3 |
| latitude | number | GeoNames district centroid (WGS84). | Latitude |
| longitude | number | GeoNames district centroid (WGS84). | Longitude |
| accuracy | string | Accuracy level of the latitude and longitude coordinates. | Accuracy |
| alternative_city_name | string | Alternative name(s) for the city or place. | Alternative City Name |
Download
Download CSVAbout
- Last updated
- 5 October 2026
- Total rows
- 14
- Format
- CSV
- File size
- 852 B
About this dataset
Anguilla (AI) — internal licensing notes
Audit, 2026-09-17 — research/audit only, no build performed
Triggered because ai/ai.csv on the main R2 bucket is only 214 bytes
(dated 2026-07-30) and had never been audited. Anguilla is a tiny British
Overseas Territory (population ~15,000) — worth checking whether 214
bytes means "near-empty/neglected" or "genuinely this small."
1. What is actually in the current R2 file
Fetched directly from R2 (credentials from this repo's own .env,
bucket postal-codes, endpoint *.eu.r2.cloudflarestorage.com) rather
than assumed from size alone:
country_code,postal_code,place_name,admin_name1,admin_code1,admin_name2,admin_code2,admin_name3,admin_code3,latitude,longitude,accuracy,alternative_city_name
AI,AI-2640,Anguilla,nan,,nan,,nan,,18.2167,-63.05,4,AXA
Exactly one data row. Also found two more copies in the bucket,
byte-identical to ai/ai.csv:
ai/geonames/2026-09-01/0.csvai/geonames/latest/0.csv
So this file has already been regenerated from a GeoNames-sourced pipeline as recently as 2026-09-01 — it is not stale, it is a current, deliberate GeoNames extract that simply has one row because the source has one row.
Data-quality bug found (worth fixing on any rebuild): admin_name1,
admin_name2, admin_name3 are shipped as the literal string "nan"
rather than an empty string — a Python/pandas NaN that got
str()-stringified before being written to CSV instead of left blank.
Same failure class as issues flagged elsewhere in this project (a script
writing a value nobody checked). Should be blank, not "nan", on any
regeneration.
alternative_city_name = AXA is plausible, legitimate GeoNames alternate-
name data (an old/indigenous name for Anguilla, not a bug) — left as is.
2. Does Anguilla have a real postal-code system? Yes — verified, not assumed
Checked the actual official postal operator rather than trusting aggregator copy-paste:
- Anguilla Postal Service (
https://www.aps.ai/, the real official site) — fetched directly. Its own General Post Office address is given as "General Post Office, The Valley, AI-2640, Anguilla." The site carries no addressing/postcode documentation, no downloadable list, no API — but its own GPO address confirms AI-2640 is the live code in use by the postal authority itself, not just an aggregator claim. - Smarty's address-format reference for Anguilla lists the postal code format as "N/A" (i.e., no structured per-address postcode format exists) while listing AI-2640 in its example addresses and separately listing the 14 districts — consistent with a single fixed territory-wide code, not a district-level system.
- Multiple aggregators (ipostalcode.com, postalcode.pro, geonames.org) independently describe AI-2640 as the Anguilla postal code, all consistent with each other and with the official GPO's own address — no conflicting claim found anywhere.
- No UPU S42/S53 country template or bulk UPU postcode file specific to Anguilla was locatable beyond the general UPU addressing-standards PDF, which does not contradict the single-code finding.
Conclusion: confirmed, not assumed. Anguilla genuinely has one fixed postal code, AI-2640, for the entire territory — the same shape as several other small Caribbean/UK-territory codes in this class. A 1-row dataset is not a coverage gap; it is complete.
3. GeoNames postal export — download.geonames.org/export/zip/AI.zip
- HTTP 200. Unzipped to
readme.txt+AI.txt. AI.txtcontents: exactly one row —AI AI-2640 Anguilla 18.2167 -63.05 4(admin1/admin2/admin3 name+code fields all empty in the raw file — the literal"nan"string in the R2 copy is an artifact of this pipeline's regeneration step, not something GeoNames itself ships).- Checked
readme.txtfor a Malta/Chile/China/Ireland-style truncation disclaimer (those four are explicitly flagged in GeoNames' own readme as deliberately incomplete for copyright reasons) — no such note exists for Anguilla. This one row is presented as GeoNames' complete, unmodified answer for the country, not a truncated one. - Standard GeoNames postal licence: CC BY 4.0, attribution required (a link to geonames.org). No country-specific restriction found for AI.
This matches the R2 file exactly (same code, same place name, same
lat/lon, same accuracy value) — confirms ai/ai.csv is already a
faithful, current GeoNames extract, not a broken or partial one.
4. Admin tier — no ISO 3166-2 subdivisions exist for Anguilla
- Confirmed via Wikipedia's
ISO_3166-2:AIpage directly: "Currently no ISO 3166-2 codes are defined in the entry for Anguilla." Anguilla is a single territory in the ISO subdivision sense — there is no official admin_code1 to assign, matching the blankadmin_code1in both the R2 file and the raw GeoNames export. - A real (informal, non-ISO) admin tier does exist: 14 districts,
used for census and electoral purposes since at least 1974 (Anguilla
Statistics Department,
statistics.gov.ai). Confirmed this list two independent ways, and both agree exactly:- GeoNames' own main gazetteer dump (
download.geonames.org/export/dump/AI.zip, 235 total rows across all feature classes) tags 14 places as feature codeADM1with GeoNames-internal numeric codes (112053xxrange): Blowing Point, East End, George Hill, Island Harbour, North Hill, North Side, Sandy Ground, Sandy Hill, South Hill, Stoney Ground, The Farrington, The Quarter, The Valley, West End. The same 14 names also appear asPPLA/PPLCpopulated-place points, giving each district a real lat/lon centroid. - statoids.com/uai.html independently lists the identical 14
districts, each with a HASC code (e.g.
AI.BP,AI.EE) — a third-party academic compilation, not an ISO or government code, and with no clear licence statement found on the site. - The two lists match 14/14 by name. This is a genuine, real admin tier — just not an ISO one, and only reliably licence-clean if sourced from GeoNames' own numeric codes rather than statoids' HASC codes.
- GeoNames' own main gazetteer dump (
5. Does the GeoNames main gazetteer dump offer anything beyond the postal export?
Yes, but only at the admin (district) tier, not the postal tier:
- The postal export is genuinely a single row — there is no finer postal granularity to recover from any source; Anguilla's real system does not have one.
- The main dump (235 rows total: 45
P-class populated places, 15A-class admin/boundary entries, remainder bays/hills/points/streams with no addressing relevance) does add the 14-district admin structure with names, GeoNames-native codes, and centroids — none of which is present in the postal export (which has no admin fields populated at all). - So the dump is a legitimate additional source for an admin_name1 /
admin_code1 enrichment, not for additional postal codes. It would let
a rebuild ship e.g. 14 rows (one per district, all sharing postal_code
AI-2640) with real district names/coordinates instead of 1 row with blank admin fields — a genuine value-add, still CC BY 4.0, no new licence exposure, since both files come from GeoNames itself.
Verdict
No build performed in this pass (research/audit only, per instruction). Key findings:
- The current 214-byte / 1-row file is not a neglected/broken dataset — it is a faithful, currently-regenerated (2026-09-01) GeoNames extract, and it is complete: Anguilla genuinely has exactly one postal code, AI-2640, for the whole territory, confirmed via the official Anguilla Postal Service's own GPO address, not just aggregator claims.
- One real, fixable defect: the literal string
"nan"shipped inadmin_name1/2/3instead of blank — a stringification bug, not a sourcing problem. - There is a legitimate small upgrade available, not a "real vs. fake"
gap: expand from 1 row to 14 (one per district, same postal code
repeated), sourced from GeoNames' own main gazetteer dump (which
already has all 14 districts tagged
ADM1, with GeoNames-native codes and coordinates) rather than statoids' HASC codes (unclear licence). This would give consumers real admin-level granularity Anguilla's admin structure actually has, even though the postal granularity genuinely stops at one code for the whole country. - No ISO 3166-2:AI codes exist — confirmed directly, not assumed —
so
admin_code1has no ISO destination either way. - Licensing: both GeoNames sources (postal export and main dump) are
CC BY 4.0, same licence already governing the shipped file — no
conflict, no OSM/ODbL exposure, no premium-tier justification (a
1-to-14-row dataset is far smaller than a 100-row sample, same
reasoning as Malta's
is_premiumdecision).
Recommended next step (not executed here)
Either is defensible; recommend the small upgrade since the source data already exists and was already fetched in this pass:
- Fix the
"nan"string bug in the regeneration pipeline regardless of which shape is shipped (empty string, not"nan"). - Optionally expand 1 row → 14 rows, one per district, all carrying
postal_code = AI-2640(single-zone inheritance, same pattern used elsewhere in this project for capital/single-postal-zone admin units),admin_name1= district name,admin_code1= GeoNames' own numeric ADM1 code (not statoids' HASC — unclear licence),latitude/longitude= the district's ownPPLA/PPLCcentroid rather than the single territory-wide point currently used,accuracylabel reconsidered (current numeric4is GeoNames' legacy 1-6 scale, not this project's descriptive tier vocabulary — needs a decision on which convention this repo's schema wants here). - If either change is made,
licence_statusshould be regenerated fresh (per the provenance/licence gate) rather than copied forward, since the source technically changes from "postal export only" to "postal export- main dump" even though both are GeoNames CC BY 4.0.
- No R2, git, or
datapackage.ymlchanges were made in this pass.