Postal Codes Dataset for Bolivia, Plurinational State of, BO

263
Updated:
Files:1
Size:1.42 MB
Rows:25,804
Formats:csv
License:CC-BY-4.0

Postal Codes Dataset for Bolivia, Plurinational State of, BO including name of the city, town, or place, various administrative divisions and alternative city names.

Part of a Data Solution

  • Postal Codes Solution

    Every worldwide postal-code dataset in one bundle — the ultimate global reference for precise postal codes.

    Explore →

API Access

Access dataset files directly from scripts, code, or AI agents.

Browse dataset files
Dataset Files

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.

/logistics/postal-codes-bo/
https://datahub.io/logistics/postal-codes-bo/_r/-/.licensing-notes.md
https://datahub.io/logistics/postal-codes-bo/_r/-/.migration-notes.md
https://datahub.io/logistics/postal-codes-bo/_r/-/ATTRIBUTION.txt
https://datahub.io/logistics/postal-codes-bo/_r/-/README.md
https://datahub.io/logistics/postal-codes-bo/_r/-/datapackage.yaml
Key Files

Start with these files — they give you everything you need to understand and access the dataset.

datapackage.yaml— metadata & schema
https://datahub.io/logistics/postal-codes-bo/_r/-/datapackage.yaml
README.md— documentation
https://datahub.io/logistics/postal-codes-bo/_r/-/README.md
Typical Usage
  1. 1. Fetch datapackage.yaml to inspect schema and resources
  2. 2. Download data resources listed in datapackage.yaml
  3. 3. Read README.md for full context

Data Files

Explore with AI

postal-codes-bo

Download

Download CSV

About

Last updated
6 October 2026
Total rows
25,804
Format
CSV
File size
1.42 MB

About this dataset

Bolivia (BO): migration notes

Internal record of the P6 migration from the old script to the producer: the discrepancies found, their causes, and who decided what. This is a dated record, so the numbers are as of the migration and not kept current. It is not shipped with the data.

  • Issue: pc-28e.8.4
  • Parity verdict: format-only (gate: pass, exit 0), against the live public CSV
  • Producer: custom, refresh disabled, postal_code_required: false

Sources

InputURLNotes
GeoNames gazetteer dumphttps://download.geonames.org/export/dump/BO.zipMember BO.txt; the old builder read a local copy (sources/BO_dump.txt) of the same file
GeoNames admin1 nameshttps://download.geonames.org/export/dump/admin1CodesASCII.txtThe old builder's sources/geonames_admin1CodesASCII.txt

Both URLs are stable, unversioned "latest" files; nothing to resolve. Fetch time, size and sha256 of each go into bo.inputs.json.

Parity against the live public CSV (2026-10-05)

Rows: 25,804 live and 25,804 fresh, none only on one side, 0 changed cells, no cell classes. The fresh CSV is byte-identical to the live one once the live file's CRLF line endings are turned into LF (checked with tr -d '\r' | cmp). Row order is identical too. No upstream drift showed up in the dump or admin1 table since the 2026-09-04 build.

Decisions

DecisionByBasis
Accept CRLF→LFStanding rule (a)Equal rows, 0 changed cells
pipeline.postal_code_required: falseAgent, per the SST planbuild.py refuses empty postal codes otherwise; the plan names this flag for the no-postcode free datasets
Latitude/longitude number; accuracy stays stringAgent, per the type ruleaccuracy is empty on every row (the dump has no accuracy scale), so it isn't numeric
primaryKey: [place_name, admin_name1, latitude, longitude]AgentThe old builder's own uniqueness assert; unique in the produced CSV; frictionless VALID with it
Field descriptions for admin_name1/admin_code1/accuracy rewritten to say what BO actually hasAgentThe generic ones were wrong for this dataset (ISO code, empty for unresolved places, accuracy never populated)
Unresolved admin1 (code missing from the table) keeps empty department, not an errorAgent: a faithful portThe old builder did the same; live has such rows

Transforms carried over

From build_postal_codes_product.py (2026-09-04):

  • Feature class P only; every dump row must be BO and 19 columns wide.
  • admin_name1/admin_code1 from admin1CodesASCII via the 9-department crosswalk to ISO 3166-2:BO (display-name fixes "El Beni", "Potosi", "Department" suffixes dropped). An unmapped department name is a ProducerError.
  • postal_code, accuracy, admin 2/3 and alternative_city_name empty; lat/lon verbatim.
  • Sort by (admin_code1, place_name), stable on dump order.
  • Old asserts are now ProducerErrors: literal "nan", duplicate (place_name, admin_name1, latitude, longitude), any department without places. The >= 20000 row-count floor was dropped (no hardcoded counts).

Not ported

  • The old builder's zip, generated README/ATTRIBUTION/datapackage.json (build.py's job, or obsolete), and publish_r2.py.

Open questions

  • None for the user. .licensing-notes.md still quotes historical row counts; left for the pc-hfz sweep.