CountryAtlas: architecture contract, registries (218 countries, 259 indicators, 32 groups, 19 topics), shared models, connector base, DuckDB schema, mld manifest
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
22 changed files +12,138 −0
added
.gitignore
+20 −0
@@ -0,0 +1,20 @@ | ||
| 1 | +node_modules/ | |
| 2 | +.next/ | |
| 3 | +.env | |
| 4 | +.env.* | |
| 5 | +!.env.example | |
| 6 | +*.tsbuildinfo | |
| 7 | +.venv/ | |
| 8 | +__pycache__/ | |
| 9 | +*.pyc | |
| 10 | +.pytest_cache/ | |
| 11 | +.ruff_cache/ | |
| 12 | +data/ | |
| 13 | +*.duckdb | |
| 14 | +*.duckdb.wal | |
| 15 | +logs/ | |
| 16 | +tmp/ | |
| 17 | +.DS_Store | |
| 18 | +.claude/ | |
| 19 | +qa/screens/ | |
| 20 | +apps/web/next-env.d.ts | |
added
README.md
+54 −0
@@ -0,0 +1,54 @@ | ||
| 1 | +# CountryAtlas | |
| 2 | + | |
| 3 | +**www.countryatlas.co — Understand the world, one country at a time.** | |
| 4 | + | |
| 5 | +The definitive, sourced, historical data profile for every country: economy, government, population, labour, income, | |
| 6 | +housing, health, education, trade, energy, climate, environment, infrastructure, digital, innovation, agriculture, | |
| 7 | +tourism, security and quality of life — with rankings, comparisons, similarity, change detection and full provenance. | |
| 8 | + | |
| 9 | +## Layout | |
| 10 | + | |
| 11 | +``` | |
| 12 | +registry/ canonical registries (YAML, versioned): countries, groups, indicators, topics, similarity, insights | |
| 13 | +src/countryatlas/ Python platform | |
| 14 | + registry/ loaders + country-code lookups | |
| 15 | + connectors/ one module per provider (worldbank, owid, imf, oecd, eurostat, who, fred, bis, ilo) | |
| 16 | + pipeline/ fetch → normalize → validate → build (DuckDB snapshot) → derived tables; scheduler; exports | |
| 17 | + storage/schema.sql DuckDB schema (single source of truth for pipeline and API) | |
| 18 | + api/ FastAPI public API (/api/v1, OpenAPI at /api/v1/docs) | |
| 19 | + cli.py `ca` command line | |
| 20 | +apps/web/ Next.js 16 app (App Router, Tailwind v4, own SVG chart kit, d3-geo maps) | |
| 21 | +deploy/ mld manifest for the MacLustr cluster | |
| 22 | +docs/ ARCHITECTURE.md (contract), PIPELINE.md, API.md, sources-research.md | |
| 23 | +tests/ pytest | |
| 24 | +``` | |
| 25 | + | |
| 26 | +## Run locally | |
| 27 | + | |
| 28 | +```bash | |
| 29 | +uv venv --python 3.12 .venv && uv pip install -e ".[dev]" | |
| 30 | +.venv/bin/ca registry validate | |
| 31 | +CA_DATA_DIR=~/countryatlas-data .venv/bin/ca refresh # fetch all connectors, build ~/countryatlas-data/atlas.duckdb | |
| 32 | +CA_DATA_DIR=~/countryatlas-data .venv/bin/ca status | |
| 33 | +CA_DATA_DIR=~/countryatlas-data .venv/bin/python -m uvicorn countryatlas.api.main:app --port 8291 | |
| 34 | +pnpm install && cd apps/web && API_URL=http://127.0.0.1:8291 pnpm dev # http://localhost:8290 | |
| 35 | +``` | |
| 36 | + | |
| 37 | +## Deploy (MacLustr) | |
| 38 | + | |
| 39 | +Manifest `deploy/countryatlas.mld.json` → `M1M32:~/dispatch/apps/countryatlas.json`, then from the laptop: | |
| 40 | + | |
| 41 | +```bash | |
| 42 | +~/Desktop/cluster-skill/mld stage ~/Desktop/Projets/apps-web/countryatlas countryatlas | |
| 43 | +~/Desktop/cluster-skill/mld deploy countryatlas --node M2M32 | |
| 44 | +``` | |
| 45 | + | |
| 46 | +Public route `https://www.countryatlas.co → M2M32:8290` is created on the BHS64 gateway by `mld deploy` | |
| 47 | +(DNS `A www → 51.161.112.61`). Processes (PM2): `countryatlas-web` (:8290), `countryatlas-api` (127.0.0.1:8291), | |
| 48 | +`countryatlas-scheduler` (daily refresh 03:15 America/Toronto). | |
| 49 | + | |
| 50 | +## Data sources & licences | |
| 51 | + | |
| 52 | +World Bank WDI (CC BY 4.0), IMF WEO (IMF terms), OECD (CC BY 4.0), Eurostat (CC BY 4.0), WHO GHO (CC BY-NC-SA 3.0 IGO), | |
| 53 | +FRED (St. Louis Fed terms; series-level licences), Our World in Data (CC BY 4.0), BIS (BIS terms). Every value on the | |
| 54 | +site and in the API carries its source, dataset, series code, retrieval and source-update dates. | |
added
deploy/.admin-token
+1 −0
@@ -0,0 +1 @@ | ||
| 1 | +c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a | |
added
deploy/countryatlas.mld.json
+105 −0
@@ -0,0 +1,105 @@ | ||
| 1 | +{ | |
| 2 | + "app": "countryatlas", | |
| 3 | + "label": "CountryAtlas — Understand the world, one country at a time", | |
| 4 | + "domain": "www.countryatlas.co", | |
| 5 | + "port": 8290, | |
| 6 | + "health_path": "/api/v1/health", | |
| 7 | + "dir": "~/apps/countryatlas", | |
| 8 | + "extra_paths": [], | |
| 9 | + "sync_excludes": [ | |
| 10 | + ".venv/", "__pycache__/", ".pytest_cache/", ".ruff_cache/", "*.egg-info/", ".git/", ".env", ".env.*", "!.env.example", | |
| 11 | + "node_modules/", "apps/web/.next/", "apps/web/next-env.d.ts", "*.tsbuildinfo", "apps/web/qa/screens/", | |
| 12 | + "data/", "*.duckdb", "*.duckdb.wal", "logs/", "tmp/", ".DS_Store", ".claude/", "deploy/.admin-token", "docs/sources-research.md" | |
| 13 | + ], | |
| 14 | + "requires": { | |
| 15 | + "runtimes": ["pm2", "node", "pnpm", "uv", "uv-python@3.12"], | |
| 16 | + "ram_gb": 6, | |
| 17 | + "ports": [8290, 8291] | |
| 18 | + }, | |
| 19 | + "ram_mb_observed": 2500, | |
| 20 | + "size_mb": 60, | |
| 21 | + "placement": { | |
| 22 | + "pin": "M2M32", | |
| 23 | + "prefer": null, | |
| 24 | + "avoid": ["M3U96b", "M1M32"], | |
| 25 | + "reason": "Mac Studio M2 Max 12 c / 32 Go dédié (aucune autre app), uv + pnpm + node présents, raccordé au tunnel wg1 ; pipeline quotidien + DuckDB en lecture" | |
| 26 | + }, | |
| 27 | + "processes": [ | |
| 28 | + { | |
| 29 | + "name": "countryatlas-api", | |
| 30 | + "manager": "pm2", | |
| 31 | + "script": "{{HOME}}/apps/countryatlas/.venv/bin/python", | |
| 32 | + "args": ["-m", "uvicorn", "countryatlas.api.main:app", "--host", "127.0.0.1", "--port", "8291", "--no-access-log", "--proxy-headers", "--timeout-keep-alive", "75"], | |
| 33 | + "interpreter": null, | |
| 34 | + "cwd": "{{HOME}}/apps/countryatlas", | |
| 35 | + "env": { | |
| 36 | + "CA_DATA_DIR": "{{HOME}}/countryatlas-data", | |
| 37 | + "CA_API_HOST": "127.0.0.1", | |
| 38 | + "CA_API_PORT": "8291", | |
| 39 | + "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a", | |
| 40 | + "CA_SITE_URL": "https://www.countryatlas.co", | |
| 41 | + "FRED_API_KEY": "5d6f76382d7d188e9166bb3b96c8f934", | |
| 42 | + "PYTHONUNBUFFERED": "1" | |
| 43 | + }, | |
| 44 | + "cron_restart": null, | |
| 45 | + "autorestart": true, | |
| 46 | + "max_memory_restart": "3G" | |
| 47 | + }, | |
| 48 | + { | |
| 49 | + "name": "countryatlas-scheduler", | |
| 50 | + "manager": "pm2", | |
| 51 | + "script": "{{HOME}}/apps/countryatlas/.venv/bin/ca", | |
| 52 | + "args": ["schedule"], | |
| 53 | + "interpreter": null, | |
| 54 | + "cwd": "{{HOME}}/apps/countryatlas", | |
| 55 | + "env": { | |
| 56 | + "CA_DATA_DIR": "{{HOME}}/countryatlas-data", | |
| 57 | + "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a", | |
| 58 | + "FRED_API_KEY": "5d6f76382d7d188e9166bb3b96c8f934", | |
| 59 | + "CA_TZ": "America/Toronto", | |
| 60 | + "CA_REFRESH_HOUR": "3", | |
| 61 | + "CA_REFRESH_MINUTE": "15", | |
| 62 | + "PYTHONUNBUFFERED": "1" | |
| 63 | + }, | |
| 64 | + "cron_restart": null, | |
| 65 | + "autorestart": true, | |
| 66 | + "max_memory_restart": "6G" | |
| 67 | + }, | |
| 68 | + { | |
| 69 | + "name": "countryatlas-web", | |
| 70 | + "manager": "pm2", | |
| 71 | + "script": "/opt/homebrew/bin/node", | |
| 72 | + "args": ["node_modules/next/dist/bin/next", "start", "-p", "8290", "-H", "0.0.0.0"], | |
| 73 | + "interpreter": null, | |
| 74 | + "cwd": "{{HOME}}/apps/countryatlas/apps/web", | |
| 75 | + "env": { | |
| 76 | + "NODE_ENV": "production", | |
| 77 | + "API_URL": "http://127.0.0.1:8291", | |
| 78 | + "NEXT_PUBLIC_SITE_URL": "https://www.countryatlas.co", | |
| 79 | + "CA_ADMIN_TOKEN": "c9ae6c67cdeb415c9df7db09d255c86d3537fb7670cf3c5a", | |
| 80 | + "NEXT_TELEMETRY_DISABLED": "1" | |
| 81 | + }, | |
| 82 | + "cron_restart": null, | |
| 83 | + "autorestart": true, | |
| 84 | + "max_memory_restart": "2G" | |
| 85 | + } | |
| 86 | + ], | |
| 87 | + "ngrok": null, | |
| 88 | + "launchd": [], | |
| 89 | + "env_overrides": {}, | |
| 90 | + "hooks": { | |
| 91 | + "post_sync": [ | |
| 92 | + "export PATH=\"$HOME/.local/bin:/opt/homebrew/bin:$PATH\"; (test -x .venv/bin/python || uv venv --python 3.12 .venv) && uv pip install -q --python .venv/bin/python -e . && echo ' python deps ok'", | |
| 93 | + "export PATH=\"/opt/homebrew/bin:$PATH\"; pnpm install --frozen-lockfile --silent && echo ' web deps ok'", | |
| 94 | + "export PATH=\"/opt/homebrew/bin:$PATH\"; cd apps/web && API_URL=http://127.0.0.1:8291 NEXT_PUBLIC_SITE_URL=https://www.countryatlas.co NEXT_TELEMETRY_DISABLED=1 pnpm build 2>&1 | tail -3 && echo ' web build ok'", | |
| 95 | + "mkdir -p $HOME/countryatlas-data/{raw,staging,build,snapshots,exports,logs} && echo ' data dirs ok'" | |
| 96 | + ], | |
| 97 | + "post_start": [] | |
| 98 | + }, | |
| 99 | + "notes": "v0.1.0 (2026-09-11) : Next 16 :8290 (rewrites /api/v1/* → FastAPI 127.0.0.1:8291), pipeline Python (ca refresh quotidien 03:15 via countryatlas-scheduler), DuckDB snapshot ~/countryatlas-data/atlas.duckdb (swap atomique). Sources : World Bank, IMF WEO, OECD, Eurostat, WHO GHO, FRED, OWID, BIS. Secrets (CA_ADMIN_TOKEN, FRED_API_KEY) uniquement ici.", | |
| 100 | + "tunnel": { | |
| 101 | + "domain": "www.countryatlas.co", | |
| 102 | + "gateway": "BHS64", | |
| 103 | + "note": "DNS A www → 51.161.112.61 posé par l'utilisateur le 2026-09-11 ; apex countryatlas.co sans A record (redirect Caddy à poser quand l'A @ existera)" | |
| 104 | + } | |
| 105 | +} | |
added
docs/ARCHITECTURE.md
+257 −0
@@ -0,0 +1,257 @@ | ||
| 1 | +# CountryAtlas — Architecture (contract for all contributors) | |
| 2 | + | |
| 3 | +> **www.countryatlas.co — Understand the world, one country at a time.** | |
| 4 | +> The country is the primary unit of navigation. Every visible number is traceable to its source. | |
| 5 | + | |
| 6 | +This document is the binding contract between the data platform (Python), the API (FastAPI) and the | |
| 7 | +web app (Next.js). Change it first, then the code. | |
| 8 | + | |
| 9 | +## 1. Deployment topology (MacLustr cluster) | |
| 10 | + | |
| 11 | +``` | |
| 12 | +Internet ─ DNS A www.countryatlas.co → 51.161.112.61 (BHS64, OVH Beauharnois) | |
| 13 | + └─ Caddy (TLS auto) ─ WireGuard wg1 ─→ M2M32 (Mac Studio M2, 12c/32GB) 10.67.0.x | |
| 14 | + ├─ countryatlas-web Next.js 16 :8290 (public upstream) | |
| 15 | + ├─ countryatlas-api FastAPI :8291 (loopback only; reached via Next rewrites /api/v1/*) | |
| 16 | + └─ countryatlas-scheduler Python loop (daily refresh, writes snapshots) | |
| 17 | + ~/countryatlas-data/ (raw/, staging/, build/, atlas.duckdb, exports/, logs/) | |
| 18 | +``` | |
| 19 | + | |
| 20 | +* Orchestrated by `mld` from the gateway M1M32 (manifest `deploy/countryatlas.mld.json`, PM2 processes). | |
| 21 | +* No database port is ever public. The API listens on 127.0.0.1:8291 only. | |
| 22 | +* The web app listens on 0.0.0.0:8290 (reached through the WireGuard tunnel only; the Mac has no public IP). | |
| 23 | +* Apex `countryatlas.co` → 301 to `www` (Caddy redirect on BHS64; requires an A record for the apex). | |
| 24 | + | |
| 25 | +## 2. Storage: DuckDB snapshots (no Postgres/ClickHouse/Redis for the MVP) | |
| 26 | + | |
| 27 | +Volumes: ~220 countries × ~250 indicators × ≤65 years ≈ 3–4 M observations. DuckDB handles this in | |
| 28 | +milliseconds, exports Parquet/CSV natively and needs zero operations. The design keeps the door open to | |
| 29 | +Postgres/ClickHouse later (same logical schema). | |
| 30 | + | |
| 31 | +**Snapshot-swap rule (critical):** | |
| 32 | + | |
| 33 | +1. The pipeline builds a brand-new file `~/countryatlas-data/build/atlas-<run_id>.duckdb`. | |
| 34 | +2. Derived tables are computed inside it (latest, rankings, changes, events, similarity, insights, coverage). | |
| 35 | +3. Integrity checks pass → `os.replace()` it onto `~/countryatlas-data/atlas.duckdb` (atomic rename) and copy | |
| 36 | + to `snapshots/atlas-<run_id>.duckdb` (keep last 7). | |
| 37 | +4. The API opens the DB **read-only**; on every request it compares the file's `st_ino`/`st_mtime` with the open | |
| 38 | + one and reopens when they differ. Readers never block the writer and vice-versa. | |
| 39 | + | |
| 40 | +Raw source payloads are kept forever (gzip JSON/CSV) under `raw/<connector>/<dataset>/<YYYY-MM-DD>/…`. | |
| 41 | +Nothing is ever fetched without also being stored raw. | |
| 42 | + | |
| 43 | +### 2.1 Logical schema (DuckDB) | |
| 44 | + | |
| 45 | +```sql | |
| 46 | +countries(id TEXT PK /* = iso3 */, iso2, iso3, iso_numeric, slug, short_name, official_name, capital, | |
| 47 | + continent, region_wb /* WB region id */, region_wb_name, subregion, income_group /* HIC/UMC/LMC/LIC */, | |
| 48 | + currency_code, currency_name, area_km2 DOUBLE, latitude, longitude, flag_emoji, | |
| 49 | + un_member BOOLEAN, status TEXT /* country|territory|historical */, independent BOOLEAN, | |
| 50 | + landlocked BOOLEAN, borders TEXT[] , languages TEXT[], demonym, kind TEXT /* country|aggregate */) | |
| 51 | +groups(id TEXT PK /* world|oecd|g7|g20|eu|brics|nac|ecs|hic|... */, slug, name, kind /* world|region|income|org|custom */, | |
| 52 | + description, wb_code /* WLD, OED, EUU, HIC ... when the source has an aggregate */) | |
| 53 | +group_members(group_id, country_id) | |
| 54 | +sources(id TEXT PK /* worldbank|imf|oecd|eurostat|who|fred|owid|bis|ilo */, name, organization, url, licence, | |
| 55 | + attribution, api_base, last_success_at, notes) | |
| 56 | +indicators(id TEXT PK /* = slug */, slug, name, short_name, description, topic, subtopic, unit, unit_short, | |
| 57 | + frequency /* A|Q|M */, precision INT, aggregation /* sum|mean|weighted_mean|none */, | |
| 58 | + higher_is_better BOOLEAN NULL, ranking_eligible BOOLEAN, per_capita_of TEXT NULL, | |
| 59 | + format TEXT /* number|percent|currency|index|years|per_1000|... */, scale TEXT /* raw|thousands|millions|billions */, | |
| 60 | + source_priority TEXT[] , methodology TEXT, tags TEXT[], featured BOOLEAN) | |
| 61 | +indicator_sources(indicator_id, source_id, dataset, series_code, params JSON, priority INT, transform TEXT NULL, notes) | |
| 62 | +observations(country_id, indicator_id, period DATE /* first day of period */, year INT, frequency, | |
| 63 | + value DOUBLE, unit, source_id, source_dataset, source_series_code, | |
| 64 | + is_estimate BOOL, is_forecast BOOL, revision INT, retrieved_at TIMESTAMP, source_updated_at TIMESTAMP, | |
| 65 | + status TEXT /* verified|imported|warning|stale|quarantined */, metadata JSON) | |
| 66 | + -- PK (country_id, indicator_id, period, frequency). Exactly ONE source per (indicator,country,period) is kept in | |
| 67 | + -- observations: the highest-priority source that has a value. Alternatives are kept in observations_alt. | |
| 68 | +observations_alt(same columns) -- lower-priority sources, for provenance/inspection and fallbacks | |
| 69 | +observation_revisions(country_id, indicator_id, period, frequency, old_value, new_value, old_source_id, new_source_id, | |
| 70 | + changed_at TIMESTAMP, run_id) -- never silently overwrite: carry forward from the previous snapshot | |
| 71 | +latest(country_id, indicator_id, period, year, value, prev_period, prev_value, change_abs, change_pct, | |
| 72 | + rank_world INT, n_world INT, rank_region INT, n_region INT, rank_income INT, n_income INT, | |
| 73 | + source_id, is_forecast, is_estimate, status) -- latest NON-forecast observation per country×indicator | |
| 74 | +rankings(indicator_id, year, country_id, value, rank INT, n INT, pct_rank DOUBLE) -- countries only (kind='country'), non-forecast | |
| 75 | +changes(id, country_id, indicator_id, kind /* yoy_drop|yoy_jump|record_high|record_low|n_year_high|n_year_low|sign_flip|accelerating|decelerating */, | |
| 76 | + period, year, value, ref_value, delta, delta_pct, window_years INT, severity DOUBLE /* 0-1 */, headline TEXT, detail JSON, detected_at) | |
| 77 | + -- "What changed" = recent (latest period) ; events = whole history | |
| 78 | +events(id, country_id, indicator_id, kind, period, year, value, ref_value, delta, delta_pct, severity, headline, detail JSON) | |
| 79 | +similarity(country_id, mode /* overall|economic|demographic|energy|social */, peer_id, score DOUBLE /* 0-100 */, rank INT, | |
| 80 | + contributions JSON /* {indicator: {z_a, z_b, weight, contribution}} */) | |
| 81 | +insights(id, country_id, template_id, text, values JSON, indicators TEXT[], computed_at) | |
| 82 | +country_dna(country_id, dims JSON /* {income:0-100, demographics:..., urbanization, trade, energy, emissions, innovation, education, public_spending} */, year_ref) | |
| 83 | +coverage(country_id, n_indicators INT, n_observations INT, latest_year INT, coverage_pct DOUBLE, updated_at) | |
| 84 | +import_runs(run_id, connector, dataset, started_at, finished_at, status /* ok|failed|partial */, rows_raw, rows_norm, rows_valid, | |
| 85 | + warnings INT, errors INT, message, raw_path) | |
| 86 | +validation_issues(run_id, connector, indicator_id, country_id, period, severity /* info|warning|error */, code, message) | |
| 87 | +meta(key, value) -- build_run_id, built_at, schema_version, indicator_count, observation_count, ... | |
| 88 | +``` | |
| 89 | + | |
| 90 | +## 3. Registries (YAML, versioned in git, loaded by both pipeline and API) | |
| 91 | + | |
| 92 | +* `registry/countries.yaml` — canonical registry generated by `scripts/build_country_registry.py` from the World Bank | |
| 93 | + country list (region, income group, capital, lat/long) merged with the mledoze/countries dataset (ISO numeric, official | |
| 94 | + name, subregion, currency, area, UN membership, flag, borders, languages). Hand-edited fields survive regeneration | |
| 95 | + (`overrides:` block). Aggregates (WLD, OED, EUU, HIC …) are **not** countries; they live in `groups.yaml`. | |
| 96 | +* `registry/groups.yaml` — World, WB regions (7), income groups (4), organisations (OECD, EU, G7, G20, BRICS, ASEAN, | |
| 97 | + African Union, Eurozone, Nordic, NAFTA/USMCA, Commonwealth…) with explicit member lists (ISO3). | |
| 98 | +* `registry/indicators.yaml` — the canonical indicator registry (see §4). Every indicator maps to one or more | |
| 99 | + external series (connector + code + params + priority). | |
| 100 | +* `registry/topics.yaml` — topics (economy, government, population, …) with order, blurb, icon, and the ordered list of | |
| 101 | + indicator slugs to show on the country topic page, plus `headline` indicators for the country overview. | |
| 102 | + | |
| 103 | +**Rule:** the code never identifies a country by its name. Always `iso3` (id) or `slug`. | |
| 104 | +URLs use slugs (`/countries/canada`); the API accepts both iso3 and slug. | |
| 105 | + | |
| 106 | +## 4. Indicator conventions | |
| 107 | + | |
| 108 | +* `slug` is kebab-case, stable, and is the URL: `/indicators/gdp-per-capita`. | |
| 109 | +* `unit` is human (`current US$`, `% of GDP`, `years`, `people`, `% of population`), `unit_short` for axes (`US$`, `%`, `yrs`). | |
| 110 | +* `format` drives display: `currency` (scale automatically: 1.2T / 45.3B), `percent` (1 decimal), `number` (thousand separators, | |
| 111 | + scale for large), `years`, `index`, `per_1000`, `per_100k`, `ratio`, `celsius`, `tonnes`. | |
| 112 | +* `higher_is_better` is only set when it is unambiguous (life expectancy = true, infant mortality = false). Otherwise null | |
| 113 | + (inflation, population, exchange rate) — rankings then sort descending by value and say "highest". | |
| 114 | +* `ranking_eligible` false for series that make no sense to rank (exchange rate, policy rate in local terms, indexes). | |
| 115 | +* Period → `period` is the first day: annual `YYYY-01-01`, quarterly `YYYY-{01,04,07,10}-01`, monthly `YYYY-MM-01`. | |
| 116 | +* Forecast observations (IMF WEO projections) are stored with `is_forecast=true` and never enter `latest`, `rankings`, | |
| 117 | + `changes` or `events`; they are shown dashed on charts. | |
| 118 | +* A "topic" belongs to the fixed set: `economy, government, population, labor, income, housing, health, education, trade, | |
| 119 | + energy, climate, environment, infrastructure, digital, innovation, agriculture, tourism, security, quality-of-life`. | |
| 120 | + | |
| 121 | +## 5. Pipeline (`ca` CLI, package `countryatlas`) | |
| 122 | + | |
| 123 | +``` | |
| 124 | +ca registry validate # YAML sanity (unique slugs, known connectors, topics) | |
| 125 | +ca fetch [--connector X] [--indicator Y] # raw payloads → raw/… (retries, backoff, rate limit, ETag/If-Modified-Since when available) | |
| 126 | +ca normalize [--connector X] # raw → staging/<connector>/<dataset>.parquet in the NormalizedObservation schema | |
| 127 | +ca validate # rules (§6) → statuses + validation_issues | |
| 128 | +ca build # merge staging by source priority → new DuckDB → derived tables → integrity → atomic swap | |
| 129 | +ca refresh [--connector X] # fetch + normalize + validate + build (idempotent; safe to run any time) | |
| 130 | +ca schedule # long-running loop: refresh daily at 03:15 America/Toronto; also refresh on SIGUSR1 | |
| 131 | +ca status # last runs, row counts, freshness, stale sources | |
| 132 | +ca export indicator <slug> | country <iso3> # CSV/JSON/Parquet into exports/ (also served by the API on demand) | |
| 133 | +``` | |
| 134 | + | |
| 135 | +Connector interface (`countryatlas/connectors/base.py`): | |
| 136 | + | |
| 137 | +```python | |
| 138 | +class Connector(Protocol): | |
| 139 | + id: str # "worldbank" | |
| 140 | + def discover(self) -> list[DatasetDescriptor] | |
| 141 | + def fetch(self, spec: IndicatorSourceSpec, ctx: FetchContext) -> RawPayload # one HTTP "unit" per spec; stored raw | |
| 142 | + def normalize(self, raw: RawPayload, spec: IndicatorSourceSpec) -> list[NormalizedObservation] | |
| 143 | + def validate(self, rows: list[NormalizedObservation]) -> ValidationReport # source-specific checks | |
| 144 | +``` | |
| 145 | + | |
| 146 | +Error isolation: each (connector, dataset) runs in its own try/except and its own `import_runs` row. A failed fetch | |
| 147 | +**never** removes previously good data: `build` merges the newest successful staging file per dataset. A connector | |
| 148 | +that fails validation with `error` severity is quarantined (its staging file is ignored and the previous one kept). | |
| 149 | + | |
| 150 | +## 6. Validation rules (deterministic) | |
| 151 | + | |
| 152 | +* duplicates (same key twice in one dataset) → error (dataset quarantined) | |
| 153 | +* impossible values: negative for `nonnegative` indicators, percentages outside [-5, 105] for `percent_share` | |
| 154 | + indicators, life expectancy outside [20, 100], etc. (bounds in registry `bounds: [min, max]`) → row `quarantined` | |
| 155 | +* unit change vs registry unit → dataset quarantined | |
| 156 | +* extreme jump: |Δ| > `jump_threshold` × robust std of the country series (MAD) → row `warning` (kept, flagged) | |
| 157 | +* partial download: rows < 30 % of the previous run for the same dataset → dataset quarantined (previous kept) | |
| 158 | +* stale: `source_updated_at` / latest period older than `stale_after_days` (annual: 800 d, quarterly: 200 d, monthly: 75 d) → `stale` | |
| 159 | +* mapping errors: unknown country code → logged, row dropped (aggregates are dropped unless mapped to a group) | |
| 160 | + | |
| 161 | +Unusual values are never deleted, only flagged. | |
| 162 | + | |
| 163 | +## 7. Derived computations | |
| 164 | + | |
| 165 | +* **latest**: last non-forecast observation per country×indicator; previous = previous period of the same frequency; ranks | |
| 166 | + among `kind='country'` for the same *year* (if a country's latest year is older than the global max year by > 2, | |
| 167 | + its rank is still computed within that year but flagged `rank_year != max_year` in the API response). | |
| 168 | +* **rankings**: for every `ranking_eligible` indicator and every year with ≥ 20 countries. | |
| 169 | +* **changes / events**: per country×indicator series (annual or higher), deterministic detectors: | |
| 170 | + YoY change beyond ±(2 × MAD of yearly diffs) and beyond an indicator-specific absolute floor (e.g. inflation ±2 pts, | |
| 171 | + unemployment ±1 pt, GDP growth ±3 pts, population growth ±0.5 pt), record high/low over the whole series, N-year high/low | |
| 172 | + (N ∈ {10, 20, 30}), sign flip (growth → contraction), acceleration (3 consecutive increases of the diff). | |
| 173 | + `severity` = min(1, |z| / 4) blended with the floor ratio. Headlines are template strings with computed numbers — | |
| 174 | + **no LLM**. | |
| 175 | +* **similarity**: features per mode (see `registry/similarity.yaml`): log-transform heavy-tailed features (GDP pc, population, | |
| 176 | + area), z-score across countries (latest values, only countries with ≥ 70 % of the mode's features), weighted Euclidean | |
| 177 | + distance → score = 100 × exp(−d / d₀); store the top 12 peers with per-feature contributions (explainable). | |
| 178 | +* **insights**: templates in `registry/insights.yaml` (e.g. "{country}'s population grew {pct}% since {y0}."), | |
| 179 | + each fully computed from data; numbers are never generated by a model. | |
| 180 | +* **country_dna**: 9 dimensions in [0, 100] = percentile rank of the country for a representative indicator (or the mean of | |
| 181 | + 2-3 indicators) among all countries: income (GDP pc PPP), demographics (median age ↔ fertility), urbanization, | |
| 182 | + trade (trade % GDP), energy (energy use pc), emissions (CO₂ pc), innovation (R&D % GDP, patents pc), education | |
| 183 | + (tertiary enrolment, expected years), public spending (gov. expenditure % GDP). Descriptive, not a score. | |
| 184 | + | |
| 185 | +## 8. API (FastAPI, `/api/v1`, OpenAPI at `/api/v1/openapi.json`, docs at `/api/v1/docs`) | |
| 186 | + | |
| 187 | +Every response carries `meta: {built_at, run_id, generated_at}`; every value object carries provenance: | |
| 188 | + | |
| 189 | +```json | |
| 190 | +{"value": 53372.1, "period": "2024-01-01", "year": 2024, "unit": "current US$", "is_estimate": false, "is_forecast": false, | |
| 191 | + "status": "verified", | |
| 192 | + "provenance": {"source": "worldbank", "source_name": "World Bank", "dataset": "WDI", "series_code": "NY.GDP.PCAP.CD", | |
| 193 | + "retrieved_at": "2026-09-11T03:20:11Z", "source_updated_at": "2026-07-01", "url": "https://data.worldbank.org/indicator/NY.GDP.PCAP.CD?locations=CA", | |
| 194 | + "transform": null, "licence": "CC BY 4.0"}} | |
| 195 | +``` | |
| 196 | + | |
| 197 | +Endpoints (all GET, JSON, cached in-process with the snapshot run_id as cache key): | |
| 198 | + | |
| 199 | +``` | |
| 200 | +/health {status, run_id, built_at, observations} | |
| 201 | +/countries?region=&income=&q= list (id, slug, name, flag, region, income, population_latest, gdp_latest, coverage_pct) | |
| 202 | +/countries/{id} header + headline metrics (topics.yaml `headline`) with latest+rank+change | |
| 203 | +/countries/{id}/topics/{topic} all indicators of the topic: latest + sparkline (last 30 pts) + rank | |
| 204 | +/countries/{id}/series/{indicator}?from=&to=&freq= full history (values[], with per-observation provenance summary) | |
| 205 | +/countries/{id}/changes recent changes (sorted by severity) | |
| 206 | +/countries/{id}/events?limit= timeline | |
| 207 | +/countries/{id}/similar?mode=overall peers with contributions | |
| 208 | +/countries/{id}/insights | |
| 209 | +/countries/{id}/dna | |
| 210 | +/countries/{id}/download.{csv|json} full country dataset | |
| 211 | +/indicators?topic=&q= list | |
| 212 | +/indicators/{slug} definition + sources + coverage + world/regions latest + freshness | |
| 213 | +/indicators/{slug}/map?year= {year, values: {ISO3: value}, legend: {min,max,breaks[]}, n} | |
| 214 | +/indicators/{slug}/trend?group=world median/aggregate trend (WB aggregate when available) | |
| 215 | +/indicators/{slug}/download.{csv|json} | |
| 216 | +/series?country=CAN,FRA&indicator=gdp-per-capita&from=1990&to=2026&freq=A | |
| 217 | +/rankings list of rankable indicators (featured first) | |
| 218 | +/rankings/{indicator}?year=&group=&sort=asc|desc&limit=&offset= rows: rank, country, value, change_1y, change_10y, sparkline | |
| 219 | +/rankings/{indicator}/history?countries=CAN,USA rank by year | |
| 220 | +/compare?countries=CAN,USA,FRA&indicators=…&from=&to=&mode=absolute|per-capita|index100|pct series bundle | |
| 221 | +/compare/snapshot?countries=…&topic= table of latest values for the topic's indicators | |
| 222 | +/regions | /regions/{slug} group page data (members, aggregate metrics, member rankings) | |
| 223 | +/search?q=&limit= [{type: country|indicator|topic|region|source, id, slug, name, hint, score}] | |
| 224 | +/home global snapshot + curated lists (largest economies, fastest growth, …) + recent changes + recently updated | |
| 225 | +/changes?limit=&kind= global recent changes feed | |
| 226 | +/sources | /sources/{id} source metadata + datasets + import runs + freshness | |
| 227 | +/methodology static from registry (units, priorities, validation rules) — for the page | |
| 228 | +/admin/* (header X-Admin-Token) connectors health, import_runs, validation_issues, coverage matrix, trigger refresh (SIGUSR1) | |
| 229 | +``` | |
| 230 | + | |
| 231 | +Errors: RFC 7807 problem+json. Unknown country/indicator → 404. Rate limit 120 req/min/IP (in-process token bucket). | |
| 232 | + | |
| 233 | +## 9. Web app (Next.js 16, React 19, TypeScript, Tailwind v4, App Router) | |
| 234 | + | |
| 235 | +* Server components fetch the API at `process.env.API_URL` (`http://127.0.0.1:8291`). Browser-side fetches go to the | |
| 236 | + same origin `/api/v1/*` (Next `rewrites`). | |
| 237 | +* Routes: `/`, `/countries`, `/countries/[slug]`, `/countries/[slug]/[topic]`, `/compare`, `/compare/[...slugs]`, `/rankings`, | |
| 238 | + `/rankings/[indicator]`, `/indicators`, `/indicators/[slug]`, `/regions`, `/regions/[slug]`, `/explore`, `/data`, `/sources`, | |
| 239 | + `/sources/[id]`, `/methodology`, `/api` (docs landing), `/admin` (token), `/sitemap.xml`, `/robots.txt`, `/opengraph-image`. | |
| 240 | +* Charts: our own SVG chart kit in `apps/web/src/components/charts/` (server-renderable, touch, accessible summaries): | |
| 241 | + LineChart, AreaChart, StackedArea, RankedBars, Scatter/Bubble, Sparkline, SlopeChart, IndexedLine, SmallMultiples, | |
| 242 | + PopulationPyramid, Choropleth (d3-geo + world-atlas 110m, SVG), DNA radial. | |
| 243 | +* i18n: all UI strings through `apps/web/src/i18n/en.ts` (`t('key')`), no hard-coded English in components. | |
| 244 | +* Design tokens in `apps/web/src/app/globals.css` (@theme). Editorial, calm, data-dense. No card soup. | |
| 245 | +* Mobile: bottom navigation (Home · Countries · Compare · Rankings · Search), bottom sheets for filters, sticky compare | |
| 246 | + controls, no horizontal overflow at 320–430 px. | |
| 247 | +* Provenance drawer: any value component (`<Metric>`, chart point) opens `<ProvenanceSheet>` with the provenance object. | |
| 248 | + | |
| 249 | +## 10. Ports & env | |
| 250 | + | |
| 251 | +| Process | Port | Env | | |
| 252 | +|---|---|---| | |
| 253 | +| countryatlas-web | 8290 | `API_URL=http://127.0.0.1:8291`, `NEXT_PUBLIC_SITE_URL=https://www.countryatlas.co` | | |
| 254 | +| countryatlas-api | 8291 (127.0.0.1) | `CA_DATA_DIR=~/countryatlas-data`, `CA_ADMIN_TOKEN`, `FRED_API_KEY` | | |
| 255 | +| countryatlas-scheduler | — | same as API | | |
| 256 | + | |
| 257 | +Secrets (FRED key, admin token) live only in the mld manifest on M1M32 and in local `.env` (git-ignored). | |
added
pyproject.toml
+41 −0
@@ -0,0 +1,41 @@ | ||
| 1 | +[project] | |
| 2 | +name = "countryatlas" | |
| 3 | +version = "0.1.0" | |
| 4 | +description = "CountryAtlas — global country intelligence platform: data pipeline, connectors and API" | |
| 5 | +requires-python = ">=3.12" | |
| 6 | +dependencies = [ | |
| 7 | + "duckdb>=1.3", | |
| 8 | + "pyarrow>=17", | |
| 9 | + "polars>=1.10", | |
| 10 | + "httpx>=0.27", | |
| 11 | + "pyyaml>=6", | |
| 12 | + "pydantic>=2.8", | |
| 13 | + "fastapi>=0.115", | |
| 14 | + "uvicorn[standard]>=0.30", | |
| 15 | + "orjson>=3.10", | |
| 16 | + "typer>=0.12", | |
| 17 | + "rich>=13", | |
| 18 | + "python-dateutil>=2.9", | |
| 19 | + "tenacity>=9", | |
| 20 | + "numpy>=2", | |
| 21 | +] | |
| 22 | + | |
| 23 | +[project.optional-dependencies] | |
| 24 | +dev = ["pytest>=8", "pytest-asyncio>=0.24", "ruff>=0.6", "respx>=0.21"] | |
| 25 | + | |
| 26 | +[project.scripts] | |
| 27 | +ca = "countryatlas.cli:app" | |
| 28 | + | |
| 29 | +[build-system] | |
| 30 | +requires = ["hatchling"] | |
| 31 | +build-backend = "hatchling.build" | |
| 32 | + | |
| 33 | +[tool.hatch.build.targets.wheel] | |
| 34 | +packages = ["src/countryatlas"] | |
| 35 | + | |
| 36 | +[tool.ruff] | |
| 37 | +line-length = 120 | |
| 38 | +target-version = "py312" | |
| 39 | + | |
| 40 | +[tool.pytest.ini_options] | |
| 41 | +testpaths = ["tests"] | |
added
registry/countries.overrides.yaml
+23 −0
@@ -0,0 +1,23 @@ | ||
| 1 | +# Hand overrides applied on top of the generated registry (keyed by iso3). Regenerate with | |
| 2 | +# .venv/bin/python scripts/build_country_registry.py | |
| 3 | +XKX: | |
| 4 | + status: country # partially recognised state, treated as a country (World Bank member) | |
| 5 | + official_name: Republic of Kosovo | |
| 6 | + iso_numeric: null | |
| 7 | +VIR: | |
| 8 | + slug: us-virgin-islands | |
| 9 | +CHI: | |
| 10 | + short_name: Channel Islands | |
| 11 | + official_name: Channel Islands (Jersey and Guernsey) | |
| 12 | + status: territory | |
| 13 | + continent: Europe | |
| 14 | + subregion: Northern Europe | |
| 15 | + currency_code: GBP | |
| 16 | + currency_name: British pound | |
| 17 | + area_km2: 194 | |
| 18 | + flag_emoji: "🇯🇪" | |
| 19 | +PSE: | |
| 20 | + short_name: Palestine | |
| 21 | + status: territory | |
| 22 | +TWN: | |
| 23 | + status: territory | |
added
registry/countries.yaml
+7117 −0
@@ -0,0 +1,7117 @@ | ||
| 1 | +# Canonical CountryAtlas country registry — GENERATED by scripts/build_country_registry.py | |
| 2 | +# Sources: World Bank country API (region, income, capital, coordinates) + mledoze/countries (ISO numeric, official name, | |
| 3 | +# subregion, currency, area, UN membership, flag, borders, languages). Edit registry/countries.overrides.yaml, not this file. | |
| 4 | +countries: | |
| 5 | +- id: AFG | |
| 6 | + iso2: AF | |
| 7 | + iso3: AFG | |
| 8 | + iso_numeric: '004' | |
| 9 | + slug: afghanistan | |
| 10 | + short_name: Afghanistan | |
| 11 | + official_name: Islamic Republic of Afghanistan | |
| 12 | + capital: Kabul | |
| 13 | + continent: Asia | |
| 14 | + region_wb: MEA | |
| 15 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 16 | + subregion: Southern Asia | |
| 17 | + income_group: LIC | |
| 18 | + income_group_name: Low income | |
| 19 | + currency_code: AFN | |
| 20 | + currency_name: Afghan afghani | |
| 21 | + area_km2: 652230 | |
| 22 | + latitude: 34.5228 | |
| 23 | + longitude: 69.1761 | |
| 24 | + flag_emoji: 🇦🇫 | |
| 25 | + un_member: true | |
| 26 | + independent: true | |
| 27 | + landlocked: true | |
| 28 | + borders: | |
| 29 | + - IRN | |
| 30 | + - PAK | |
| 31 | + - TKM | |
| 32 | + - UZB | |
| 33 | + - TJK | |
| 34 | + - CHN | |
| 35 | + languages: | |
| 36 | + - Dari | |
| 37 | + - Pashto | |
| 38 | + - Turkmen | |
| 39 | + demonym: Afghan | |
| 40 | + status: country | |
| 41 | + kind: country | |
| 42 | +- id: ALB | |
| 43 | + iso2: AL | |
| 44 | + iso3: ALB | |
| 45 | + iso_numeric: 008 | |
| 46 | + slug: albania | |
| 47 | + short_name: Albania | |
| 48 | + official_name: Republic of Albania | |
| 49 | + capital: Tirana | |
| 50 | + continent: Europe | |
| 51 | + region_wb: ECS | |
| 52 | + region_wb_name: Europe & Central Asia | |
| 53 | + subregion: Southeast Europe | |
| 54 | + income_group: UMC | |
| 55 | + income_group_name: Upper middle income | |
| 56 | + currency_code: ALL | |
| 57 | + currency_name: Albanian lek | |
| 58 | + area_km2: 28748 | |
| 59 | + latitude: 41.3317 | |
| 60 | + longitude: 19.8172 | |
| 61 | + flag_emoji: 🇦🇱 | |
| 62 | + un_member: true | |
| 63 | + independent: true | |
| 64 | + landlocked: false | |
| 65 | + borders: | |
| 66 | + - MNE | |
| 67 | + - GRC | |
| 68 | + - MKD | |
| 69 | + - UNK | |
| 70 | + languages: | |
| 71 | + - Albanian | |
| 72 | + demonym: Albanian | |
| 73 | + status: country | |
| 74 | + kind: country | |
| 75 | +- id: DZA | |
| 76 | + iso2: DZ | |
| 77 | + iso3: DZA | |
| 78 | + iso_numeric: '012' | |
| 79 | + slug: algeria | |
| 80 | + short_name: Algeria | |
| 81 | + official_name: People's Democratic Republic of Algeria | |
| 82 | + capital: Algiers | |
| 83 | + continent: Africa | |
| 84 | + region_wb: MEA | |
| 85 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 86 | + subregion: Northern Africa | |
| 87 | + income_group: UMC | |
| 88 | + income_group_name: Upper middle income | |
| 89 | + currency_code: DZD | |
| 90 | + currency_name: Algerian dinar | |
| 91 | + area_km2: 2381741 | |
| 92 | + latitude: 36.7397 | |
| 93 | + longitude: 3.05097 | |
| 94 | + flag_emoji: 🇩🇿 | |
| 95 | + un_member: true | |
| 96 | + independent: true | |
| 97 | + landlocked: false | |
| 98 | + borders: | |
| 99 | + - TUN | |
| 100 | + - LBY | |
| 101 | + - NER | |
| 102 | + - ESH | |
| 103 | + - MRT | |
| 104 | + - MLI | |
| 105 | + - MAR | |
| 106 | + languages: | |
| 107 | + - Arabic | |
| 108 | + demonym: Algerian | |
| 109 | + status: country | |
| 110 | + kind: country | |
| 111 | +- id: ASM | |
| 112 | + iso2: AS | |
| 113 | + iso3: ASM | |
| 114 | + iso_numeric: '016' | |
| 115 | + slug: american-samoa | |
| 116 | + short_name: American Samoa | |
| 117 | + official_name: American Samoa | |
| 118 | + capital: Pago Pago | |
| 119 | + continent: Oceania | |
| 120 | + region_wb: EAS | |
| 121 | + region_wb_name: East Asia & Pacific | |
| 122 | + subregion: Polynesia | |
| 123 | + income_group: HIC | |
| 124 | + income_group_name: High income | |
| 125 | + currency_code: USD | |
| 126 | + currency_name: United States dollar | |
| 127 | + area_km2: 199 | |
| 128 | + latitude: -14.2846 | |
| 129 | + longitude: -170.691 | |
| 130 | + flag_emoji: 🇦🇸 | |
| 131 | + un_member: false | |
| 132 | + independent: false | |
| 133 | + landlocked: false | |
| 134 | + borders: [] | |
| 135 | + languages: | |
| 136 | + - English | |
| 137 | + - Samoan | |
| 138 | + demonym: American Samoan | |
| 139 | + status: territory | |
| 140 | + kind: country | |
| 141 | +- id: AND | |
| 142 | + iso2: AD | |
| 143 | + iso3: AND | |
| 144 | + iso_numeric: '020' | |
| 145 | + slug: andorra | |
| 146 | + short_name: Andorra | |
| 147 | + official_name: Principality of Andorra | |
| 148 | + capital: Andorra la Vella | |
| 149 | + continent: Europe | |
| 150 | + region_wb: ECS | |
| 151 | + region_wb_name: Europe & Central Asia | |
| 152 | + subregion: Southern Europe | |
| 153 | + income_group: HIC | |
| 154 | + income_group_name: High income | |
| 155 | + currency_code: EUR | |
| 156 | + currency_name: Euro | |
| 157 | + area_km2: 468 | |
| 158 | + latitude: 42.5075 | |
| 159 | + longitude: 1.5218 | |
| 160 | + flag_emoji: 🇦🇩 | |
| 161 | + un_member: true | |
| 162 | + independent: true | |
| 163 | + landlocked: true | |
| 164 | + borders: | |
| 165 | + - FRA | |
| 166 | + - ESP | |
| 167 | + languages: | |
| 168 | + - Catalan | |
| 169 | + demonym: Andorran | |
| 170 | + status: country | |
| 171 | + kind: country | |
| 172 | +- id: AGO | |
| 173 | + iso2: AO | |
| 174 | + iso3: AGO | |
| 175 | + iso_numeric: '024' | |
| 176 | + slug: angola | |
| 177 | + short_name: Angola | |
| 178 | + official_name: Republic of Angola | |
| 179 | + capital: Luanda | |
| 180 | + continent: Africa | |
| 181 | + region_wb: SSF | |
| 182 | + region_wb_name: Sub-Saharan Africa | |
| 183 | + subregion: Middle Africa | |
| 184 | + income_group: LMC | |
| 185 | + income_group_name: Lower middle income | |
| 186 | + currency_code: AOA | |
| 187 | + currency_name: Angolan kwanza | |
| 188 | + area_km2: 1246700 | |
| 189 | + latitude: -8.81155 | |
| 190 | + longitude: 13.242 | |
| 191 | + flag_emoji: 🇦🇴 | |
| 192 | + un_member: true | |
| 193 | + independent: true | |
| 194 | + landlocked: false | |
| 195 | + borders: | |
| 196 | + - COG | |
| 197 | + - COD | |
| 198 | + - ZMB | |
| 199 | + - NAM | |
| 200 | + languages: | |
| 201 | + - Portuguese | |
| 202 | + demonym: Angolan | |
| 203 | + status: country | |
| 204 | + kind: country | |
| 205 | +- id: ATG | |
| 206 | + iso2: AG | |
| 207 | + iso3: ATG | |
| 208 | + iso_numeric: 028 | |
| 209 | + slug: antigua-and-barbuda | |
| 210 | + short_name: Antigua and Barbuda | |
| 211 | + official_name: Antigua and Barbuda | |
| 212 | + capital: Saint John's | |
| 213 | + continent: Americas | |
| 214 | + region_wb: LCN | |
| 215 | + region_wb_name: Latin America & Caribbean | |
| 216 | + subregion: Caribbean | |
| 217 | + income_group: HIC | |
| 218 | + income_group_name: High income | |
| 219 | + currency_code: XCD | |
| 220 | + currency_name: Eastern Caribbean dollar | |
| 221 | + area_km2: 442 | |
| 222 | + latitude: 17.1175 | |
| 223 | + longitude: -61.8456 | |
| 224 | + flag_emoji: 🇦🇬 | |
| 225 | + un_member: true | |
| 226 | + independent: true | |
| 227 | + landlocked: false | |
| 228 | + borders: [] | |
| 229 | + languages: | |
| 230 | + - English | |
| 231 | + demonym: Antiguan, Barbudan | |
| 232 | + status: country | |
| 233 | + kind: country | |
| 234 | +- id: ARG | |
| 235 | + iso2: AR | |
| 236 | + iso3: ARG | |
| 237 | + iso_numeric: '032' | |
| 238 | + slug: argentina | |
| 239 | + short_name: Argentina | |
| 240 | + official_name: Argentine Republic | |
| 241 | + capital: Buenos Aires | |
| 242 | + continent: Americas | |
| 243 | + region_wb: LCN | |
| 244 | + region_wb_name: Latin America & Caribbean | |
| 245 | + subregion: South America | |
| 246 | + income_group: UMC | |
| 247 | + income_group_name: Upper middle income | |
| 248 | + currency_code: ARS | |
| 249 | + currency_name: Argentine peso | |
| 250 | + area_km2: 2780400 | |
| 251 | + latitude: -34.6118 | |
| 252 | + longitude: -58.4173 | |
| 253 | + flag_emoji: 🇦🇷 | |
| 254 | + un_member: true | |
| 255 | + independent: true | |
| 256 | + landlocked: false | |
| 257 | + borders: | |
| 258 | + - BOL | |
| 259 | + - BRA | |
| 260 | + - CHL | |
| 261 | + - PRY | |
| 262 | + - URY | |
| 263 | + languages: | |
| 264 | + - Guaraní | |
| 265 | + - Spanish | |
| 266 | + demonym: Argentine | |
| 267 | + status: country | |
| 268 | + kind: country | |
| 269 | +- id: ARM | |
| 270 | + iso2: AM | |
| 271 | + iso3: ARM | |
| 272 | + iso_numeric: '051' | |
| 273 | + slug: armenia | |
| 274 | + short_name: Armenia | |
| 275 | + official_name: Republic of Armenia | |
| 276 | + capital: Yerevan | |
| 277 | + continent: Asia | |
| 278 | + region_wb: ECS | |
| 279 | + region_wb_name: Europe & Central Asia | |
| 280 | + subregion: Western Asia | |
| 281 | + income_group: UMC | |
| 282 | + income_group_name: Upper middle income | |
| 283 | + currency_code: AMD | |
| 284 | + currency_name: Armenian dram | |
| 285 | + area_km2: 29743 | |
| 286 | + latitude: 40.1596 | |
| 287 | + longitude: 44.509 | |
| 288 | + flag_emoji: 🇦🇲 | |
| 289 | + un_member: true | |
| 290 | + independent: true | |
| 291 | + landlocked: true | |
| 292 | + borders: | |
| 293 | + - AZE | |
| 294 | + - GEO | |
| 295 | + - IRN | |
| 296 | + - TUR | |
| 297 | + languages: | |
| 298 | + - Armenian | |
| 299 | + demonym: Armenian | |
| 300 | + status: country | |
| 301 | + kind: country | |
| 302 | +- id: ABW | |
| 303 | + iso2: AW | |
| 304 | + iso3: ABW | |
| 305 | + iso_numeric: '533' | |
| 306 | + slug: aruba | |
| 307 | + short_name: Aruba | |
| 308 | + official_name: Aruba | |
| 309 | + capital: Oranjestad | |
| 310 | + continent: Americas | |
| 311 | + region_wb: LCN | |
| 312 | + region_wb_name: Latin America & Caribbean | |
| 313 | + subregion: Caribbean | |
| 314 | + income_group: HIC | |
| 315 | + income_group_name: High income | |
| 316 | + currency_code: AWG | |
| 317 | + currency_name: Aruban florin | |
| 318 | + area_km2: 180 | |
| 319 | + latitude: 12.5167 | |
| 320 | + longitude: -70.0167 | |
| 321 | + flag_emoji: 🇦🇼 | |
| 322 | + un_member: false | |
| 323 | + independent: false | |
| 324 | + landlocked: false | |
| 325 | + borders: [] | |
| 326 | + languages: | |
| 327 | + - Dutch | |
| 328 | + - Papiamento | |
| 329 | + demonym: Aruban | |
| 330 | + status: territory | |
| 331 | + kind: country | |
| 332 | +- id: AUS | |
| 333 | + iso2: AU | |
| 334 | + iso3: AUS | |
| 335 | + iso_numeric: '036' | |
| 336 | + slug: australia | |
| 337 | + short_name: Australia | |
| 338 | + official_name: Commonwealth of Australia | |
| 339 | + capital: Canberra | |
| 340 | + continent: Oceania | |
| 341 | + region_wb: EAS | |
| 342 | + region_wb_name: East Asia & Pacific | |
| 343 | + subregion: Australia and New Zealand | |
| 344 | + income_group: HIC | |
| 345 | + income_group_name: High income | |
| 346 | + currency_code: AUD | |
| 347 | + currency_name: Australian dollar | |
| 348 | + area_km2: 7692024 | |
| 349 | + latitude: -35.282 | |
| 350 | + longitude: 149.129 | |
| 351 | + flag_emoji: 🇦🇺 | |
| 352 | + un_member: true | |
| 353 | + independent: true | |
| 354 | + landlocked: false | |
| 355 | + borders: [] | |
| 356 | + languages: | |
| 357 | + - English | |
| 358 | + demonym: Australian | |
| 359 | + status: country | |
| 360 | + kind: country | |
| 361 | +- id: AUT | |
| 362 | + iso2: AT | |
| 363 | + iso3: AUT | |
| 364 | + iso_numeric: '040' | |
| 365 | + slug: austria | |
| 366 | + short_name: Austria | |
| 367 | + official_name: Republic of Austria | |
| 368 | + capital: Vienna | |
| 369 | + continent: Europe | |
| 370 | + region_wb: ECS | |
| 371 | + region_wb_name: Europe & Central Asia | |
| 372 | + subregion: Central Europe | |
| 373 | + income_group: HIC | |
| 374 | + income_group_name: High income | |
| 375 | + currency_code: EUR | |
| 376 | + currency_name: Euro | |
| 377 | + area_km2: 83871 | |
| 378 | + latitude: 48.2201 | |
| 379 | + longitude: 16.3798 | |
| 380 | + flag_emoji: 🇦🇹 | |
| 381 | + un_member: true | |
| 382 | + independent: true | |
| 383 | + landlocked: true | |
| 384 | + borders: | |
| 385 | + - CZE | |
| 386 | + - DEU | |
| 387 | + - HUN | |
| 388 | + - ITA | |
| 389 | + - LIE | |
| 390 | + - SVK | |
| 391 | + - SVN | |
| 392 | + - CHE | |
| 393 | + languages: | |
| 394 | + - Austro-Bavarian German | |
| 395 | + demonym: Austrian | |
| 396 | + status: country | |
| 397 | + kind: country | |
| 398 | +- id: AZE | |
| 399 | + iso2: AZ | |
| 400 | + iso3: AZE | |
| 401 | + iso_numeric: '031' | |
| 402 | + slug: azerbaijan | |
| 403 | + short_name: Azerbaijan | |
| 404 | + official_name: Republic of Azerbaijan | |
| 405 | + capital: Baku | |
| 406 | + continent: Asia | |
| 407 | + region_wb: ECS | |
| 408 | + region_wb_name: Europe & Central Asia | |
| 409 | + subregion: Western Asia | |
| 410 | + income_group: UMC | |
| 411 | + income_group_name: Upper middle income | |
| 412 | + currency_code: AZN | |
| 413 | + currency_name: Azerbaijani manat | |
| 414 | + area_km2: 86600 | |
| 415 | + latitude: 40.3834 | |
| 416 | + longitude: 49.8932 | |
| 417 | + flag_emoji: 🇦🇿 | |
| 418 | + un_member: true | |
| 419 | + independent: true | |
| 420 | + landlocked: true | |
| 421 | + borders: | |
| 422 | + - ARM | |
| 423 | + - GEO | |
| 424 | + - IRN | |
| 425 | + - RUS | |
| 426 | + - TUR | |
| 427 | + languages: | |
| 428 | + - Azerbaijani | |
| 429 | + - Russian | |
| 430 | + demonym: Azerbaijani | |
| 431 | + status: country | |
| 432 | + kind: country | |
| 433 | +- id: BHS | |
| 434 | + iso2: BS | |
| 435 | + iso3: BHS | |
| 436 | + iso_numeric: '044' | |
| 437 | + slug: bahamas | |
| 438 | + short_name: Bahamas | |
| 439 | + official_name: Commonwealth of the Bahamas | |
| 440 | + capital: Nassau | |
| 441 | + continent: Americas | |
| 442 | + region_wb: LCN | |
| 443 | + region_wb_name: Latin America & Caribbean | |
| 444 | + subregion: Caribbean | |
| 445 | + income_group: HIC | |
| 446 | + income_group_name: High income | |
| 447 | + currency_code: BSD | |
| 448 | + currency_name: Bahamian dollar | |
| 449 | + area_km2: 13943 | |
| 450 | + latitude: 25.0661 | |
| 451 | + longitude: -77.339 | |
| 452 | + flag_emoji: 🇧🇸 | |
| 453 | + un_member: true | |
| 454 | + independent: true | |
| 455 | + landlocked: false | |
| 456 | + borders: [] | |
| 457 | + languages: | |
| 458 | + - English | |
| 459 | + demonym: Bahamian | |
| 460 | + status: country | |
| 461 | + kind: country | |
| 462 | +- id: BHR | |
| 463 | + iso2: BH | |
| 464 | + iso3: BHR | |
| 465 | + iso_numeric: 048 | |
| 466 | + slug: bahrain | |
| 467 | + short_name: Bahrain | |
| 468 | + official_name: Kingdom of Bahrain | |
| 469 | + capital: Manama | |
| 470 | + continent: Asia | |
| 471 | + region_wb: MEA | |
| 472 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 473 | + subregion: Western Asia | |
| 474 | + income_group: HIC | |
| 475 | + income_group_name: High income | |
| 476 | + currency_code: BHD | |
| 477 | + currency_name: Bahraini dinar | |
| 478 | + area_km2: 765 | |
| 479 | + latitude: 26.1921 | |
| 480 | + longitude: 50.5354 | |
| 481 | + flag_emoji: 🇧🇭 | |
| 482 | + un_member: true | |
| 483 | + independent: true | |
| 484 | + landlocked: false | |
| 485 | + borders: [] | |
| 486 | + languages: | |
| 487 | + - Arabic | |
| 488 | + demonym: Bahraini | |
| 489 | + status: country | |
| 490 | + kind: country | |
| 491 | +- id: BGD | |
| 492 | + iso2: BD | |
| 493 | + iso3: BGD | |
| 494 | + iso_numeric: '050' | |
| 495 | + slug: bangladesh | |
| 496 | + short_name: Bangladesh | |
| 497 | + official_name: People's Republic of Bangladesh | |
| 498 | + capital: Dhaka | |
| 499 | + continent: Asia | |
| 500 | + region_wb: SAS | |
| 501 | + region_wb_name: South Asia | |
| 502 | + subregion: Southern Asia | |
| 503 | + income_group: LMC | |
| 504 | + income_group_name: Lower middle income | |
| 505 | + currency_code: BDT | |
| 506 | + currency_name: Bangladeshi taka | |
| 507 | + area_km2: 147570 | |
| 508 | + latitude: 23.7055 | |
| 509 | + longitude: 90.4113 | |
| 510 | + flag_emoji: 🇧🇩 | |
| 511 | + un_member: true | |
| 512 | + independent: true | |
| 513 | + landlocked: false | |
| 514 | + borders: | |
| 515 | + - MMR | |
| 516 | + - IND | |
| 517 | + languages: | |
| 518 | + - Bengali | |
| 519 | + demonym: Bangladeshi | |
| 520 | + status: country | |
| 521 | + kind: country | |
| 522 | +- id: BRB | |
| 523 | + iso2: BB | |
| 524 | + iso3: BRB | |
| 525 | + iso_numeric: '052' | |
| 526 | + slug: barbados | |
| 527 | + short_name: Barbados | |
| 528 | + official_name: Barbados | |
| 529 | + capital: Bridgetown | |
| 530 | + continent: Americas | |
| 531 | + region_wb: LCN | |
| 532 | + region_wb_name: Latin America & Caribbean | |
| 533 | + subregion: Caribbean | |
| 534 | + income_group: HIC | |
| 535 | + income_group_name: High income | |
| 536 | + currency_code: BBD | |
| 537 | + currency_name: Barbadian dollar | |
| 538 | + area_km2: 430 | |
| 539 | + latitude: 13.0935 | |
| 540 | + longitude: -59.6105 | |
| 541 | + flag_emoji: 🇧🇧 | |
| 542 | + un_member: true | |
| 543 | + independent: true | |
| 544 | + landlocked: false | |
| 545 | + borders: [] | |
| 546 | + languages: | |
| 547 | + - English | |
| 548 | + demonym: Barbadian | |
| 549 | + status: country | |
| 550 | + kind: country | |
| 551 | +- id: BLR | |
| 552 | + iso2: BY | |
| 553 | + iso3: BLR | |
| 554 | + iso_numeric: '112' | |
| 555 | + slug: belarus | |
| 556 | + short_name: Belarus | |
| 557 | + official_name: Republic of Belarus | |
| 558 | + capital: Minsk | |
| 559 | + continent: Europe | |
| 560 | + region_wb: ECS | |
| 561 | + region_wb_name: Europe & Central Asia | |
| 562 | + subregion: Eastern Europe | |
| 563 | + income_group: UMC | |
| 564 | + income_group_name: Upper middle income | |
| 565 | + currency_code: BYN | |
| 566 | + currency_name: Belarusian ruble | |
| 567 | + area_km2: 207600 | |
| 568 | + latitude: 53.9678 | |
| 569 | + longitude: 27.5766 | |
| 570 | + flag_emoji: 🇧🇾 | |
| 571 | + un_member: true | |
| 572 | + independent: true | |
| 573 | + landlocked: true | |
| 574 | + borders: | |
| 575 | + - LVA | |
| 576 | + - LTU | |
| 577 | + - POL | |
| 578 | + - RUS | |
| 579 | + - UKR | |
| 580 | + languages: | |
| 581 | + - Belarusian | |
| 582 | + - Russian | |
| 583 | + demonym: Belarusian | |
| 584 | + status: country | |
| 585 | + kind: country | |
| 586 | +- id: BEL | |
| 587 | + iso2: BE | |
| 588 | + iso3: BEL | |
| 589 | + iso_numeric: '056' | |
| 590 | + slug: belgium | |
| 591 | + short_name: Belgium | |
| 592 | + official_name: Kingdom of Belgium | |
| 593 | + capital: Brussels | |
| 594 | + continent: Europe | |
| 595 | + region_wb: ECS | |
| 596 | + region_wb_name: Europe & Central Asia | |
| 597 | + subregion: Western Europe | |
| 598 | + income_group: HIC | |
| 599 | + income_group_name: High income | |
| 600 | + currency_code: EUR | |
| 601 | + currency_name: Euro | |
| 602 | + area_km2: 30528 | |
| 603 | + latitude: 50.8371 | |
| 604 | + longitude: 4.36761 | |
| 605 | + flag_emoji: 🇧🇪 | |
| 606 | + un_member: true | |
| 607 | + independent: true | |
| 608 | + landlocked: false | |
| 609 | + borders: | |
| 610 | + - FRA | |
| 611 | + - DEU | |
| 612 | + - LUX | |
| 613 | + - NLD | |
| 614 | + languages: | |
| 615 | + - Dutch | |
| 616 | + - French | |
| 617 | + - German | |
| 618 | + demonym: Belgian | |
| 619 | + status: country | |
| 620 | + kind: country | |
| 621 | +- id: BLZ | |
| 622 | + iso2: BZ | |
| 623 | + iso3: BLZ | |
| 624 | + iso_numeric: 084 | |
| 625 | + slug: belize | |
| 626 | + short_name: Belize | |
| 627 | + official_name: Belize | |
| 628 | + capital: Belmopan | |
| 629 | + continent: Americas | |
| 630 | + region_wb: LCN | |
| 631 | + region_wb_name: Latin America & Caribbean | |
| 632 | + subregion: Central America | |
| 633 | + income_group: UMC | |
| 634 | + income_group_name: Upper middle income | |
| 635 | + currency_code: BZD | |
| 636 | + currency_name: Belize dollar | |
| 637 | + area_km2: 22966 | |
| 638 | + latitude: 17.2534 | |
| 639 | + longitude: -88.7713 | |
| 640 | + flag_emoji: 🇧🇿 | |
| 641 | + un_member: true | |
| 642 | + independent: true | |
| 643 | + landlocked: false | |
| 644 | + borders: | |
| 645 | + - GTM | |
| 646 | + - MEX | |
| 647 | + languages: | |
| 648 | + - Belizean Creole | |
| 649 | + - English | |
| 650 | + - Spanish | |
| 651 | + demonym: Belizean | |
| 652 | + status: country | |
| 653 | + kind: country | |
| 654 | +- id: BEN | |
| 655 | + iso2: BJ | |
| 656 | + iso3: BEN | |
| 657 | + iso_numeric: '204' | |
| 658 | + slug: benin | |
| 659 | + short_name: Benin | |
| 660 | + official_name: Republic of Benin | |
| 661 | + capital: Porto-Novo | |
| 662 | + continent: Africa | |
| 663 | + region_wb: SSF | |
| 664 | + region_wb_name: Sub-Saharan Africa | |
| 665 | + subregion: Western Africa | |
| 666 | + income_group: LMC | |
| 667 | + income_group_name: Lower middle income | |
| 668 | + currency_code: XOF | |
| 669 | + currency_name: West African CFA franc | |
| 670 | + area_km2: 112622 | |
| 671 | + latitude: 6.4779 | |
| 672 | + longitude: 2.6323 | |
| 673 | + flag_emoji: 🇧🇯 | |
| 674 | + un_member: true | |
| 675 | + independent: true | |
| 676 | + landlocked: false | |
| 677 | + borders: | |
| 678 | + - BFA | |
| 679 | + - NER | |
| 680 | + - NGA | |
| 681 | + - TGO | |
| 682 | + languages: | |
| 683 | + - French | |
| 684 | + demonym: Beninese | |
| 685 | + status: country | |
| 686 | + kind: country | |
| 687 | +- id: BMU | |
| 688 | + iso2: BM | |
| 689 | + iso3: BMU | |
| 690 | + iso_numeric: '060' | |
| 691 | + slug: bermuda | |
| 692 | + short_name: Bermuda | |
| 693 | + official_name: Bermuda | |
| 694 | + capital: Hamilton | |
| 695 | + continent: Americas | |
| 696 | + region_wb: NAC | |
| 697 | + region_wb_name: North America | |
| 698 | + subregion: North America | |
| 699 | + income_group: HIC | |
| 700 | + income_group_name: High income | |
| 701 | + currency_code: BMD | |
| 702 | + currency_name: Bermudian dollar | |
| 703 | + area_km2: 54 | |
| 704 | + latitude: 32.3293 | |
| 705 | + longitude: -64.706 | |
| 706 | + flag_emoji: 🇧🇲 | |
| 707 | + un_member: false | |
| 708 | + independent: false | |
| 709 | + landlocked: false | |
| 710 | + borders: [] | |
| 711 | + languages: | |
| 712 | + - English | |
| 713 | + demonym: Bermudian | |
| 714 | + status: territory | |
| 715 | + kind: country | |
| 716 | +- id: BTN | |
| 717 | + iso2: BT | |
| 718 | + iso3: BTN | |
| 719 | + iso_numeric: '064' | |
| 720 | + slug: bhutan | |
| 721 | + short_name: Bhutan | |
| 722 | + official_name: Kingdom of Bhutan | |
| 723 | + capital: Thimphu | |
| 724 | + continent: Asia | |
| 725 | + region_wb: SAS | |
| 726 | + region_wb_name: South Asia | |
| 727 | + subregion: Southern Asia | |
| 728 | + income_group: LMC | |
| 729 | + income_group_name: Lower middle income | |
| 730 | + currency_code: BTN | |
| 731 | + currency_name: Bhutanese ngultrum | |
| 732 | + area_km2: 38394 | |
| 733 | + latitude: 27.5768 | |
| 734 | + longitude: 89.6177 | |
| 735 | + flag_emoji: 🇧🇹 | |
| 736 | + un_member: true | |
| 737 | + independent: true | |
| 738 | + landlocked: true | |
| 739 | + borders: | |
| 740 | + - CHN | |
| 741 | + - IND | |
| 742 | + languages: | |
| 743 | + - Dzongkha | |
| 744 | + demonym: Bhutanese | |
| 745 | + status: country | |
| 746 | + kind: country | |
| 747 | +- id: BOL | |
| 748 | + iso2: BO | |
| 749 | + iso3: BOL | |
| 750 | + iso_numeric: 068 | |
| 751 | + slug: bolivia | |
| 752 | + short_name: Bolivia | |
| 753 | + official_name: Plurinational State of Bolivia | |
| 754 | + capital: Sucre | |
| 755 | + continent: Americas | |
| 756 | + region_wb: LCN | |
| 757 | + region_wb_name: Latin America & Caribbean | |
| 758 | + subregion: South America | |
| 759 | + income_group: LMC | |
| 760 | + income_group_name: Lower middle income | |
| 761 | + currency_code: BOB | |
| 762 | + currency_name: Bolivian boliviano | |
| 763 | + area_km2: 1098581 | |
| 764 | + latitude: -13.9908 | |
| 765 | + longitude: -66.1936 | |
| 766 | + flag_emoji: 🇧🇴 | |
| 767 | + un_member: true | |
| 768 | + independent: true | |
| 769 | + landlocked: true | |
| 770 | + borders: | |
| 771 | + - ARG | |
| 772 | + - BRA | |
| 773 | + - CHL | |
| 774 | + - PRY | |
| 775 | + - PER | |
| 776 | + languages: | |
| 777 | + - Aymara | |
| 778 | + - Guaraní | |
| 779 | + - Quechua | |
| 780 | + - Spanish | |
| 781 | + demonym: Bolivian | |
| 782 | + status: country | |
| 783 | + kind: country | |
| 784 | +- id: BIH | |
| 785 | + iso2: BA | |
| 786 | + iso3: BIH | |
| 787 | + iso_numeric: '070' | |
| 788 | + slug: bosnia-and-herzegovina | |
| 789 | + short_name: Bosnia and Herzegovina | |
| 790 | + official_name: Bosnia and Herzegovina | |
| 791 | + capital: Sarajevo | |
| 792 | + continent: Europe | |
| 793 | + region_wb: ECS | |
| 794 | + region_wb_name: Europe & Central Asia | |
| 795 | + subregion: Southeast Europe | |
| 796 | + income_group: UMC | |
| 797 | + income_group_name: Upper middle income | |
| 798 | + currency_code: BAM | |
| 799 | + currency_name: Bosnia and Herzegovina convertible mark | |
| 800 | + area_km2: 51209 | |
| 801 | + latitude: 43.8607 | |
| 802 | + longitude: 18.4214 | |
| 803 | + flag_emoji: 🇧🇦 | |
| 804 | + un_member: true | |
| 805 | + independent: true | |
| 806 | + landlocked: false | |
| 807 | + borders: | |
| 808 | + - HRV | |
| 809 | + - MNE | |
| 810 | + - SRB | |
| 811 | + languages: | |
| 812 | + - Bosnian | |
| 813 | + - Croatian | |
| 814 | + - Serbian | |
| 815 | + demonym: Bosnian, Herzegovinian | |
| 816 | + status: country | |
| 817 | + kind: country | |
| 818 | +- id: BWA | |
| 819 | + iso2: BW | |
| 820 | + iso3: BWA | |
| 821 | + iso_numeric: '072' | |
| 822 | + slug: botswana | |
| 823 | + short_name: Botswana | |
| 824 | + official_name: Republic of Botswana | |
| 825 | + capital: Gaborone | |
| 826 | + continent: Africa | |
| 827 | + region_wb: SSF | |
| 828 | + region_wb_name: Sub-Saharan Africa | |
| 829 | + subregion: Southern Africa | |
| 830 | + income_group: UMC | |
| 831 | + income_group_name: Upper middle income | |
| 832 | + currency_code: BWP | |
| 833 | + currency_name: Botswana pula | |
| 834 | + area_km2: 582000 | |
| 835 | + latitude: -24.6544 | |
| 836 | + longitude: 25.9201 | |
| 837 | + flag_emoji: 🇧🇼 | |
| 838 | + un_member: true | |
| 839 | + independent: true | |
| 840 | + landlocked: true | |
| 841 | + borders: | |
| 842 | + - NAM | |
| 843 | + - ZAF | |
| 844 | + - ZMB | |
| 845 | + - ZWE | |
| 846 | + languages: | |
| 847 | + - English | |
| 848 | + - Tswana | |
| 849 | + demonym: Motswana | |
| 850 | + status: country | |
| 851 | + kind: country | |
| 852 | +- id: BRA | |
| 853 | + iso2: BR | |
| 854 | + iso3: BRA | |
| 855 | + iso_numeric: '076' | |
| 856 | + slug: brazil | |
| 857 | + short_name: Brazil | |
| 858 | + official_name: Federative Republic of Brazil | |
| 859 | + capital: Brasília | |
| 860 | + continent: Americas | |
| 861 | + region_wb: LCN | |
| 862 | + region_wb_name: Latin America & Caribbean | |
| 863 | + subregion: South America | |
| 864 | + income_group: UMC | |
| 865 | + income_group_name: Upper middle income | |
| 866 | + currency_code: BRL | |
| 867 | + currency_name: Brazilian real | |
| 868 | + area_km2: 8515767 | |
| 869 | + latitude: -15.7801 | |
| 870 | + longitude: -47.9292 | |
| 871 | + flag_emoji: 🇧🇷 | |
| 872 | + un_member: true | |
| 873 | + independent: true | |
| 874 | + landlocked: false | |
| 875 | + borders: | |
| 876 | + - ARG | |
| 877 | + - BOL | |
| 878 | + - COL | |
| 879 | + - GUF | |
| 880 | + - GUY | |
| 881 | + - PRY | |
| 882 | + - PER | |
| 883 | + - SUR | |
| 884 | + - URY | |
| 885 | + - VEN | |
| 886 | + languages: | |
| 887 | + - Portuguese | |
| 888 | + demonym: Brazilian | |
| 889 | + status: country | |
| 890 | + kind: country | |
| 891 | +- id: VGB | |
| 892 | + iso2: VG | |
| 893 | + iso3: VGB | |
| 894 | + iso_numeric: 092 | |
| 895 | + slug: british-virgin-islands | |
| 896 | + short_name: British Virgin Islands | |
| 897 | + official_name: Virgin Islands | |
| 898 | + capital: Road Town | |
| 899 | + continent: Americas | |
| 900 | + region_wb: LCN | |
| 901 | + region_wb_name: Latin America & Caribbean | |
| 902 | + subregion: Caribbean | |
| 903 | + income_group: HIC | |
| 904 | + income_group_name: High income | |
| 905 | + currency_code: USD | |
| 906 | + currency_name: United States dollar | |
| 907 | + area_km2: 151 | |
| 908 | + latitude: 18.431389 | |
| 909 | + longitude: -64.623056 | |
| 910 | + flag_emoji: 🇻🇬 | |
| 911 | + un_member: false | |
| 912 | + independent: false | |
| 913 | + landlocked: false | |
| 914 | + borders: [] | |
| 915 | + languages: | |
| 916 | + - English | |
| 917 | + demonym: Virgin Islander | |
| 918 | + status: territory | |
| 919 | + kind: country | |
| 920 | +- id: BRN | |
| 921 | + iso2: BN | |
| 922 | + iso3: BRN | |
| 923 | + iso_numeric: 096 | |
| 924 | + slug: brunei | |
| 925 | + short_name: Brunei | |
| 926 | + official_name: Nation of Brunei, Abode of Peace | |
| 927 | + capital: Bandar Seri Begawan | |
| 928 | + continent: Asia | |
| 929 | + region_wb: EAS | |
| 930 | + region_wb_name: East Asia & Pacific | |
| 931 | + subregion: South-Eastern Asia | |
| 932 | + income_group: HIC | |
| 933 | + income_group_name: High income | |
| 934 | + currency_code: BND | |
| 935 | + currency_name: Brunei dollar | |
| 936 | + area_km2: 5765 | |
| 937 | + latitude: 4.94199 | |
| 938 | + longitude: 114.946 | |
| 939 | + flag_emoji: 🇧🇳 | |
| 940 | + un_member: true | |
| 941 | + independent: true | |
| 942 | + landlocked: false | |
| 943 | + borders: | |
| 944 | + - MYS | |
| 945 | + languages: | |
| 946 | + - Malay | |
| 947 | + demonym: Bruneian | |
| 948 | + status: country | |
| 949 | + kind: country | |
| 950 | +- id: BGR | |
| 951 | + iso2: BG | |
| 952 | + iso3: BGR | |
| 953 | + iso_numeric: '100' | |
| 954 | + slug: bulgaria | |
| 955 | + short_name: Bulgaria | |
| 956 | + official_name: Republic of Bulgaria | |
| 957 | + capital: Sofia | |
| 958 | + continent: Europe | |
| 959 | + region_wb: ECS | |
| 960 | + region_wb_name: Europe & Central Asia | |
| 961 | + subregion: Southeast Europe | |
| 962 | + income_group: HIC | |
| 963 | + income_group_name: High income | |
| 964 | + currency_code: EUR | |
| 965 | + currency_name: Euro | |
| 966 | + area_km2: 110879 | |
| 967 | + latitude: 42.7105 | |
| 968 | + longitude: 23.3238 | |
| 969 | + flag_emoji: 🇧🇬 | |
| 970 | + un_member: true | |
| 971 | + independent: true | |
| 972 | + landlocked: false | |
| 973 | + borders: | |
| 974 | + - GRC | |
| 975 | + - MKD | |
| 976 | + - ROU | |
| 977 | + - SRB | |
| 978 | + - TUR | |
| 979 | + languages: | |
| 980 | + - Bulgarian | |
| 981 | + demonym: Bulgarian | |
| 982 | + status: country | |
| 983 | + kind: country | |
| 984 | +- id: BFA | |
| 985 | + iso2: BF | |
| 986 | + iso3: BFA | |
| 987 | + iso_numeric: '854' | |
| 988 | + slug: burkina-faso | |
| 989 | + short_name: Burkina Faso | |
| 990 | + official_name: Burkina Faso | |
| 991 | + capital: Ouagadougou | |
| 992 | + continent: Africa | |
| 993 | + region_wb: SSF | |
| 994 | + region_wb_name: Sub-Saharan Africa | |
| 995 | + subregion: Western Africa | |
| 996 | + income_group: LIC | |
| 997 | + income_group_name: Low income | |
| 998 | + currency_code: XOF | |
| 999 | + currency_name: West African CFA franc | |
| 1000 | + area_km2: 272967 | |
| 1001 | + latitude: 12.3605 | |
| 1002 | + longitude: -1.53395 | |
| 1003 | + flag_emoji: 🇧🇫 | |
| 1004 | + un_member: true | |
| 1005 | + independent: true | |
| 1006 | + landlocked: true | |
| 1007 | + borders: | |
| 1008 | + - BEN | |
| 1009 | + - CIV | |
| 1010 | + - GHA | |
| 1011 | + - MLI | |
| 1012 | + - NER | |
| 1013 | + - TGO | |
| 1014 | + languages: | |
| 1015 | + - French | |
| 1016 | + demonym: Burkinabe | |
| 1017 | + status: country | |
| 1018 | + kind: country | |
| 1019 | +- id: BDI | |
| 1020 | + iso2: BI | |
| 1021 | + iso3: BDI | |
| 1022 | + iso_numeric: '108' | |
| 1023 | + slug: burundi | |
| 1024 | + short_name: Burundi | |
| 1025 | + official_name: Republic of Burundi | |
| 1026 | + capital: Gitega | |
| 1027 | + continent: Africa | |
| 1028 | + region_wb: SSF | |
| 1029 | + region_wb_name: Sub-Saharan Africa | |
| 1030 | + subregion: Eastern Africa | |
| 1031 | + income_group: LIC | |
| 1032 | + income_group_name: Low income | |
| 1033 | + currency_code: BIF | |
| 1034 | + currency_name: Burundian franc | |
| 1035 | + area_km2: 27834 | |
| 1036 | + latitude: -3.3784 | |
| 1037 | + longitude: 29.3639 | |
| 1038 | + flag_emoji: 🇧🇮 | |
| 1039 | + un_member: true | |
| 1040 | + independent: true | |
| 1041 | + landlocked: true | |
| 1042 | + borders: | |
| 1043 | + - COD | |
| 1044 | + - RWA | |
| 1045 | + - TZA | |
| 1046 | + languages: | |
| 1047 | + - French | |
| 1048 | + - Kirundi | |
| 1049 | + demonym: Burundian | |
| 1050 | + status: country | |
| 1051 | + kind: country | |
| 1052 | +- id: CPV | |
| 1053 | + iso2: CV | |
| 1054 | + iso3: CPV | |
| 1055 | + iso_numeric: '132' | |
| 1056 | + slug: cabo-verde | |
| 1057 | + short_name: Cabo Verde | |
| 1058 | + official_name: Republic of Cabo Verde | |
| 1059 | + capital: Praia | |
| 1060 | + continent: Africa | |
| 1061 | + region_wb: SSF | |
| 1062 | + region_wb_name: Sub-Saharan Africa | |
| 1063 | + subregion: Western Africa | |
| 1064 | + income_group: UMC | |
| 1065 | + income_group_name: Upper middle income | |
| 1066 | + currency_code: CVE | |
| 1067 | + currency_name: Cape Verdean escudo | |
| 1068 | + area_km2: 4033 | |
| 1069 | + latitude: 14.9218 | |
| 1070 | + longitude: -23.5087 | |
| 1071 | + flag_emoji: 🇨🇻 | |
| 1072 | + un_member: true | |
| 1073 | + independent: true | |
| 1074 | + landlocked: false | |
| 1075 | + borders: [] | |
| 1076 | + languages: | |
| 1077 | + - Portuguese | |
| 1078 | + demonym: Cape Verdian | |
| 1079 | + status: country | |
| 1080 | + kind: country | |
| 1081 | +- id: KHM | |
| 1082 | + iso2: KH | |
| 1083 | + iso3: KHM | |
| 1084 | + iso_numeric: '116' | |
| 1085 | + slug: cambodia | |
| 1086 | + short_name: Cambodia | |
| 1087 | + official_name: Kingdom of Cambodia | |
| 1088 | + capital: Phnom Penh | |
| 1089 | + continent: Asia | |
| 1090 | + region_wb: EAS | |
| 1091 | + region_wb_name: East Asia & Pacific | |
| 1092 | + subregion: South-Eastern Asia | |
| 1093 | + income_group: LMC | |
| 1094 | + income_group_name: Lower middle income | |
| 1095 | + currency_code: KHR | |
| 1096 | + currency_name: Cambodian riel | |
| 1097 | + area_km2: 181035 | |
| 1098 | + latitude: 11.5556 | |
| 1099 | + longitude: 104.874 | |
| 1100 | + flag_emoji: 🇰🇭 | |
| 1101 | + un_member: true | |
| 1102 | + independent: true | |
| 1103 | + landlocked: false | |
| 1104 | + borders: | |
| 1105 | + - LAO | |
| 1106 | + - THA | |
| 1107 | + - VNM | |
| 1108 | + languages: | |
| 1109 | + - Khmer | |
| 1110 | + demonym: Cambodian | |
| 1111 | + status: country | |
| 1112 | + kind: country | |
| 1113 | +- id: CMR | |
| 1114 | + iso2: CM | |
| 1115 | + iso3: CMR | |
| 1116 | + iso_numeric: '120' | |
| 1117 | + slug: cameroon | |
| 1118 | + short_name: Cameroon | |
| 1119 | + official_name: Republic of Cameroon | |
| 1120 | + capital: Yaoundé | |
| 1121 | + continent: Africa | |
| 1122 | + region_wb: SSF | |
| 1123 | + region_wb_name: Sub-Saharan Africa | |
| 1124 | + subregion: Middle Africa | |
| 1125 | + income_group: LMC | |
| 1126 | + income_group_name: Lower middle income | |
| 1127 | + currency_code: XAF | |
| 1128 | + currency_name: Central African CFA franc | |
| 1129 | + area_km2: 475442 | |
| 1130 | + latitude: 3.8721 | |
| 1131 | + longitude: 11.5174 | |
| 1132 | + flag_emoji: 🇨🇲 | |
| 1133 | + un_member: true | |
| 1134 | + independent: true | |
| 1135 | + landlocked: false | |
| 1136 | + borders: | |
| 1137 | + - CAF | |
| 1138 | + - TCD | |
| 1139 | + - COG | |
| 1140 | + - GNQ | |
| 1141 | + - GAB | |
| 1142 | + - NGA | |
| 1143 | + languages: | |
| 1144 | + - English | |
| 1145 | + - French | |
| 1146 | + demonym: Cameroonian | |
| 1147 | + status: country | |
| 1148 | + kind: country | |
| 1149 | +- id: CAN | |
| 1150 | + iso2: CA | |
| 1151 | + iso3: CAN | |
| 1152 | + iso_numeric: '124' | |
| 1153 | + slug: canada | |
| 1154 | + short_name: Canada | |
| 1155 | + official_name: Canada | |
| 1156 | + capital: Ottawa | |
| 1157 | + continent: Americas | |
| 1158 | + region_wb: NAC | |
| 1159 | + region_wb_name: North America | |
| 1160 | + subregion: North America | |
| 1161 | + income_group: HIC | |
| 1162 | + income_group_name: High income | |
| 1163 | + currency_code: CAD | |
| 1164 | + currency_name: Canadian dollar | |
| 1165 | + area_km2: 9984670 | |
| 1166 | + latitude: 45.4215 | |
| 1167 | + longitude: -75.6919 | |
| 1168 | + flag_emoji: 🇨🇦 | |
| 1169 | + un_member: true | |
| 1170 | + independent: true | |
| 1171 | + landlocked: false | |
| 1172 | + borders: | |
| 1173 | + - USA | |
| 1174 | + languages: | |
| 1175 | + - English | |
| 1176 | + - French | |
| 1177 | + demonym: Canadian | |
| 1178 | + status: country | |
| 1179 | + kind: country | |
| 1180 | +- id: CYM | |
| 1181 | + iso2: KY | |
| 1182 | + iso3: CYM | |
| 1183 | + iso_numeric: '136' | |
| 1184 | + slug: cayman-islands | |
| 1185 | + short_name: Cayman Islands | |
| 1186 | + official_name: Cayman Islands | |
| 1187 | + capital: George Town | |
| 1188 | + continent: Americas | |
| 1189 | + region_wb: LCN | |
| 1190 | + region_wb_name: Latin America & Caribbean | |
| 1191 | + subregion: Caribbean | |
| 1192 | + income_group: HIC | |
| 1193 | + income_group_name: High income | |
| 1194 | + currency_code: KYD | |
| 1195 | + currency_name: Cayman Islands dollar | |
| 1196 | + area_km2: 264 | |
| 1197 | + latitude: 19.3022 | |
| 1198 | + longitude: -81.3857 | |
| 1199 | + flag_emoji: 🇰🇾 | |
| 1200 | + un_member: false | |
| 1201 | + independent: false | |
| 1202 | + landlocked: false | |
| 1203 | + borders: [] | |
| 1204 | + languages: | |
| 1205 | + - English | |
| 1206 | + demonym: Caymanian | |
| 1207 | + status: territory | |
| 1208 | + kind: country | |
| 1209 | +- id: CAF | |
| 1210 | + iso2: CF | |
| 1211 | + iso3: CAF | |
| 1212 | + iso_numeric: '140' | |
| 1213 | + slug: central-african-republic | |
| 1214 | + short_name: Central African Republic | |
| 1215 | + official_name: Central African Republic | |
| 1216 | + capital: Bangui | |
| 1217 | + continent: Africa | |
| 1218 | + region_wb: SSF | |
| 1219 | + region_wb_name: Sub-Saharan Africa | |
| 1220 | + subregion: Middle Africa | |
| 1221 | + income_group: LIC | |
| 1222 | + income_group_name: Low income | |
| 1223 | + currency_code: XAF | |
| 1224 | + currency_name: Central African CFA franc | |
| 1225 | + area_km2: 622984 | |
| 1226 | + latitude: 5.63056 | |
| 1227 | + longitude: 21.6407 | |
| 1228 | + flag_emoji: 🇨🇫 | |
| 1229 | + un_member: true | |
| 1230 | + independent: true | |
| 1231 | + landlocked: true | |
| 1232 | + borders: | |
| 1233 | + - CMR | |
| 1234 | + - TCD | |
| 1235 | + - COD | |
| 1236 | + - COG | |
| 1237 | + - SSD | |
| 1238 | + - SDN | |
| 1239 | + languages: | |
| 1240 | + - French | |
| 1241 | + - Sango | |
| 1242 | + demonym: Central African | |
| 1243 | + status: country | |
| 1244 | + kind: country | |
| 1245 | +- id: TCD | |
| 1246 | + iso2: TD | |
| 1247 | + iso3: TCD | |
| 1248 | + iso_numeric: '148' | |
| 1249 | + slug: chad | |
| 1250 | + short_name: Chad | |
| 1251 | + official_name: Republic of Chad | |
| 1252 | + capital: N'Djamena | |
| 1253 | + continent: Africa | |
| 1254 | + region_wb: SSF | |
| 1255 | + region_wb_name: Sub-Saharan Africa | |
| 1256 | + subregion: Middle Africa | |
| 1257 | + income_group: LIC | |
| 1258 | + income_group_name: Low income | |
| 1259 | + currency_code: XAF | |
| 1260 | + currency_name: Central African CFA franc | |
| 1261 | + area_km2: 1284000 | |
| 1262 | + latitude: 12.1048 | |
| 1263 | + longitude: 15.0445 | |
| 1264 | + flag_emoji: 🇹🇩 | |
| 1265 | + un_member: true | |
| 1266 | + independent: true | |
| 1267 | + landlocked: true | |
| 1268 | + borders: | |
| 1269 | + - CMR | |
| 1270 | + - CAF | |
| 1271 | + - LBY | |
| 1272 | + - NER | |
| 1273 | + - NGA | |
| 1274 | + - SDN | |
| 1275 | + languages: | |
| 1276 | + - Arabic | |
| 1277 | + - French | |
| 1278 | + demonym: Chadian | |
| 1279 | + status: country | |
| 1280 | + kind: country | |
| 1281 | +- id: CHI | |
| 1282 | + iso2: JG | |
| 1283 | + iso3: CHI | |
| 1284 | + iso_numeric: null | |
| 1285 | + slug: channel-islands | |
| 1286 | + short_name: Channel Islands | |
| 1287 | + official_name: Channel Islands | |
| 1288 | + capital: null | |
| 1289 | + continent: null | |
| 1290 | + region_wb: ECS | |
| 1291 | + region_wb_name: Europe & Central Asia | |
| 1292 | + subregion: null | |
| 1293 | + income_group: HIC | |
| 1294 | + income_group_name: High income | |
| 1295 | + currency_code: null | |
| 1296 | + currency_name: null | |
| 1297 | + area_km2: null | |
| 1298 | + latitude: null | |
| 1299 | + longitude: null | |
| 1300 | + flag_emoji: 🇯🇬 | |
| 1301 | + un_member: false | |
| 1302 | + independent: false | |
| 1303 | + landlocked: false | |
| 1304 | + borders: [] | |
| 1305 | + languages: [] | |
| 1306 | + demonym: null | |
| 1307 | + status: territory | |
| 1308 | + kind: country | |
| 1309 | +- id: CHL | |
| 1310 | + iso2: CL | |
| 1311 | + iso3: CHL | |
| 1312 | + iso_numeric: '152' | |
| 1313 | + slug: chile | |
| 1314 | + short_name: Chile | |
| 1315 | + official_name: Republic of Chile | |
| 1316 | + capital: Santiago | |
| 1317 | + continent: Americas | |
| 1318 | + region_wb: LCN | |
| 1319 | + region_wb_name: Latin America & Caribbean | |
| 1320 | + subregion: South America | |
| 1321 | + income_group: HIC | |
| 1322 | + income_group_name: High income | |
| 1323 | + currency_code: CLP | |
| 1324 | + currency_name: Chilean peso | |
| 1325 | + area_km2: 756102 | |
| 1326 | + latitude: -33.475 | |
| 1327 | + longitude: -70.6475 | |
| 1328 | + flag_emoji: 🇨🇱 | |
| 1329 | + un_member: true | |
| 1330 | + independent: true | |
| 1331 | + landlocked: false | |
| 1332 | + borders: | |
| 1333 | + - ARG | |
| 1334 | + - BOL | |
| 1335 | + - PER | |
| 1336 | + languages: | |
| 1337 | + - Spanish | |
| 1338 | + demonym: Chilean | |
| 1339 | + status: country | |
| 1340 | + kind: country | |
| 1341 | +- id: CHN | |
| 1342 | + iso2: CN | |
| 1343 | + iso3: CHN | |
| 1344 | + iso_numeric: '156' | |
| 1345 | + slug: china | |
| 1346 | + short_name: China | |
| 1347 | + official_name: People's Republic of China | |
| 1348 | + capital: Beijing | |
| 1349 | + continent: Asia | |
| 1350 | + region_wb: EAS | |
| 1351 | + region_wb_name: East Asia & Pacific | |
| 1352 | + subregion: Eastern Asia | |
| 1353 | + income_group: UMC | |
| 1354 | + income_group_name: Upper middle income | |
| 1355 | + currency_code: CNY | |
| 1356 | + currency_name: Chinese yuan | |
| 1357 | + area_km2: 9706961 | |
| 1358 | + latitude: 40.0495 | |
| 1359 | + longitude: 116.286 | |
| 1360 | + flag_emoji: 🇨🇳 | |
| 1361 | + un_member: true | |
| 1362 | + independent: true | |
| 1363 | + landlocked: false | |
| 1364 | + borders: | |
| 1365 | + - AFG | |
| 1366 | + - BTN | |
| 1367 | + - MMR | |
| 1368 | + - HKG | |
| 1369 | + - IND | |
| 1370 | + - KAZ | |
| 1371 | + - NPL | |
| 1372 | + - PRK | |
| 1373 | + - KGZ | |
| 1374 | + - LAO | |
| 1375 | + - MAC | |
| 1376 | + - MNG | |
| 1377 | + - PAK | |
| 1378 | + - RUS | |
| 1379 | + - TJK | |
| 1380 | + - VNM | |
| 1381 | + languages: | |
| 1382 | + - Chinese | |
| 1383 | + demonym: Chinese | |
| 1384 | + status: country | |
| 1385 | + kind: country | |
| 1386 | +- id: COL | |
| 1387 | + iso2: CO | |
| 1388 | + iso3: COL | |
| 1389 | + iso_numeric: '170' | |
| 1390 | + slug: colombia | |
| 1391 | + short_name: Colombia | |
| 1392 | + official_name: Republic of Colombia | |
| 1393 | + capital: Bogotá | |
| 1394 | + continent: Americas | |
| 1395 | + region_wb: LCN | |
| 1396 | + region_wb_name: Latin America & Caribbean | |
| 1397 | + subregion: South America | |
| 1398 | + income_group: UMC | |
| 1399 | + income_group_name: Upper middle income | |
| 1400 | + currency_code: COP | |
| 1401 | + currency_name: Colombian peso | |
| 1402 | + area_km2: 1141748 | |
| 1403 | + latitude: 4.60987 | |
| 1404 | + longitude: -74.082 | |
| 1405 | + flag_emoji: 🇨🇴 | |
| 1406 | + un_member: true | |
| 1407 | + independent: true | |
| 1408 | + landlocked: false | |
| 1409 | + borders: | |
| 1410 | + - BRA | |
| 1411 | + - ECU | |
| 1412 | + - PAN | |
| 1413 | + - PER | |
| 1414 | + - VEN | |
| 1415 | + languages: | |
| 1416 | + - Spanish | |
| 1417 | + demonym: Colombian | |
| 1418 | + status: country | |
| 1419 | + kind: country | |
| 1420 | +- id: COM | |
| 1421 | + iso2: KM | |
| 1422 | + iso3: COM | |
| 1423 | + iso_numeric: '174' | |
| 1424 | + slug: comoros | |
| 1425 | + short_name: Comoros | |
| 1426 | + official_name: Union of the Comoros | |
| 1427 | + capital: Moroni | |
| 1428 | + continent: Africa | |
| 1429 | + region_wb: SSF | |
| 1430 | + region_wb_name: Sub-Saharan Africa | |
| 1431 | + subregion: Eastern Africa | |
| 1432 | + income_group: LMC | |
| 1433 | + income_group_name: Lower middle income | |
| 1434 | + currency_code: KMF | |
| 1435 | + currency_name: Comorian franc | |
| 1436 | + area_km2: 1862 | |
| 1437 | + latitude: -11.6986 | |
| 1438 | + longitude: 43.2418 | |
| 1439 | + flag_emoji: 🇰🇲 | |
| 1440 | + un_member: true | |
| 1441 | + independent: true | |
| 1442 | + landlocked: false | |
| 1443 | + borders: [] | |
| 1444 | + languages: | |
| 1445 | + - Arabic | |
| 1446 | + - Comorian | |
| 1447 | + - French | |
| 1448 | + demonym: Comoran | |
| 1449 | + status: country | |
| 1450 | + kind: country | |
| 1451 | +- id: CRI | |
| 1452 | + iso2: CR | |
| 1453 | + iso3: CRI | |
| 1454 | + iso_numeric: '188' | |
| 1455 | + slug: costa-rica | |
| 1456 | + short_name: Costa Rica | |
| 1457 | + official_name: Republic of Costa Rica | |
| 1458 | + capital: San José | |
| 1459 | + continent: Americas | |
| 1460 | + region_wb: LCN | |
| 1461 | + region_wb_name: Latin America & Caribbean | |
| 1462 | + subregion: Central America | |
| 1463 | + income_group: HIC | |
| 1464 | + income_group_name: High income | |
| 1465 | + currency_code: CRC | |
| 1466 | + currency_name: Costa Rican colón | |
| 1467 | + area_km2: 51100 | |
| 1468 | + latitude: 9.63701 | |
| 1469 | + longitude: -84.0089 | |
| 1470 | + flag_emoji: 🇨🇷 | |
| 1471 | + un_member: true | |
| 1472 | + independent: true | |
| 1473 | + landlocked: false | |
| 1474 | + borders: | |
| 1475 | + - NIC | |
| 1476 | + - PAN | |
| 1477 | + languages: | |
| 1478 | + - Spanish | |
| 1479 | + demonym: Costa Rican | |
| 1480 | + status: country | |
| 1481 | + kind: country | |
| 1482 | +- id: HRV | |
| 1483 | + iso2: HR | |
| 1484 | + iso3: HRV | |
| 1485 | + iso_numeric: '191' | |
| 1486 | + slug: croatia | |
| 1487 | + short_name: Croatia | |
| 1488 | + official_name: Republic of Croatia | |
| 1489 | + capital: Zagreb | |
| 1490 | + continent: Europe | |
| 1491 | + region_wb: ECS | |
| 1492 | + region_wb_name: Europe & Central Asia | |
| 1493 | + subregion: Southeast Europe | |
| 1494 | + income_group: HIC | |
| 1495 | + income_group_name: High income | |
| 1496 | + currency_code: EUR | |
| 1497 | + currency_name: Euro | |
| 1498 | + area_km2: 56594 | |
| 1499 | + latitude: 45.8069 | |
| 1500 | + longitude: 15.9614 | |
| 1501 | + flag_emoji: 🇭🇷 | |
| 1502 | + un_member: true | |
| 1503 | + independent: true | |
| 1504 | + landlocked: false | |
| 1505 | + borders: | |
| 1506 | + - BIH | |
| 1507 | + - HUN | |
| 1508 | + - MNE | |
| 1509 | + - SRB | |
| 1510 | + - SVN | |
| 1511 | + languages: | |
| 1512 | + - Croatian | |
| 1513 | + demonym: Croatian | |
| 1514 | + status: country | |
| 1515 | + kind: country | |
| 1516 | +- id: CUB | |
| 1517 | + iso2: CU | |
| 1518 | + iso3: CUB | |
| 1519 | + iso_numeric: '192' | |
| 1520 | + slug: cuba | |
| 1521 | + short_name: Cuba | |
| 1522 | + official_name: Republic of Cuba | |
| 1523 | + capital: Havana | |
| 1524 | + continent: Americas | |
| 1525 | + region_wb: LCN | |
| 1526 | + region_wb_name: Latin America & Caribbean | |
| 1527 | + subregion: Caribbean | |
| 1528 | + income_group: UMC | |
| 1529 | + income_group_name: Upper middle income | |
| 1530 | + currency_code: CUC | |
| 1531 | + currency_name: Cuban convertible peso | |
| 1532 | + area_km2: 109884 | |
| 1533 | + latitude: 23.1333 | |
| 1534 | + longitude: -82.3667 | |
| 1535 | + flag_emoji: 🇨🇺 | |
| 1536 | + un_member: true | |
| 1537 | + independent: true | |
| 1538 | + landlocked: false | |
| 1539 | + borders: [] | |
| 1540 | + languages: | |
| 1541 | + - Spanish | |
| 1542 | + demonym: Cuban | |
| 1543 | + status: country | |
| 1544 | + kind: country | |
| 1545 | +- id: CUW | |
| 1546 | + iso2: CW | |
| 1547 | + iso3: CUW | |
| 1548 | + iso_numeric: '531' | |
| 1549 | + slug: curacao | |
| 1550 | + short_name: Curaçao | |
| 1551 | + official_name: Country of Curaçao | |
| 1552 | + capital: Willemstad | |
| 1553 | + continent: Americas | |
| 1554 | + region_wb: LCN | |
| 1555 | + region_wb_name: Latin America & Caribbean | |
| 1556 | + subregion: Caribbean | |
| 1557 | + income_group: HIC | |
| 1558 | + income_group_name: High income | |
| 1559 | + currency_code: ANG | |
| 1560 | + currency_name: Netherlands Antillean guilder | |
| 1561 | + area_km2: 444 | |
| 1562 | + latitude: 12.116667 | |
| 1563 | + longitude: -68.933333 | |
| 1564 | + flag_emoji: 🇨🇼 | |
| 1565 | + un_member: false | |
| 1566 | + independent: false | |
| 1567 | + landlocked: false | |
| 1568 | + borders: [] | |
| 1569 | + languages: | |
| 1570 | + - Dutch | |
| 1571 | + - English | |
| 1572 | + - Papiamento | |
| 1573 | + demonym: Curaçaoan | |
| 1574 | + status: territory | |
| 1575 | + kind: country | |
| 1576 | +- id: CYP | |
| 1577 | + iso2: CY | |
| 1578 | + iso3: CYP | |
| 1579 | + iso_numeric: '196' | |
| 1580 | + slug: cyprus | |
| 1581 | + short_name: Cyprus | |
| 1582 | + official_name: Republic of Cyprus | |
| 1583 | + capital: Nicosia | |
| 1584 | + continent: Europe | |
| 1585 | + region_wb: ECS | |
| 1586 | + region_wb_name: Europe & Central Asia | |
| 1587 | + subregion: Southern Europe | |
| 1588 | + income_group: HIC | |
| 1589 | + income_group_name: High income | |
| 1590 | + currency_code: EUR | |
| 1591 | + currency_name: Euro | |
| 1592 | + area_km2: 9251 | |
| 1593 | + latitude: 35.1676 | |
| 1594 | + longitude: 33.3736 | |
| 1595 | + flag_emoji: 🇨🇾 | |
| 1596 | + un_member: true | |
| 1597 | + independent: true | |
| 1598 | + landlocked: false | |
| 1599 | + borders: [] | |
| 1600 | + languages: | |
| 1601 | + - Greek | |
| 1602 | + - Turkish | |
| 1603 | + demonym: Cypriot | |
| 1604 | + status: country | |
| 1605 | + kind: country | |
| 1606 | +- id: CZE | |
| 1607 | + iso2: CZ | |
| 1608 | + iso3: CZE | |
| 1609 | + iso_numeric: '203' | |
| 1610 | + slug: czechia | |
| 1611 | + short_name: Czechia | |
| 1612 | + official_name: Czech Republic | |
| 1613 | + capital: Prague | |
| 1614 | + continent: Europe | |
| 1615 | + region_wb: ECS | |
| 1616 | + region_wb_name: Europe & Central Asia | |
| 1617 | + subregion: Central Europe | |
| 1618 | + income_group: HIC | |
| 1619 | + income_group_name: High income | |
| 1620 | + currency_code: CZK | |
| 1621 | + currency_name: Czech koruna | |
| 1622 | + area_km2: 78865 | |
| 1623 | + latitude: 50.0878 | |
| 1624 | + longitude: 14.4205 | |
| 1625 | + flag_emoji: 🇨🇿 | |
| 1626 | + un_member: true | |
| 1627 | + independent: true | |
| 1628 | + landlocked: true | |
| 1629 | + borders: | |
| 1630 | + - AUT | |
| 1631 | + - DEU | |
| 1632 | + - POL | |
| 1633 | + - SVK | |
| 1634 | + languages: | |
| 1635 | + - Czech | |
| 1636 | + - Slovak | |
| 1637 | + demonym: Czech | |
| 1638 | + status: country | |
| 1639 | + kind: country | |
| 1640 | +- id: CIV | |
| 1641 | + iso2: CI | |
| 1642 | + iso3: CIV | |
| 1643 | + iso_numeric: '384' | |
| 1644 | + slug: cote-divoire | |
| 1645 | + short_name: Côte d'Ivoire | |
| 1646 | + official_name: Republic of Côte d'Ivoire | |
| 1647 | + capital: Yamoussoukro | |
| 1648 | + continent: Africa | |
| 1649 | + region_wb: SSF | |
| 1650 | + region_wb_name: Sub-Saharan Africa | |
| 1651 | + subregion: Western Africa | |
| 1652 | + income_group: LMC | |
| 1653 | + income_group_name: Lower middle income | |
| 1654 | + currency_code: XOF | |
| 1655 | + currency_name: West African CFA franc | |
| 1656 | + area_km2: 322463 | |
| 1657 | + latitude: 5.332 | |
| 1658 | + longitude: -4.0305 | |
| 1659 | + flag_emoji: 🇨🇮 | |
| 1660 | + un_member: true | |
| 1661 | + independent: true | |
| 1662 | + landlocked: false | |
| 1663 | + borders: | |
| 1664 | + - BFA | |
| 1665 | + - GHA | |
| 1666 | + - GIN | |
| 1667 | + - LBR | |
| 1668 | + - MLI | |
| 1669 | + languages: | |
| 1670 | + - French | |
| 1671 | + demonym: Ivorian | |
| 1672 | + status: country | |
| 1673 | + kind: country | |
| 1674 | +- id: COD | |
| 1675 | + iso2: CD | |
| 1676 | + iso3: COD | |
| 1677 | + iso_numeric: '180' | |
| 1678 | + slug: dr-congo | |
| 1679 | + short_name: DR Congo | |
| 1680 | + official_name: Democratic Republic of the Congo | |
| 1681 | + capital: Kinshasa | |
| 1682 | + continent: Africa | |
| 1683 | + region_wb: SSF | |
| 1684 | + region_wb_name: Sub-Saharan Africa | |
| 1685 | + subregion: Middle Africa | |
| 1686 | + income_group: LIC | |
| 1687 | + income_group_name: Low income | |
| 1688 | + currency_code: CDF | |
| 1689 | + currency_name: Congolese franc | |
| 1690 | + area_km2: 2344858 | |
| 1691 | + latitude: -4.325 | |
| 1692 | + longitude: 15.3222 | |
| 1693 | + flag_emoji: 🇨🇩 | |
| 1694 | + un_member: true | |
| 1695 | + independent: true | |
| 1696 | + landlocked: false | |
| 1697 | + borders: | |
| 1698 | + - AGO | |
| 1699 | + - BDI | |
| 1700 | + - CAF | |
| 1701 | + - COG | |
| 1702 | + - RWA | |
| 1703 | + - SSD | |
| 1704 | + - TZA | |
| 1705 | + - UGA | |
| 1706 | + - ZMB | |
| 1707 | + languages: | |
| 1708 | + - French | |
| 1709 | + - Kikongo | |
| 1710 | + - Lingala | |
| 1711 | + - Swahili | |
| 1712 | + - Tshiluba | |
| 1713 | + demonym: Congolese | |
| 1714 | + status: country | |
| 1715 | + kind: country | |
| 1716 | +- id: DNK | |
| 1717 | + iso2: DK | |
| 1718 | + iso3: DNK | |
| 1719 | + iso_numeric: '208' | |
| 1720 | + slug: denmark | |
| 1721 | + short_name: Denmark | |
| 1722 | + official_name: Kingdom of Denmark | |
| 1723 | + capital: Copenhagen | |
| 1724 | + continent: Europe | |
| 1725 | + region_wb: ECS | |
| 1726 | + region_wb_name: Europe & Central Asia | |
| 1727 | + subregion: Northern Europe | |
| 1728 | + income_group: HIC | |
| 1729 | + income_group_name: High income | |
| 1730 | + currency_code: DKK | |
| 1731 | + currency_name: Danish krone | |
| 1732 | + area_km2: 43094 | |
| 1733 | + latitude: 55.6763 | |
| 1734 | + longitude: 12.5681 | |
| 1735 | + flag_emoji: 🇩🇰 | |
| 1736 | + un_member: true | |
| 1737 | + independent: true | |
| 1738 | + landlocked: false | |
| 1739 | + borders: | |
| 1740 | + - DEU | |
| 1741 | + languages: | |
| 1742 | + - Danish | |
| 1743 | + demonym: Danish | |
| 1744 | + status: country | |
| 1745 | + kind: country | |
| 1746 | +- id: DJI | |
| 1747 | + iso2: DJ | |
| 1748 | + iso3: DJI | |
| 1749 | + iso_numeric: '262' | |
| 1750 | + slug: djibouti | |
| 1751 | + short_name: Djibouti | |
| 1752 | + official_name: Republic of Djibouti | |
| 1753 | + capital: Djibouti | |
| 1754 | + continent: Africa | |
| 1755 | + region_wb: MEA | |
| 1756 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 1757 | + subregion: Eastern Africa | |
| 1758 | + income_group: LMC | |
| 1759 | + income_group_name: Lower middle income | |
| 1760 | + currency_code: DJF | |
| 1761 | + currency_name: Djiboutian franc | |
| 1762 | + area_km2: 23200 | |
| 1763 | + latitude: 11.5806 | |
| 1764 | + longitude: 43.1425 | |
| 1765 | + flag_emoji: 🇩🇯 | |
| 1766 | + un_member: true | |
| 1767 | + independent: true | |
| 1768 | + landlocked: false | |
| 1769 | + borders: | |
| 1770 | + - ERI | |
| 1771 | + - ETH | |
| 1772 | + - SOM | |
| 1773 | + languages: | |
| 1774 | + - Arabic | |
| 1775 | + - French | |
| 1776 | + demonym: Djibouti | |
| 1777 | + status: country | |
| 1778 | + kind: country | |
| 1779 | +- id: DMA | |
| 1780 | + iso2: DM | |
| 1781 | + iso3: DMA | |
| 1782 | + iso_numeric: '212' | |
| 1783 | + slug: dominica | |
| 1784 | + short_name: Dominica | |
| 1785 | + official_name: Commonwealth of Dominica | |
| 1786 | + capital: Roseau | |
| 1787 | + continent: Americas | |
| 1788 | + region_wb: LCN | |
| 1789 | + region_wb_name: Latin America & Caribbean | |
| 1790 | + subregion: Caribbean | |
| 1791 | + income_group: UMC | |
| 1792 | + income_group_name: Upper middle income | |
| 1793 | + currency_code: XCD | |
| 1794 | + currency_name: Eastern Caribbean dollar | |
| 1795 | + area_km2: 751 | |
| 1796 | + latitude: 15.2976 | |
| 1797 | + longitude: -61.39 | |
| 1798 | + flag_emoji: 🇩🇲 | |
| 1799 | + un_member: true | |
| 1800 | + independent: true | |
| 1801 | + landlocked: false | |
| 1802 | + borders: [] | |
| 1803 | + languages: | |
| 1804 | + - English | |
| 1805 | + demonym: Dominican | |
| 1806 | + status: country | |
| 1807 | + kind: country | |
| 1808 | +- id: DOM | |
| 1809 | + iso2: DO | |
| 1810 | + iso3: DOM | |
| 1811 | + iso_numeric: '214' | |
| 1812 | + slug: dominican-republic | |
| 1813 | + short_name: Dominican Republic | |
| 1814 | + official_name: Dominican Republic | |
| 1815 | + capital: Santo Domingo | |
| 1816 | + continent: Americas | |
| 1817 | + region_wb: LCN | |
| 1818 | + region_wb_name: Latin America & Caribbean | |
| 1819 | + subregion: Caribbean | |
| 1820 | + income_group: UMC | |
| 1821 | + income_group_name: Upper middle income | |
| 1822 | + currency_code: DOP | |
| 1823 | + currency_name: Dominican peso | |
| 1824 | + area_km2: 48671 | |
| 1825 | + latitude: 18.479 | |
| 1826 | + longitude: -69.8908 | |
| 1827 | + flag_emoji: 🇩🇴 | |
| 1828 | + un_member: true | |
| 1829 | + independent: true | |
| 1830 | + landlocked: false | |
| 1831 | + borders: | |
| 1832 | + - HTI | |
| 1833 | + languages: | |
| 1834 | + - Spanish | |
| 1835 | + demonym: Dominican | |
| 1836 | + status: country | |
| 1837 | + kind: country | |
| 1838 | +- id: ECU | |
| 1839 | + iso2: EC | |
| 1840 | + iso3: ECU | |
| 1841 | + iso_numeric: '218' | |
| 1842 | + slug: ecuador | |
| 1843 | + short_name: Ecuador | |
| 1844 | + official_name: Republic of Ecuador | |
| 1845 | + capital: Quito | |
| 1846 | + continent: Americas | |
| 1847 | + region_wb: LCN | |
| 1848 | + region_wb_name: Latin America & Caribbean | |
| 1849 | + subregion: South America | |
| 1850 | + income_group: UMC | |
| 1851 | + income_group_name: Upper middle income | |
| 1852 | + currency_code: USD | |
| 1853 | + currency_name: United States dollar | |
| 1854 | + area_km2: 276841 | |
| 1855 | + latitude: -0.229498 | |
| 1856 | + longitude: -78.5243 | |
| 1857 | + flag_emoji: 🇪🇨 | |
| 1858 | + un_member: true | |
| 1859 | + independent: true | |
| 1860 | + landlocked: false | |
| 1861 | + borders: | |
| 1862 | + - COL | |
| 1863 | + - PER | |
| 1864 | + languages: | |
| 1865 | + - Spanish | |
| 1866 | + demonym: Ecuadorean | |
| 1867 | + status: country | |
| 1868 | + kind: country | |
| 1869 | +- id: EGY | |
| 1870 | + iso2: EG | |
| 1871 | + iso3: EGY | |
| 1872 | + iso_numeric: '818' | |
| 1873 | + slug: egypt | |
| 1874 | + short_name: Egypt | |
| 1875 | + official_name: Arab Republic of Egypt | |
| 1876 | + capital: Cairo | |
| 1877 | + continent: Africa | |
| 1878 | + region_wb: MEA | |
| 1879 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 1880 | + subregion: Northern Africa | |
| 1881 | + income_group: LMC | |
| 1882 | + income_group_name: Lower middle income | |
| 1883 | + currency_code: EGP | |
| 1884 | + currency_name: Egyptian pound | |
| 1885 | + area_km2: 1002450 | |
| 1886 | + latitude: 30.0982 | |
| 1887 | + longitude: 31.2461 | |
| 1888 | + flag_emoji: 🇪🇬 | |
| 1889 | + un_member: true | |
| 1890 | + independent: true | |
| 1891 | + landlocked: false | |
| 1892 | + borders: | |
| 1893 | + - ISR | |
| 1894 | + - LBY | |
| 1895 | + - PSE | |
| 1896 | + - SDN | |
| 1897 | + languages: | |
| 1898 | + - Arabic | |
| 1899 | + demonym: Egyptian | |
| 1900 | + status: country | |
| 1901 | + kind: country | |
| 1902 | +- id: SLV | |
| 1903 | + iso2: SV | |
| 1904 | + iso3: SLV | |
| 1905 | + iso_numeric: '222' | |
| 1906 | + slug: el-salvador | |
| 1907 | + short_name: El Salvador | |
| 1908 | + official_name: Republic of El Salvador | |
| 1909 | + capital: San Salvador | |
| 1910 | + continent: Americas | |
| 1911 | + region_wb: LCN | |
| 1912 | + region_wb_name: Latin America & Caribbean | |
| 1913 | + subregion: Central America | |
| 1914 | + income_group: UMC | |
| 1915 | + income_group_name: Upper middle income | |
| 1916 | + currency_code: USD | |
| 1917 | + currency_name: United States dollar | |
| 1918 | + area_km2: 21041 | |
| 1919 | + latitude: 13.7034 | |
| 1920 | + longitude: -89.2073 | |
| 1921 | + flag_emoji: 🇸🇻 | |
| 1922 | + un_member: true | |
| 1923 | + independent: true | |
| 1924 | + landlocked: false | |
| 1925 | + borders: | |
| 1926 | + - GTM | |
| 1927 | + - HND | |
| 1928 | + languages: | |
| 1929 | + - Spanish | |
| 1930 | + demonym: Salvadoran | |
| 1931 | + status: country | |
| 1932 | + kind: country | |
| 1933 | +- id: GNQ | |
| 1934 | + iso2: GQ | |
| 1935 | + iso3: GNQ | |
| 1936 | + iso_numeric: '226' | |
| 1937 | + slug: equatorial-guinea | |
| 1938 | + short_name: Equatorial Guinea | |
| 1939 | + official_name: Republic of Equatorial Guinea | |
| 1940 | + capital: Malabo | |
| 1941 | + continent: Africa | |
| 1942 | + region_wb: SSF | |
| 1943 | + region_wb_name: Sub-Saharan Africa | |
| 1944 | + subregion: Middle Africa | |
| 1945 | + income_group: UMC | |
| 1946 | + income_group_name: Upper middle income | |
| 1947 | + currency_code: XAF | |
| 1948 | + currency_name: Central African CFA franc | |
| 1949 | + area_km2: 28051 | |
| 1950 | + latitude: 3.7523 | |
| 1951 | + longitude: 8.7741 | |
| 1952 | + flag_emoji: 🇬🇶 | |
| 1953 | + un_member: true | |
| 1954 | + independent: true | |
| 1955 | + landlocked: false | |
| 1956 | + borders: | |
| 1957 | + - CMR | |
| 1958 | + - GAB | |
| 1959 | + languages: | |
| 1960 | + - French | |
| 1961 | + - Portuguese | |
| 1962 | + - Spanish | |
| 1963 | + demonym: Equatorial Guinean | |
| 1964 | + status: country | |
| 1965 | + kind: country | |
| 1966 | +- id: ERI | |
| 1967 | + iso2: ER | |
| 1968 | + iso3: ERI | |
| 1969 | + iso_numeric: '232' | |
| 1970 | + slug: eritrea | |
| 1971 | + short_name: Eritrea | |
| 1972 | + official_name: State of Eritrea | |
| 1973 | + capital: Asmara | |
| 1974 | + continent: Africa | |
| 1975 | + region_wb: SSF | |
| 1976 | + region_wb_name: Sub-Saharan Africa | |
| 1977 | + subregion: Eastern Africa | |
| 1978 | + income_group: LIC | |
| 1979 | + income_group_name: Low income | |
| 1980 | + currency_code: ERN | |
| 1981 | + currency_name: Eritrean nakfa | |
| 1982 | + area_km2: 117600 | |
| 1983 | + latitude: 15.3315 | |
| 1984 | + longitude: 38.9183 | |
| 1985 | + flag_emoji: 🇪🇷 | |
| 1986 | + un_member: true | |
| 1987 | + independent: true | |
| 1988 | + landlocked: false | |
| 1989 | + borders: | |
| 1990 | + - DJI | |
| 1991 | + - ETH | |
| 1992 | + - SDN | |
| 1993 | + languages: | |
| 1994 | + - Arabic | |
| 1995 | + - English | |
| 1996 | + - Tigrinya | |
| 1997 | + demonym: Eritrean | |
| 1998 | + status: country | |
| 1999 | + kind: country | |
| 2000 | +- id: EST | |
| 2001 | + iso2: EE | |
| 2002 | + iso3: EST | |
| 2003 | + iso_numeric: '233' | |
| 2004 | + slug: estonia | |
| 2005 | + short_name: Estonia | |
| 2006 | + official_name: Republic of Estonia | |
| 2007 | + capital: Tallinn | |
| 2008 | + continent: Europe | |
| 2009 | + region_wb: ECS | |
| 2010 | + region_wb_name: Europe & Central Asia | |
| 2011 | + subregion: Northern Europe | |
| 2012 | + income_group: HIC | |
| 2013 | + income_group_name: High income | |
| 2014 | + currency_code: EUR | |
| 2015 | + currency_name: Euro | |
| 2016 | + area_km2: 45227 | |
| 2017 | + latitude: 59.4392 | |
| 2018 | + longitude: 24.7586 | |
| 2019 | + flag_emoji: 🇪🇪 | |
| 2020 | + un_member: true | |
| 2021 | + independent: true | |
| 2022 | + landlocked: false | |
| 2023 | + borders: | |
| 2024 | + - LVA | |
| 2025 | + - RUS | |
| 2026 | + languages: | |
| 2027 | + - Estonian | |
| 2028 | + demonym: Estonian | |
| 2029 | + status: country | |
| 2030 | + kind: country | |
| 2031 | +- id: SWZ | |
| 2032 | + iso2: SZ | |
| 2033 | + iso3: SWZ | |
| 2034 | + iso_numeric: '748' | |
| 2035 | + slug: eswatini | |
| 2036 | + short_name: Eswatini | |
| 2037 | + official_name: Kingdom of Eswatini | |
| 2038 | + capital: Lobamba | |
| 2039 | + continent: Africa | |
| 2040 | + region_wb: SSF | |
| 2041 | + region_wb_name: Sub-Saharan Africa | |
| 2042 | + subregion: Southern Africa | |
| 2043 | + income_group: LMC | |
| 2044 | + income_group_name: Lower middle income | |
| 2045 | + currency_code: SZL | |
| 2046 | + currency_name: Swazi lilangeni | |
| 2047 | + area_km2: 17364 | |
| 2048 | + latitude: -26.5225 | |
| 2049 | + longitude: 31.4659 | |
| 2050 | + flag_emoji: 🇸🇿 | |
| 2051 | + un_member: true | |
| 2052 | + independent: true | |
| 2053 | + landlocked: true | |
| 2054 | + borders: | |
| 2055 | + - MOZ | |
| 2056 | + - ZAF | |
| 2057 | + languages: | |
| 2058 | + - English | |
| 2059 | + - Swazi | |
| 2060 | + demonym: Swazi | |
| 2061 | + status: country | |
| 2062 | + kind: country | |
| 2063 | +- id: ETH | |
| 2064 | + iso2: ET | |
| 2065 | + iso3: ETH | |
| 2066 | + iso_numeric: '231' | |
| 2067 | + slug: ethiopia | |
| 2068 | + short_name: Ethiopia | |
| 2069 | + official_name: Federal Democratic Republic of Ethiopia | |
| 2070 | + capital: Addis Ababa | |
| 2071 | + continent: Africa | |
| 2072 | + region_wb: SSF | |
| 2073 | + region_wb_name: Sub-Saharan Africa | |
| 2074 | + subregion: Eastern Africa | |
| 2075 | + income_group: LIC | |
| 2076 | + income_group_name: Low income | |
| 2077 | + currency_code: ETB | |
| 2078 | + currency_name: Ethiopian birr | |
| 2079 | + area_km2: 1104300 | |
| 2080 | + latitude: 9.02274 | |
| 2081 | + longitude: 38.7468 | |
| 2082 | + flag_emoji: 🇪🇹 | |
| 2083 | + un_member: true | |
| 2084 | + independent: true | |
| 2085 | + landlocked: true | |
| 2086 | + borders: | |
| 2087 | + - DJI | |
| 2088 | + - ERI | |
| 2089 | + - KEN | |
| 2090 | + - SOM | |
| 2091 | + - SSD | |
| 2092 | + - SDN | |
| 2093 | + languages: | |
| 2094 | + - Amharic | |
| 2095 | + demonym: Ethiopian | |
| 2096 | + status: country | |
| 2097 | + kind: country | |
| 2098 | +- id: FRO | |
| 2099 | + iso2: FO | |
| 2100 | + iso3: FRO | |
| 2101 | + iso_numeric: '234' | |
| 2102 | + slug: faroe-islands | |
| 2103 | + short_name: Faroe Islands | |
| 2104 | + official_name: Faroe Islands | |
| 2105 | + capital: Tórshavn | |
| 2106 | + continent: Europe | |
| 2107 | + region_wb: ECS | |
| 2108 | + region_wb_name: Europe & Central Asia | |
| 2109 | + subregion: Northern Europe | |
| 2110 | + income_group: HIC | |
| 2111 | + income_group_name: High income | |
| 2112 | + currency_code: DKK | |
| 2113 | + currency_name: Danish krone | |
| 2114 | + area_km2: 1393 | |
| 2115 | + latitude: 61.8926 | |
| 2116 | + longitude: -6.91181 | |
| 2117 | + flag_emoji: 🇫🇴 | |
| 2118 | + un_member: false | |
| 2119 | + independent: false | |
| 2120 | + landlocked: false | |
| 2121 | + borders: [] | |
| 2122 | + languages: | |
| 2123 | + - Danish | |
| 2124 | + - Faroese | |
| 2125 | + demonym: Faroese | |
| 2126 | + status: territory | |
| 2127 | + kind: country | |
| 2128 | +- id: FJI | |
| 2129 | + iso2: FJ | |
| 2130 | + iso3: FJI | |
| 2131 | + iso_numeric: '242' | |
| 2132 | + slug: fiji | |
| 2133 | + short_name: Fiji | |
| 2134 | + official_name: Republic of Fiji | |
| 2135 | + capital: Suva | |
| 2136 | + continent: Oceania | |
| 2137 | + region_wb: EAS | |
| 2138 | + region_wb_name: East Asia & Pacific | |
| 2139 | + subregion: Melanesia | |
| 2140 | + income_group: UMC | |
| 2141 | + income_group_name: Upper middle income | |
| 2142 | + currency_code: FJD | |
| 2143 | + currency_name: Fijian dollar | |
| 2144 | + area_km2: 18272 | |
| 2145 | + latitude: -18.1149 | |
| 2146 | + longitude: 178.399 | |
| 2147 | + flag_emoji: 🇫🇯 | |
| 2148 | + un_member: true | |
| 2149 | + independent: true | |
| 2150 | + landlocked: false | |
| 2151 | + borders: [] | |
| 2152 | + languages: | |
| 2153 | + - English | |
| 2154 | + - Fiji Hindi | |
| 2155 | + - Fijian | |
| 2156 | + demonym: Fijian | |
| 2157 | + status: country | |
| 2158 | + kind: country | |
| 2159 | +- id: FIN | |
| 2160 | + iso2: FI | |
| 2161 | + iso3: FIN | |
| 2162 | + iso_numeric: '246' | |
| 2163 | + slug: finland | |
| 2164 | + short_name: Finland | |
| 2165 | + official_name: Republic of Finland | |
| 2166 | + capital: Helsinki | |
| 2167 | + continent: Europe | |
| 2168 | + region_wb: ECS | |
| 2169 | + region_wb_name: Europe & Central Asia | |
| 2170 | + subregion: Northern Europe | |
| 2171 | + income_group: HIC | |
| 2172 | + income_group_name: High income | |
| 2173 | + currency_code: EUR | |
| 2174 | + currency_name: Euro | |
| 2175 | + area_km2: 338424 | |
| 2176 | + latitude: 60.1608 | |
| 2177 | + longitude: 24.9525 | |
| 2178 | + flag_emoji: 🇫🇮 | |
| 2179 | + un_member: true | |
| 2180 | + independent: true | |
| 2181 | + landlocked: false | |
| 2182 | + borders: | |
| 2183 | + - NOR | |
| 2184 | + - SWE | |
| 2185 | + - RUS | |
| 2186 | + languages: | |
| 2187 | + - Finnish | |
| 2188 | + - Swedish | |
| 2189 | + demonym: Finnish | |
| 2190 | + status: country | |
| 2191 | + kind: country | |
| 2192 | +- id: FRA | |
| 2193 | + iso2: FR | |
| 2194 | + iso3: FRA | |
| 2195 | + iso_numeric: '250' | |
| 2196 | + slug: france | |
| 2197 | + short_name: France | |
| 2198 | + official_name: French Republic | |
| 2199 | + capital: Paris | |
| 2200 | + continent: Europe | |
| 2201 | + region_wb: ECS | |
| 2202 | + region_wb_name: Europe & Central Asia | |
| 2203 | + subregion: Western Europe | |
| 2204 | + income_group: HIC | |
| 2205 | + income_group_name: High income | |
| 2206 | + currency_code: EUR | |
| 2207 | + currency_name: Euro | |
| 2208 | + area_km2: 551695 | |
| 2209 | + latitude: 48.8566 | |
| 2210 | + longitude: 2.35097 | |
| 2211 | + flag_emoji: 🇫🇷 | |
| 2212 | + un_member: true | |
| 2213 | + independent: true | |
| 2214 | + landlocked: false | |
| 2215 | + borders: | |
| 2216 | + - AND | |
| 2217 | + - BEL | |
| 2218 | + - DEU | |
| 2219 | + - ITA | |
| 2220 | + - LUX | |
| 2221 | + - MCO | |
| 2222 | + - ESP | |
| 2223 | + - CHE | |
| 2224 | + languages: | |
| 2225 | + - French | |
| 2226 | + demonym: French | |
| 2227 | + status: country | |
| 2228 | + kind: country | |
| 2229 | +- id: PYF | |
| 2230 | + iso2: PF | |
| 2231 | + iso3: PYF | |
| 2232 | + iso_numeric: '258' | |
| 2233 | + slug: french-polynesia | |
| 2234 | + short_name: French Polynesia | |
| 2235 | + official_name: French Polynesia | |
| 2236 | + capital: Papeetē | |
| 2237 | + continent: Oceania | |
| 2238 | + region_wb: EAS | |
| 2239 | + region_wb_name: East Asia & Pacific | |
| 2240 | + subregion: Polynesia | |
| 2241 | + income_group: HIC | |
| 2242 | + income_group_name: High income | |
| 2243 | + currency_code: XPF | |
| 2244 | + currency_name: CFP franc | |
| 2245 | + area_km2: 4167 | |
| 2246 | + latitude: -17.535 | |
| 2247 | + longitude: -149.57 | |
| 2248 | + flag_emoji: 🇵🇫 | |
| 2249 | + un_member: false | |
| 2250 | + independent: false | |
| 2251 | + landlocked: false | |
| 2252 | + borders: [] | |
| 2253 | + languages: | |
| 2254 | + - French | |
| 2255 | + demonym: French Polynesian | |
| 2256 | + status: territory | |
| 2257 | + kind: country | |
| 2258 | +- id: GAB | |
| 2259 | + iso2: GA | |
| 2260 | + iso3: GAB | |
| 2261 | + iso_numeric: '266' | |
| 2262 | + slug: gabon | |
| 2263 | + short_name: Gabon | |
| 2264 | + official_name: Gabonese Republic | |
| 2265 | + capital: Libreville | |
| 2266 | + continent: Africa | |
| 2267 | + region_wb: SSF | |
| 2268 | + region_wb_name: Sub-Saharan Africa | |
| 2269 | + subregion: Middle Africa | |
| 2270 | + income_group: UMC | |
| 2271 | + income_group_name: Upper middle income | |
| 2272 | + currency_code: XAF | |
| 2273 | + currency_name: Central African CFA franc | |
| 2274 | + area_km2: 267668 | |
| 2275 | + latitude: 0.38832 | |
| 2276 | + longitude: 9.45162 | |
| 2277 | + flag_emoji: 🇬🇦 | |
| 2278 | + un_member: true | |
| 2279 | + independent: true | |
| 2280 | + landlocked: false | |
| 2281 | + borders: | |
| 2282 | + - CMR | |
| 2283 | + - COG | |
| 2284 | + - GNQ | |
| 2285 | + languages: | |
| 2286 | + - French | |
| 2287 | + demonym: Gabonese | |
| 2288 | + status: country | |
| 2289 | + kind: country | |
| 2290 | +- id: GMB | |
| 2291 | + iso2: GM | |
| 2292 | + iso3: GMB | |
| 2293 | + iso_numeric: '270' | |
| 2294 | + slug: gambia | |
| 2295 | + short_name: Gambia | |
| 2296 | + official_name: Republic of the Gambia | |
| 2297 | + capital: Banjul | |
| 2298 | + continent: Africa | |
| 2299 | + region_wb: SSF | |
| 2300 | + region_wb_name: Sub-Saharan Africa | |
| 2301 | + subregion: Western Africa | |
| 2302 | + income_group: LIC | |
| 2303 | + income_group_name: Low income | |
| 2304 | + currency_code: GMD | |
| 2305 | + currency_name: dalasi | |
| 2306 | + area_km2: 10689 | |
| 2307 | + latitude: 13.4495 | |
| 2308 | + longitude: -16.5885 | |
| 2309 | + flag_emoji: 🇬🇲 | |
| 2310 | + un_member: true | |
| 2311 | + independent: true | |
| 2312 | + landlocked: false | |
| 2313 | + borders: | |
| 2314 | + - SEN | |
| 2315 | + languages: | |
| 2316 | + - English | |
| 2317 | + demonym: Gambian | |
| 2318 | + status: country | |
| 2319 | + kind: country | |
| 2320 | +- id: GEO | |
| 2321 | + iso2: GE | |
| 2322 | + iso3: GEO | |
| 2323 | + iso_numeric: '268' | |
| 2324 | + slug: georgia | |
| 2325 | + short_name: Georgia | |
| 2326 | + official_name: Georgia | |
| 2327 | + capital: Tbilisi | |
| 2328 | + continent: Asia | |
| 2329 | + region_wb: ECS | |
| 2330 | + region_wb_name: Europe & Central Asia | |
| 2331 | + subregion: Western Asia | |
| 2332 | + income_group: UMC | |
| 2333 | + income_group_name: Upper middle income | |
| 2334 | + currency_code: GEL | |
| 2335 | + currency_name: lari | |
| 2336 | + area_km2: 69700 | |
| 2337 | + latitude: 41.71 | |
| 2338 | + longitude: 44.793 | |
| 2339 | + flag_emoji: 🇬🇪 | |
| 2340 | + un_member: true | |
| 2341 | + independent: true | |
| 2342 | + landlocked: false | |
| 2343 | + borders: | |
| 2344 | + - ARM | |
| 2345 | + - AZE | |
| 2346 | + - RUS | |
| 2347 | + - TUR | |
| 2348 | + languages: | |
| 2349 | + - Georgian | |
| 2350 | + demonym: Georgian | |
| 2351 | + status: country | |
| 2352 | + kind: country | |
| 2353 | +- id: DEU | |
| 2354 | + iso2: DE | |
| 2355 | + iso3: DEU | |
| 2356 | + iso_numeric: '276' | |
| 2357 | + slug: germany | |
| 2358 | + short_name: Germany | |
| 2359 | + official_name: Federal Republic of Germany | |
| 2360 | + capital: Berlin | |
| 2361 | + continent: Europe | |
| 2362 | + region_wb: ECS | |
| 2363 | + region_wb_name: Europe & Central Asia | |
| 2364 | + subregion: Western Europe | |
| 2365 | + income_group: HIC | |
| 2366 | + income_group_name: High income | |
| 2367 | + currency_code: EUR | |
| 2368 | + currency_name: Euro | |
| 2369 | + area_km2: 357114 | |
| 2370 | + latitude: 52.5235 | |
| 2371 | + longitude: 13.4115 | |
| 2372 | + flag_emoji: 🇩🇪 | |
| 2373 | + un_member: true | |
| 2374 | + independent: true | |
| 2375 | + landlocked: false | |
| 2376 | + borders: | |
| 2377 | + - AUT | |
| 2378 | + - BEL | |
| 2379 | + - CZE | |
| 2380 | + - DNK | |
| 2381 | + - FRA | |
| 2382 | + - LUX | |
| 2383 | + - NLD | |
| 2384 | + - POL | |
| 2385 | + - CHE | |
| 2386 | + languages: | |
| 2387 | + - German | |
| 2388 | + demonym: German | |
| 2389 | + status: country | |
| 2390 | + kind: country | |
| 2391 | +- id: GHA | |
| 2392 | + iso2: GH | |
| 2393 | + iso3: GHA | |
| 2394 | + iso_numeric: '288' | |
| 2395 | + slug: ghana | |
| 2396 | + short_name: Ghana | |
| 2397 | + official_name: Republic of Ghana | |
| 2398 | + capital: Accra | |
| 2399 | + continent: Africa | |
| 2400 | + region_wb: SSF | |
| 2401 | + region_wb_name: Sub-Saharan Africa | |
| 2402 | + subregion: Western Africa | |
| 2403 | + income_group: LMC | |
| 2404 | + income_group_name: Lower middle income | |
| 2405 | + currency_code: GHS | |
| 2406 | + currency_name: Ghanaian cedi | |
| 2407 | + area_km2: 238533 | |
| 2408 | + latitude: 5.57045 | |
| 2409 | + longitude: -0.20795 | |
| 2410 | + flag_emoji: 🇬🇭 | |
| 2411 | + un_member: true | |
| 2412 | + independent: true | |
| 2413 | + landlocked: false | |
| 2414 | + borders: | |
| 2415 | + - BFA | |
| 2416 | + - CIV | |
| 2417 | + - TGO | |
| 2418 | + languages: | |
| 2419 | + - English | |
| 2420 | + demonym: Ghanaian | |
| 2421 | + status: country | |
| 2422 | + kind: country | |
| 2423 | +- id: GIB | |
| 2424 | + iso2: GI | |
| 2425 | + iso3: GIB | |
| 2426 | + iso_numeric: '292' | |
| 2427 | + slug: gibraltar | |
| 2428 | + short_name: Gibraltar | |
| 2429 | + official_name: Gibraltar | |
| 2430 | + capital: Gibraltar | |
| 2431 | + continent: Europe | |
| 2432 | + region_wb: ECS | |
| 2433 | + region_wb_name: Europe & Central Asia | |
| 2434 | + subregion: Southern Europe | |
| 2435 | + income_group: HIC | |
| 2436 | + income_group_name: High income | |
| 2437 | + currency_code: GIP | |
| 2438 | + currency_name: Gibraltar pound | |
| 2439 | + area_km2: 6 | |
| 2440 | + latitude: 36.13333333 | |
| 2441 | + longitude: -5.35 | |
| 2442 | + flag_emoji: 🇬🇮 | |
| 2443 | + un_member: false | |
| 2444 | + independent: false | |
| 2445 | + landlocked: false | |
| 2446 | + borders: | |
| 2447 | + - ESP | |
| 2448 | + languages: | |
| 2449 | + - English | |
| 2450 | + demonym: Gibraltar | |
| 2451 | + status: territory | |
| 2452 | + kind: country | |
| 2453 | +- id: GRC | |
| 2454 | + iso2: GR | |
| 2455 | + iso3: GRC | |
| 2456 | + iso_numeric: '300' | |
| 2457 | + slug: greece | |
| 2458 | + short_name: Greece | |
| 2459 | + official_name: Hellenic Republic | |
| 2460 | + capital: Athens | |
| 2461 | + continent: Europe | |
| 2462 | + region_wb: ECS | |
| 2463 | + region_wb_name: Europe & Central Asia | |
| 2464 | + subregion: Southern Europe | |
| 2465 | + income_group: HIC | |
| 2466 | + income_group_name: High income | |
| 2467 | + currency_code: EUR | |
| 2468 | + currency_name: Euro | |
| 2469 | + area_km2: 131990 | |
| 2470 | + latitude: 37.9792 | |
| 2471 | + longitude: 23.7166 | |
| 2472 | + flag_emoji: 🇬🇷 | |
| 2473 | + un_member: true | |
| 2474 | + independent: true | |
| 2475 | + landlocked: false | |
| 2476 | + borders: | |
| 2477 | + - ALB | |
| 2478 | + - BGR | |
| 2479 | + - TUR | |
| 2480 | + - MKD | |
| 2481 | + languages: | |
| 2482 | + - Greek | |
| 2483 | + demonym: Greek | |
| 2484 | + status: country | |
| 2485 | + kind: country | |
| 2486 | +- id: GRL | |
| 2487 | + iso2: GL | |
| 2488 | + iso3: GRL | |
| 2489 | + iso_numeric: '304' | |
| 2490 | + slug: greenland | |
| 2491 | + short_name: Greenland | |
| 2492 | + official_name: Greenland | |
| 2493 | + capital: Nuuk | |
| 2494 | + continent: Americas | |
| 2495 | + region_wb: ECS | |
| 2496 | + region_wb_name: Europe & Central Asia | |
| 2497 | + subregion: North America | |
| 2498 | + income_group: HIC | |
| 2499 | + income_group_name: High income | |
| 2500 | + currency_code: DKK | |
| 2501 | + currency_name: krone | |
| 2502 | + area_km2: 2166086 | |
| 2503 | + latitude: 64.1836 | |
| 2504 | + longitude: -51.7214 | |
| 2505 | + flag_emoji: 🇬🇱 | |
| 2506 | + un_member: false | |
| 2507 | + independent: false | |
| 2508 | + landlocked: false | |
| 2509 | + borders: [] | |
| 2510 | + languages: | |
| 2511 | + - Greenlandic | |
| 2512 | + demonym: Greenlandic | |
| 2513 | + status: territory | |
| 2514 | + kind: country | |
| 2515 | +- id: GRD | |
| 2516 | + iso2: GD | |
| 2517 | + iso3: GRD | |
| 2518 | + iso_numeric: '308' | |
| 2519 | + slug: grenada | |
| 2520 | + short_name: Grenada | |
| 2521 | + official_name: Grenada | |
| 2522 | + capital: St. George's | |
| 2523 | + continent: Americas | |
| 2524 | + region_wb: LCN | |
| 2525 | + region_wb_name: Latin America & Caribbean | |
| 2526 | + subregion: Caribbean | |
| 2527 | + income_group: UMC | |
| 2528 | + income_group_name: Upper middle income | |
| 2529 | + currency_code: XCD | |
| 2530 | + currency_name: Eastern Caribbean dollar | |
| 2531 | + area_km2: 344 | |
| 2532 | + latitude: 12.0653 | |
| 2533 | + longitude: -61.7449 | |
| 2534 | + flag_emoji: 🇬🇩 | |
| 2535 | + un_member: true | |
| 2536 | + independent: true | |
| 2537 | + landlocked: false | |
| 2538 | + borders: [] | |
| 2539 | + languages: | |
| 2540 | + - English | |
| 2541 | + demonym: Grenadian | |
| 2542 | + status: country | |
| 2543 | + kind: country | |
| 2544 | +- id: GUM | |
| 2545 | + iso2: GU | |
| 2546 | + iso3: GUM | |
| 2547 | + iso_numeric: '316' | |
| 2548 | + slug: guam | |
| 2549 | + short_name: Guam | |
| 2550 | + official_name: Guam | |
| 2551 | + capital: Hagåtña | |
| 2552 | + continent: Oceania | |
| 2553 | + region_wb: EAS | |
| 2554 | + region_wb_name: East Asia & Pacific | |
| 2555 | + subregion: Micronesia | |
| 2556 | + income_group: HIC | |
| 2557 | + income_group_name: High income | |
| 2558 | + currency_code: USD | |
| 2559 | + currency_name: United States dollar | |
| 2560 | + area_km2: 549 | |
| 2561 | + latitude: 13.4443 | |
| 2562 | + longitude: 144.794 | |
| 2563 | + flag_emoji: 🇬🇺 | |
| 2564 | + un_member: false | |
| 2565 | + independent: false | |
| 2566 | + landlocked: false | |
| 2567 | + borders: [] | |
| 2568 | + languages: | |
| 2569 | + - Chamorro | |
| 2570 | + - English | |
| 2571 | + - Spanish | |
| 2572 | + demonym: Guamanian | |
| 2573 | + status: territory | |
| 2574 | + kind: country | |
| 2575 | +- id: GTM | |
| 2576 | + iso2: GT | |
| 2577 | + iso3: GTM | |
| 2578 | + iso_numeric: '320' | |
| 2579 | + slug: guatemala | |
| 2580 | + short_name: Guatemala | |
| 2581 | + official_name: Republic of Guatemala | |
| 2582 | + capital: Guatemala City | |
| 2583 | + continent: Americas | |
| 2584 | + region_wb: LCN | |
| 2585 | + region_wb_name: Latin America & Caribbean | |
| 2586 | + subregion: Central America | |
| 2587 | + income_group: UMC | |
| 2588 | + income_group_name: Upper middle income | |
| 2589 | + currency_code: GTQ | |
| 2590 | + currency_name: Guatemalan quetzal | |
| 2591 | + area_km2: 108889 | |
| 2592 | + latitude: 14.6248 | |
| 2593 | + longitude: -90.5328 | |
| 2594 | + flag_emoji: 🇬🇹 | |
| 2595 | + un_member: true | |
| 2596 | + independent: true | |
| 2597 | + landlocked: false | |
| 2598 | + borders: | |
| 2599 | + - BLZ | |
| 2600 | + - SLV | |
| 2601 | + - HND | |
| 2602 | + - MEX | |
| 2603 | + languages: | |
| 2604 | + - Spanish | |
| 2605 | + demonym: Guatemalan | |
| 2606 | + status: country | |
| 2607 | + kind: country | |
| 2608 | +- id: GIN | |
| 2609 | + iso2: GN | |
| 2610 | + iso3: GIN | |
| 2611 | + iso_numeric: '324' | |
| 2612 | + slug: guinea | |
| 2613 | + short_name: Guinea | |
| 2614 | + official_name: Republic of Guinea | |
| 2615 | + capital: Conakry | |
| 2616 | + continent: Africa | |
| 2617 | + region_wb: SSF | |
| 2618 | + region_wb_name: Sub-Saharan Africa | |
| 2619 | + subregion: Western Africa | |
| 2620 | + income_group: LMC | |
| 2621 | + income_group_name: Lower middle income | |
| 2622 | + currency_code: GNF | |
| 2623 | + currency_name: Guinean franc | |
| 2624 | + area_km2: 245857 | |
| 2625 | + latitude: 9.51667 | |
| 2626 | + longitude: -13.7 | |
| 2627 | + flag_emoji: 🇬🇳 | |
| 2628 | + un_member: true | |
| 2629 | + independent: true | |
| 2630 | + landlocked: false | |
| 2631 | + borders: | |
| 2632 | + - CIV | |
| 2633 | + - GNB | |
| 2634 | + - LBR | |
| 2635 | + - MLI | |
| 2636 | + - SEN | |
| 2637 | + - SLE | |
| 2638 | + languages: | |
| 2639 | + - French | |
| 2640 | + demonym: Guinean | |
| 2641 | + status: country | |
| 2642 | + kind: country | |
| 2643 | +- id: GNB | |
| 2644 | + iso2: GW | |
| 2645 | + iso3: GNB | |
| 2646 | + iso_numeric: '624' | |
| 2647 | + slug: guinea-bissau | |
| 2648 | + short_name: Guinea-Bissau | |
| 2649 | + official_name: Republic of Guinea-Bissau | |
| 2650 | + capital: Bissau | |
| 2651 | + continent: Africa | |
| 2652 | + region_wb: SSF | |
| 2653 | + region_wb_name: Sub-Saharan Africa | |
| 2654 | + subregion: Western Africa | |
| 2655 | + income_group: LIC | |
| 2656 | + income_group_name: Low income | |
| 2657 | + currency_code: XOF | |
| 2658 | + currency_name: West African CFA franc | |
| 2659 | + area_km2: 36125 | |
| 2660 | + latitude: 11.8037 | |
| 2661 | + longitude: -15.1804 | |
| 2662 | + flag_emoji: 🇬🇼 | |
| 2663 | + un_member: true | |
| 2664 | + independent: true | |
| 2665 | + landlocked: false | |
| 2666 | + borders: | |
| 2667 | + - GIN | |
| 2668 | + - SEN | |
| 2669 | + languages: | |
| 2670 | + - Portuguese | |
| 2671 | + - Upper Guinea Creole | |
| 2672 | + demonym: Guinea-Bissauan | |
| 2673 | + status: country | |
| 2674 | + kind: country | |
| 2675 | +- id: GUY | |
| 2676 | + iso2: GY | |
| 2677 | + iso3: GUY | |
| 2678 | + iso_numeric: '328' | |
| 2679 | + slug: guyana | |
| 2680 | + short_name: Guyana | |
| 2681 | + official_name: Co-operative Republic of Guyana | |
| 2682 | + capital: Georgetown | |
| 2683 | + continent: Americas | |
| 2684 | + region_wb: LCN | |
| 2685 | + region_wb_name: Latin America & Caribbean | |
| 2686 | + subregion: South America | |
| 2687 | + income_group: HIC | |
| 2688 | + income_group_name: High income | |
| 2689 | + currency_code: GYD | |
| 2690 | + currency_name: Guyanese dollar | |
| 2691 | + area_km2: 214969 | |
| 2692 | + latitude: 6.80461 | |
| 2693 | + longitude: -58.1548 | |
| 2694 | + flag_emoji: 🇬🇾 | |
| 2695 | + un_member: true | |
| 2696 | + independent: true | |
| 2697 | + landlocked: false | |
| 2698 | + borders: | |
| 2699 | + - BRA | |
| 2700 | + - SUR | |
| 2701 | + - VEN | |
| 2702 | + languages: | |
| 2703 | + - English | |
| 2704 | + demonym: Guyanese | |
| 2705 | + status: country | |
| 2706 | + kind: country | |
| 2707 | +- id: HTI | |
| 2708 | + iso2: HT | |
| 2709 | + iso3: HTI | |
| 2710 | + iso_numeric: '332' | |
| 2711 | + slug: haiti | |
| 2712 | + short_name: Haiti | |
| 2713 | + official_name: Republic of Haiti | |
| 2714 | + capital: Port-au-Prince | |
| 2715 | + continent: Americas | |
| 2716 | + region_wb: LCN | |
| 2717 | + region_wb_name: Latin America & Caribbean | |
| 2718 | + subregion: Caribbean | |
| 2719 | + income_group: LMC | |
| 2720 | + income_group_name: Lower middle income | |
| 2721 | + currency_code: HTG | |
| 2722 | + currency_name: Haitian gourde | |
| 2723 | + area_km2: 27750 | |
| 2724 | + latitude: 18.5392 | |
| 2725 | + longitude: -72.3288 | |
| 2726 | + flag_emoji: 🇭🇹 | |
| 2727 | + un_member: true | |
| 2728 | + independent: true | |
| 2729 | + landlocked: false | |
| 2730 | + borders: | |
| 2731 | + - DOM | |
| 2732 | + languages: | |
| 2733 | + - French | |
| 2734 | + - Haitian Creole | |
| 2735 | + demonym: Haitian | |
| 2736 | + status: country | |
| 2737 | + kind: country | |
| 2738 | +- id: HND | |
| 2739 | + iso2: HN | |
| 2740 | + iso3: HND | |
| 2741 | + iso_numeric: '340' | |
| 2742 | + slug: honduras | |
| 2743 | + short_name: Honduras | |
| 2744 | + official_name: Republic of Honduras | |
| 2745 | + capital: Tegucigalpa | |
| 2746 | + continent: Americas | |
| 2747 | + region_wb: LCN | |
| 2748 | + region_wb_name: Latin America & Caribbean | |
| 2749 | + subregion: Central America | |
| 2750 | + income_group: LMC | |
| 2751 | + income_group_name: Lower middle income | |
| 2752 | + currency_code: HNL | |
| 2753 | + currency_name: Honduran lempira | |
| 2754 | + area_km2: 112492 | |
| 2755 | + latitude: 15.1333 | |
| 2756 | + longitude: -87.4667 | |
| 2757 | + flag_emoji: 🇭🇳 | |
| 2758 | + un_member: true | |
| 2759 | + independent: true | |
| 2760 | + landlocked: false | |
| 2761 | + borders: | |
| 2762 | + - GTM | |
| 2763 | + - SLV | |
| 2764 | + - NIC | |
| 2765 | + languages: | |
| 2766 | + - Spanish | |
| 2767 | + demonym: Honduran | |
| 2768 | + status: country | |
| 2769 | + kind: country | |
| 2770 | +- id: HKG | |
| 2771 | + iso2: HK | |
| 2772 | + iso3: HKG | |
| 2773 | + iso_numeric: '344' | |
| 2774 | + slug: hong-kong | |
| 2775 | + short_name: Hong Kong | |
| 2776 | + official_name: Hong Kong Special Administrative Region of the People's Republic of China | |
| 2777 | + capital: City of Victoria | |
| 2778 | + continent: Asia | |
| 2779 | + region_wb: EAS | |
| 2780 | + region_wb_name: East Asia & Pacific | |
| 2781 | + subregion: Eastern Asia | |
| 2782 | + income_group: HIC | |
| 2783 | + income_group_name: High income | |
| 2784 | + currency_code: HKD | |
| 2785 | + currency_name: Hong Kong dollar | |
| 2786 | + area_km2: 1104 | |
| 2787 | + latitude: 22.3964 | |
| 2788 | + longitude: 114.109 | |
| 2789 | + flag_emoji: 🇭🇰 | |
| 2790 | + un_member: false | |
| 2791 | + independent: false | |
| 2792 | + landlocked: false | |
| 2793 | + borders: | |
| 2794 | + - CHN | |
| 2795 | + languages: | |
| 2796 | + - Chinese | |
| 2797 | + - English | |
| 2798 | + demonym: Hong Konger | |
| 2799 | + status: territory | |
| 2800 | + kind: country | |
| 2801 | +- id: HUN | |
| 2802 | + iso2: HU | |
| 2803 | + iso3: HUN | |
| 2804 | + iso_numeric: '348' | |
| 2805 | + slug: hungary | |
| 2806 | + short_name: Hungary | |
| 2807 | + official_name: Hungary | |
| 2808 | + capital: Budapest | |
| 2809 | + continent: Europe | |
| 2810 | + region_wb: ECS | |
| 2811 | + region_wb_name: Europe & Central Asia | |
| 2812 | + subregion: Central Europe | |
| 2813 | + income_group: HIC | |
| 2814 | + income_group_name: High income | |
| 2815 | + currency_code: HUF | |
| 2816 | + currency_name: Hungarian forint | |
| 2817 | + area_km2: 93028 | |
| 2818 | + latitude: 47.4984 | |
| 2819 | + longitude: 19.0408 | |
| 2820 | + flag_emoji: 🇭🇺 | |
| 2821 | + un_member: true | |
| 2822 | + independent: true | |
| 2823 | + landlocked: true | |
| 2824 | + borders: | |
| 2825 | + - AUT | |
| 2826 | + - HRV | |
| 2827 | + - ROU | |
| 2828 | + - SRB | |
| 2829 | + - SVK | |
| 2830 | + - SVN | |
| 2831 | + - UKR | |
| 2832 | + languages: | |
| 2833 | + - Hungarian | |
| 2834 | + demonym: Hungarian | |
| 2835 | + status: country | |
| 2836 | + kind: country | |
| 2837 | +- id: ISL | |
| 2838 | + iso2: IS | |
| 2839 | + iso3: ISL | |
| 2840 | + iso_numeric: '352' | |
| 2841 | + slug: iceland | |
| 2842 | + short_name: Iceland | |
| 2843 | + official_name: Iceland | |
| 2844 | + capital: Reykjavik | |
| 2845 | + continent: Europe | |
| 2846 | + region_wb: ECS | |
| 2847 | + region_wb_name: Europe & Central Asia | |
| 2848 | + subregion: Northern Europe | |
| 2849 | + income_group: HIC | |
| 2850 | + income_group_name: High income | |
| 2851 | + currency_code: ISK | |
| 2852 | + currency_name: Icelandic króna | |
| 2853 | + area_km2: 103000 | |
| 2854 | + latitude: 64.1353 | |
| 2855 | + longitude: -21.8952 | |
| 2856 | + flag_emoji: 🇮🇸 | |
| 2857 | + un_member: true | |
| 2858 | + independent: true | |
| 2859 | + landlocked: false | |
| 2860 | + borders: [] | |
| 2861 | + languages: | |
| 2862 | + - Icelandic | |
| 2863 | + demonym: Icelander | |
| 2864 | + status: country | |
| 2865 | + kind: country | |
| 2866 | +- id: IND | |
| 2867 | + iso2: IN | |
| 2868 | + iso3: IND | |
| 2869 | + iso_numeric: '356' | |
| 2870 | + slug: india | |
| 2871 | + short_name: India | |
| 2872 | + official_name: Republic of India | |
| 2873 | + capital: New Delhi | |
| 2874 | + continent: Asia | |
| 2875 | + region_wb: SAS | |
| 2876 | + region_wb_name: South Asia | |
| 2877 | + subregion: Southern Asia | |
| 2878 | + income_group: LMC | |
| 2879 | + income_group_name: Lower middle income | |
| 2880 | + currency_code: INR | |
| 2881 | + currency_name: Indian rupee | |
| 2882 | + area_km2: 3287590 | |
| 2883 | + latitude: 28.6353 | |
| 2884 | + longitude: 77.225 | |
| 2885 | + flag_emoji: 🇮🇳 | |
| 2886 | + un_member: true | |
| 2887 | + independent: true | |
| 2888 | + landlocked: false | |
| 2889 | + borders: | |
| 2890 | + - BGD | |
| 2891 | + - BTN | |
| 2892 | + - MMR | |
| 2893 | + - CHN | |
| 2894 | + - NPL | |
| 2895 | + - PAK | |
| 2896 | + languages: | |
| 2897 | + - English | |
| 2898 | + - Hindi | |
| 2899 | + - Tamil | |
| 2900 | + demonym: Indian | |
| 2901 | + status: country | |
| 2902 | + kind: country | |
| 2903 | +- id: IDN | |
| 2904 | + iso2: ID | |
| 2905 | + iso3: IDN | |
| 2906 | + iso_numeric: '360' | |
| 2907 | + slug: indonesia | |
| 2908 | + short_name: Indonesia | |
| 2909 | + official_name: Republic of Indonesia | |
| 2910 | + capital: Jakarta | |
| 2911 | + continent: Asia | |
| 2912 | + region_wb: EAS | |
| 2913 | + region_wb_name: East Asia & Pacific | |
| 2914 | + subregion: South-Eastern Asia | |
| 2915 | + income_group: UMC | |
| 2916 | + income_group_name: Upper middle income | |
| 2917 | + currency_code: IDR | |
| 2918 | + currency_name: Indonesian rupiah | |
| 2919 | + area_km2: 1904569 | |
| 2920 | + latitude: -6.19752 | |
| 2921 | + longitude: 106.83 | |
| 2922 | + flag_emoji: 🇮🇩 | |
| 2923 | + un_member: true | |
| 2924 | + independent: true | |
| 2925 | + landlocked: false | |
| 2926 | + borders: | |
| 2927 | + - TLS | |
| 2928 | + - MYS | |
| 2929 | + - PNG | |
| 2930 | + languages: | |
| 2931 | + - Indonesian | |
| 2932 | + demonym: Indonesian | |
| 2933 | + status: country | |
| 2934 | + kind: country | |
| 2935 | +- id: IRN | |
| 2936 | + iso2: IR | |
| 2937 | + iso3: IRN | |
| 2938 | + iso_numeric: '364' | |
| 2939 | + slug: iran | |
| 2940 | + short_name: Iran | |
| 2941 | + official_name: Islamic Republic of Iran | |
| 2942 | + capital: Tehran | |
| 2943 | + continent: Asia | |
| 2944 | + region_wb: MEA | |
| 2945 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 2946 | + subregion: Southern Asia | |
| 2947 | + income_group: UMC | |
| 2948 | + income_group_name: Upper middle income | |
| 2949 | + currency_code: IRR | |
| 2950 | + currency_name: Iranian rial | |
| 2951 | + area_km2: 1648195 | |
| 2952 | + latitude: 35.6878 | |
| 2953 | + longitude: 51.4447 | |
| 2954 | + flag_emoji: 🇮🇷 | |
| 2955 | + un_member: true | |
| 2956 | + independent: true | |
| 2957 | + landlocked: false | |
| 2958 | + borders: | |
| 2959 | + - AFG | |
| 2960 | + - ARM | |
| 2961 | + - AZE | |
| 2962 | + - IRQ | |
| 2963 | + - PAK | |
| 2964 | + - TUR | |
| 2965 | + - TKM | |
| 2966 | + languages: | |
| 2967 | + - Persian (Farsi) | |
| 2968 | + demonym: Iranian | |
| 2969 | + status: country | |
| 2970 | + kind: country | |
| 2971 | +- id: IRQ | |
| 2972 | + iso2: IQ | |
| 2973 | + iso3: IRQ | |
| 2974 | + iso_numeric: '368' | |
| 2975 | + slug: iraq | |
| 2976 | + short_name: Iraq | |
| 2977 | + official_name: Republic of Iraq | |
| 2978 | + capital: Baghdad | |
| 2979 | + continent: Asia | |
| 2980 | + region_wb: MEA | |
| 2981 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 2982 | + subregion: Western Asia | |
| 2983 | + income_group: UMC | |
| 2984 | + income_group_name: Upper middle income | |
| 2985 | + currency_code: IQD | |
| 2986 | + currency_name: Iraqi dinar | |
| 2987 | + area_km2: 438317 | |
| 2988 | + latitude: 33.3302 | |
| 2989 | + longitude: 44.394 | |
| 2990 | + flag_emoji: 🇮🇶 | |
| 2991 | + un_member: true | |
| 2992 | + independent: true | |
| 2993 | + landlocked: false | |
| 2994 | + borders: | |
| 2995 | + - IRN | |
| 2996 | + - JOR | |
| 2997 | + - KWT | |
| 2998 | + - SAU | |
| 2999 | + - SYR | |
| 3000 | + - TUR | |
| 3001 | + languages: | |
| 3002 | + - Arabic | |
| 3003 | + - Aramaic | |
| 3004 | + - Sorani | |
| 3005 | + demonym: Iraqi | |
| 3006 | + status: country | |
| 3007 | + kind: country | |
| 3008 | +- id: IRL | |
| 3009 | + iso2: IE | |
| 3010 | + iso3: IRL | |
| 3011 | + iso_numeric: '372' | |
| 3012 | + slug: ireland | |
| 3013 | + short_name: Ireland | |
| 3014 | + official_name: Republic of Ireland | |
| 3015 | + capital: Dublin | |
| 3016 | + continent: Europe | |
| 3017 | + region_wb: ECS | |
| 3018 | + region_wb_name: Europe & Central Asia | |
| 3019 | + subregion: Northern Europe | |
| 3020 | + income_group: HIC | |
| 3021 | + income_group_name: High income | |
| 3022 | + currency_code: EUR | |
| 3023 | + currency_name: Euro | |
| 3024 | + area_km2: 70273 | |
| 3025 | + latitude: 53.3441 | |
| 3026 | + longitude: -6.26749 | |
| 3027 | + flag_emoji: 🇮🇪 | |
| 3028 | + un_member: true | |
| 3029 | + independent: true | |
| 3030 | + landlocked: false | |
| 3031 | + borders: | |
| 3032 | + - GBR | |
| 3033 | + languages: | |
| 3034 | + - English | |
| 3035 | + - Irish | |
| 3036 | + demonym: Irish | |
| 3037 | + status: country | |
| 3038 | + kind: country | |
| 3039 | +- id: IMN | |
| 3040 | + iso2: IM | |
| 3041 | + iso3: IMN | |
| 3042 | + iso_numeric: '833' | |
| 3043 | + slug: isle-of-man | |
| 3044 | + short_name: Isle of Man | |
| 3045 | + official_name: Isle of Man | |
| 3046 | + capital: Douglas | |
| 3047 | + continent: Europe | |
| 3048 | + region_wb: ECS | |
| 3049 | + region_wb_name: Europe & Central Asia | |
| 3050 | + subregion: Northern Europe | |
| 3051 | + income_group: HIC | |
| 3052 | + income_group_name: High income | |
| 3053 | + currency_code: GBP | |
| 3054 | + currency_name: British pound | |
| 3055 | + area_km2: 572 | |
| 3056 | + latitude: 54.1509 | |
| 3057 | + longitude: -4.47928 | |
| 3058 | + flag_emoji: 🇮🇲 | |
| 3059 | + un_member: false | |
| 3060 | + independent: false | |
| 3061 | + landlocked: false | |
| 3062 | + borders: [] | |
| 3063 | + languages: | |
| 3064 | + - English | |
| 3065 | + - Manx | |
| 3066 | + demonym: Manx | |
| 3067 | + status: territory | |
| 3068 | + kind: country | |
| 3069 | +- id: ISR | |
| 3070 | + iso2: IL | |
| 3071 | + iso3: ISR | |
| 3072 | + iso_numeric: '376' | |
| 3073 | + slug: israel | |
| 3074 | + short_name: Israel | |
| 3075 | + official_name: State of Israel | |
| 3076 | + capital: Jerusalem | |
| 3077 | + continent: Asia | |
| 3078 | + region_wb: MEA | |
| 3079 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3080 | + subregion: Western Asia | |
| 3081 | + income_group: HIC | |
| 3082 | + income_group_name: High income | |
| 3083 | + currency_code: ILS | |
| 3084 | + currency_name: Israeli new shekel | |
| 3085 | + area_km2: 20770 | |
| 3086 | + latitude: 31.7717 | |
| 3087 | + longitude: 35.2035 | |
| 3088 | + flag_emoji: 🇮🇱 | |
| 3089 | + un_member: true | |
| 3090 | + independent: true | |
| 3091 | + landlocked: false | |
| 3092 | + borders: | |
| 3093 | + - EGY | |
| 3094 | + - JOR | |
| 3095 | + - LBN | |
| 3096 | + - PSE | |
| 3097 | + - SYR | |
| 3098 | + languages: | |
| 3099 | + - Arabic | |
| 3100 | + - Hebrew | |
| 3101 | + demonym: Israeli | |
| 3102 | + status: country | |
| 3103 | + kind: country | |
| 3104 | +- id: ITA | |
| 3105 | + iso2: IT | |
| 3106 | + iso3: ITA | |
| 3107 | + iso_numeric: '380' | |
| 3108 | + slug: italy | |
| 3109 | + short_name: Italy | |
| 3110 | + official_name: Italian Republic | |
| 3111 | + capital: Rome | |
| 3112 | + continent: Europe | |
| 3113 | + region_wb: ECS | |
| 3114 | + region_wb_name: Europe & Central Asia | |
| 3115 | + subregion: Southern Europe | |
| 3116 | + income_group: HIC | |
| 3117 | + income_group_name: High income | |
| 3118 | + currency_code: EUR | |
| 3119 | + currency_name: Euro | |
| 3120 | + area_km2: 301336 | |
| 3121 | + latitude: 41.8955 | |
| 3122 | + longitude: 12.4823 | |
| 3123 | + flag_emoji: 🇮🇹 | |
| 3124 | + un_member: true | |
| 3125 | + independent: true | |
| 3126 | + landlocked: false | |
| 3127 | + borders: | |
| 3128 | + - AUT | |
| 3129 | + - FRA | |
| 3130 | + - SMR | |
| 3131 | + - SVN | |
| 3132 | + - CHE | |
| 3133 | + - VAT | |
| 3134 | + languages: | |
| 3135 | + - Italian | |
| 3136 | + demonym: Italian | |
| 3137 | + status: country | |
| 3138 | + kind: country | |
| 3139 | +- id: JAM | |
| 3140 | + iso2: JM | |
| 3141 | + iso3: JAM | |
| 3142 | + iso_numeric: '388' | |
| 3143 | + slug: jamaica | |
| 3144 | + short_name: Jamaica | |
| 3145 | + official_name: Jamaica | |
| 3146 | + capital: Kingston | |
| 3147 | + continent: Americas | |
| 3148 | + region_wb: LCN | |
| 3149 | + region_wb_name: Latin America & Caribbean | |
| 3150 | + subregion: Caribbean | |
| 3151 | + income_group: UMC | |
| 3152 | + income_group_name: Upper middle income | |
| 3153 | + currency_code: JMD | |
| 3154 | + currency_name: Jamaican dollar | |
| 3155 | + area_km2: 10991 | |
| 3156 | + latitude: 17.9927 | |
| 3157 | + longitude: -76.792 | |
| 3158 | + flag_emoji: 🇯🇲 | |
| 3159 | + un_member: true | |
| 3160 | + independent: true | |
| 3161 | + landlocked: false | |
| 3162 | + borders: [] | |
| 3163 | + languages: | |
| 3164 | + - English | |
| 3165 | + - Jamaican Patois | |
| 3166 | + demonym: Jamaican | |
| 3167 | + status: country | |
| 3168 | + kind: country | |
| 3169 | +- id: JPN | |
| 3170 | + iso2: JP | |
| 3171 | + iso3: JPN | |
| 3172 | + iso_numeric: '392' | |
| 3173 | + slug: japan | |
| 3174 | + short_name: Japan | |
| 3175 | + official_name: Japan | |
| 3176 | + capital: Tokyo | |
| 3177 | + continent: Asia | |
| 3178 | + region_wb: EAS | |
| 3179 | + region_wb_name: East Asia & Pacific | |
| 3180 | + subregion: Eastern Asia | |
| 3181 | + income_group: HIC | |
| 3182 | + income_group_name: High income | |
| 3183 | + currency_code: JPY | |
| 3184 | + currency_name: Japanese yen | |
| 3185 | + area_km2: 377930 | |
| 3186 | + latitude: 35.67 | |
| 3187 | + longitude: 139.77 | |
| 3188 | + flag_emoji: 🇯🇵 | |
| 3189 | + un_member: true | |
| 3190 | + independent: true | |
| 3191 | + landlocked: false | |
| 3192 | + borders: [] | |
| 3193 | + languages: | |
| 3194 | + - Japanese | |
| 3195 | + demonym: Japanese | |
| 3196 | + status: country | |
| 3197 | + kind: country | |
| 3198 | +- id: JOR | |
| 3199 | + iso2: JO | |
| 3200 | + iso3: JOR | |
| 3201 | + iso_numeric: '400' | |
| 3202 | + slug: jordan | |
| 3203 | + short_name: Jordan | |
| 3204 | + official_name: Hashemite Kingdom of Jordan | |
| 3205 | + capital: Amman | |
| 3206 | + continent: Asia | |
| 3207 | + region_wb: MEA | |
| 3208 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3209 | + subregion: Western Asia | |
| 3210 | + income_group: UMC | |
| 3211 | + income_group_name: Upper middle income | |
| 3212 | + currency_code: JOD | |
| 3213 | + currency_name: Jordanian dinar | |
| 3214 | + area_km2: 89342 | |
| 3215 | + latitude: 31.9497 | |
| 3216 | + longitude: 35.9263 | |
| 3217 | + flag_emoji: 🇯🇴 | |
| 3218 | + un_member: true | |
| 3219 | + independent: true | |
| 3220 | + landlocked: false | |
| 3221 | + borders: | |
| 3222 | + - IRQ | |
| 3223 | + - ISR | |
| 3224 | + - PSE | |
| 3225 | + - SAU | |
| 3226 | + - SYR | |
| 3227 | + languages: | |
| 3228 | + - Arabic | |
| 3229 | + demonym: Jordanian | |
| 3230 | + status: country | |
| 3231 | + kind: country | |
| 3232 | +- id: KAZ | |
| 3233 | + iso2: KZ | |
| 3234 | + iso3: KAZ | |
| 3235 | + iso_numeric: '398' | |
| 3236 | + slug: kazakhstan | |
| 3237 | + short_name: Kazakhstan | |
| 3238 | + official_name: Republic of Kazakhstan | |
| 3239 | + capital: Astana | |
| 3240 | + continent: Asia | |
| 3241 | + region_wb: ECS | |
| 3242 | + region_wb_name: Europe & Central Asia | |
| 3243 | + subregion: Central Asia | |
| 3244 | + income_group: UMC | |
| 3245 | + income_group_name: Upper middle income | |
| 3246 | + currency_code: KZT | |
| 3247 | + currency_name: Kazakhstani tenge | |
| 3248 | + area_km2: 2724900 | |
| 3249 | + latitude: 51.1879 | |
| 3250 | + longitude: 71.4382 | |
| 3251 | + flag_emoji: 🇰🇿 | |
| 3252 | + un_member: true | |
| 3253 | + independent: true | |
| 3254 | + landlocked: true | |
| 3255 | + borders: | |
| 3256 | + - CHN | |
| 3257 | + - KGZ | |
| 3258 | + - RUS | |
| 3259 | + - TKM | |
| 3260 | + - UZB | |
| 3261 | + languages: | |
| 3262 | + - Kazakh | |
| 3263 | + - Russian | |
| 3264 | + demonym: Kazakhstani | |
| 3265 | + status: country | |
| 3266 | + kind: country | |
| 3267 | +- id: KEN | |
| 3268 | + iso2: KE | |
| 3269 | + iso3: KEN | |
| 3270 | + iso_numeric: '404' | |
| 3271 | + slug: kenya | |
| 3272 | + short_name: Kenya | |
| 3273 | + official_name: Republic of Kenya | |
| 3274 | + capital: Nairobi | |
| 3275 | + continent: Africa | |
| 3276 | + region_wb: SSF | |
| 3277 | + region_wb_name: Sub-Saharan Africa | |
| 3278 | + subregion: Eastern Africa | |
| 3279 | + income_group: LMC | |
| 3280 | + income_group_name: Lower middle income | |
| 3281 | + currency_code: KES | |
| 3282 | + currency_name: Kenyan shilling | |
| 3283 | + area_km2: 580367 | |
| 3284 | + latitude: -1.27975 | |
| 3285 | + longitude: 36.8126 | |
| 3286 | + flag_emoji: 🇰🇪 | |
| 3287 | + un_member: true | |
| 3288 | + independent: true | |
| 3289 | + landlocked: false | |
| 3290 | + borders: | |
| 3291 | + - ETH | |
| 3292 | + - SOM | |
| 3293 | + - SSD | |
| 3294 | + - TZA | |
| 3295 | + - UGA | |
| 3296 | + languages: | |
| 3297 | + - English | |
| 3298 | + - Swahili | |
| 3299 | + demonym: Kenyan | |
| 3300 | + status: country | |
| 3301 | + kind: country | |
| 3302 | +- id: KIR | |
| 3303 | + iso2: KI | |
| 3304 | + iso3: KIR | |
| 3305 | + iso_numeric: '296' | |
| 3306 | + slug: kiribati | |
| 3307 | + short_name: Kiribati | |
| 3308 | + official_name: Independent and Sovereign Republic of Kiribati | |
| 3309 | + capital: South Tarawa | |
| 3310 | + continent: Oceania | |
| 3311 | + region_wb: EAS | |
| 3312 | + region_wb_name: East Asia & Pacific | |
| 3313 | + subregion: Micronesia | |
| 3314 | + income_group: LMC | |
| 3315 | + income_group_name: Lower middle income | |
| 3316 | + currency_code: AUD | |
| 3317 | + currency_name: Australian dollar | |
| 3318 | + area_km2: 811 | |
| 3319 | + latitude: 1.32905 | |
| 3320 | + longitude: 172.979 | |
| 3321 | + flag_emoji: 🇰🇮 | |
| 3322 | + un_member: true | |
| 3323 | + independent: true | |
| 3324 | + landlocked: false | |
| 3325 | + borders: [] | |
| 3326 | + languages: | |
| 3327 | + - English | |
| 3328 | + - Gilbertese | |
| 3329 | + demonym: I-Kiribati | |
| 3330 | + status: country | |
| 3331 | + kind: country | |
| 3332 | +- id: XKX | |
| 3333 | + iso2: XK | |
| 3334 | + iso3: XKX | |
| 3335 | + iso_numeric: null | |
| 3336 | + slug: kosovo | |
| 3337 | + short_name: Kosovo | |
| 3338 | + official_name: Republic of Kosovo | |
| 3339 | + capital: Pristina | |
| 3340 | + continent: Europe | |
| 3341 | + region_wb: ECS | |
| 3342 | + region_wb_name: Europe & Central Asia | |
| 3343 | + subregion: Southeast Europe | |
| 3344 | + income_group: UMC | |
| 3345 | + income_group_name: Upper middle income | |
| 3346 | + currency_code: EUR | |
| 3347 | + currency_name: Euro | |
| 3348 | + area_km2: 10908 | |
| 3349 | + latitude: 42.565 | |
| 3350 | + longitude: 20.926 | |
| 3351 | + flag_emoji: 🇽🇰 | |
| 3352 | + un_member: false | |
| 3353 | + independent: false | |
| 3354 | + landlocked: true | |
| 3355 | + borders: | |
| 3356 | + - ALB | |
| 3357 | + - MKD | |
| 3358 | + - MNE | |
| 3359 | + - SRB | |
| 3360 | + languages: | |
| 3361 | + - Albanian | |
| 3362 | + - Serbian | |
| 3363 | + demonym: Kosovar | |
| 3364 | + status: territory | |
| 3365 | + kind: country | |
| 3366 | +- id: KWT | |
| 3367 | + iso2: KW | |
| 3368 | + iso3: KWT | |
| 3369 | + iso_numeric: '414' | |
| 3370 | + slug: kuwait | |
| 3371 | + short_name: Kuwait | |
| 3372 | + official_name: State of Kuwait | |
| 3373 | + capital: Kuwait City | |
| 3374 | + continent: Asia | |
| 3375 | + region_wb: MEA | |
| 3376 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3377 | + subregion: Western Asia | |
| 3378 | + income_group: HIC | |
| 3379 | + income_group_name: High income | |
| 3380 | + currency_code: KWD | |
| 3381 | + currency_name: Kuwaiti dinar | |
| 3382 | + area_km2: 17818 | |
| 3383 | + latitude: 29.3721 | |
| 3384 | + longitude: 47.9824 | |
| 3385 | + flag_emoji: 🇰🇼 | |
| 3386 | + un_member: true | |
| 3387 | + independent: true | |
| 3388 | + landlocked: false | |
| 3389 | + borders: | |
| 3390 | + - IRQ | |
| 3391 | + - SAU | |
| 3392 | + languages: | |
| 3393 | + - Arabic | |
| 3394 | + demonym: Kuwaiti | |
| 3395 | + status: country | |
| 3396 | + kind: country | |
| 3397 | +- id: KGZ | |
| 3398 | + iso2: KG | |
| 3399 | + iso3: KGZ | |
| 3400 | + iso_numeric: '417' | |
| 3401 | + slug: kyrgyzstan | |
| 3402 | + short_name: Kyrgyzstan | |
| 3403 | + official_name: Kyrgyz Republic | |
| 3404 | + capital: Bishkek | |
| 3405 | + continent: Asia | |
| 3406 | + region_wb: ECS | |
| 3407 | + region_wb_name: Europe & Central Asia | |
| 3408 | + subregion: Central Asia | |
| 3409 | + income_group: LMC | |
| 3410 | + income_group_name: Lower middle income | |
| 3411 | + currency_code: KGS | |
| 3412 | + currency_name: Kyrgyzstani som | |
| 3413 | + area_km2: 199951 | |
| 3414 | + latitude: 42.8851 | |
| 3415 | + longitude: 74.6057 | |
| 3416 | + flag_emoji: 🇰🇬 | |
| 3417 | + un_member: true | |
| 3418 | + independent: true | |
| 3419 | + landlocked: true | |
| 3420 | + borders: | |
| 3421 | + - CHN | |
| 3422 | + - KAZ | |
| 3423 | + - TJK | |
| 3424 | + - UZB | |
| 3425 | + languages: | |
| 3426 | + - Kyrgyz | |
| 3427 | + - Russian | |
| 3428 | + demonym: Kirghiz | |
| 3429 | + status: country | |
| 3430 | + kind: country | |
| 3431 | +- id: LAO | |
| 3432 | + iso2: LA | |
| 3433 | + iso3: LAO | |
| 3434 | + iso_numeric: '418' | |
| 3435 | + slug: laos | |
| 3436 | + short_name: Laos | |
| 3437 | + official_name: Lao People's Democratic Republic | |
| 3438 | + capital: Vientiane | |
| 3439 | + continent: Asia | |
| 3440 | + region_wb: EAS | |
| 3441 | + region_wb_name: East Asia & Pacific | |
| 3442 | + subregion: South-Eastern Asia | |
| 3443 | + income_group: LMC | |
| 3444 | + income_group_name: Lower middle income | |
| 3445 | + currency_code: LAK | |
| 3446 | + currency_name: Lao kip | |
| 3447 | + area_km2: 236800 | |
| 3448 | + latitude: 18.5826 | |
| 3449 | + longitude: 102.177 | |
| 3450 | + flag_emoji: 🇱🇦 | |
| 3451 | + un_member: true | |
| 3452 | + independent: true | |
| 3453 | + landlocked: true | |
| 3454 | + borders: | |
| 3455 | + - MMR | |
| 3456 | + - KHM | |
| 3457 | + - CHN | |
| 3458 | + - THA | |
| 3459 | + - VNM | |
| 3460 | + languages: | |
| 3461 | + - Lao | |
| 3462 | + demonym: Laotian | |
| 3463 | + status: country | |
| 3464 | + kind: country | |
| 3465 | +- id: LVA | |
| 3466 | + iso2: LV | |
| 3467 | + iso3: LVA | |
| 3468 | + iso_numeric: '428' | |
| 3469 | + slug: latvia | |
| 3470 | + short_name: Latvia | |
| 3471 | + official_name: Republic of Latvia | |
| 3472 | + capital: Riga | |
| 3473 | + continent: Europe | |
| 3474 | + region_wb: ECS | |
| 3475 | + region_wb_name: Europe & Central Asia | |
| 3476 | + subregion: Northern Europe | |
| 3477 | + income_group: HIC | |
| 3478 | + income_group_name: High income | |
| 3479 | + currency_code: EUR | |
| 3480 | + currency_name: Euro | |
| 3481 | + area_km2: 64559 | |
| 3482 | + latitude: 56.9465 | |
| 3483 | + longitude: 24.1048 | |
| 3484 | + flag_emoji: 🇱🇻 | |
| 3485 | + un_member: true | |
| 3486 | + independent: true | |
| 3487 | + landlocked: false | |
| 3488 | + borders: | |
| 3489 | + - BLR | |
| 3490 | + - EST | |
| 3491 | + - LTU | |
| 3492 | + - RUS | |
| 3493 | + languages: | |
| 3494 | + - Latvian | |
| 3495 | + demonym: Latvian | |
| 3496 | + status: country | |
| 3497 | + kind: country | |
| 3498 | +- id: LBN | |
| 3499 | + iso2: LB | |
| 3500 | + iso3: LBN | |
| 3501 | + iso_numeric: '422' | |
| 3502 | + slug: lebanon | |
| 3503 | + short_name: Lebanon | |
| 3504 | + official_name: Lebanese Republic | |
| 3505 | + capital: Beirut | |
| 3506 | + continent: Asia | |
| 3507 | + region_wb: MEA | |
| 3508 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3509 | + subregion: Western Asia | |
| 3510 | + income_group: LMC | |
| 3511 | + income_group_name: Lower middle income | |
| 3512 | + currency_code: LBP | |
| 3513 | + currency_name: Lebanese pound | |
| 3514 | + area_km2: 10452 | |
| 3515 | + latitude: 33.8872 | |
| 3516 | + longitude: 35.5134 | |
| 3517 | + flag_emoji: 🇱🇧 | |
| 3518 | + un_member: true | |
| 3519 | + independent: true | |
| 3520 | + landlocked: false | |
| 3521 | + borders: | |
| 3522 | + - ISR | |
| 3523 | + - SYR | |
| 3524 | + languages: | |
| 3525 | + - Arabic | |
| 3526 | + - French | |
| 3527 | + demonym: Lebanese | |
| 3528 | + status: country | |
| 3529 | + kind: country | |
| 3530 | +- id: LSO | |
| 3531 | + iso2: LS | |
| 3532 | + iso3: LSO | |
| 3533 | + iso_numeric: '426' | |
| 3534 | + slug: lesotho | |
| 3535 | + short_name: Lesotho | |
| 3536 | + official_name: Kingdom of Lesotho | |
| 3537 | + capital: Maseru | |
| 3538 | + continent: Africa | |
| 3539 | + region_wb: SSF | |
| 3540 | + region_wb_name: Sub-Saharan Africa | |
| 3541 | + subregion: Southern Africa | |
| 3542 | + income_group: LMC | |
| 3543 | + income_group_name: Lower middle income | |
| 3544 | + currency_code: LSL | |
| 3545 | + currency_name: Lesotho loti | |
| 3546 | + area_km2: 30355 | |
| 3547 | + latitude: -29.5208 | |
| 3548 | + longitude: 27.7167 | |
| 3549 | + flag_emoji: 🇱🇸 | |
| 3550 | + un_member: true | |
| 3551 | + independent: true | |
| 3552 | + landlocked: true | |
| 3553 | + borders: | |
| 3554 | + - ZAF | |
| 3555 | + languages: | |
| 3556 | + - English | |
| 3557 | + - Sotho | |
| 3558 | + demonym: Mosotho | |
| 3559 | + status: country | |
| 3560 | + kind: country | |
| 3561 | +- id: LBR | |
| 3562 | + iso2: LR | |
| 3563 | + iso3: LBR | |
| 3564 | + iso_numeric: '430' | |
| 3565 | + slug: liberia | |
| 3566 | + short_name: Liberia | |
| 3567 | + official_name: Republic of Liberia | |
| 3568 | + capital: Monrovia | |
| 3569 | + continent: Africa | |
| 3570 | + region_wb: SSF | |
| 3571 | + region_wb_name: Sub-Saharan Africa | |
| 3572 | + subregion: Western Africa | |
| 3573 | + income_group: LIC | |
| 3574 | + income_group_name: Low income | |
| 3575 | + currency_code: LRD | |
| 3576 | + currency_name: Liberian dollar | |
| 3577 | + area_km2: 111369 | |
| 3578 | + latitude: 6.30039 | |
| 3579 | + longitude: -10.7957 | |
| 3580 | + flag_emoji: 🇱🇷 | |
| 3581 | + un_member: true | |
| 3582 | + independent: true | |
| 3583 | + landlocked: false | |
| 3584 | + borders: | |
| 3585 | + - GIN | |
| 3586 | + - CIV | |
| 3587 | + - SLE | |
| 3588 | + languages: | |
| 3589 | + - English | |
| 3590 | + demonym: Liberian | |
| 3591 | + status: country | |
| 3592 | + kind: country | |
| 3593 | +- id: LBY | |
| 3594 | + iso2: LY | |
| 3595 | + iso3: LBY | |
| 3596 | + iso_numeric: '434' | |
| 3597 | + slug: libya | |
| 3598 | + short_name: Libya | |
| 3599 | + official_name: State of Libya | |
| 3600 | + capital: Tripoli | |
| 3601 | + continent: Africa | |
| 3602 | + region_wb: MEA | |
| 3603 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3604 | + subregion: Northern Africa | |
| 3605 | + income_group: UMC | |
| 3606 | + income_group_name: Upper middle income | |
| 3607 | + currency_code: LYD | |
| 3608 | + currency_name: Libyan dinar | |
| 3609 | + area_km2: 1759540 | |
| 3610 | + latitude: 32.8578 | |
| 3611 | + longitude: 13.1072 | |
| 3612 | + flag_emoji: 🇱🇾 | |
| 3613 | + un_member: true | |
| 3614 | + independent: true | |
| 3615 | + landlocked: false | |
| 3616 | + borders: | |
| 3617 | + - DZA | |
| 3618 | + - TCD | |
| 3619 | + - EGY | |
| 3620 | + - NER | |
| 3621 | + - SDN | |
| 3622 | + - TUN | |
| 3623 | + languages: | |
| 3624 | + - Arabic | |
| 3625 | + demonym: Libyan | |
| 3626 | + status: country | |
| 3627 | + kind: country | |
| 3628 | +- id: LIE | |
| 3629 | + iso2: LI | |
| 3630 | + iso3: LIE | |
| 3631 | + iso_numeric: '438' | |
| 3632 | + slug: liechtenstein | |
| 3633 | + short_name: Liechtenstein | |
| 3634 | + official_name: Principality of Liechtenstein | |
| 3635 | + capital: Vaduz | |
| 3636 | + continent: Europe | |
| 3637 | + region_wb: ECS | |
| 3638 | + region_wb_name: Europe & Central Asia | |
| 3639 | + subregion: Western Europe | |
| 3640 | + income_group: HIC | |
| 3641 | + income_group_name: High income | |
| 3642 | + currency_code: CHF | |
| 3643 | + currency_name: Swiss franc | |
| 3644 | + area_km2: 160 | |
| 3645 | + latitude: 47.1411 | |
| 3646 | + longitude: 9.52148 | |
| 3647 | + flag_emoji: 🇱🇮 | |
| 3648 | + un_member: true | |
| 3649 | + independent: true | |
| 3650 | + landlocked: true | |
| 3651 | + borders: | |
| 3652 | + - AUT | |
| 3653 | + - CHE | |
| 3654 | + languages: | |
| 3655 | + - German | |
| 3656 | + demonym: Liechtensteiner | |
| 3657 | + status: country | |
| 3658 | + kind: country | |
| 3659 | +- id: LTU | |
| 3660 | + iso2: LT | |
| 3661 | + iso3: LTU | |
| 3662 | + iso_numeric: '440' | |
| 3663 | + slug: lithuania | |
| 3664 | + short_name: Lithuania | |
| 3665 | + official_name: Republic of Lithuania | |
| 3666 | + capital: Vilnius | |
| 3667 | + continent: Europe | |
| 3668 | + region_wb: ECS | |
| 3669 | + region_wb_name: Europe & Central Asia | |
| 3670 | + subregion: Northern Europe | |
| 3671 | + income_group: HIC | |
| 3672 | + income_group_name: High income | |
| 3673 | + currency_code: EUR | |
| 3674 | + currency_name: Euro | |
| 3675 | + area_km2: 65300 | |
| 3676 | + latitude: 54.6896 | |
| 3677 | + longitude: 25.2799 | |
| 3678 | + flag_emoji: 🇱🇹 | |
| 3679 | + un_member: true | |
| 3680 | + independent: true | |
| 3681 | + landlocked: false | |
| 3682 | + borders: | |
| 3683 | + - BLR | |
| 3684 | + - LVA | |
| 3685 | + - POL | |
| 3686 | + - RUS | |
| 3687 | + languages: | |
| 3688 | + - Lithuanian | |
| 3689 | + demonym: Lithuanian | |
| 3690 | + status: country | |
| 3691 | + kind: country | |
| 3692 | +- id: LUX | |
| 3693 | + iso2: LU | |
| 3694 | + iso3: LUX | |
| 3695 | + iso_numeric: '442' | |
| 3696 | + slug: luxembourg | |
| 3697 | + short_name: Luxembourg | |
| 3698 | + official_name: Grand Duchy of Luxembourg | |
| 3699 | + capital: Luxembourg | |
| 3700 | + continent: Europe | |
| 3701 | + region_wb: ECS | |
| 3702 | + region_wb_name: Europe & Central Asia | |
| 3703 | + subregion: Western Europe | |
| 3704 | + income_group: HIC | |
| 3705 | + income_group_name: High income | |
| 3706 | + currency_code: EUR | |
| 3707 | + currency_name: Euro | |
| 3708 | + area_km2: 2586 | |
| 3709 | + latitude: 49.61 | |
| 3710 | + longitude: 6.1296 | |
| 3711 | + flag_emoji: 🇱🇺 | |
| 3712 | + un_member: true | |
| 3713 | + independent: true | |
| 3714 | + landlocked: true | |
| 3715 | + borders: | |
| 3716 | + - BEL | |
| 3717 | + - FRA | |
| 3718 | + - DEU | |
| 3719 | + languages: | |
| 3720 | + - French | |
| 3721 | + - German | |
| 3722 | + - Luxembourgish | |
| 3723 | + demonym: Luxembourger | |
| 3724 | + status: country | |
| 3725 | + kind: country | |
| 3726 | +- id: MAC | |
| 3727 | + iso2: MO | |
| 3728 | + iso3: MAC | |
| 3729 | + iso_numeric: '446' | |
| 3730 | + slug: macao | |
| 3731 | + short_name: Macao | |
| 3732 | + official_name: Macao Special Administrative Region of the People's Republic of China | |
| 3733 | + capital: null | |
| 3734 | + continent: Asia | |
| 3735 | + region_wb: EAS | |
| 3736 | + region_wb_name: East Asia & Pacific | |
| 3737 | + subregion: Eastern Asia | |
| 3738 | + income_group: HIC | |
| 3739 | + income_group_name: High income | |
| 3740 | + currency_code: MOP | |
| 3741 | + currency_name: Macanese pataca | |
| 3742 | + area_km2: 30 | |
| 3743 | + latitude: 22.1667 | |
| 3744 | + longitude: 113.55 | |
| 3745 | + flag_emoji: 🇲🇴 | |
| 3746 | + un_member: false | |
| 3747 | + independent: false | |
| 3748 | + landlocked: false | |
| 3749 | + borders: | |
| 3750 | + - CHN | |
| 3751 | + languages: | |
| 3752 | + - Chinese | |
| 3753 | + - Portuguese | |
| 3754 | + demonym: Macanese | |
| 3755 | + status: territory | |
| 3756 | + kind: country | |
| 3757 | +- id: MDG | |
| 3758 | + iso2: MG | |
| 3759 | + iso3: MDG | |
| 3760 | + iso_numeric: '450' | |
| 3761 | + slug: madagascar | |
| 3762 | + short_name: Madagascar | |
| 3763 | + official_name: Republic of Madagascar | |
| 3764 | + capital: Antananarivo | |
| 3765 | + continent: Africa | |
| 3766 | + region_wb: SSF | |
| 3767 | + region_wb_name: Sub-Saharan Africa | |
| 3768 | + subregion: Eastern Africa | |
| 3769 | + income_group: LIC | |
| 3770 | + income_group_name: Low income | |
| 3771 | + currency_code: MGA | |
| 3772 | + currency_name: Malagasy ariary | |
| 3773 | + area_km2: 587041 | |
| 3774 | + latitude: -20.4667 | |
| 3775 | + longitude: 45.7167 | |
| 3776 | + flag_emoji: 🇲🇬 | |
| 3777 | + un_member: true | |
| 3778 | + independent: true | |
| 3779 | + landlocked: false | |
| 3780 | + borders: [] | |
| 3781 | + languages: | |
| 3782 | + - French | |
| 3783 | + - Malagasy | |
| 3784 | + demonym: Malagasy | |
| 3785 | + status: country | |
| 3786 | + kind: country | |
| 3787 | +- id: MWI | |
| 3788 | + iso2: MW | |
| 3789 | + iso3: MWI | |
| 3790 | + iso_numeric: '454' | |
| 3791 | + slug: malawi | |
| 3792 | + short_name: Malawi | |
| 3793 | + official_name: Republic of Malawi | |
| 3794 | + capital: Lilongwe | |
| 3795 | + continent: Africa | |
| 3796 | + region_wb: SSF | |
| 3797 | + region_wb_name: Sub-Saharan Africa | |
| 3798 | + subregion: Eastern Africa | |
| 3799 | + income_group: LIC | |
| 3800 | + income_group_name: Low income | |
| 3801 | + currency_code: MWK | |
| 3802 | + currency_name: Malawian kwacha | |
| 3803 | + area_km2: 118484 | |
| 3804 | + latitude: -13.9899 | |
| 3805 | + longitude: 33.7703 | |
| 3806 | + flag_emoji: 🇲🇼 | |
| 3807 | + un_member: true | |
| 3808 | + independent: true | |
| 3809 | + landlocked: true | |
| 3810 | + borders: | |
| 3811 | + - MOZ | |
| 3812 | + - TZA | |
| 3813 | + - ZMB | |
| 3814 | + languages: | |
| 3815 | + - Chewa | |
| 3816 | + - English | |
| 3817 | + demonym: Malawian | |
| 3818 | + status: country | |
| 3819 | + kind: country | |
| 3820 | +- id: MYS | |
| 3821 | + iso2: MY | |
| 3822 | + iso3: MYS | |
| 3823 | + iso_numeric: '458' | |
| 3824 | + slug: malaysia | |
| 3825 | + short_name: Malaysia | |
| 3826 | + official_name: Malaysia | |
| 3827 | + capital: Kuala Lumpur | |
| 3828 | + continent: Asia | |
| 3829 | + region_wb: EAS | |
| 3830 | + region_wb_name: East Asia & Pacific | |
| 3831 | + subregion: South-Eastern Asia | |
| 3832 | + income_group: UMC | |
| 3833 | + income_group_name: Upper middle income | |
| 3834 | + currency_code: MYR | |
| 3835 | + currency_name: Malaysian ringgit | |
| 3836 | + area_km2: 330803 | |
| 3837 | + latitude: 3.12433 | |
| 3838 | + longitude: 101.684 | |
| 3839 | + flag_emoji: 🇲🇾 | |
| 3840 | + un_member: true | |
| 3841 | + independent: true | |
| 3842 | + landlocked: false | |
| 3843 | + borders: | |
| 3844 | + - BRN | |
| 3845 | + - IDN | |
| 3846 | + - THA | |
| 3847 | + languages: | |
| 3848 | + - English | |
| 3849 | + - Malay | |
| 3850 | + demonym: Malaysian | |
| 3851 | + status: country | |
| 3852 | + kind: country | |
| 3853 | +- id: MDV | |
| 3854 | + iso2: MV | |
| 3855 | + iso3: MDV | |
| 3856 | + iso_numeric: '462' | |
| 3857 | + slug: maldives | |
| 3858 | + short_name: Maldives | |
| 3859 | + official_name: Republic of the Maldives | |
| 3860 | + capital: Malé | |
| 3861 | + continent: Asia | |
| 3862 | + region_wb: SAS | |
| 3863 | + region_wb_name: South Asia | |
| 3864 | + subregion: Southern Asia | |
| 3865 | + income_group: UMC | |
| 3866 | + income_group_name: Upper middle income | |
| 3867 | + currency_code: MVR | |
| 3868 | + currency_name: Maldivian rufiyaa | |
| 3869 | + area_km2: 300 | |
| 3870 | + latitude: 4.1742 | |
| 3871 | + longitude: 73.5109 | |
| 3872 | + flag_emoji: 🇲🇻 | |
| 3873 | + un_member: true | |
| 3874 | + independent: true | |
| 3875 | + landlocked: false | |
| 3876 | + borders: [] | |
| 3877 | + languages: | |
| 3878 | + - Maldivian | |
| 3879 | + demonym: Maldivan | |
| 3880 | + status: country | |
| 3881 | + kind: country | |
| 3882 | +- id: MLI | |
| 3883 | + iso2: ML | |
| 3884 | + iso3: MLI | |
| 3885 | + iso_numeric: '466' | |
| 3886 | + slug: mali | |
| 3887 | + short_name: Mali | |
| 3888 | + official_name: Republic of Mali | |
| 3889 | + capital: Bamako | |
| 3890 | + continent: Africa | |
| 3891 | + region_wb: SSF | |
| 3892 | + region_wb_name: Sub-Saharan Africa | |
| 3893 | + subregion: Western Africa | |
| 3894 | + income_group: LIC | |
| 3895 | + income_group_name: Low income | |
| 3896 | + currency_code: XOF | |
| 3897 | + currency_name: West African CFA franc | |
| 3898 | + area_km2: 1240192 | |
| 3899 | + latitude: 13.5667 | |
| 3900 | + longitude: -7.50034 | |
| 3901 | + flag_emoji: 🇲🇱 | |
| 3902 | + un_member: true | |
| 3903 | + independent: true | |
| 3904 | + landlocked: true | |
| 3905 | + borders: | |
| 3906 | + - DZA | |
| 3907 | + - BFA | |
| 3908 | + - GIN | |
| 3909 | + - CIV | |
| 3910 | + - MRT | |
| 3911 | + - NER | |
| 3912 | + - SEN | |
| 3913 | + languages: | |
| 3914 | + - French | |
| 3915 | + demonym: Malian | |
| 3916 | + status: country | |
| 3917 | + kind: country | |
| 3918 | +- id: MLT | |
| 3919 | + iso2: MT | |
| 3920 | + iso3: MLT | |
| 3921 | + iso_numeric: '470' | |
| 3922 | + slug: malta | |
| 3923 | + short_name: Malta | |
| 3924 | + official_name: Republic of Malta | |
| 3925 | + capital: Valletta | |
| 3926 | + continent: Europe | |
| 3927 | + region_wb: MEA | |
| 3928 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 3929 | + subregion: Southern Europe | |
| 3930 | + income_group: HIC | |
| 3931 | + income_group_name: High income | |
| 3932 | + currency_code: EUR | |
| 3933 | + currency_name: Euro | |
| 3934 | + area_km2: 316 | |
| 3935 | + latitude: 35.9042 | |
| 3936 | + longitude: 14.5189 | |
| 3937 | + flag_emoji: 🇲🇹 | |
| 3938 | + un_member: true | |
| 3939 | + independent: true | |
| 3940 | + landlocked: false | |
| 3941 | + borders: [] | |
| 3942 | + languages: | |
| 3943 | + - English | |
| 3944 | + - Maltese | |
| 3945 | + demonym: Maltese | |
| 3946 | + status: country | |
| 3947 | + kind: country | |
| 3948 | +- id: MHL | |
| 3949 | + iso2: MH | |
| 3950 | + iso3: MHL | |
| 3951 | + iso_numeric: '584' | |
| 3952 | + slug: marshall-islands | |
| 3953 | + short_name: Marshall Islands | |
| 3954 | + official_name: Republic of the Marshall Islands | |
| 3955 | + capital: Majuro | |
| 3956 | + continent: Oceania | |
| 3957 | + region_wb: EAS | |
| 3958 | + region_wb_name: East Asia & Pacific | |
| 3959 | + subregion: Micronesia | |
| 3960 | + income_group: UMC | |
| 3961 | + income_group_name: Upper middle income | |
| 3962 | + currency_code: USD | |
| 3963 | + currency_name: United States dollar | |
| 3964 | + area_km2: 181 | |
| 3965 | + latitude: 7.11046 | |
| 3966 | + longitude: 171.135 | |
| 3967 | + flag_emoji: 🇲🇭 | |
| 3968 | + un_member: true | |
| 3969 | + independent: true | |
| 3970 | + landlocked: false | |
| 3971 | + borders: [] | |
| 3972 | + languages: | |
| 3973 | + - English | |
| 3974 | + - Marshallese | |
| 3975 | + demonym: Marshallese | |
| 3976 | + status: country | |
| 3977 | + kind: country | |
| 3978 | +- id: MRT | |
| 3979 | + iso2: MR | |
| 3980 | + iso3: MRT | |
| 3981 | + iso_numeric: '478' | |
| 3982 | + slug: mauritania | |
| 3983 | + short_name: Mauritania | |
| 3984 | + official_name: Islamic Republic of Mauritania | |
| 3985 | + capital: Nouakchott | |
| 3986 | + continent: Africa | |
| 3987 | + region_wb: SSF | |
| 3988 | + region_wb_name: Sub-Saharan Africa | |
| 3989 | + subregion: Western Africa | |
| 3990 | + income_group: LMC | |
| 3991 | + income_group_name: Lower middle income | |
| 3992 | + currency_code: MRU | |
| 3993 | + currency_name: Mauritanian ouguiya | |
| 3994 | + area_km2: 1030700 | |
| 3995 | + latitude: 18.2367 | |
| 3996 | + longitude: -15.9824 | |
| 3997 | + flag_emoji: 🇲🇷 | |
| 3998 | + un_member: true | |
| 3999 | + independent: true | |
| 4000 | + landlocked: false | |
| 4001 | + borders: | |
| 4002 | + - DZA | |
| 4003 | + - MLI | |
| 4004 | + - SEN | |
| 4005 | + - ESH | |
| 4006 | + languages: | |
| 4007 | + - Arabic | |
| 4008 | + demonym: Mauritanian | |
| 4009 | + status: country | |
| 4010 | + kind: country | |
| 4011 | +- id: MUS | |
| 4012 | + iso2: MU | |
| 4013 | + iso3: MUS | |
| 4014 | + iso_numeric: '480' | |
| 4015 | + slug: mauritius | |
| 4016 | + short_name: Mauritius | |
| 4017 | + official_name: Republic of Mauritius | |
| 4018 | + capital: Port Louis | |
| 4019 | + continent: Africa | |
| 4020 | + region_wb: SSF | |
| 4021 | + region_wb_name: Sub-Saharan Africa | |
| 4022 | + subregion: Eastern Africa | |
| 4023 | + income_group: UMC | |
| 4024 | + income_group_name: Upper middle income | |
| 4025 | + currency_code: MUR | |
| 4026 | + currency_name: Mauritian rupee | |
| 4027 | + area_km2: 2040 | |
| 4028 | + latitude: -20.1605 | |
| 4029 | + longitude: 57.4977 | |
| 4030 | + flag_emoji: 🇲🇺 | |
| 4031 | + un_member: true | |
| 4032 | + independent: true | |
| 4033 | + landlocked: false | |
| 4034 | + borders: [] | |
| 4035 | + languages: | |
| 4036 | + - English | |
| 4037 | + - French | |
| 4038 | + - Mauritian Creole | |
| 4039 | + demonym: Mauritian | |
| 4040 | + status: country | |
| 4041 | + kind: country | |
| 4042 | +- id: MEX | |
| 4043 | + iso2: MX | |
| 4044 | + iso3: MEX | |
| 4045 | + iso_numeric: '484' | |
| 4046 | + slug: mexico | |
| 4047 | + short_name: Mexico | |
| 4048 | + official_name: United Mexican States | |
| 4049 | + capital: Mexico City | |
| 4050 | + continent: Americas | |
| 4051 | + region_wb: LCN | |
| 4052 | + region_wb_name: Latin America & Caribbean | |
| 4053 | + subregion: North America | |
| 4054 | + income_group: UMC | |
| 4055 | + income_group_name: Upper middle income | |
| 4056 | + currency_code: MXN | |
| 4057 | + currency_name: Mexican peso | |
| 4058 | + area_km2: 1964375 | |
| 4059 | + latitude: 19.427 | |
| 4060 | + longitude: -99.1276 | |
| 4061 | + flag_emoji: 🇲🇽 | |
| 4062 | + un_member: true | |
| 4063 | + independent: true | |
| 4064 | + landlocked: false | |
| 4065 | + borders: | |
| 4066 | + - BLZ | |
| 4067 | + - GTM | |
| 4068 | + - USA | |
| 4069 | + languages: | |
| 4070 | + - Spanish | |
| 4071 | + demonym: Mexican | |
| 4072 | + status: country | |
| 4073 | + kind: country | |
| 4074 | +- id: FSM | |
| 4075 | + iso2: FM | |
| 4076 | + iso3: FSM | |
| 4077 | + iso_numeric: '583' | |
| 4078 | + slug: micronesia | |
| 4079 | + short_name: Micronesia | |
| 4080 | + official_name: Federated States of Micronesia | |
| 4081 | + capital: Palikir | |
| 4082 | + continent: Oceania | |
| 4083 | + region_wb: EAS | |
| 4084 | + region_wb_name: East Asia & Pacific | |
| 4085 | + subregion: Micronesia | |
| 4086 | + income_group: UMC | |
| 4087 | + income_group_name: Upper middle income | |
| 4088 | + currency_code: null | |
| 4089 | + currency_name: null | |
| 4090 | + area_km2: 702 | |
| 4091 | + latitude: 6.91771 | |
| 4092 | + longitude: 158.185 | |
| 4093 | + flag_emoji: 🇫🇲 | |
| 4094 | + un_member: true | |
| 4095 | + independent: true | |
| 4096 | + landlocked: false | |
| 4097 | + borders: [] | |
| 4098 | + languages: | |
| 4099 | + - English | |
| 4100 | + demonym: Micronesian | |
| 4101 | + status: country | |
| 4102 | + kind: country | |
| 4103 | +- id: MDA | |
| 4104 | + iso2: MD | |
| 4105 | + iso3: MDA | |
| 4106 | + iso_numeric: '498' | |
| 4107 | + slug: moldova | |
| 4108 | + short_name: Moldova | |
| 4109 | + official_name: Republic of Moldova | |
| 4110 | + capital: Chișinău | |
| 4111 | + continent: Europe | |
| 4112 | + region_wb: ECS | |
| 4113 | + region_wb_name: Europe & Central Asia | |
| 4114 | + subregion: Eastern Europe | |
| 4115 | + income_group: UMC | |
| 4116 | + income_group_name: Upper middle income | |
| 4117 | + currency_code: MDL | |
| 4118 | + currency_name: Moldovan leu | |
| 4119 | + area_km2: 33846 | |
| 4120 | + latitude: 47.0167 | |
| 4121 | + longitude: 28.8497 | |
| 4122 | + flag_emoji: 🇲🇩 | |
| 4123 | + un_member: true | |
| 4124 | + independent: true | |
| 4125 | + landlocked: true | |
| 4126 | + borders: | |
| 4127 | + - ROU | |
| 4128 | + - UKR | |
| 4129 | + languages: | |
| 4130 | + - Moldavian | |
| 4131 | + demonym: Moldovan | |
| 4132 | + status: country | |
| 4133 | + kind: country | |
| 4134 | +- id: MCO | |
| 4135 | + iso2: MC | |
| 4136 | + iso3: MCO | |
| 4137 | + iso_numeric: '492' | |
| 4138 | + slug: monaco | |
| 4139 | + short_name: Monaco | |
| 4140 | + official_name: Principality of Monaco | |
| 4141 | + capital: Monaco | |
| 4142 | + continent: Europe | |
| 4143 | + region_wb: ECS | |
| 4144 | + region_wb_name: Europe & Central Asia | |
| 4145 | + subregion: Western Europe | |
| 4146 | + income_group: HIC | |
| 4147 | + income_group_name: High income | |
| 4148 | + currency_code: EUR | |
| 4149 | + currency_name: Euro | |
| 4150 | + area_km2: 2.02 | |
| 4151 | + latitude: 43.7325 | |
| 4152 | + longitude: 7.41891 | |
| 4153 | + flag_emoji: 🇲🇨 | |
| 4154 | + un_member: true | |
| 4155 | + independent: true | |
| 4156 | + landlocked: false | |
| 4157 | + borders: | |
| 4158 | + - FRA | |
| 4159 | + languages: | |
| 4160 | + - French | |
| 4161 | + demonym: Monegasque | |
| 4162 | + status: country | |
| 4163 | + kind: country | |
| 4164 | +- id: MNG | |
| 4165 | + iso2: MN | |
| 4166 | + iso3: MNG | |
| 4167 | + iso_numeric: '496' | |
| 4168 | + slug: mongolia | |
| 4169 | + short_name: Mongolia | |
| 4170 | + official_name: Mongolia | |
| 4171 | + capital: Ulan Bator | |
| 4172 | + continent: Asia | |
| 4173 | + region_wb: EAS | |
| 4174 | + region_wb_name: East Asia & Pacific | |
| 4175 | + subregion: Eastern Asia | |
| 4176 | + income_group: UMC | |
| 4177 | + income_group_name: Upper middle income | |
| 4178 | + currency_code: MNT | |
| 4179 | + currency_name: Mongolian tögrög | |
| 4180 | + area_km2: 1564110 | |
| 4181 | + latitude: 47.9129 | |
| 4182 | + longitude: 106.937 | |
| 4183 | + flag_emoji: 🇲🇳 | |
| 4184 | + un_member: true | |
| 4185 | + independent: true | |
| 4186 | + landlocked: true | |
| 4187 | + borders: | |
| 4188 | + - CHN | |
| 4189 | + - RUS | |
| 4190 | + languages: | |
| 4191 | + - Mongolian | |
| 4192 | + demonym: Mongolian | |
| 4193 | + status: country | |
| 4194 | + kind: country | |
| 4195 | +- id: MNE | |
| 4196 | + iso2: ME | |
| 4197 | + iso3: MNE | |
| 4198 | + iso_numeric: '499' | |
| 4199 | + slug: montenegro | |
| 4200 | + short_name: Montenegro | |
| 4201 | + official_name: Montenegro | |
| 4202 | + capital: Podgorica | |
| 4203 | + continent: Europe | |
| 4204 | + region_wb: ECS | |
| 4205 | + region_wb_name: Europe & Central Asia | |
| 4206 | + subregion: Southeast Europe | |
| 4207 | + income_group: UMC | |
| 4208 | + income_group_name: Upper middle income | |
| 4209 | + currency_code: EUR | |
| 4210 | + currency_name: Euro | |
| 4211 | + area_km2: 13812 | |
| 4212 | + latitude: 42.4602 | |
| 4213 | + longitude: 19.2595 | |
| 4214 | + flag_emoji: 🇲🇪 | |
| 4215 | + un_member: true | |
| 4216 | + independent: true | |
| 4217 | + landlocked: false | |
| 4218 | + borders: | |
| 4219 | + - ALB | |
| 4220 | + - BIH | |
| 4221 | + - HRV | |
| 4222 | + - UNK | |
| 4223 | + - SRB | |
| 4224 | + languages: | |
| 4225 | + - Montenegrin | |
| 4226 | + demonym: Montenegrin | |
| 4227 | + status: country | |
| 4228 | + kind: country | |
| 4229 | +- id: MAR | |
| 4230 | + iso2: MA | |
| 4231 | + iso3: MAR | |
| 4232 | + iso_numeric: '504' | |
| 4233 | + slug: morocco | |
| 4234 | + short_name: Morocco | |
| 4235 | + official_name: Kingdom of Morocco | |
| 4236 | + capital: Rabat | |
| 4237 | + continent: Africa | |
| 4238 | + region_wb: MEA | |
| 4239 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 4240 | + subregion: Northern Africa | |
| 4241 | + income_group: LMC | |
| 4242 | + income_group_name: Lower middle income | |
| 4243 | + currency_code: MAD | |
| 4244 | + currency_name: Moroccan dirham | |
| 4245 | + area_km2: 446550 | |
| 4246 | + latitude: 33.9905 | |
| 4247 | + longitude: -6.8704 | |
| 4248 | + flag_emoji: 🇲🇦 | |
| 4249 | + un_member: true | |
| 4250 | + independent: true | |
| 4251 | + landlocked: false | |
| 4252 | + borders: | |
| 4253 | + - DZA | |
| 4254 | + - ESH | |
| 4255 | + - ESP | |
| 4256 | + languages: | |
| 4257 | + - Arabic | |
| 4258 | + - Berber | |
| 4259 | + demonym: Moroccan | |
| 4260 | + status: country | |
| 4261 | + kind: country | |
| 4262 | +- id: MOZ | |
| 4263 | + iso2: MZ | |
| 4264 | + iso3: MOZ | |
| 4265 | + iso_numeric: '508' | |
| 4266 | + slug: mozambique | |
| 4267 | + short_name: Mozambique | |
| 4268 | + official_name: Republic of Mozambique | |
| 4269 | + capital: Maputo | |
| 4270 | + continent: Africa | |
| 4271 | + region_wb: SSF | |
| 4272 | + region_wb_name: Sub-Saharan Africa | |
| 4273 | + subregion: Eastern Africa | |
| 4274 | + income_group: LIC | |
| 4275 | + income_group_name: Low income | |
| 4276 | + currency_code: MZN | |
| 4277 | + currency_name: Mozambican metical | |
| 4278 | + area_km2: 801590 | |
| 4279 | + latitude: -25.9664 | |
| 4280 | + longitude: 32.5713 | |
| 4281 | + flag_emoji: 🇲🇿 | |
| 4282 | + un_member: true | |
| 4283 | + independent: true | |
| 4284 | + landlocked: false | |
| 4285 | + borders: | |
| 4286 | + - MWI | |
| 4287 | + - ZAF | |
| 4288 | + - SWZ | |
| 4289 | + - TZA | |
| 4290 | + - ZMB | |
| 4291 | + - ZWE | |
| 4292 | + languages: | |
| 4293 | + - Portuguese | |
| 4294 | + demonym: Mozambican | |
| 4295 | + status: country | |
| 4296 | + kind: country | |
| 4297 | +- id: MMR | |
| 4298 | + iso2: MM | |
| 4299 | + iso3: MMR | |
| 4300 | + iso_numeric: '104' | |
| 4301 | + slug: myanmar | |
| 4302 | + short_name: Myanmar | |
| 4303 | + official_name: Republic of the Union of Myanmar | |
| 4304 | + capital: Naypyidaw | |
| 4305 | + continent: Asia | |
| 4306 | + region_wb: EAS | |
| 4307 | + region_wb_name: East Asia & Pacific | |
| 4308 | + subregion: South-Eastern Asia | |
| 4309 | + income_group: LMC | |
| 4310 | + income_group_name: Lower middle income | |
| 4311 | + currency_code: MMK | |
| 4312 | + currency_name: Burmese kyat | |
| 4313 | + area_km2: 676578 | |
| 4314 | + latitude: 21.914 | |
| 4315 | + longitude: 95.9562 | |
| 4316 | + flag_emoji: 🇲🇲 | |
| 4317 | + un_member: true | |
| 4318 | + independent: true | |
| 4319 | + landlocked: false | |
| 4320 | + borders: | |
| 4321 | + - BGD | |
| 4322 | + - CHN | |
| 4323 | + - IND | |
| 4324 | + - LAO | |
| 4325 | + - THA | |
| 4326 | + languages: | |
| 4327 | + - Burmese | |
| 4328 | + demonym: Burmese | |
| 4329 | + status: country | |
| 4330 | + kind: country | |
| 4331 | +- id: NAM | |
| 4332 | + iso2: NA | |
| 4333 | + iso3: NAM | |
| 4334 | + iso_numeric: '516' | |
| 4335 | + slug: namibia | |
| 4336 | + short_name: Namibia | |
| 4337 | + official_name: Republic of Namibia | |
| 4338 | + capital: Windhoek | |
| 4339 | + continent: Africa | |
| 4340 | + region_wb: SSF | |
| 4341 | + region_wb_name: Sub-Saharan Africa | |
| 4342 | + subregion: Southern Africa | |
| 4343 | + income_group: LMC | |
| 4344 | + income_group_name: Lower middle income | |
| 4345 | + currency_code: NAD | |
| 4346 | + currency_name: Namibian dollar | |
| 4347 | + area_km2: 825615 | |
| 4348 | + latitude: -22.5648 | |
| 4349 | + longitude: 17.0931 | |
| 4350 | + flag_emoji: 🇳🇦 | |
| 4351 | + un_member: true | |
| 4352 | + independent: true | |
| 4353 | + landlocked: false | |
| 4354 | + borders: | |
| 4355 | + - AGO | |
| 4356 | + - BWA | |
| 4357 | + - ZAF | |
| 4358 | + - ZMB | |
| 4359 | + languages: | |
| 4360 | + - Afrikaans | |
| 4361 | + - English | |
| 4362 | + - German | |
| 4363 | + - Herero | |
| 4364 | + - Khoekhoe | |
| 4365 | + - Kwangali | |
| 4366 | + - Lozi | |
| 4367 | + - Ndonga | |
| 4368 | + - Tswana | |
| 4369 | + demonym: Namibian | |
| 4370 | + status: country | |
| 4371 | + kind: country | |
| 4372 | +- id: NRU | |
| 4373 | + iso2: NR | |
| 4374 | + iso3: NRU | |
| 4375 | + iso_numeric: '520' | |
| 4376 | + slug: nauru | |
| 4377 | + short_name: Nauru | |
| 4378 | + official_name: Republic of Nauru | |
| 4379 | + capital: Yaren | |
| 4380 | + continent: Oceania | |
| 4381 | + region_wb: EAS | |
| 4382 | + region_wb_name: East Asia & Pacific | |
| 4383 | + subregion: Micronesia | |
| 4384 | + income_group: HIC | |
| 4385 | + income_group_name: High income | |
| 4386 | + currency_code: AUD | |
| 4387 | + currency_name: Australian dollar | |
| 4388 | + area_km2: 21 | |
| 4389 | + latitude: -0.5477 | |
| 4390 | + longitude: 166.920867 | |
| 4391 | + flag_emoji: 🇳🇷 | |
| 4392 | + un_member: true | |
| 4393 | + independent: true | |
| 4394 | + landlocked: false | |
| 4395 | + borders: [] | |
| 4396 | + languages: | |
| 4397 | + - English | |
| 4398 | + - Nauru | |
| 4399 | + demonym: Nauruan | |
| 4400 | + status: country | |
| 4401 | + kind: country | |
| 4402 | +- id: NPL | |
| 4403 | + iso2: NP | |
| 4404 | + iso3: NPL | |
| 4405 | + iso_numeric: '524' | |
| 4406 | + slug: nepal | |
| 4407 | + short_name: Nepal | |
| 4408 | + official_name: Federal Democratic Republic of Nepal | |
| 4409 | + capital: Kathmandu | |
| 4410 | + continent: Asia | |
| 4411 | + region_wb: SAS | |
| 4412 | + region_wb_name: South Asia | |
| 4413 | + subregion: Southern Asia | |
| 4414 | + income_group: LMC | |
| 4415 | + income_group_name: Lower middle income | |
| 4416 | + currency_code: NPR | |
| 4417 | + currency_name: Nepalese rupee | |
| 4418 | + area_km2: 147181 | |
| 4419 | + latitude: 27.6939 | |
| 4420 | + longitude: 85.3157 | |
| 4421 | + flag_emoji: 🇳🇵 | |
| 4422 | + un_member: true | |
| 4423 | + independent: true | |
| 4424 | + landlocked: true | |
| 4425 | + borders: | |
| 4426 | + - CHN | |
| 4427 | + - IND | |
| 4428 | + languages: | |
| 4429 | + - Nepali | |
| 4430 | + demonym: Nepalese | |
| 4431 | + status: country | |
| 4432 | + kind: country | |
| 4433 | +- id: NLD | |
| 4434 | + iso2: NL | |
| 4435 | + iso3: NLD | |
| 4436 | + iso_numeric: '528' | |
| 4437 | + slug: netherlands | |
| 4438 | + short_name: Netherlands | |
| 4439 | + official_name: Kingdom of the Netherlands | |
| 4440 | + capital: Amsterdam | |
| 4441 | + continent: Europe | |
| 4442 | + region_wb: ECS | |
| 4443 | + region_wb_name: Europe & Central Asia | |
| 4444 | + subregion: Western Europe | |
| 4445 | + income_group: HIC | |
| 4446 | + income_group_name: High income | |
| 4447 | + currency_code: EUR | |
| 4448 | + currency_name: Euro | |
| 4449 | + area_km2: 41850 | |
| 4450 | + latitude: 52.3738 | |
| 4451 | + longitude: 4.89095 | |
| 4452 | + flag_emoji: 🇳🇱 | |
| 4453 | + un_member: true | |
| 4454 | + independent: true | |
| 4455 | + landlocked: false | |
| 4456 | + borders: | |
| 4457 | + - BEL | |
| 4458 | + - DEU | |
| 4459 | + languages: | |
| 4460 | + - Dutch | |
| 4461 | + demonym: Dutch | |
| 4462 | + status: country | |
| 4463 | + kind: country | |
| 4464 | +- id: NCL | |
| 4465 | + iso2: NC | |
| 4466 | + iso3: NCL | |
| 4467 | + iso_numeric: '540' | |
| 4468 | + slug: new-caledonia | |
| 4469 | + short_name: New Caledonia | |
| 4470 | + official_name: New Caledonia | |
| 4471 | + capital: Nouméa | |
| 4472 | + continent: Oceania | |
| 4473 | + region_wb: EAS | |
| 4474 | + region_wb_name: East Asia & Pacific | |
| 4475 | + subregion: Melanesia | |
| 4476 | + income_group: HIC | |
| 4477 | + income_group_name: High income | |
| 4478 | + currency_code: XPF | |
| 4479 | + currency_name: CFP franc | |
| 4480 | + area_km2: 18575 | |
| 4481 | + latitude: -22.2677 | |
| 4482 | + longitude: 166.464 | |
| 4483 | + flag_emoji: 🇳🇨 | |
| 4484 | + un_member: false | |
| 4485 | + independent: false | |
| 4486 | + landlocked: false | |
| 4487 | + borders: [] | |
| 4488 | + languages: | |
| 4489 | + - French | |
| 4490 | + demonym: New Caledonian | |
| 4491 | + status: territory | |
| 4492 | + kind: country | |
| 4493 | +- id: NZL | |
| 4494 | + iso2: NZ | |
| 4495 | + iso3: NZL | |
| 4496 | + iso_numeric: '554' | |
| 4497 | + slug: new-zealand | |
| 4498 | + short_name: New Zealand | |
| 4499 | + official_name: New Zealand | |
| 4500 | + capital: Wellington | |
| 4501 | + continent: Oceania | |
| 4502 | + region_wb: EAS | |
| 4503 | + region_wb_name: East Asia & Pacific | |
| 4504 | + subregion: Australia and New Zealand | |
| 4505 | + income_group: HIC | |
| 4506 | + income_group_name: High income | |
| 4507 | + currency_code: NZD | |
| 4508 | + currency_name: New Zealand dollar | |
| 4509 | + area_km2: 270467 | |
| 4510 | + latitude: -41.2865 | |
| 4511 | + longitude: 174.776 | |
| 4512 | + flag_emoji: 🇳🇿 | |
| 4513 | + un_member: true | |
| 4514 | + independent: true | |
| 4515 | + landlocked: false | |
| 4516 | + borders: [] | |
| 4517 | + languages: | |
| 4518 | + - English | |
| 4519 | + - Māori | |
| 4520 | + - New Zealand Sign Language | |
| 4521 | + demonym: New Zealander | |
| 4522 | + status: country | |
| 4523 | + kind: country | |
| 4524 | +- id: NIC | |
| 4525 | + iso2: NI | |
| 4526 | + iso3: NIC | |
| 4527 | + iso_numeric: '558' | |
| 4528 | + slug: nicaragua | |
| 4529 | + short_name: Nicaragua | |
| 4530 | + official_name: Republic of Nicaragua | |
| 4531 | + capital: Managua | |
| 4532 | + continent: Americas | |
| 4533 | + region_wb: LCN | |
| 4534 | + region_wb_name: Latin America & Caribbean | |
| 4535 | + subregion: Central America | |
| 4536 | + income_group: LMC | |
| 4537 | + income_group_name: Lower middle income | |
| 4538 | + currency_code: NIO | |
| 4539 | + currency_name: Nicaraguan córdoba | |
| 4540 | + area_km2: 130373 | |
| 4541 | + latitude: 12.1475 | |
| 4542 | + longitude: -86.2734 | |
| 4543 | + flag_emoji: 🇳🇮 | |
| 4544 | + un_member: true | |
| 4545 | + independent: true | |
| 4546 | + landlocked: false | |
| 4547 | + borders: | |
| 4548 | + - CRI | |
| 4549 | + - HND | |
| 4550 | + languages: | |
| 4551 | + - Spanish | |
| 4552 | + demonym: Nicaraguan | |
| 4553 | + status: country | |
| 4554 | + kind: country | |
| 4555 | +- id: NER | |
| 4556 | + iso2: NE | |
| 4557 | + iso3: NER | |
| 4558 | + iso_numeric: '562' | |
| 4559 | + slug: niger | |
| 4560 | + short_name: Niger | |
| 4561 | + official_name: Republic of Niger | |
| 4562 | + capital: Niamey | |
| 4563 | + continent: Africa | |
| 4564 | + region_wb: SSF | |
| 4565 | + region_wb_name: Sub-Saharan Africa | |
| 4566 | + subregion: Western Africa | |
| 4567 | + income_group: LIC | |
| 4568 | + income_group_name: Low income | |
| 4569 | + currency_code: XOF | |
| 4570 | + currency_name: West African CFA franc | |
| 4571 | + area_km2: 1267000 | |
| 4572 | + latitude: 13.514 | |
| 4573 | + longitude: 2.1073 | |
| 4574 | + flag_emoji: 🇳🇪 | |
| 4575 | + un_member: true | |
| 4576 | + independent: true | |
| 4577 | + landlocked: true | |
| 4578 | + borders: | |
| 4579 | + - DZA | |
| 4580 | + - BEN | |
| 4581 | + - BFA | |
| 4582 | + - TCD | |
| 4583 | + - LBY | |
| 4584 | + - MLI | |
| 4585 | + - NGA | |
| 4586 | + languages: | |
| 4587 | + - French | |
| 4588 | + demonym: Nigerien | |
| 4589 | + status: country | |
| 4590 | + kind: country | |
| 4591 | +- id: NGA | |
| 4592 | + iso2: NG | |
| 4593 | + iso3: NGA | |
| 4594 | + iso_numeric: '566' | |
| 4595 | + slug: nigeria | |
| 4596 | + short_name: Nigeria | |
| 4597 | + official_name: Federal Republic of Nigeria | |
| 4598 | + capital: Abuja | |
| 4599 | + continent: Africa | |
| 4600 | + region_wb: SSF | |
| 4601 | + region_wb_name: Sub-Saharan Africa | |
| 4602 | + subregion: Western Africa | |
| 4603 | + income_group: LMC | |
| 4604 | + income_group_name: Lower middle income | |
| 4605 | + currency_code: NGN | |
| 4606 | + currency_name: Nigerian naira | |
| 4607 | + area_km2: 923768 | |
| 4608 | + latitude: 9.05804 | |
| 4609 | + longitude: 7.48906 | |
| 4610 | + flag_emoji: 🇳🇬 | |
| 4611 | + un_member: true | |
| 4612 | + independent: true | |
| 4613 | + landlocked: false | |
| 4614 | + borders: | |
| 4615 | + - BEN | |
| 4616 | + - CMR | |
| 4617 | + - TCD | |
| 4618 | + - NER | |
| 4619 | + languages: | |
| 4620 | + - English | |
| 4621 | + demonym: Nigerian | |
| 4622 | + status: country | |
| 4623 | + kind: country | |
| 4624 | +- id: PRK | |
| 4625 | + iso2: KP | |
| 4626 | + iso3: PRK | |
| 4627 | + iso_numeric: '408' | |
| 4628 | + slug: north-korea | |
| 4629 | + short_name: North Korea | |
| 4630 | + official_name: Democratic People's Republic of Korea | |
| 4631 | + capital: Pyongyang | |
| 4632 | + continent: Asia | |
| 4633 | + region_wb: EAS | |
| 4634 | + region_wb_name: East Asia & Pacific | |
| 4635 | + subregion: Eastern Asia | |
| 4636 | + income_group: LIC | |
| 4637 | + income_group_name: Low income | |
| 4638 | + currency_code: KPW | |
| 4639 | + currency_name: North Korean won | |
| 4640 | + area_km2: 120538 | |
| 4641 | + latitude: 39.0319 | |
| 4642 | + longitude: 125.754 | |
| 4643 | + flag_emoji: 🇰🇵 | |
| 4644 | + un_member: true | |
| 4645 | + independent: true | |
| 4646 | + landlocked: false | |
| 4647 | + borders: | |
| 4648 | + - CHN | |
| 4649 | + - KOR | |
| 4650 | + - RUS | |
| 4651 | + languages: | |
| 4652 | + - Korean | |
| 4653 | + demonym: North Korean | |
| 4654 | + status: country | |
| 4655 | + kind: country | |
| 4656 | +- id: MKD | |
| 4657 | + iso2: MK | |
| 4658 | + iso3: MKD | |
| 4659 | + iso_numeric: '807' | |
| 4660 | + slug: north-macedonia | |
| 4661 | + short_name: North Macedonia | |
| 4662 | + official_name: Republic of North Macedonia | |
| 4663 | + capital: Skopje | |
| 4664 | + continent: Europe | |
| 4665 | + region_wb: ECS | |
| 4666 | + region_wb_name: Europe & Central Asia | |
| 4667 | + subregion: Southeast Europe | |
| 4668 | + income_group: UMC | |
| 4669 | + income_group_name: Upper middle income | |
| 4670 | + currency_code: MKD | |
| 4671 | + currency_name: denar | |
| 4672 | + area_km2: 25713 | |
| 4673 | + latitude: 42.0024 | |
| 4674 | + longitude: 21.4361 | |
| 4675 | + flag_emoji: 🇲🇰 | |
| 4676 | + un_member: true | |
| 4677 | + independent: true | |
| 4678 | + landlocked: true | |
| 4679 | + borders: | |
| 4680 | + - ALB | |
| 4681 | + - BGR | |
| 4682 | + - GRC | |
| 4683 | + - UNK | |
| 4684 | + - SRB | |
| 4685 | + languages: | |
| 4686 | + - Macedonian | |
| 4687 | + demonym: Macedonian | |
| 4688 | + status: country | |
| 4689 | + kind: country | |
| 4690 | +- id: MNP | |
| 4691 | + iso2: MP | |
| 4692 | + iso3: MNP | |
| 4693 | + iso_numeric: '580' | |
| 4694 | + slug: northern-mariana-islands | |
| 4695 | + short_name: Northern Mariana Islands | |
| 4696 | + official_name: Commonwealth of the Northern Mariana Islands | |
| 4697 | + capital: Saipan | |
| 4698 | + continent: Oceania | |
| 4699 | + region_wb: EAS | |
| 4700 | + region_wb_name: East Asia & Pacific | |
| 4701 | + subregion: Micronesia | |
| 4702 | + income_group: HIC | |
| 4703 | + income_group_name: High income | |
| 4704 | + currency_code: USD | |
| 4705 | + currency_name: United States dollar | |
| 4706 | + area_km2: 464 | |
| 4707 | + latitude: 15.1935 | |
| 4708 | + longitude: 145.765 | |
| 4709 | + flag_emoji: 🇲🇵 | |
| 4710 | + un_member: false | |
| 4711 | + independent: false | |
| 4712 | + landlocked: false | |
| 4713 | + borders: [] | |
| 4714 | + languages: | |
| 4715 | + - Carolinian | |
| 4716 | + - Chamorro | |
| 4717 | + - English | |
| 4718 | + demonym: American | |
| 4719 | + status: territory | |
| 4720 | + kind: country | |
| 4721 | +- id: NOR | |
| 4722 | + iso2: 'NO' | |
| 4723 | + iso3: NOR | |
| 4724 | + iso_numeric: '578' | |
| 4725 | + slug: norway | |
| 4726 | + short_name: Norway | |
| 4727 | + official_name: Kingdom of Norway | |
| 4728 | + capital: Oslo | |
| 4729 | + continent: Europe | |
| 4730 | + region_wb: ECS | |
| 4731 | + region_wb_name: Europe & Central Asia | |
| 4732 | + subregion: Northern Europe | |
| 4733 | + income_group: HIC | |
| 4734 | + income_group_name: High income | |
| 4735 | + currency_code: NOK | |
| 4736 | + currency_name: Norwegian krone | |
| 4737 | + area_km2: 323802 | |
| 4738 | + latitude: 59.9138 | |
| 4739 | + longitude: 10.7387 | |
| 4740 | + flag_emoji: 🇳🇴 | |
| 4741 | + un_member: true | |
| 4742 | + independent: true | |
| 4743 | + landlocked: false | |
| 4744 | + borders: | |
| 4745 | + - FIN | |
| 4746 | + - SWE | |
| 4747 | + - RUS | |
| 4748 | + languages: | |
| 4749 | + - Norwegian Bokmål | |
| 4750 | + - Norwegian Nynorsk | |
| 4751 | + - Sami | |
| 4752 | + demonym: Norwegian | |
| 4753 | + status: country | |
| 4754 | + kind: country | |
| 4755 | +- id: OMN | |
| 4756 | + iso2: OM | |
| 4757 | + iso3: OMN | |
| 4758 | + iso_numeric: '512' | |
| 4759 | + slug: oman | |
| 4760 | + short_name: Oman | |
| 4761 | + official_name: Sultanate of Oman | |
| 4762 | + capital: Muscat | |
| 4763 | + continent: Asia | |
| 4764 | + region_wb: MEA | |
| 4765 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 4766 | + subregion: Western Asia | |
| 4767 | + income_group: HIC | |
| 4768 | + income_group_name: High income | |
| 4769 | + currency_code: OMR | |
| 4770 | + currency_name: Omani rial | |
| 4771 | + area_km2: 309500 | |
| 4772 | + latitude: 23.6105 | |
| 4773 | + longitude: 58.5874 | |
| 4774 | + flag_emoji: 🇴🇲 | |
| 4775 | + un_member: true | |
| 4776 | + independent: true | |
| 4777 | + landlocked: false | |
| 4778 | + borders: | |
| 4779 | + - SAU | |
| 4780 | + - ARE | |
| 4781 | + - YEM | |
| 4782 | + languages: | |
| 4783 | + - Arabic | |
| 4784 | + demonym: Omani | |
| 4785 | + status: country | |
| 4786 | + kind: country | |
| 4787 | +- id: PAK | |
| 4788 | + iso2: PK | |
| 4789 | + iso3: PAK | |
| 4790 | + iso_numeric: '586' | |
| 4791 | + slug: pakistan | |
| 4792 | + short_name: Pakistan | |
| 4793 | + official_name: Islamic Republic of Pakistan | |
| 4794 | + capital: Islamabad | |
| 4795 | + continent: Asia | |
| 4796 | + region_wb: MEA | |
| 4797 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 4798 | + subregion: Southern Asia | |
| 4799 | + income_group: LMC | |
| 4800 | + income_group_name: Lower middle income | |
| 4801 | + currency_code: PKR | |
| 4802 | + currency_name: Pakistani rupee | |
| 4803 | + area_km2: 881912 | |
| 4804 | + latitude: 30.5167 | |
| 4805 | + longitude: 72.8 | |
| 4806 | + flag_emoji: 🇵🇰 | |
| 4807 | + un_member: true | |
| 4808 | + independent: true | |
| 4809 | + landlocked: false | |
| 4810 | + borders: | |
| 4811 | + - AFG | |
| 4812 | + - CHN | |
| 4813 | + - IND | |
| 4814 | + - IRN | |
| 4815 | + languages: | |
| 4816 | + - English | |
| 4817 | + - Urdu | |
| 4818 | + demonym: Pakistani | |
| 4819 | + status: country | |
| 4820 | + kind: country | |
| 4821 | +- id: PLW | |
| 4822 | + iso2: PW | |
| 4823 | + iso3: PLW | |
| 4824 | + iso_numeric: '585' | |
| 4825 | + slug: palau | |
| 4826 | + short_name: Palau | |
| 4827 | + official_name: Republic of Palau | |
| 4828 | + capital: Ngerulmud | |
| 4829 | + continent: Oceania | |
| 4830 | + region_wb: EAS | |
| 4831 | + region_wb_name: East Asia & Pacific | |
| 4832 | + subregion: Micronesia | |
| 4833 | + income_group: HIC | |
| 4834 | + income_group_name: High income | |
| 4835 | + currency_code: USD | |
| 4836 | + currency_name: United States dollar | |
| 4837 | + area_km2: 459 | |
| 4838 | + latitude: 7.34194 | |
| 4839 | + longitude: 134.479 | |
| 4840 | + flag_emoji: 🇵🇼 | |
| 4841 | + un_member: true | |
| 4842 | + independent: true | |
| 4843 | + landlocked: false | |
| 4844 | + borders: [] | |
| 4845 | + languages: | |
| 4846 | + - English | |
| 4847 | + - Palauan | |
| 4848 | + demonym: Palauan | |
| 4849 | + status: country | |
| 4850 | + kind: country | |
| 4851 | +- id: PSE | |
| 4852 | + iso2: PS | |
| 4853 | + iso3: PSE | |
| 4854 | + iso_numeric: '275' | |
| 4855 | + slug: palestine | |
| 4856 | + short_name: Palestine | |
| 4857 | + official_name: State of Palestine | |
| 4858 | + capital: Ramallah | |
| 4859 | + continent: Asia | |
| 4860 | + region_wb: MEA | |
| 4861 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 4862 | + subregion: Western Asia | |
| 4863 | + income_group: LMC | |
| 4864 | + income_group_name: Lower middle income | |
| 4865 | + currency_code: EGP | |
| 4866 | + currency_name: Egyptian pound | |
| 4867 | + area_km2: 6220 | |
| 4868 | + latitude: 31.9 | |
| 4869 | + longitude: 35.2 | |
| 4870 | + flag_emoji: 🇵🇸 | |
| 4871 | + un_member: false | |
| 4872 | + independent: false | |
| 4873 | + landlocked: false | |
| 4874 | + borders: | |
| 4875 | + - ISR | |
| 4876 | + - EGY | |
| 4877 | + - JOR | |
| 4878 | + languages: | |
| 4879 | + - Arabic | |
| 4880 | + demonym: Palestinian | |
| 4881 | + status: territory | |
| 4882 | + kind: country | |
| 4883 | +- id: PAN | |
| 4884 | + iso2: PA | |
| 4885 | + iso3: PAN | |
| 4886 | + iso_numeric: '591' | |
| 4887 | + slug: panama | |
| 4888 | + short_name: Panama | |
| 4889 | + official_name: Republic of Panama | |
| 4890 | + capital: Panama City | |
| 4891 | + continent: Americas | |
| 4892 | + region_wb: LCN | |
| 4893 | + region_wb_name: Latin America & Caribbean | |
| 4894 | + subregion: Central America | |
| 4895 | + income_group: HIC | |
| 4896 | + income_group_name: High income | |
| 4897 | + currency_code: PAB | |
| 4898 | + currency_name: Panamanian balboa | |
| 4899 | + area_km2: 75417 | |
| 4900 | + latitude: 8.99427 | |
| 4901 | + longitude: -79.5188 | |
| 4902 | + flag_emoji: 🇵🇦 | |
| 4903 | + un_member: true | |
| 4904 | + independent: true | |
| 4905 | + landlocked: false | |
| 4906 | + borders: | |
| 4907 | + - COL | |
| 4908 | + - CRI | |
| 4909 | + languages: | |
| 4910 | + - Spanish | |
| 4911 | + demonym: Panamanian | |
| 4912 | + status: country | |
| 4913 | + kind: country | |
| 4914 | +- id: PNG | |
| 4915 | + iso2: PG | |
| 4916 | + iso3: PNG | |
| 4917 | + iso_numeric: '598' | |
| 4918 | + slug: papua-new-guinea | |
| 4919 | + short_name: Papua New Guinea | |
| 4920 | + official_name: Independent State of Papua New Guinea | |
| 4921 | + capital: Port Moresby | |
| 4922 | + continent: Oceania | |
| 4923 | + region_wb: EAS | |
| 4924 | + region_wb_name: East Asia & Pacific | |
| 4925 | + subregion: Melanesia | |
| 4926 | + income_group: LMC | |
| 4927 | + income_group_name: Lower middle income | |
| 4928 | + currency_code: PGK | |
| 4929 | + currency_name: Papua New Guinean kina | |
| 4930 | + area_km2: 462840 | |
| 4931 | + latitude: -9.47357 | |
| 4932 | + longitude: 147.194 | |
| 4933 | + flag_emoji: 🇵🇬 | |
| 4934 | + un_member: true | |
| 4935 | + independent: true | |
| 4936 | + landlocked: false | |
| 4937 | + borders: | |
| 4938 | + - IDN | |
| 4939 | + languages: | |
| 4940 | + - English | |
| 4941 | + - Hiri Motu | |
| 4942 | + - Tok Pisin | |
| 4943 | + demonym: Papua New Guinean | |
| 4944 | + status: country | |
| 4945 | + kind: country | |
| 4946 | +- id: PRY | |
| 4947 | + iso2: PY | |
| 4948 | + iso3: PRY | |
| 4949 | + iso_numeric: '600' | |
| 4950 | + slug: paraguay | |
| 4951 | + short_name: Paraguay | |
| 4952 | + official_name: Republic of Paraguay | |
| 4953 | + capital: Asunción | |
| 4954 | + continent: Americas | |
| 4955 | + region_wb: LCN | |
| 4956 | + region_wb_name: Latin America & Caribbean | |
| 4957 | + subregion: South America | |
| 4958 | + income_group: UMC | |
| 4959 | + income_group_name: Upper middle income | |
| 4960 | + currency_code: PYG | |
| 4961 | + currency_name: Paraguayan guaraní | |
| 4962 | + area_km2: 406752 | |
| 4963 | + latitude: -25.3005 | |
| 4964 | + longitude: -57.6362 | |
| 4965 | + flag_emoji: 🇵🇾 | |
| 4966 | + un_member: true | |
| 4967 | + independent: true | |
| 4968 | + landlocked: true | |
| 4969 | + borders: | |
| 4970 | + - ARG | |
| 4971 | + - BOL | |
| 4972 | + - BRA | |
| 4973 | + languages: | |
| 4974 | + - Guaraní | |
| 4975 | + - Spanish | |
| 4976 | + demonym: Paraguayan | |
| 4977 | + status: country | |
| 4978 | + kind: country | |
| 4979 | +- id: PER | |
| 4980 | + iso2: PE | |
| 4981 | + iso3: PER | |
| 4982 | + iso_numeric: '604' | |
| 4983 | + slug: peru | |
| 4984 | + short_name: Peru | |
| 4985 | + official_name: Republic of Peru | |
| 4986 | + capital: Lima | |
| 4987 | + continent: Americas | |
| 4988 | + region_wb: LCN | |
| 4989 | + region_wb_name: Latin America & Caribbean | |
| 4990 | + subregion: South America | |
| 4991 | + income_group: UMC | |
| 4992 | + income_group_name: Upper middle income | |
| 4993 | + currency_code: PEN | |
| 4994 | + currency_name: Peruvian sol | |
| 4995 | + area_km2: 1285216 | |
| 4996 | + latitude: -12.0931 | |
| 4997 | + longitude: -77.0465 | |
| 4998 | + flag_emoji: 🇵🇪 | |
| 4999 | + un_member: true | |
| 5000 | + independent: true | |
| 5001 | + landlocked: false | |
| 5002 | + borders: | |
| 5003 | + - BOL | |
| 5004 | + - BRA | |
| 5005 | + - CHL | |
| 5006 | + - COL | |
| 5007 | + - ECU | |
| 5008 | + languages: | |
| 5009 | + - Aymara | |
| 5010 | + - Quechua | |
| 5011 | + - Spanish | |
| 5012 | + demonym: Peruvian | |
| 5013 | + status: country | |
| 5014 | + kind: country | |
| 5015 | +- id: PHL | |
| 5016 | + iso2: PH | |
| 5017 | + iso3: PHL | |
| 5018 | + iso_numeric: '608' | |
| 5019 | + slug: philippines | |
| 5020 | + short_name: Philippines | |
| 5021 | + official_name: Republic of the Philippines | |
| 5022 | + capital: Manila | |
| 5023 | + continent: Asia | |
| 5024 | + region_wb: EAS | |
| 5025 | + region_wb_name: East Asia & Pacific | |
| 5026 | + subregion: South-Eastern Asia | |
| 5027 | + income_group: UMC | |
| 5028 | + income_group_name: Upper middle income | |
| 5029 | + currency_code: PHP | |
| 5030 | + currency_name: Philippine peso | |
| 5031 | + area_km2: 342353 | |
| 5032 | + latitude: 14.5515 | |
| 5033 | + longitude: 121.035 | |
| 5034 | + flag_emoji: 🇵🇭 | |
| 5035 | + un_member: true | |
| 5036 | + independent: true | |
| 5037 | + landlocked: false | |
| 5038 | + borders: [] | |
| 5039 | + languages: | |
| 5040 | + - English | |
| 5041 | + - Filipino | |
| 5042 | + demonym: Filipino | |
| 5043 | + status: country | |
| 5044 | + kind: country | |
| 5045 | +- id: POL | |
| 5046 | + iso2: PL | |
| 5047 | + iso3: POL | |
| 5048 | + iso_numeric: '616' | |
| 5049 | + slug: poland | |
| 5050 | + short_name: Poland | |
| 5051 | + official_name: Republic of Poland | |
| 5052 | + capital: Warsaw | |
| 5053 | + continent: Europe | |
| 5054 | + region_wb: ECS | |
| 5055 | + region_wb_name: Europe & Central Asia | |
| 5056 | + subregion: Central Europe | |
| 5057 | + income_group: HIC | |
| 5058 | + income_group_name: High income | |
| 5059 | + currency_code: PLN | |
| 5060 | + currency_name: Polish złoty | |
| 5061 | + area_km2: 312679 | |
| 5062 | + latitude: 52.26 | |
| 5063 | + longitude: 21.02 | |
| 5064 | + flag_emoji: 🇵🇱 | |
| 5065 | + un_member: true | |
| 5066 | + independent: true | |
| 5067 | + landlocked: false | |
| 5068 | + borders: | |
| 5069 | + - BLR | |
| 5070 | + - CZE | |
| 5071 | + - DEU | |
| 5072 | + - LTU | |
| 5073 | + - RUS | |
| 5074 | + - SVK | |
| 5075 | + - UKR | |
| 5076 | + languages: | |
| 5077 | + - Polish | |
| 5078 | + demonym: Polish | |
| 5079 | + status: country | |
| 5080 | + kind: country | |
| 5081 | +- id: PRT | |
| 5082 | + iso2: PT | |
| 5083 | + iso3: PRT | |
| 5084 | + iso_numeric: '620' | |
| 5085 | + slug: portugal | |
| 5086 | + short_name: Portugal | |
| 5087 | + official_name: Portuguese Republic | |
| 5088 | + capital: Lisbon | |
| 5089 | + continent: Europe | |
| 5090 | + region_wb: ECS | |
| 5091 | + region_wb_name: Europe & Central Asia | |
| 5092 | + subregion: Southern Europe | |
| 5093 | + income_group: HIC | |
| 5094 | + income_group_name: High income | |
| 5095 | + currency_code: EUR | |
| 5096 | + currency_name: Euro | |
| 5097 | + area_km2: 92090 | |
| 5098 | + latitude: 38.7072 | |
| 5099 | + longitude: -9.13552 | |
| 5100 | + flag_emoji: 🇵🇹 | |
| 5101 | + un_member: true | |
| 5102 | + independent: true | |
| 5103 | + landlocked: false | |
| 5104 | + borders: | |
| 5105 | + - ESP | |
| 5106 | + languages: | |
| 5107 | + - Portuguese | |
| 5108 | + demonym: Portuguese | |
| 5109 | + status: country | |
| 5110 | + kind: country | |
| 5111 | +- id: PRI | |
| 5112 | + iso2: PR | |
| 5113 | + iso3: PRI | |
| 5114 | + iso_numeric: '630' | |
| 5115 | + slug: puerto-rico | |
| 5116 | + short_name: Puerto Rico | |
| 5117 | + official_name: Commonwealth of Puerto Rico | |
| 5118 | + capital: San Juan | |
| 5119 | + continent: Americas | |
| 5120 | + region_wb: LCN | |
| 5121 | + region_wb_name: Latin America & Caribbean | |
| 5122 | + subregion: Caribbean | |
| 5123 | + income_group: HIC | |
| 5124 | + income_group_name: High income | |
| 5125 | + currency_code: USD | |
| 5126 | + currency_name: United States dollar | |
| 5127 | + area_km2: 8870 | |
| 5128 | + latitude: 18.23 | |
| 5129 | + longitude: -66.0 | |
| 5130 | + flag_emoji: 🇵🇷 | |
| 5131 | + un_member: false | |
| 5132 | + independent: false | |
| 5133 | + landlocked: false | |
| 5134 | + borders: [] | |
| 5135 | + languages: | |
| 5136 | + - English | |
| 5137 | + - Spanish | |
| 5138 | + demonym: Puerto Rican | |
| 5139 | + status: territory | |
| 5140 | + kind: country | |
| 5141 | +- id: QAT | |
| 5142 | + iso2: QA | |
| 5143 | + iso3: QAT | |
| 5144 | + iso_numeric: '634' | |
| 5145 | + slug: qatar | |
| 5146 | + short_name: Qatar | |
| 5147 | + official_name: State of Qatar | |
| 5148 | + capital: Doha | |
| 5149 | + continent: Asia | |
| 5150 | + region_wb: MEA | |
| 5151 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 5152 | + subregion: Western Asia | |
| 5153 | + income_group: HIC | |
| 5154 | + income_group_name: High income | |
| 5155 | + currency_code: QAR | |
| 5156 | + currency_name: Qatari riyal | |
| 5157 | + area_km2: 11586 | |
| 5158 | + latitude: 25.2948 | |
| 5159 | + longitude: 51.5082 | |
| 5160 | + flag_emoji: 🇶🇦 | |
| 5161 | + un_member: true | |
| 5162 | + independent: true | |
| 5163 | + landlocked: false | |
| 5164 | + borders: | |
| 5165 | + - SAU | |
| 5166 | + languages: | |
| 5167 | + - Arabic | |
| 5168 | + demonym: Qatari | |
| 5169 | + status: country | |
| 5170 | + kind: country | |
| 5171 | +- id: COG | |
| 5172 | + iso2: CG | |
| 5173 | + iso3: COG | |
| 5174 | + iso_numeric: '178' | |
| 5175 | + slug: republic-of-the-congo | |
| 5176 | + short_name: Republic of the Congo | |
| 5177 | + official_name: Republic of the Congo | |
| 5178 | + capital: Brazzaville | |
| 5179 | + continent: Africa | |
| 5180 | + region_wb: SSF | |
| 5181 | + region_wb_name: Sub-Saharan Africa | |
| 5182 | + subregion: Middle Africa | |
| 5183 | + income_group: LMC | |
| 5184 | + income_group_name: Lower middle income | |
| 5185 | + currency_code: XAF | |
| 5186 | + currency_name: Central African CFA franc | |
| 5187 | + area_km2: 342000 | |
| 5188 | + latitude: -4.2767 | |
| 5189 | + longitude: 15.2662 | |
| 5190 | + flag_emoji: 🇨🇬 | |
| 5191 | + un_member: true | |
| 5192 | + independent: true | |
| 5193 | + landlocked: false | |
| 5194 | + borders: | |
| 5195 | + - AGO | |
| 5196 | + - CMR | |
| 5197 | + - CAF | |
| 5198 | + - COD | |
| 5199 | + - GAB | |
| 5200 | + languages: | |
| 5201 | + - French | |
| 5202 | + - Kikongo | |
| 5203 | + - Lingala | |
| 5204 | + demonym: Congolese | |
| 5205 | + status: country | |
| 5206 | + kind: country | |
| 5207 | +- id: ROU | |
| 5208 | + iso2: RO | |
| 5209 | + iso3: ROU | |
| 5210 | + iso_numeric: '642' | |
| 5211 | + slug: romania | |
| 5212 | + short_name: Romania | |
| 5213 | + official_name: Romania | |
| 5214 | + capital: Bucharest | |
| 5215 | + continent: Europe | |
| 5216 | + region_wb: ECS | |
| 5217 | + region_wb_name: Europe & Central Asia | |
| 5218 | + subregion: Southeast Europe | |
| 5219 | + income_group: HIC | |
| 5220 | + income_group_name: High income | |
| 5221 | + currency_code: RON | |
| 5222 | + currency_name: Romanian leu | |
| 5223 | + area_km2: 238391 | |
| 5224 | + latitude: 44.4479 | |
| 5225 | + longitude: 26.0979 | |
| 5226 | + flag_emoji: 🇷🇴 | |
| 5227 | + un_member: true | |
| 5228 | + independent: true | |
| 5229 | + landlocked: false | |
| 5230 | + borders: | |
| 5231 | + - BGR | |
| 5232 | + - HUN | |
| 5233 | + - MDA | |
| 5234 | + - SRB | |
| 5235 | + - UKR | |
| 5236 | + languages: | |
| 5237 | + - Romanian | |
| 5238 | + demonym: Romanian | |
| 5239 | + status: country | |
| 5240 | + kind: country | |
| 5241 | +- id: RUS | |
| 5242 | + iso2: RU | |
| 5243 | + iso3: RUS | |
| 5244 | + iso_numeric: '643' | |
| 5245 | + slug: russia | |
| 5246 | + short_name: Russia | |
| 5247 | + official_name: Russian Federation | |
| 5248 | + capital: Moscow | |
| 5249 | + continent: Europe | |
| 5250 | + region_wb: ECS | |
| 5251 | + region_wb_name: Europe & Central Asia | |
| 5252 | + subregion: Eastern Europe | |
| 5253 | + income_group: HIC | |
| 5254 | + income_group_name: High income | |
| 5255 | + currency_code: RUB | |
| 5256 | + currency_name: Russian ruble | |
| 5257 | + area_km2: 17098242 | |
| 5258 | + latitude: 55.7558 | |
| 5259 | + longitude: 37.6176 | |
| 5260 | + flag_emoji: 🇷🇺 | |
| 5261 | + un_member: true | |
| 5262 | + independent: true | |
| 5263 | + landlocked: false | |
| 5264 | + borders: | |
| 5265 | + - AZE | |
| 5266 | + - BLR | |
| 5267 | + - CHN | |
| 5268 | + - EST | |
| 5269 | + - FIN | |
| 5270 | + - GEO | |
| 5271 | + - KAZ | |
| 5272 | + - PRK | |
| 5273 | + - LVA | |
| 5274 | + - LTU | |
| 5275 | + - MNG | |
| 5276 | + - NOR | |
| 5277 | + - POL | |
| 5278 | + - UKR | |
| 5279 | + languages: | |
| 5280 | + - Russian | |
| 5281 | + demonym: Russian | |
| 5282 | + status: country | |
| 5283 | + kind: country | |
| 5284 | +- id: RWA | |
| 5285 | + iso2: RW | |
| 5286 | + iso3: RWA | |
| 5287 | + iso_numeric: '646' | |
| 5288 | + slug: rwanda | |
| 5289 | + short_name: Rwanda | |
| 5290 | + official_name: Republic of Rwanda | |
| 5291 | + capital: Kigali | |
| 5292 | + continent: Africa | |
| 5293 | + region_wb: SSF | |
| 5294 | + region_wb_name: Sub-Saharan Africa | |
| 5295 | + subregion: Eastern Africa | |
| 5296 | + income_group: LIC | |
| 5297 | + income_group_name: Low income | |
| 5298 | + currency_code: RWF | |
| 5299 | + currency_name: Rwandan franc | |
| 5300 | + area_km2: 26338 | |
| 5301 | + latitude: -1.95325 | |
| 5302 | + longitude: 30.0587 | |
| 5303 | + flag_emoji: 🇷🇼 | |
| 5304 | + un_member: true | |
| 5305 | + independent: true | |
| 5306 | + landlocked: true | |
| 5307 | + borders: | |
| 5308 | + - BDI | |
| 5309 | + - COD | |
| 5310 | + - TZA | |
| 5311 | + - UGA | |
| 5312 | + languages: | |
| 5313 | + - English | |
| 5314 | + - French | |
| 5315 | + - Kinyarwanda | |
| 5316 | + demonym: Rwandan | |
| 5317 | + status: country | |
| 5318 | + kind: country | |
| 5319 | +- id: KNA | |
| 5320 | + iso2: KN | |
| 5321 | + iso3: KNA | |
| 5322 | + iso_numeric: '659' | |
| 5323 | + slug: saint-kitts-and-nevis | |
| 5324 | + short_name: Saint Kitts and Nevis | |
| 5325 | + official_name: Federation of Saint Christopher and Nevis | |
| 5326 | + capital: Basseterre | |
| 5327 | + continent: Americas | |
| 5328 | + region_wb: LCN | |
| 5329 | + region_wb_name: Latin America & Caribbean | |
| 5330 | + subregion: Caribbean | |
| 5331 | + income_group: HIC | |
| 5332 | + income_group_name: High income | |
| 5333 | + currency_code: XCD | |
| 5334 | + currency_name: Eastern Caribbean dollar | |
| 5335 | + area_km2: 261 | |
| 5336 | + latitude: 17.3 | |
| 5337 | + longitude: -62.7309 | |
| 5338 | + flag_emoji: 🇰🇳 | |
| 5339 | + un_member: true | |
| 5340 | + independent: true | |
| 5341 | + landlocked: false | |
| 5342 | + borders: [] | |
| 5343 | + languages: | |
| 5344 | + - English | |
| 5345 | + demonym: Kittitian or Nevisian | |
| 5346 | + status: country | |
| 5347 | + kind: country | |
| 5348 | +- id: LCA | |
| 5349 | + iso2: LC | |
| 5350 | + iso3: LCA | |
| 5351 | + iso_numeric: '662' | |
| 5352 | + slug: saint-lucia | |
| 5353 | + short_name: Saint Lucia | |
| 5354 | + official_name: Saint Lucia | |
| 5355 | + capital: Castries | |
| 5356 | + continent: Americas | |
| 5357 | + region_wb: LCN | |
| 5358 | + region_wb_name: Latin America & Caribbean | |
| 5359 | + subregion: Caribbean | |
| 5360 | + income_group: UMC | |
| 5361 | + income_group_name: Upper middle income | |
| 5362 | + currency_code: XCD | |
| 5363 | + currency_name: Eastern Caribbean dollar | |
| 5364 | + area_km2: 616 | |
| 5365 | + latitude: 14.0 | |
| 5366 | + longitude: -60.9832 | |
| 5367 | + flag_emoji: 🇱🇨 | |
| 5368 | + un_member: true | |
| 5369 | + independent: true | |
| 5370 | + landlocked: false | |
| 5371 | + borders: [] | |
| 5372 | + languages: | |
| 5373 | + - English | |
| 5374 | + demonym: Saint Lucian | |
| 5375 | + status: country | |
| 5376 | + kind: country | |
| 5377 | +- id: MAF | |
| 5378 | + iso2: MF | |
| 5379 | + iso3: MAF | |
| 5380 | + iso_numeric: '663' | |
| 5381 | + slug: saint-martin | |
| 5382 | + short_name: Saint Martin | |
| 5383 | + official_name: Saint Martin | |
| 5384 | + capital: Marigot | |
| 5385 | + continent: Americas | |
| 5386 | + region_wb: LCN | |
| 5387 | + region_wb_name: Latin America & Caribbean | |
| 5388 | + subregion: Caribbean | |
| 5389 | + income_group: HIC | |
| 5390 | + income_group_name: High income | |
| 5391 | + currency_code: EUR | |
| 5392 | + currency_name: Euro | |
| 5393 | + area_km2: 53 | |
| 5394 | + latitude: 18.08333333 | |
| 5395 | + longitude: -63.95 | |
| 5396 | + flag_emoji: 🇲🇫 | |
| 5397 | + un_member: false | |
| 5398 | + independent: false | |
| 5399 | + landlocked: false | |
| 5400 | + borders: | |
| 5401 | + - SXM | |
| 5402 | + languages: | |
| 5403 | + - French | |
| 5404 | + demonym: Saint Martin Islander | |
| 5405 | + status: territory | |
| 5406 | + kind: country | |
| 5407 | +- id: VCT | |
| 5408 | + iso2: VC | |
| 5409 | + iso3: VCT | |
| 5410 | + iso_numeric: '670' | |
| 5411 | + slug: saint-vincent-and-the-grenadines | |
| 5412 | + short_name: Saint Vincent and the Grenadines | |
| 5413 | + official_name: Saint Vincent and the Grenadines | |
| 5414 | + capital: Kingstown | |
| 5415 | + continent: Americas | |
| 5416 | + region_wb: LCN | |
| 5417 | + region_wb_name: Latin America & Caribbean | |
| 5418 | + subregion: Caribbean | |
| 5419 | + income_group: UMC | |
| 5420 | + income_group_name: Upper middle income | |
| 5421 | + currency_code: XCD | |
| 5422 | + currency_name: Eastern Caribbean dollar | |
| 5423 | + area_km2: 389 | |
| 5424 | + latitude: 13.2035 | |
| 5425 | + longitude: -61.2653 | |
| 5426 | + flag_emoji: 🇻🇨 | |
| 5427 | + un_member: true | |
| 5428 | + independent: true | |
| 5429 | + landlocked: false | |
| 5430 | + borders: [] | |
| 5431 | + languages: | |
| 5432 | + - English | |
| 5433 | + demonym: Saint Vincentian | |
| 5434 | + status: country | |
| 5435 | + kind: country | |
| 5436 | +- id: WSM | |
| 5437 | + iso2: WS | |
| 5438 | + iso3: WSM | |
| 5439 | + iso_numeric: '882' | |
| 5440 | + slug: samoa | |
| 5441 | + short_name: Samoa | |
| 5442 | + official_name: Independent State of Samoa | |
| 5443 | + capital: Apia | |
| 5444 | + continent: Oceania | |
| 5445 | + region_wb: EAS | |
| 5446 | + region_wb_name: East Asia & Pacific | |
| 5447 | + subregion: Polynesia | |
| 5448 | + income_group: UMC | |
| 5449 | + income_group_name: Upper middle income | |
| 5450 | + currency_code: WST | |
| 5451 | + currency_name: Samoan tālā | |
| 5452 | + area_km2: 2842 | |
| 5453 | + latitude: -13.8314 | |
| 5454 | + longitude: -171.752 | |
| 5455 | + flag_emoji: 🇼🇸 | |
| 5456 | + un_member: true | |
| 5457 | + independent: true | |
| 5458 | + landlocked: false | |
| 5459 | + borders: [] | |
| 5460 | + languages: | |
| 5461 | + - English | |
| 5462 | + - Samoan | |
| 5463 | + demonym: Samoan | |
| 5464 | + status: country | |
| 5465 | + kind: country | |
| 5466 | +- id: SMR | |
| 5467 | + iso2: SM | |
| 5468 | + iso3: SMR | |
| 5469 | + iso_numeric: '674' | |
| 5470 | + slug: san-marino | |
| 5471 | + short_name: San Marino | |
| 5472 | + official_name: Most Serene Republic of San Marino | |
| 5473 | + capital: City of San Marino | |
| 5474 | + continent: Europe | |
| 5475 | + region_wb: ECS | |
| 5476 | + region_wb_name: Europe & Central Asia | |
| 5477 | + subregion: Southern Europe | |
| 5478 | + income_group: HIC | |
| 5479 | + income_group_name: High income | |
| 5480 | + currency_code: EUR | |
| 5481 | + currency_name: Euro | |
| 5482 | + area_km2: 61 | |
| 5483 | + latitude: 43.9322 | |
| 5484 | + longitude: 12.4486 | |
| 5485 | + flag_emoji: 🇸🇲 | |
| 5486 | + un_member: true | |
| 5487 | + independent: true | |
| 5488 | + landlocked: true | |
| 5489 | + borders: | |
| 5490 | + - ITA | |
| 5491 | + languages: | |
| 5492 | + - Italian | |
| 5493 | + demonym: Sammarinese | |
| 5494 | + status: country | |
| 5495 | + kind: country | |
| 5496 | +- id: SAU | |
| 5497 | + iso2: SA | |
| 5498 | + iso3: SAU | |
| 5499 | + iso_numeric: '682' | |
| 5500 | + slug: saudi-arabia | |
| 5501 | + short_name: Saudi Arabia | |
| 5502 | + official_name: Kingdom of Saudi Arabia | |
| 5503 | + capital: Riyadh | |
| 5504 | + continent: Asia | |
| 5505 | + region_wb: MEA | |
| 5506 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 5507 | + subregion: Western Asia | |
| 5508 | + income_group: HIC | |
| 5509 | + income_group_name: High income | |
| 5510 | + currency_code: SAR | |
| 5511 | + currency_name: Saudi riyal | |
| 5512 | + area_km2: 2149690 | |
| 5513 | + latitude: 24.6748 | |
| 5514 | + longitude: 46.6977 | |
| 5515 | + flag_emoji: 🇸🇦 | |
| 5516 | + un_member: true | |
| 5517 | + independent: true | |
| 5518 | + landlocked: false | |
| 5519 | + borders: | |
| 5520 | + - IRQ | |
| 5521 | + - JOR | |
| 5522 | + - KWT | |
| 5523 | + - OMN | |
| 5524 | + - QAT | |
| 5525 | + - ARE | |
| 5526 | + - YEM | |
| 5527 | + languages: | |
| 5528 | + - Arabic | |
| 5529 | + demonym: Saudi Arabian | |
| 5530 | + status: country | |
| 5531 | + kind: country | |
| 5532 | +- id: SEN | |
| 5533 | + iso2: SN | |
| 5534 | + iso3: SEN | |
| 5535 | + iso_numeric: '686' | |
| 5536 | + slug: senegal | |
| 5537 | + short_name: Senegal | |
| 5538 | + official_name: Republic of Senegal | |
| 5539 | + capital: Dakar | |
| 5540 | + continent: Africa | |
| 5541 | + region_wb: SSF | |
| 5542 | + region_wb_name: Sub-Saharan Africa | |
| 5543 | + subregion: Western Africa | |
| 5544 | + income_group: LMC | |
| 5545 | + income_group_name: Lower middle income | |
| 5546 | + currency_code: XOF | |
| 5547 | + currency_name: West African CFA franc | |
| 5548 | + area_km2: 196722 | |
| 5549 | + latitude: 14.7247 | |
| 5550 | + longitude: -17.4734 | |
| 5551 | + flag_emoji: 🇸🇳 | |
| 5552 | + un_member: true | |
| 5553 | + independent: true | |
| 5554 | + landlocked: false | |
| 5555 | + borders: | |
| 5556 | + - GMB | |
| 5557 | + - GIN | |
| 5558 | + - GNB | |
| 5559 | + - MLI | |
| 5560 | + - MRT | |
| 5561 | + languages: | |
| 5562 | + - French | |
| 5563 | + demonym: Senegalese | |
| 5564 | + status: country | |
| 5565 | + kind: country | |
| 5566 | +- id: SRB | |
| 5567 | + iso2: RS | |
| 5568 | + iso3: SRB | |
| 5569 | + iso_numeric: '688' | |
| 5570 | + slug: serbia | |
| 5571 | + short_name: Serbia | |
| 5572 | + official_name: Republic of Serbia | |
| 5573 | + capital: Belgrade | |
| 5574 | + continent: Europe | |
| 5575 | + region_wb: ECS | |
| 5576 | + region_wb_name: Europe & Central Asia | |
| 5577 | + subregion: Southeast Europe | |
| 5578 | + income_group: UMC | |
| 5579 | + income_group_name: Upper middle income | |
| 5580 | + currency_code: RSD | |
| 5581 | + currency_name: Serbian dinar | |
| 5582 | + area_km2: 88361 | |
| 5583 | + latitude: 44.8024 | |
| 5584 | + longitude: 20.4656 | |
| 5585 | + flag_emoji: 🇷🇸 | |
| 5586 | + un_member: true | |
| 5587 | + independent: true | |
| 5588 | + landlocked: true | |
| 5589 | + borders: | |
| 5590 | + - BIH | |
| 5591 | + - BGR | |
| 5592 | + - HRV | |
| 5593 | + - HUN | |
| 5594 | + - UNK | |
| 5595 | + - MKD | |
| 5596 | + - MNE | |
| 5597 | + - ROU | |
| 5598 | + languages: | |
| 5599 | + - Serbian | |
| 5600 | + demonym: Serbian | |
| 5601 | + status: country | |
| 5602 | + kind: country | |
| 5603 | +- id: SYC | |
| 5604 | + iso2: SC | |
| 5605 | + iso3: SYC | |
| 5606 | + iso_numeric: '690' | |
| 5607 | + slug: seychelles | |
| 5608 | + short_name: Seychelles | |
| 5609 | + official_name: Republic of Seychelles | |
| 5610 | + capital: Victoria | |
| 5611 | + continent: Africa | |
| 5612 | + region_wb: SSF | |
| 5613 | + region_wb_name: Sub-Saharan Africa | |
| 5614 | + subregion: Eastern Africa | |
| 5615 | + income_group: HIC | |
| 5616 | + income_group_name: High income | |
| 5617 | + currency_code: SCR | |
| 5618 | + currency_name: Seychellois rupee | |
| 5619 | + area_km2: 452 | |
| 5620 | + latitude: -4.6309 | |
| 5621 | + longitude: 55.4466 | |
| 5622 | + flag_emoji: 🇸🇨 | |
| 5623 | + un_member: true | |
| 5624 | + independent: true | |
| 5625 | + landlocked: false | |
| 5626 | + borders: [] | |
| 5627 | + languages: | |
| 5628 | + - English | |
| 5629 | + - French | |
| 5630 | + - Seychellois Creole | |
| 5631 | + demonym: Seychellois | |
| 5632 | + status: country | |
| 5633 | + kind: country | |
| 5634 | +- id: SLE | |
| 5635 | + iso2: SL | |
| 5636 | + iso3: SLE | |
| 5637 | + iso_numeric: '694' | |
| 5638 | + slug: sierra-leone | |
| 5639 | + short_name: Sierra Leone | |
| 5640 | + official_name: Republic of Sierra Leone | |
| 5641 | + capital: Freetown | |
| 5642 | + continent: Africa | |
| 5643 | + region_wb: SSF | |
| 5644 | + region_wb_name: Sub-Saharan Africa | |
| 5645 | + subregion: Western Africa | |
| 5646 | + income_group: LIC | |
| 5647 | + income_group_name: Low income | |
| 5648 | + currency_code: SLE | |
| 5649 | + currency_name: Sierra Leonean leone | |
| 5650 | + area_km2: 71740 | |
| 5651 | + latitude: 8.4821 | |
| 5652 | + longitude: -13.2134 | |
| 5653 | + flag_emoji: 🇸🇱 | |
| 5654 | + un_member: true | |
| 5655 | + independent: true | |
| 5656 | + landlocked: false | |
| 5657 | + borders: | |
| 5658 | + - GIN | |
| 5659 | + - LBR | |
| 5660 | + languages: | |
| 5661 | + - English | |
| 5662 | + demonym: Sierra Leonean | |
| 5663 | + status: country | |
| 5664 | + kind: country | |
| 5665 | +- id: SGP | |
| 5666 | + iso2: SG | |
| 5667 | + iso3: SGP | |
| 5668 | + iso_numeric: '702' | |
| 5669 | + slug: singapore | |
| 5670 | + short_name: Singapore | |
| 5671 | + official_name: Republic of Singapore | |
| 5672 | + capital: Singapore | |
| 5673 | + continent: Asia | |
| 5674 | + region_wb: EAS | |
| 5675 | + region_wb_name: East Asia & Pacific | |
| 5676 | + subregion: South-Eastern Asia | |
| 5677 | + income_group: HIC | |
| 5678 | + income_group_name: High income | |
| 5679 | + currency_code: SGD | |
| 5680 | + currency_name: Singapore dollar | |
| 5681 | + area_km2: 710 | |
| 5682 | + latitude: 1.28941 | |
| 5683 | + longitude: 103.85 | |
| 5684 | + flag_emoji: 🇸🇬 | |
| 5685 | + un_member: true | |
| 5686 | + independent: true | |
| 5687 | + landlocked: false | |
| 5688 | + borders: [] | |
| 5689 | + languages: | |
| 5690 | + - Chinese | |
| 5691 | + - English | |
| 5692 | + - Malay | |
| 5693 | + - Tamil | |
| 5694 | + demonym: Singaporean | |
| 5695 | + status: country | |
| 5696 | + kind: country | |
| 5697 | +- id: SXM | |
| 5698 | + iso2: SX | |
| 5699 | + iso3: SXM | |
| 5700 | + iso_numeric: '534' | |
| 5701 | + slug: sint-maarten | |
| 5702 | + short_name: Sint Maarten | |
| 5703 | + official_name: Sint Maarten | |
| 5704 | + capital: Philipsburg | |
| 5705 | + continent: Americas | |
| 5706 | + region_wb: LCN | |
| 5707 | + region_wb_name: Latin America & Caribbean | |
| 5708 | + subregion: Caribbean | |
| 5709 | + income_group: HIC | |
| 5710 | + income_group_name: High income | |
| 5711 | + currency_code: ANG | |
| 5712 | + currency_name: Netherlands Antillean guilder | |
| 5713 | + area_km2: 34 | |
| 5714 | + latitude: 18.033333 | |
| 5715 | + longitude: -63.05 | |
| 5716 | + flag_emoji: 🇸🇽 | |
| 5717 | + un_member: false | |
| 5718 | + independent: false | |
| 5719 | + landlocked: false | |
| 5720 | + borders: | |
| 5721 | + - MAF | |
| 5722 | + languages: | |
| 5723 | + - Dutch | |
| 5724 | + - English | |
| 5725 | + - French | |
| 5726 | + demonym: St. Maartener | |
| 5727 | + status: territory | |
| 5728 | + kind: country | |
| 5729 | +- id: SVK | |
| 5730 | + iso2: SK | |
| 5731 | + iso3: SVK | |
| 5732 | + iso_numeric: '703' | |
| 5733 | + slug: slovakia | |
| 5734 | + short_name: Slovakia | |
| 5735 | + official_name: Slovak Republic | |
| 5736 | + capital: Bratislava | |
| 5737 | + continent: Europe | |
| 5738 | + region_wb: ECS | |
| 5739 | + region_wb_name: Europe & Central Asia | |
| 5740 | + subregion: Central Europe | |
| 5741 | + income_group: HIC | |
| 5742 | + income_group_name: High income | |
| 5743 | + currency_code: EUR | |
| 5744 | + currency_name: Euro | |
| 5745 | + area_km2: 49037 | |
| 5746 | + latitude: 48.1484 | |
| 5747 | + longitude: 17.1073 | |
| 5748 | + flag_emoji: 🇸🇰 | |
| 5749 | + un_member: true | |
| 5750 | + independent: true | |
| 5751 | + landlocked: true | |
| 5752 | + borders: | |
| 5753 | + - AUT | |
| 5754 | + - CZE | |
| 5755 | + - HUN | |
| 5756 | + - POL | |
| 5757 | + - UKR | |
| 5758 | + languages: | |
| 5759 | + - Slovak | |
| 5760 | + demonym: Slovak | |
| 5761 | + status: country | |
| 5762 | + kind: country | |
| 5763 | +- id: SVN | |
| 5764 | + iso2: SI | |
| 5765 | + iso3: SVN | |
| 5766 | + iso_numeric: '705' | |
| 5767 | + slug: slovenia | |
| 5768 | + short_name: Slovenia | |
| 5769 | + official_name: Republic of Slovenia | |
| 5770 | + capital: Ljubljana | |
| 5771 | + continent: Europe | |
| 5772 | + region_wb: ECS | |
| 5773 | + region_wb_name: Europe & Central Asia | |
| 5774 | + subregion: Central Europe | |
| 5775 | + income_group: HIC | |
| 5776 | + income_group_name: High income | |
| 5777 | + currency_code: EUR | |
| 5778 | + currency_name: Euro | |
| 5779 | + area_km2: 20273 | |
| 5780 | + latitude: 46.0546 | |
| 5781 | + longitude: 14.5044 | |
| 5782 | + flag_emoji: 🇸🇮 | |
| 5783 | + un_member: true | |
| 5784 | + independent: true | |
| 5785 | + landlocked: false | |
| 5786 | + borders: | |
| 5787 | + - AUT | |
| 5788 | + - HRV | |
| 5789 | + - ITA | |
| 5790 | + - HUN | |
| 5791 | + languages: | |
| 5792 | + - Slovene | |
| 5793 | + demonym: Slovene | |
| 5794 | + status: country | |
| 5795 | + kind: country | |
| 5796 | +- id: SLB | |
| 5797 | + iso2: SB | |
| 5798 | + iso3: SLB | |
| 5799 | + iso_numeric: 090 | |
| 5800 | + slug: solomon-islands | |
| 5801 | + short_name: Solomon Islands | |
| 5802 | + official_name: Solomon Islands | |
| 5803 | + capital: Honiara | |
| 5804 | + continent: Oceania | |
| 5805 | + region_wb: EAS | |
| 5806 | + region_wb_name: East Asia & Pacific | |
| 5807 | + subregion: Melanesia | |
| 5808 | + income_group: LMC | |
| 5809 | + income_group_name: Lower middle income | |
| 5810 | + currency_code: SBD | |
| 5811 | + currency_name: Solomon Islands dollar | |
| 5812 | + area_km2: 28896 | |
| 5813 | + latitude: -9.42676 | |
| 5814 | + longitude: 159.949 | |
| 5815 | + flag_emoji: 🇸🇧 | |
| 5816 | + un_member: true | |
| 5817 | + independent: true | |
| 5818 | + landlocked: false | |
| 5819 | + borders: [] | |
| 5820 | + languages: | |
| 5821 | + - English | |
| 5822 | + demonym: Solomon Islander | |
| 5823 | + status: country | |
| 5824 | + kind: country | |
| 5825 | +- id: SOM | |
| 5826 | + iso2: SO | |
| 5827 | + iso3: SOM | |
| 5828 | + iso_numeric: '706' | |
| 5829 | + slug: somalia | |
| 5830 | + short_name: Somalia | |
| 5831 | + official_name: Federal Republic of Somalia | |
| 5832 | + capital: Mogadishu | |
| 5833 | + continent: Africa | |
| 5834 | + region_wb: SSF | |
| 5835 | + region_wb_name: Sub-Saharan Africa | |
| 5836 | + subregion: Eastern Africa | |
| 5837 | + income_group: LIC | |
| 5838 | + income_group_name: Low income | |
| 5839 | + currency_code: SOS | |
| 5840 | + currency_name: Somali shilling | |
| 5841 | + area_km2: 637657 | |
| 5842 | + latitude: 2.07515 | |
| 5843 | + longitude: 45.3254 | |
| 5844 | + flag_emoji: 🇸🇴 | |
| 5845 | + un_member: true | |
| 5846 | + independent: true | |
| 5847 | + landlocked: false | |
| 5848 | + borders: | |
| 5849 | + - DJI | |
| 5850 | + - ETH | |
| 5851 | + - KEN | |
| 5852 | + languages: | |
| 5853 | + - Arabic | |
| 5854 | + - Somali | |
| 5855 | + demonym: Somali | |
| 5856 | + status: country | |
| 5857 | + kind: country | |
| 5858 | +- id: ZAF | |
| 5859 | + iso2: ZA | |
| 5860 | + iso3: ZAF | |
| 5861 | + iso_numeric: '710' | |
| 5862 | + slug: south-africa | |
| 5863 | + short_name: South Africa | |
| 5864 | + official_name: Republic of South Africa | |
| 5865 | + capital: Pretoria | |
| 5866 | + continent: Africa | |
| 5867 | + region_wb: SSF | |
| 5868 | + region_wb_name: Sub-Saharan Africa | |
| 5869 | + subregion: Southern Africa | |
| 5870 | + income_group: UMC | |
| 5871 | + income_group_name: Upper middle income | |
| 5872 | + currency_code: ZAR | |
| 5873 | + currency_name: South African rand | |
| 5874 | + area_km2: 1221037 | |
| 5875 | + latitude: -25.746 | |
| 5876 | + longitude: 28.1871 | |
| 5877 | + flag_emoji: 🇿🇦 | |
| 5878 | + un_member: true | |
| 5879 | + independent: true | |
| 5880 | + landlocked: false | |
| 5881 | + borders: | |
| 5882 | + - BWA | |
| 5883 | + - LSO | |
| 5884 | + - MOZ | |
| 5885 | + - NAM | |
| 5886 | + - SWZ | |
| 5887 | + - ZWE | |
| 5888 | + languages: | |
| 5889 | + - Afrikaans | |
| 5890 | + - English | |
| 5891 | + - Northern Sotho | |
| 5892 | + - Southern Ndebele | |
| 5893 | + - Southern Sotho | |
| 5894 | + - Swazi | |
| 5895 | + - Tsonga | |
| 5896 | + - Tswana | |
| 5897 | + - Venda | |
| 5898 | + - Xhosa | |
| 5899 | + - Zulu | |
| 5900 | + demonym: South African | |
| 5901 | + status: country | |
| 5902 | + kind: country | |
| 5903 | +- id: KOR | |
| 5904 | + iso2: KR | |
| 5905 | + iso3: KOR | |
| 5906 | + iso_numeric: '410' | |
| 5907 | + slug: south-korea | |
| 5908 | + short_name: South Korea | |
| 5909 | + official_name: Republic of Korea | |
| 5910 | + capital: Seoul | |
| 5911 | + continent: Asia | |
| 5912 | + region_wb: EAS | |
| 5913 | + region_wb_name: East Asia & Pacific | |
| 5914 | + subregion: Eastern Asia | |
| 5915 | + income_group: HIC | |
| 5916 | + income_group_name: High income | |
| 5917 | + currency_code: KRW | |
| 5918 | + currency_name: South Korean won | |
| 5919 | + area_km2: 100210 | |
| 5920 | + latitude: 37.5323 | |
| 5921 | + longitude: 126.957 | |
| 5922 | + flag_emoji: 🇰🇷 | |
| 5923 | + un_member: true | |
| 5924 | + independent: true | |
| 5925 | + landlocked: false | |
| 5926 | + borders: | |
| 5927 | + - PRK | |
| 5928 | + languages: | |
| 5929 | + - Korean | |
| 5930 | + demonym: South Korean | |
| 5931 | + status: country | |
| 5932 | + kind: country | |
| 5933 | +- id: SSD | |
| 5934 | + iso2: SS | |
| 5935 | + iso3: SSD | |
| 5936 | + iso_numeric: '728' | |
| 5937 | + slug: south-sudan | |
| 5938 | + short_name: South Sudan | |
| 5939 | + official_name: Republic of South Sudan | |
| 5940 | + capital: Juba | |
| 5941 | + continent: Africa | |
| 5942 | + region_wb: SSF | |
| 5943 | + region_wb_name: Sub-Saharan Africa | |
| 5944 | + subregion: Middle Africa | |
| 5945 | + income_group: LIC | |
| 5946 | + income_group_name: Low income | |
| 5947 | + currency_code: SSP | |
| 5948 | + currency_name: South Sudanese pound | |
| 5949 | + area_km2: 619745 | |
| 5950 | + latitude: 4.85 | |
| 5951 | + longitude: 31.6 | |
| 5952 | + flag_emoji: 🇸🇸 | |
| 5953 | + un_member: true | |
| 5954 | + independent: true | |
| 5955 | + landlocked: true | |
| 5956 | + borders: | |
| 5957 | + - CAF | |
| 5958 | + - COD | |
| 5959 | + - ETH | |
| 5960 | + - KEN | |
| 5961 | + - SDN | |
| 5962 | + - UGA | |
| 5963 | + languages: | |
| 5964 | + - English | |
| 5965 | + demonym: South Sudanese | |
| 5966 | + status: country | |
| 5967 | + kind: country | |
| 5968 | +- id: ESP | |
| 5969 | + iso2: ES | |
| 5970 | + iso3: ESP | |
| 5971 | + iso_numeric: '724' | |
| 5972 | + slug: spain | |
| 5973 | + short_name: Spain | |
| 5974 | + official_name: Kingdom of Spain | |
| 5975 | + capital: Madrid | |
| 5976 | + continent: Europe | |
| 5977 | + region_wb: ECS | |
| 5978 | + region_wb_name: Europe & Central Asia | |
| 5979 | + subregion: Southern Europe | |
| 5980 | + income_group: HIC | |
| 5981 | + income_group_name: High income | |
| 5982 | + currency_code: EUR | |
| 5983 | + currency_name: Euro | |
| 5984 | + area_km2: 505992 | |
| 5985 | + latitude: 40.4167 | |
| 5986 | + longitude: -3.70327 | |
| 5987 | + flag_emoji: 🇪🇸 | |
| 5988 | + un_member: true | |
| 5989 | + independent: true | |
| 5990 | + landlocked: false | |
| 5991 | + borders: | |
| 5992 | + - AND | |
| 5993 | + - FRA | |
| 5994 | + - GIB | |
| 5995 | + - PRT | |
| 5996 | + - MAR | |
| 5997 | + languages: | |
| 5998 | + - Spanish | |
| 5999 | + demonym: Spanish | |
| 6000 | + status: country | |
| 6001 | + kind: country | |
| 6002 | +- id: LKA | |
| 6003 | + iso2: LK | |
| 6004 | + iso3: LKA | |
| 6005 | + iso_numeric: '144' | |
| 6006 | + slug: sri-lanka | |
| 6007 | + short_name: Sri Lanka | |
| 6008 | + official_name: Democratic Socialist Republic of Sri Lanka | |
| 6009 | + capital: Colombo | |
| 6010 | + continent: Asia | |
| 6011 | + region_wb: SAS | |
| 6012 | + region_wb_name: South Asia | |
| 6013 | + subregion: Southern Asia | |
| 6014 | + income_group: UMC | |
| 6015 | + income_group_name: Upper middle income | |
| 6016 | + currency_code: LKR | |
| 6017 | + currency_name: Sri Lankan rupee | |
| 6018 | + area_km2: 65610 | |
| 6019 | + latitude: 6.92148 | |
| 6020 | + longitude: 79.8528 | |
| 6021 | + flag_emoji: 🇱🇰 | |
| 6022 | + un_member: true | |
| 6023 | + independent: true | |
| 6024 | + landlocked: false | |
| 6025 | + borders: | |
| 6026 | + - IND | |
| 6027 | + languages: | |
| 6028 | + - Sinhala | |
| 6029 | + - Tamil | |
| 6030 | + demonym: Sri Lankan | |
| 6031 | + status: country | |
| 6032 | + kind: country | |
| 6033 | +- id: SDN | |
| 6034 | + iso2: SD | |
| 6035 | + iso3: SDN | |
| 6036 | + iso_numeric: '729' | |
| 6037 | + slug: sudan | |
| 6038 | + short_name: Sudan | |
| 6039 | + official_name: Republic of the Sudan | |
| 6040 | + capital: Khartoum | |
| 6041 | + continent: Africa | |
| 6042 | + region_wb: SSF | |
| 6043 | + region_wb_name: Sub-Saharan Africa | |
| 6044 | + subregion: Northern Africa | |
| 6045 | + income_group: LIC | |
| 6046 | + income_group_name: Low income | |
| 6047 | + currency_code: SDG | |
| 6048 | + currency_name: Sudanese pound | |
| 6049 | + area_km2: 1886068 | |
| 6050 | + latitude: 15.5932 | |
| 6051 | + longitude: 32.5363 | |
| 6052 | + flag_emoji: 🇸🇩 | |
| 6053 | + un_member: true | |
| 6054 | + independent: true | |
| 6055 | + landlocked: false | |
| 6056 | + borders: | |
| 6057 | + - CAF | |
| 6058 | + - TCD | |
| 6059 | + - EGY | |
| 6060 | + - ERI | |
| 6061 | + - ETH | |
| 6062 | + - LBY | |
| 6063 | + - SSD | |
| 6064 | + languages: | |
| 6065 | + - Arabic | |
| 6066 | + - English | |
| 6067 | + demonym: Sudanese | |
| 6068 | + status: country | |
| 6069 | + kind: country | |
| 6070 | +- id: SUR | |
| 6071 | + iso2: SR | |
| 6072 | + iso3: SUR | |
| 6073 | + iso_numeric: '740' | |
| 6074 | + slug: suriname | |
| 6075 | + short_name: Suriname | |
| 6076 | + official_name: Republic of Suriname | |
| 6077 | + capital: Paramaribo | |
| 6078 | + continent: Americas | |
| 6079 | + region_wb: LCN | |
| 6080 | + region_wb_name: Latin America & Caribbean | |
| 6081 | + subregion: South America | |
| 6082 | + income_group: UMC | |
| 6083 | + income_group_name: Upper middle income | |
| 6084 | + currency_code: SRD | |
| 6085 | + currency_name: Surinamese dollar | |
| 6086 | + area_km2: 163820 | |
| 6087 | + latitude: 5.8232 | |
| 6088 | + longitude: -55.1679 | |
| 6089 | + flag_emoji: 🇸🇷 | |
| 6090 | + un_member: true | |
| 6091 | + independent: true | |
| 6092 | + landlocked: false | |
| 6093 | + borders: | |
| 6094 | + - BRA | |
| 6095 | + - GUF | |
| 6096 | + - GUY | |
| 6097 | + languages: | |
| 6098 | + - Dutch | |
| 6099 | + demonym: Surinamer | |
| 6100 | + status: country | |
| 6101 | + kind: country | |
| 6102 | +- id: SWE | |
| 6103 | + iso2: SE | |
| 6104 | + iso3: SWE | |
| 6105 | + iso_numeric: '752' | |
| 6106 | + slug: sweden | |
| 6107 | + short_name: Sweden | |
| 6108 | + official_name: Kingdom of Sweden | |
| 6109 | + capital: Stockholm | |
| 6110 | + continent: Europe | |
| 6111 | + region_wb: ECS | |
| 6112 | + region_wb_name: Europe & Central Asia | |
| 6113 | + subregion: Northern Europe | |
| 6114 | + income_group: HIC | |
| 6115 | + income_group_name: High income | |
| 6116 | + currency_code: SEK | |
| 6117 | + currency_name: Swedish krona | |
| 6118 | + area_km2: 450295 | |
| 6119 | + latitude: 59.3327 | |
| 6120 | + longitude: 18.0645 | |
| 6121 | + flag_emoji: 🇸🇪 | |
| 6122 | + un_member: true | |
| 6123 | + independent: true | |
| 6124 | + landlocked: false | |
| 6125 | + borders: | |
| 6126 | + - FIN | |
| 6127 | + - NOR | |
| 6128 | + languages: | |
| 6129 | + - Swedish | |
| 6130 | + demonym: Swedish | |
| 6131 | + status: country | |
| 6132 | + kind: country | |
| 6133 | +- id: CHE | |
| 6134 | + iso2: CH | |
| 6135 | + iso3: CHE | |
| 6136 | + iso_numeric: '756' | |
| 6137 | + slug: switzerland | |
| 6138 | + short_name: Switzerland | |
| 6139 | + official_name: Swiss Confederation | |
| 6140 | + capital: Bern | |
| 6141 | + continent: Europe | |
| 6142 | + region_wb: ECS | |
| 6143 | + region_wb_name: Europe & Central Asia | |
| 6144 | + subregion: Western Europe | |
| 6145 | + income_group: HIC | |
| 6146 | + income_group_name: High income | |
| 6147 | + currency_code: CHF | |
| 6148 | + currency_name: Swiss franc | |
| 6149 | + area_km2: 41284 | |
| 6150 | + latitude: 46.948 | |
| 6151 | + longitude: 7.44821 | |
| 6152 | + flag_emoji: 🇨🇭 | |
| 6153 | + un_member: true | |
| 6154 | + independent: true | |
| 6155 | + landlocked: true | |
| 6156 | + borders: | |
| 6157 | + - AUT | |
| 6158 | + - FRA | |
| 6159 | + - ITA | |
| 6160 | + - LIE | |
| 6161 | + - DEU | |
| 6162 | + languages: | |
| 6163 | + - French | |
| 6164 | + - Italian | |
| 6165 | + - Romansh | |
| 6166 | + - Swiss German | |
| 6167 | + demonym: Swiss | |
| 6168 | + status: country | |
| 6169 | + kind: country | |
| 6170 | +- id: SYR | |
| 6171 | + iso2: SY | |
| 6172 | + iso3: SYR | |
| 6173 | + iso_numeric: '760' | |
| 6174 | + slug: syria | |
| 6175 | + short_name: Syria | |
| 6176 | + official_name: Syrian Arab Republic | |
| 6177 | + capital: Damascus | |
| 6178 | + continent: Asia | |
| 6179 | + region_wb: MEA | |
| 6180 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 6181 | + subregion: Western Asia | |
| 6182 | + income_group: LIC | |
| 6183 | + income_group_name: Low income | |
| 6184 | + currency_code: SYP | |
| 6185 | + currency_name: Syrian pound | |
| 6186 | + area_km2: 185180 | |
| 6187 | + latitude: 33.5146 | |
| 6188 | + longitude: 36.3119 | |
| 6189 | + flag_emoji: 🇸🇾 | |
| 6190 | + un_member: true | |
| 6191 | + independent: true | |
| 6192 | + landlocked: false | |
| 6193 | + borders: | |
| 6194 | + - IRQ | |
| 6195 | + - ISR | |
| 6196 | + - JOR | |
| 6197 | + - LBN | |
| 6198 | + - TUR | |
| 6199 | + languages: | |
| 6200 | + - Arabic | |
| 6201 | + demonym: Syrian | |
| 6202 | + status: country | |
| 6203 | + kind: country | |
| 6204 | +- id: STP | |
| 6205 | + iso2: ST | |
| 6206 | + iso3: STP | |
| 6207 | + iso_numeric: '678' | |
| 6208 | + slug: sao-tome-and-principe | |
| 6209 | + short_name: São Tomé and Príncipe | |
| 6210 | + official_name: Democratic Republic of São Tomé and Príncipe | |
| 6211 | + capital: São Tomé | |
| 6212 | + continent: Africa | |
| 6213 | + region_wb: SSF | |
| 6214 | + region_wb_name: Sub-Saharan Africa | |
| 6215 | + subregion: Middle Africa | |
| 6216 | + income_group: LMC | |
| 6217 | + income_group_name: Lower middle income | |
| 6218 | + currency_code: STN | |
| 6219 | + currency_name: São Tomé and Príncipe dobra | |
| 6220 | + area_km2: 964 | |
| 6221 | + latitude: 0.20618 | |
| 6222 | + longitude: 6.6071 | |
| 6223 | + flag_emoji: 🇸🇹 | |
| 6224 | + un_member: true | |
| 6225 | + independent: true | |
| 6226 | + landlocked: false | |
| 6227 | + borders: [] | |
| 6228 | + languages: | |
| 6229 | + - Portuguese | |
| 6230 | + demonym: Sao Tomean | |
| 6231 | + status: country | |
| 6232 | + kind: country | |
| 6233 | +- id: TWN | |
| 6234 | + iso2: TW | |
| 6235 | + iso3: TWN | |
| 6236 | + iso_numeric: '158' | |
| 6237 | + slug: taiwan | |
| 6238 | + short_name: Taiwan | |
| 6239 | + official_name: Republic of China (Taiwan) | |
| 6240 | + capital: Taipei | |
| 6241 | + continent: Asia | |
| 6242 | + region_wb: EAS | |
| 6243 | + region_wb_name: East Asia & Pacific | |
| 6244 | + subregion: Eastern Asia | |
| 6245 | + income_group: HIC | |
| 6246 | + income_group_name: High income | |
| 6247 | + currency_code: TWD | |
| 6248 | + currency_name: New Taiwan dollar | |
| 6249 | + area_km2: 36193 | |
| 6250 | + latitude: 23.5 | |
| 6251 | + longitude: 121 | |
| 6252 | + flag_emoji: 🇹🇼 | |
| 6253 | + un_member: false | |
| 6254 | + independent: false | |
| 6255 | + landlocked: false | |
| 6256 | + borders: [] | |
| 6257 | + languages: | |
| 6258 | + - Chinese | |
| 6259 | + demonym: Taiwanese | |
| 6260 | + status: territory | |
| 6261 | + kind: country | |
| 6262 | +- id: TJK | |
| 6263 | + iso2: TJ | |
| 6264 | + iso3: TJK | |
| 6265 | + iso_numeric: '762' | |
| 6266 | + slug: tajikistan | |
| 6267 | + short_name: Tajikistan | |
| 6268 | + official_name: Republic of Tajikistan | |
| 6269 | + capital: Dushanbe | |
| 6270 | + continent: Asia | |
| 6271 | + region_wb: ECS | |
| 6272 | + region_wb_name: Europe & Central Asia | |
| 6273 | + subregion: Central Asia | |
| 6274 | + income_group: LMC | |
| 6275 | + income_group_name: Lower middle income | |
| 6276 | + currency_code: TJS | |
| 6277 | + currency_name: Tajikistani somoni | |
| 6278 | + area_km2: 143100 | |
| 6279 | + latitude: 38.5878 | |
| 6280 | + longitude: 68.7864 | |
| 6281 | + flag_emoji: 🇹🇯 | |
| 6282 | + un_member: true | |
| 6283 | + independent: true | |
| 6284 | + landlocked: true | |
| 6285 | + borders: | |
| 6286 | + - AFG | |
| 6287 | + - CHN | |
| 6288 | + - KGZ | |
| 6289 | + - UZB | |
| 6290 | + languages: | |
| 6291 | + - Russian | |
| 6292 | + - Tajik | |
| 6293 | + demonym: Tadzhik | |
| 6294 | + status: country | |
| 6295 | + kind: country | |
| 6296 | +- id: TZA | |
| 6297 | + iso2: TZ | |
| 6298 | + iso3: TZA | |
| 6299 | + iso_numeric: '834' | |
| 6300 | + slug: tanzania | |
| 6301 | + short_name: Tanzania | |
| 6302 | + official_name: United Republic of Tanzania | |
| 6303 | + capital: Dodoma | |
| 6304 | + continent: Africa | |
| 6305 | + region_wb: SSF | |
| 6306 | + region_wb_name: Sub-Saharan Africa | |
| 6307 | + subregion: Eastern Africa | |
| 6308 | + income_group: LMC | |
| 6309 | + income_group_name: Lower middle income | |
| 6310 | + currency_code: TZS | |
| 6311 | + currency_name: Tanzanian shilling | |
| 6312 | + area_km2: 945087 | |
| 6313 | + latitude: -6.17486 | |
| 6314 | + longitude: 35.7382 | |
| 6315 | + flag_emoji: 🇹🇿 | |
| 6316 | + un_member: true | |
| 6317 | + independent: true | |
| 6318 | + landlocked: false | |
| 6319 | + borders: | |
| 6320 | + - BDI | |
| 6321 | + - COD | |
| 6322 | + - KEN | |
| 6323 | + - MWI | |
| 6324 | + - MOZ | |
| 6325 | + - RWA | |
| 6326 | + - UGA | |
| 6327 | + - ZMB | |
| 6328 | + languages: | |
| 6329 | + - English | |
| 6330 | + - Swahili | |
| 6331 | + demonym: Tanzanian | |
| 6332 | + status: country | |
| 6333 | + kind: country | |
| 6334 | +- id: THA | |
| 6335 | + iso2: TH | |
| 6336 | + iso3: THA | |
| 6337 | + iso_numeric: '764' | |
| 6338 | + slug: thailand | |
| 6339 | + short_name: Thailand | |
| 6340 | + official_name: Kingdom of Thailand | |
| 6341 | + capital: Bangkok | |
| 6342 | + continent: Asia | |
| 6343 | + region_wb: EAS | |
| 6344 | + region_wb_name: East Asia & Pacific | |
| 6345 | + subregion: South-Eastern Asia | |
| 6346 | + income_group: UMC | |
| 6347 | + income_group_name: Upper middle income | |
| 6348 | + currency_code: THB | |
| 6349 | + currency_name: Thai baht | |
| 6350 | + area_km2: 513120 | |
| 6351 | + latitude: 13.7308 | |
| 6352 | + longitude: 100.521 | |
| 6353 | + flag_emoji: 🇹🇭 | |
| 6354 | + un_member: true | |
| 6355 | + independent: true | |
| 6356 | + landlocked: false | |
| 6357 | + borders: | |
| 6358 | + - MMR | |
| 6359 | + - KHM | |
| 6360 | + - LAO | |
| 6361 | + - MYS | |
| 6362 | + languages: | |
| 6363 | + - Thai | |
| 6364 | + demonym: Thai | |
| 6365 | + status: country | |
| 6366 | + kind: country | |
| 6367 | +- id: TLS | |
| 6368 | + iso2: TL | |
| 6369 | + iso3: TLS | |
| 6370 | + iso_numeric: '626' | |
| 6371 | + slug: timor-leste | |
| 6372 | + short_name: Timor-Leste | |
| 6373 | + official_name: Democratic Republic of Timor-Leste | |
| 6374 | + capital: Dili | |
| 6375 | + continent: Asia | |
| 6376 | + region_wb: EAS | |
| 6377 | + region_wb_name: East Asia & Pacific | |
| 6378 | + subregion: South-Eastern Asia | |
| 6379 | + income_group: LMC | |
| 6380 | + income_group_name: Lower middle income | |
| 6381 | + currency_code: USD | |
| 6382 | + currency_name: United States dollar | |
| 6383 | + area_km2: 14874 | |
| 6384 | + latitude: -8.56667 | |
| 6385 | + longitude: 125.567 | |
| 6386 | + flag_emoji: 🇹🇱 | |
| 6387 | + un_member: true | |
| 6388 | + independent: true | |
| 6389 | + landlocked: false | |
| 6390 | + borders: | |
| 6391 | + - IDN | |
| 6392 | + languages: | |
| 6393 | + - Portuguese | |
| 6394 | + - Tetum | |
| 6395 | + demonym: East Timorese | |
| 6396 | + status: country | |
| 6397 | + kind: country | |
| 6398 | +- id: TGO | |
| 6399 | + iso2: TG | |
| 6400 | + iso3: TGO | |
| 6401 | + iso_numeric: '768' | |
| 6402 | + slug: togo | |
| 6403 | + short_name: Togo | |
| 6404 | + official_name: Togolese Republic | |
| 6405 | + capital: Lomé | |
| 6406 | + continent: Africa | |
| 6407 | + region_wb: SSF | |
| 6408 | + region_wb_name: Sub-Saharan Africa | |
| 6409 | + subregion: Western Africa | |
| 6410 | + income_group: LMC | |
| 6411 | + income_group_name: Lower middle income | |
| 6412 | + currency_code: XOF | |
| 6413 | + currency_name: West African CFA franc | |
| 6414 | + area_km2: 56785 | |
| 6415 | + latitude: 6.1228 | |
| 6416 | + longitude: 1.2255 | |
| 6417 | + flag_emoji: 🇹🇬 | |
| 6418 | + un_member: true | |
| 6419 | + independent: true | |
| 6420 | + landlocked: false | |
| 6421 | + borders: | |
| 6422 | + - BEN | |
| 6423 | + - BFA | |
| 6424 | + - GHA | |
| 6425 | + languages: | |
| 6426 | + - French | |
| 6427 | + demonym: Togolese | |
| 6428 | + status: country | |
| 6429 | + kind: country | |
| 6430 | +- id: TON | |
| 6431 | + iso2: TO | |
| 6432 | + iso3: TON | |
| 6433 | + iso_numeric: '776' | |
| 6434 | + slug: tonga | |
| 6435 | + short_name: Tonga | |
| 6436 | + official_name: Kingdom of Tonga | |
| 6437 | + capital: Nuku'alofa | |
| 6438 | + continent: Oceania | |
| 6439 | + region_wb: EAS | |
| 6440 | + region_wb_name: East Asia & Pacific | |
| 6441 | + subregion: Polynesia | |
| 6442 | + income_group: UMC | |
| 6443 | + income_group_name: Upper middle income | |
| 6444 | + currency_code: TOP | |
| 6445 | + currency_name: Tongan paʻanga | |
| 6446 | + area_km2: 747 | |
| 6447 | + latitude: -21.136 | |
| 6448 | + longitude: -175.216 | |
| 6449 | + flag_emoji: 🇹🇴 | |
| 6450 | + un_member: true | |
| 6451 | + independent: true | |
| 6452 | + landlocked: false | |
| 6453 | + borders: [] | |
| 6454 | + languages: | |
| 6455 | + - English | |
| 6456 | + - Tongan | |
| 6457 | + demonym: Tongan | |
| 6458 | + status: country | |
| 6459 | + kind: country | |
| 6460 | +- id: TTO | |
| 6461 | + iso2: TT | |
| 6462 | + iso3: TTO | |
| 6463 | + iso_numeric: '780' | |
| 6464 | + slug: trinidad-and-tobago | |
| 6465 | + short_name: Trinidad and Tobago | |
| 6466 | + official_name: Republic of Trinidad and Tobago | |
| 6467 | + capital: Port of Spain | |
| 6468 | + continent: Americas | |
| 6469 | + region_wb: LCN | |
| 6470 | + region_wb_name: Latin America & Caribbean | |
| 6471 | + subregion: Caribbean | |
| 6472 | + income_group: HIC | |
| 6473 | + income_group_name: High income | |
| 6474 | + currency_code: TTD | |
| 6475 | + currency_name: Trinidad and Tobago dollar | |
| 6476 | + area_km2: 5130 | |
| 6477 | + latitude: 10.6596 | |
| 6478 | + longitude: -61.4789 | |
| 6479 | + flag_emoji: 🇹🇹 | |
| 6480 | + un_member: true | |
| 6481 | + independent: true | |
| 6482 | + landlocked: false | |
| 6483 | + borders: [] | |
| 6484 | + languages: | |
| 6485 | + - English | |
| 6486 | + demonym: Trinidadian | |
| 6487 | + status: country | |
| 6488 | + kind: country | |
| 6489 | +- id: TUN | |
| 6490 | + iso2: TN | |
| 6491 | + iso3: TUN | |
| 6492 | + iso_numeric: '788' | |
| 6493 | + slug: tunisia | |
| 6494 | + short_name: Tunisia | |
| 6495 | + official_name: Tunisian Republic | |
| 6496 | + capital: Tunis | |
| 6497 | + continent: Africa | |
| 6498 | + region_wb: MEA | |
| 6499 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 6500 | + subregion: Northern Africa | |
| 6501 | + income_group: LMC | |
| 6502 | + income_group_name: Lower middle income | |
| 6503 | + currency_code: TND | |
| 6504 | + currency_name: Tunisian dinar | |
| 6505 | + area_km2: 163610 | |
| 6506 | + latitude: 36.7899 | |
| 6507 | + longitude: 10.21 | |
| 6508 | + flag_emoji: 🇹🇳 | |
| 6509 | + un_member: true | |
| 6510 | + independent: true | |
| 6511 | + landlocked: false | |
| 6512 | + borders: | |
| 6513 | + - DZA | |
| 6514 | + - LBY | |
| 6515 | + languages: | |
| 6516 | + - Arabic | |
| 6517 | + demonym: Tunisian | |
| 6518 | + status: country | |
| 6519 | + kind: country | |
| 6520 | +- id: TKM | |
| 6521 | + iso2: TM | |
| 6522 | + iso3: TKM | |
| 6523 | + iso_numeric: '795' | |
| 6524 | + slug: turkmenistan | |
| 6525 | + short_name: Turkmenistan | |
| 6526 | + official_name: Turkmenistan | |
| 6527 | + capital: Ashgabat | |
| 6528 | + continent: Asia | |
| 6529 | + region_wb: ECS | |
| 6530 | + region_wb_name: Europe & Central Asia | |
| 6531 | + subregion: Central Asia | |
| 6532 | + income_group: UMC | |
| 6533 | + income_group_name: Upper middle income | |
| 6534 | + currency_code: TMT | |
| 6535 | + currency_name: Turkmenistan manat | |
| 6536 | + area_km2: 488100 | |
| 6537 | + latitude: 37.9509 | |
| 6538 | + longitude: 58.3794 | |
| 6539 | + flag_emoji: 🇹🇲 | |
| 6540 | + un_member: true | |
| 6541 | + independent: true | |
| 6542 | + landlocked: true | |
| 6543 | + borders: | |
| 6544 | + - AFG | |
| 6545 | + - IRN | |
| 6546 | + - KAZ | |
| 6547 | + - UZB | |
| 6548 | + languages: | |
| 6549 | + - Russian | |
| 6550 | + - Turkmen | |
| 6551 | + demonym: Turkmen | |
| 6552 | + status: country | |
| 6553 | + kind: country | |
| 6554 | +- id: TCA | |
| 6555 | + iso2: TC | |
| 6556 | + iso3: TCA | |
| 6557 | + iso_numeric: '796' | |
| 6558 | + slug: turks-and-caicos-islands | |
| 6559 | + short_name: Turks and Caicos Islands | |
| 6560 | + official_name: Turks and Caicos Islands | |
| 6561 | + capital: Cockburn Town | |
| 6562 | + continent: Americas | |
| 6563 | + region_wb: LCN | |
| 6564 | + region_wb_name: Latin America & Caribbean | |
| 6565 | + subregion: Caribbean | |
| 6566 | + income_group: HIC | |
| 6567 | + income_group_name: High income | |
| 6568 | + currency_code: USD | |
| 6569 | + currency_name: United States dollar | |
| 6570 | + area_km2: 948 | |
| 6571 | + latitude: 21.4602778 | |
| 6572 | + longitude: -71.141389 | |
| 6573 | + flag_emoji: 🇹🇨 | |
| 6574 | + un_member: false | |
| 6575 | + independent: false | |
| 6576 | + landlocked: false | |
| 6577 | + borders: [] | |
| 6578 | + languages: | |
| 6579 | + - English | |
| 6580 | + demonym: Turks and Caicos Islander | |
| 6581 | + status: territory | |
| 6582 | + kind: country | |
| 6583 | +- id: TUV | |
| 6584 | + iso2: TV | |
| 6585 | + iso3: TUV | |
| 6586 | + iso_numeric: '798' | |
| 6587 | + slug: tuvalu | |
| 6588 | + short_name: Tuvalu | |
| 6589 | + official_name: Tuvalu | |
| 6590 | + capital: Funafuti | |
| 6591 | + continent: Oceania | |
| 6592 | + region_wb: EAS | |
| 6593 | + region_wb_name: East Asia & Pacific | |
| 6594 | + subregion: Polynesia | |
| 6595 | + income_group: UMC | |
| 6596 | + income_group_name: Upper middle income | |
| 6597 | + currency_code: AUD | |
| 6598 | + currency_name: Australian dollar | |
| 6599 | + area_km2: 26 | |
| 6600 | + latitude: -8.6314877 | |
| 6601 | + longitude: 179.089567 | |
| 6602 | + flag_emoji: 🇹🇻 | |
| 6603 | + un_member: true | |
| 6604 | + independent: true | |
| 6605 | + landlocked: false | |
| 6606 | + borders: [] | |
| 6607 | + languages: | |
| 6608 | + - English | |
| 6609 | + - Tuvaluan | |
| 6610 | + demonym: Tuvaluan | |
| 6611 | + status: country | |
| 6612 | + kind: country | |
| 6613 | +- id: TUR | |
| 6614 | + iso2: TR | |
| 6615 | + iso3: TUR | |
| 6616 | + iso_numeric: '792' | |
| 6617 | + slug: turkiye | |
| 6618 | + short_name: Türkiye | |
| 6619 | + official_name: Republic of Türkiye | |
| 6620 | + capital: Ankara | |
| 6621 | + continent: Asia | |
| 6622 | + region_wb: ECS | |
| 6623 | + region_wb_name: Europe & Central Asia | |
| 6624 | + subregion: Western Asia | |
| 6625 | + income_group: UMC | |
| 6626 | + income_group_name: Upper middle income | |
| 6627 | + currency_code: TRY | |
| 6628 | + currency_name: Turkish lira | |
| 6629 | + area_km2: 783562 | |
| 6630 | + latitude: 39.7153 | |
| 6631 | + longitude: 32.3606 | |
| 6632 | + flag_emoji: 🇹🇷 | |
| 6633 | + un_member: true | |
| 6634 | + independent: true | |
| 6635 | + landlocked: false | |
| 6636 | + borders: | |
| 6637 | + - ARM | |
| 6638 | + - AZE | |
| 6639 | + - BGR | |
| 6640 | + - GEO | |
| 6641 | + - GRC | |
| 6642 | + - IRN | |
| 6643 | + - IRQ | |
| 6644 | + - SYR | |
| 6645 | + languages: | |
| 6646 | + - Turkish | |
| 6647 | + demonym: Turkish | |
| 6648 | + status: country | |
| 6649 | + kind: country | |
| 6650 | +- id: VIR | |
| 6651 | + iso2: VI | |
| 6652 | + iso3: VIR | |
| 6653 | + iso_numeric: '850' | |
| 6654 | + slug: u-s-virgin-islands | |
| 6655 | + short_name: U.S. Virgin Islands | |
| 6656 | + official_name: Virgin Islands of the United States | |
| 6657 | + capital: Charlotte Amalie | |
| 6658 | + continent: Americas | |
| 6659 | + region_wb: LCN | |
| 6660 | + region_wb_name: Latin America & Caribbean | |
| 6661 | + subregion: Caribbean | |
| 6662 | + income_group: HIC | |
| 6663 | + income_group_name: High income | |
| 6664 | + currency_code: USD | |
| 6665 | + currency_name: United States dollar | |
| 6666 | + area_km2: 347 | |
| 6667 | + latitude: 18.3358 | |
| 6668 | + longitude: -64.8963 | |
| 6669 | + flag_emoji: 🇻🇮 | |
| 6670 | + un_member: false | |
| 6671 | + independent: false | |
| 6672 | + landlocked: false | |
| 6673 | + borders: [] | |
| 6674 | + languages: | |
| 6675 | + - English | |
| 6676 | + demonym: Virgin Islander | |
| 6677 | + status: territory | |
| 6678 | + kind: country | |
| 6679 | +- id: UGA | |
| 6680 | + iso2: UG | |
| 6681 | + iso3: UGA | |
| 6682 | + iso_numeric: '800' | |
| 6683 | + slug: uganda | |
| 6684 | + short_name: Uganda | |
| 6685 | + official_name: Republic of Uganda | |
| 6686 | + capital: Kampala | |
| 6687 | + continent: Africa | |
| 6688 | + region_wb: SSF | |
| 6689 | + region_wb_name: Sub-Saharan Africa | |
| 6690 | + subregion: Eastern Africa | |
| 6691 | + income_group: LIC | |
| 6692 | + income_group_name: Low income | |
| 6693 | + currency_code: UGX | |
| 6694 | + currency_name: Ugandan shilling | |
| 6695 | + area_km2: 241550 | |
| 6696 | + latitude: 0.314269 | |
| 6697 | + longitude: 32.5729 | |
| 6698 | + flag_emoji: 🇺🇬 | |
| 6699 | + un_member: true | |
| 6700 | + independent: true | |
| 6701 | + landlocked: true | |
| 6702 | + borders: | |
| 6703 | + - COD | |
| 6704 | + - KEN | |
| 6705 | + - RWA | |
| 6706 | + - SSD | |
| 6707 | + - TZA | |
| 6708 | + languages: | |
| 6709 | + - English | |
| 6710 | + - Swahili | |
| 6711 | + demonym: Ugandan | |
| 6712 | + status: country | |
| 6713 | + kind: country | |
| 6714 | +- id: UKR | |
| 6715 | + iso2: UA | |
| 6716 | + iso3: UKR | |
| 6717 | + iso_numeric: '804' | |
| 6718 | + slug: ukraine | |
| 6719 | + short_name: Ukraine | |
| 6720 | + official_name: Ukraine | |
| 6721 | + capital: Kyiv | |
| 6722 | + continent: Europe | |
| 6723 | + region_wb: ECS | |
| 6724 | + region_wb_name: Europe & Central Asia | |
| 6725 | + subregion: Eastern Europe | |
| 6726 | + income_group: UMC | |
| 6727 | + income_group_name: Upper middle income | |
| 6728 | + currency_code: UAH | |
| 6729 | + currency_name: Ukrainian hryvnia | |
| 6730 | + area_km2: 603500 | |
| 6731 | + latitude: 50.4536 | |
| 6732 | + longitude: 30.5038 | |
| 6733 | + flag_emoji: 🇺🇦 | |
| 6734 | + un_member: true | |
| 6735 | + independent: true | |
| 6736 | + landlocked: false | |
| 6737 | + borders: | |
| 6738 | + - BLR | |
| 6739 | + - HUN | |
| 6740 | + - MDA | |
| 6741 | + - POL | |
| 6742 | + - ROU | |
| 6743 | + - RUS | |
| 6744 | + - SVK | |
| 6745 | + languages: | |
| 6746 | + - Ukrainian | |
| 6747 | + demonym: Ukrainian | |
| 6748 | + status: country | |
| 6749 | + kind: country | |
| 6750 | +- id: ARE | |
| 6751 | + iso2: AE | |
| 6752 | + iso3: ARE | |
| 6753 | + iso_numeric: '784' | |
| 6754 | + slug: united-arab-emirates | |
| 6755 | + short_name: United Arab Emirates | |
| 6756 | + official_name: United Arab Emirates | |
| 6757 | + capital: Abu Dhabi | |
| 6758 | + continent: Asia | |
| 6759 | + region_wb: MEA | |
| 6760 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 6761 | + subregion: Western Asia | |
| 6762 | + income_group: HIC | |
| 6763 | + income_group_name: High income | |
| 6764 | + currency_code: AED | |
| 6765 | + currency_name: United Arab Emirates dirham | |
| 6766 | + area_km2: 83600 | |
| 6767 | + latitude: 24.4764 | |
| 6768 | + longitude: 54.3705 | |
| 6769 | + flag_emoji: 🇦🇪 | |
| 6770 | + un_member: true | |
| 6771 | + independent: true | |
| 6772 | + landlocked: false | |
| 6773 | + borders: | |
| 6774 | + - OMN | |
| 6775 | + - SAU | |
| 6776 | + languages: | |
| 6777 | + - Arabic | |
| 6778 | + demonym: Emirati | |
| 6779 | + status: country | |
| 6780 | + kind: country | |
| 6781 | +- id: GBR | |
| 6782 | + iso2: GB | |
| 6783 | + iso3: GBR | |
| 6784 | + iso_numeric: '826' | |
| 6785 | + slug: united-kingdom | |
| 6786 | + short_name: United Kingdom | |
| 6787 | + official_name: United Kingdom of Great Britain and Northern Ireland | |
| 6788 | + capital: London | |
| 6789 | + continent: Europe | |
| 6790 | + region_wb: ECS | |
| 6791 | + region_wb_name: Europe & Central Asia | |
| 6792 | + subregion: Northern Europe | |
| 6793 | + income_group: HIC | |
| 6794 | + income_group_name: High income | |
| 6795 | + currency_code: GBP | |
| 6796 | + currency_name: British pound | |
| 6797 | + area_km2: 242900 | |
| 6798 | + latitude: 51.5002 | |
| 6799 | + longitude: -0.126236 | |
| 6800 | + flag_emoji: 🇬🇧 | |
| 6801 | + un_member: true | |
| 6802 | + independent: true | |
| 6803 | + landlocked: false | |
| 6804 | + borders: | |
| 6805 | + - IRL | |
| 6806 | + languages: | |
| 6807 | + - English | |
| 6808 | + demonym: British | |
| 6809 | + status: country | |
| 6810 | + kind: country | |
| 6811 | +- id: USA | |
| 6812 | + iso2: US | |
| 6813 | + iso3: USA | |
| 6814 | + iso_numeric: '840' | |
| 6815 | + slug: united-states | |
| 6816 | + short_name: United States | |
| 6817 | + official_name: United States of America | |
| 6818 | + capital: Washington D.C. | |
| 6819 | + continent: Americas | |
| 6820 | + region_wb: NAC | |
| 6821 | + region_wb_name: North America | |
| 6822 | + subregion: North America | |
| 6823 | + income_group: HIC | |
| 6824 | + income_group_name: High income | |
| 6825 | + currency_code: USD | |
| 6826 | + currency_name: United States dollar | |
| 6827 | + area_km2: 9372610 | |
| 6828 | + latitude: 38.8895 | |
| 6829 | + longitude: -77.032 | |
| 6830 | + flag_emoji: 🇺🇸 | |
| 6831 | + un_member: true | |
| 6832 | + independent: true | |
| 6833 | + landlocked: false | |
| 6834 | + borders: | |
| 6835 | + - CAN | |
| 6836 | + - MEX | |
| 6837 | + languages: | |
| 6838 | + - English | |
| 6839 | + demonym: American | |
| 6840 | + status: country | |
| 6841 | + kind: country | |
| 6842 | +- id: URY | |
| 6843 | + iso2: UY | |
| 6844 | + iso3: URY | |
| 6845 | + iso_numeric: '858' | |
| 6846 | + slug: uruguay | |
| 6847 | + short_name: Uruguay | |
| 6848 | + official_name: Oriental Republic of Uruguay | |
| 6849 | + capital: Montevideo | |
| 6850 | + continent: Americas | |
| 6851 | + region_wb: LCN | |
| 6852 | + region_wb_name: Latin America & Caribbean | |
| 6853 | + subregion: South America | |
| 6854 | + income_group: HIC | |
| 6855 | + income_group_name: High income | |
| 6856 | + currency_code: UYU | |
| 6857 | + currency_name: Uruguayan peso | |
| 6858 | + area_km2: 181034 | |
| 6859 | + latitude: -34.8941 | |
| 6860 | + longitude: -56.0675 | |
| 6861 | + flag_emoji: 🇺🇾 | |
| 6862 | + un_member: true | |
| 6863 | + independent: true | |
| 6864 | + landlocked: false | |
| 6865 | + borders: | |
| 6866 | + - ARG | |
| 6867 | + - BRA | |
| 6868 | + languages: | |
| 6869 | + - Spanish | |
| 6870 | + demonym: Uruguayan | |
| 6871 | + status: country | |
| 6872 | + kind: country | |
| 6873 | +- id: UZB | |
| 6874 | + iso2: UZ | |
| 6875 | + iso3: UZB | |
| 6876 | + iso_numeric: '860' | |
| 6877 | + slug: uzbekistan | |
| 6878 | + short_name: Uzbekistan | |
| 6879 | + official_name: Republic of Uzbekistan | |
| 6880 | + capital: Tashkent | |
| 6881 | + continent: Asia | |
| 6882 | + region_wb: ECS | |
| 6883 | + region_wb_name: Europe & Central Asia | |
| 6884 | + subregion: Central Asia | |
| 6885 | + income_group: LMC | |
| 6886 | + income_group_name: Lower middle income | |
| 6887 | + currency_code: UZS | |
| 6888 | + currency_name: Uzbekistani soʻm | |
| 6889 | + area_km2: 447400 | |
| 6890 | + latitude: 41.3052 | |
| 6891 | + longitude: 69.269 | |
| 6892 | + flag_emoji: 🇺🇿 | |
| 6893 | + un_member: true | |
| 6894 | + independent: true | |
| 6895 | + landlocked: true | |
| 6896 | + borders: | |
| 6897 | + - AFG | |
| 6898 | + - KAZ | |
| 6899 | + - KGZ | |
| 6900 | + - TJK | |
| 6901 | + - TKM | |
| 6902 | + languages: | |
| 6903 | + - Russian | |
| 6904 | + - Uzbek | |
| 6905 | + demonym: Uzbekistani | |
| 6906 | + status: country | |
| 6907 | + kind: country | |
| 6908 | +- id: VUT | |
| 6909 | + iso2: VU | |
| 6910 | + iso3: VUT | |
| 6911 | + iso_numeric: '548' | |
| 6912 | + slug: vanuatu | |
| 6913 | + short_name: Vanuatu | |
| 6914 | + official_name: Republic of Vanuatu | |
| 6915 | + capital: Port Vila | |
| 6916 | + continent: Oceania | |
| 6917 | + region_wb: EAS | |
| 6918 | + region_wb_name: East Asia & Pacific | |
| 6919 | + subregion: Melanesia | |
| 6920 | + income_group: LMC | |
| 6921 | + income_group_name: Lower middle income | |
| 6922 | + currency_code: VUV | |
| 6923 | + currency_name: Vanuatu vatu | |
| 6924 | + area_km2: 12189 | |
| 6925 | + latitude: -17.7404 | |
| 6926 | + longitude: 168.321 | |
| 6927 | + flag_emoji: 🇻🇺 | |
| 6928 | + un_member: true | |
| 6929 | + independent: true | |
| 6930 | + landlocked: false | |
| 6931 | + borders: [] | |
| 6932 | + languages: | |
| 6933 | + - Bislama | |
| 6934 | + - English | |
| 6935 | + - French | |
| 6936 | + demonym: Ni-Vanuatu | |
| 6937 | + status: country | |
| 6938 | + kind: country | |
| 6939 | +- id: VEN | |
| 6940 | + iso2: VE | |
| 6941 | + iso3: VEN | |
| 6942 | + iso_numeric: '862' | |
| 6943 | + slug: venezuela | |
| 6944 | + short_name: Venezuela | |
| 6945 | + official_name: Bolivarian Republic of Venezuela | |
| 6946 | + capital: Caracas | |
| 6947 | + continent: Americas | |
| 6948 | + region_wb: LCN | |
| 6949 | + region_wb_name: Latin America & Caribbean | |
| 6950 | + subregion: South America | |
| 6951 | + income_group: LMC | |
| 6952 | + income_group_name: Lower middle income | |
| 6953 | + currency_code: VES | |
| 6954 | + currency_name: Venezuelan bolívar soberano | |
| 6955 | + area_km2: 916445 | |
| 6956 | + latitude: 9.08165 | |
| 6957 | + longitude: -69.8371 | |
| 6958 | + flag_emoji: 🇻🇪 | |
| 6959 | + un_member: true | |
| 6960 | + independent: true | |
| 6961 | + landlocked: false | |
| 6962 | + borders: | |
| 6963 | + - BRA | |
| 6964 | + - COL | |
| 6965 | + - GUY | |
| 6966 | + languages: | |
| 6967 | + - Spanish | |
| 6968 | + demonym: Venezuelan | |
| 6969 | + status: country | |
| 6970 | + kind: country | |
| 6971 | +- id: VNM | |
| 6972 | + iso2: VN | |
| 6973 | + iso3: VNM | |
| 6974 | + iso_numeric: '704' | |
| 6975 | + slug: vietnam | |
| 6976 | + short_name: Vietnam | |
| 6977 | + official_name: Socialist Republic of Vietnam | |
| 6978 | + capital: Hanoi | |
| 6979 | + continent: Asia | |
| 6980 | + region_wb: EAS | |
| 6981 | + region_wb_name: East Asia & Pacific | |
| 6982 | + subregion: South-Eastern Asia | |
| 6983 | + income_group: UMC | |
| 6984 | + income_group_name: Upper middle income | |
| 6985 | + currency_code: VND | |
| 6986 | + currency_name: Vietnamese đồng | |
| 6987 | + area_km2: 331212 | |
| 6988 | + latitude: 21.0069 | |
| 6989 | + longitude: 105.825 | |
| 6990 | + flag_emoji: 🇻🇳 | |
| 6991 | + un_member: true | |
| 6992 | + independent: true | |
| 6993 | + landlocked: false | |
| 6994 | + borders: | |
| 6995 | + - KHM | |
| 6996 | + - CHN | |
| 6997 | + - LAO | |
| 6998 | + languages: | |
| 6999 | + - Vietnamese | |
| 7000 | + demonym: Vietnamese | |
| 7001 | + status: country | |
| 7002 | + kind: country | |
| 7003 | +- id: YEM | |
| 7004 | + iso2: YE | |
| 7005 | + iso3: YEM | |
| 7006 | + iso_numeric: '887' | |
| 7007 | + slug: yemen | |
| 7008 | + short_name: Yemen | |
| 7009 | + official_name: Republic of Yemen | |
| 7010 | + capital: Sana'a | |
| 7011 | + continent: Asia | |
| 7012 | + region_wb: MEA | |
| 7013 | + region_wb_name: Middle East, North Africa, Afghanistan & Pakistan | |
| 7014 | + subregion: Western Asia | |
| 7015 | + income_group: LIC | |
| 7016 | + income_group_name: Low income | |
| 7017 | + currency_code: YER | |
| 7018 | + currency_name: Yemeni rial | |
| 7019 | + area_km2: 527968 | |
| 7020 | + latitude: 15.352 | |
| 7021 | + longitude: 44.2075 | |
| 7022 | + flag_emoji: 🇾🇪 | |
| 7023 | + un_member: true | |
| 7024 | + independent: true | |
| 7025 | + landlocked: false | |
| 7026 | + borders: | |
| 7027 | + - OMN | |
| 7028 | + - SAU | |
| 7029 | + languages: | |
| 7030 | + - Arabic | |
| 7031 | + demonym: Yemeni | |
| 7032 | + status: country | |
| 7033 | + kind: country | |
| 7034 | +- id: ZMB | |
| 7035 | + iso2: ZM | |
| 7036 | + iso3: ZMB | |
| 7037 | + iso_numeric: '894' | |
| 7038 | + slug: zambia | |
| 7039 | + short_name: Zambia | |
| 7040 | + official_name: Republic of Zambia | |
| 7041 | + capital: Lusaka | |
| 7042 | + continent: Africa | |
| 7043 | + region_wb: SSF | |
| 7044 | + region_wb_name: Sub-Saharan Africa | |
| 7045 | + subregion: Eastern Africa | |
| 7046 | + income_group: LMC | |
| 7047 | + income_group_name: Lower middle income | |
| 7048 | + currency_code: ZMW | |
| 7049 | + currency_name: Zambian kwacha | |
| 7050 | + area_km2: 752612 | |
| 7051 | + latitude: -15.3982 | |
| 7052 | + longitude: 28.2937 | |
| 7053 | + flag_emoji: 🇿🇲 | |
| 7054 | + un_member: true | |
| 7055 | + independent: true | |
| 7056 | + landlocked: true | |
| 7057 | + borders: | |
| 7058 | + - AGO | |
| 7059 | + - BWA | |
| 7060 | + - COD | |
| 7061 | + - MWI | |
| 7062 | + - MOZ | |
| 7063 | + - NAM | |
| 7064 | + - TZA | |
| 7065 | + - ZWE | |
| 7066 | + languages: | |
| 7067 | + - English | |
| 7068 | + demonym: Zambian | |
| 7069 | + status: country | |
| 7070 | + kind: country | |
| 7071 | +- id: ZWE | |
| 7072 | + iso2: ZW | |
| 7073 | + iso3: ZWE | |
| 7074 | + iso_numeric: '716' | |
| 7075 | + slug: zimbabwe | |
| 7076 | + short_name: Zimbabwe | |
| 7077 | + official_name: Republic of Zimbabwe | |
| 7078 | + capital: Harare | |
| 7079 | + continent: Africa | |
| 7080 | + region_wb: SSF | |
| 7081 | + region_wb_name: Sub-Saharan Africa | |
| 7082 | + subregion: Eastern Africa | |
| 7083 | + income_group: LMC | |
| 7084 | + income_group_name: Lower middle income | |
| 7085 | + currency_code: BWP | |
| 7086 | + currency_name: Botswana pula | |
| 7087 | + area_km2: 390757 | |
| 7088 | + latitude: -17.8312 | |
| 7089 | + longitude: 31.0672 | |
| 7090 | + flag_emoji: 🇿🇼 | |
| 7091 | + un_member: true | |
| 7092 | + independent: true | |
| 7093 | + landlocked: true | |
| 7094 | + borders: | |
| 7095 | + - BWA | |
| 7096 | + - MOZ | |
| 7097 | + - ZAF | |
| 7098 | + - ZMB | |
| 7099 | + languages: | |
| 7100 | + - Chewa | |
| 7101 | + - Chibarwe | |
| 7102 | + - English | |
| 7103 | + - Kalanga | |
| 7104 | + - Khoisan | |
| 7105 | + - Ndau | |
| 7106 | + - Northern Ndebele | |
| 7107 | + - Shona | |
| 7108 | + - Sotho | |
| 7109 | + - Tonga | |
| 7110 | + - Tsonga | |
| 7111 | + - Tswana | |
| 7112 | + - Venda | |
| 7113 | + - Xhosa | |
| 7114 | + - Zimbabwean Sign Language | |
| 7115 | + demonym: Zimbabwean | |
| 7116 | + status: country | |
| 7117 | + kind: country | |
added
registry/groups.yaml
+212 −0
@@ -0,0 +1,212 @@ | ||
| 1 | +# Country groups. `wb_code` = World Bank aggregate code when the source publishes one (used for /indicators/{slug}/trend). | |
| 2 | +# Members are ISO3 codes from registry/countries.yaml. Membership as of September 2026. | |
| 3 | +groups: | |
| 4 | +- id: world | |
| 5 | + slug: world | |
| 6 | + name: World | |
| 7 | + kind: world | |
| 8 | + wb_code: WLD | |
| 9 | + description: All countries and territories in the CountryAtlas registry. | |
| 10 | + members: ALL | |
| 11 | + | |
| 12 | +# ---- World Bank regions (7) ------------------------------------------------------------------- | |
| 13 | +- id: nac | |
| 14 | + slug: north-america | |
| 15 | + name: North America | |
| 16 | + kind: region | |
| 17 | + wb_code: NAC | |
| 18 | + description: World Bank region — Bermuda, Canada and the United States. | |
| 19 | + members: [BMU, CAN, USA] | |
| 20 | +- id: lcn | |
| 21 | + slug: latin-america-caribbean | |
| 22 | + name: Latin America & Caribbean | |
| 23 | + kind: region | |
| 24 | + wb_code: LCN | |
| 25 | + description: World Bank region. | |
| 26 | + members: WB_REGION:LCN | |
| 27 | +- id: ecs | |
| 28 | + slug: europe-central-asia | |
| 29 | + name: Europe & Central Asia | |
| 30 | + kind: region | |
| 31 | + wb_code: ECS | |
| 32 | + description: World Bank region. | |
| 33 | + members: WB_REGION:ECS | |
| 34 | +- id: mea | |
| 35 | + slug: middle-east-north-africa | |
| 36 | + name: Middle East, North Africa, Afghanistan & Pakistan | |
| 37 | + kind: region | |
| 38 | + wb_code: MEA | |
| 39 | + description: World Bank region (classification revised in 2024 to include Afghanistan and Pakistan). | |
| 40 | + members: WB_REGION:MEA | |
| 41 | +- id: sas | |
| 42 | + slug: south-asia | |
| 43 | + name: South Asia | |
| 44 | + kind: region | |
| 45 | + wb_code: SAS | |
| 46 | + description: World Bank region. | |
| 47 | + members: WB_REGION:SAS | |
| 48 | +- id: eas | |
| 49 | + slug: east-asia-pacific | |
| 50 | + name: East Asia & Pacific | |
| 51 | + kind: region | |
| 52 | + wb_code: EAS | |
| 53 | + description: World Bank region. | |
| 54 | + members: WB_REGION:EAS | |
| 55 | +- id: ssf | |
| 56 | + slug: sub-saharan-africa | |
| 57 | + name: Sub-Saharan Africa | |
| 58 | + kind: region | |
| 59 | + wb_code: SSF | |
| 60 | + description: World Bank region. | |
| 61 | + members: WB_REGION:SSF | |
| 62 | + | |
| 63 | +# ---- Continents (from the registry `continent` field) ----------------------------------------- | |
| 64 | +- id: europe | |
| 65 | + slug: europe | |
| 66 | + name: Europe | |
| 67 | + kind: continent | |
| 68 | + description: Countries and territories on the European continent (including transcontinental states classified in Europe). | |
| 69 | + members: CONTINENT:Europe | |
| 70 | +- id: asia | |
| 71 | + slug: asia | |
| 72 | + name: Asia | |
| 73 | + kind: continent | |
| 74 | + members: CONTINENT:Asia | |
| 75 | +- id: africa | |
| 76 | + slug: africa | |
| 77 | + name: Africa | |
| 78 | + kind: continent | |
| 79 | + members: CONTINENT:Africa | |
| 80 | +- id: americas | |
| 81 | + slug: americas | |
| 82 | + name: Americas | |
| 83 | + kind: continent | |
| 84 | + members: CONTINENT:Americas | |
| 85 | +- id: oceania | |
| 86 | + slug: oceania | |
| 87 | + name: Oceania | |
| 88 | + kind: continent | |
| 89 | + members: CONTINENT:Oceania | |
| 90 | + | |
| 91 | +# ---- Income groups (World Bank FY2026 classification) ------------------------------------------- | |
| 92 | +- id: hic | |
| 93 | + slug: high-income | |
| 94 | + name: High income | |
| 95 | + kind: income | |
| 96 | + wb_code: HIC | |
| 97 | + description: World Bank income classification (GNI per capita, Atlas method). | |
| 98 | + members: WB_INCOME:HIC | |
| 99 | +- id: umc | |
| 100 | + slug: upper-middle-income | |
| 101 | + name: Upper middle income | |
| 102 | + kind: income | |
| 103 | + wb_code: UMC | |
| 104 | + members: WB_INCOME:UMC | |
| 105 | +- id: lmc | |
| 106 | + slug: lower-middle-income | |
| 107 | + name: Lower middle income | |
| 108 | + kind: income | |
| 109 | + wb_code: LMC | |
| 110 | + members: WB_INCOME:LMC | |
| 111 | +- id: lic | |
| 112 | + slug: low-income | |
| 113 | + name: Low income | |
| 114 | + kind: income | |
| 115 | + wb_code: LIC | |
| 116 | + members: WB_INCOME:LIC | |
| 117 | + | |
| 118 | +# ---- Organisations ------------------------------------------------------------------------------ | |
| 119 | +- id: oecd | |
| 120 | + slug: oecd | |
| 121 | + name: OECD | |
| 122 | + kind: org | |
| 123 | + wb_code: OED | |
| 124 | + description: Organisation for Economic Co-operation and Development — 38 member countries. | |
| 125 | + members: [AUS, AUT, BEL, CAN, CHL, COL, CRI, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, ISL, IRL, ISR, ITA, JPN, KOR, LVA, LTU, | |
| 126 | + LUX, MEX, NLD, NZL, NOR, POL, PRT, SVK, SVN, ESP, SWE, CHE, TUR, GBR, USA] | |
| 127 | +- id: g7 | |
| 128 | + slug: g7 | |
| 129 | + name: G7 | |
| 130 | + kind: org | |
| 131 | + description: Group of Seven — Canada, France, Germany, Italy, Japan, United Kingdom, United States. | |
| 132 | + members: [CAN, FRA, DEU, ITA, JPN, GBR, USA] | |
| 133 | +- id: g20 | |
| 134 | + slug: g20 | |
| 135 | + name: G20 | |
| 136 | + kind: org | |
| 137 | + description: Group of Twenty (19 countries; the European Union and the African Union are also members). | |
| 138 | + members: [ARG, AUS, BRA, CAN, CHN, FRA, DEU, IND, IDN, ITA, JPN, KOR, MEX, RUS, SAU, ZAF, TUR, GBR, USA] | |
| 139 | +- id: eu | |
| 140 | + slug: european-union | |
| 141 | + name: European Union | |
| 142 | + kind: org | |
| 143 | + wb_code: EUU | |
| 144 | + description: The 27 member states of the European Union. | |
| 145 | + members: [AUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, | |
| 146 | + SVK, SVN, ESP, SWE] | |
| 147 | +- id: eurozone | |
| 148 | + slug: euro-area | |
| 149 | + name: Euro area | |
| 150 | + kind: org | |
| 151 | + wb_code: EMU | |
| 152 | + description: EU member states using the euro (21 since Bulgaria joined on 1 January 2026). | |
| 153 | + members: [AUT, BEL, BGR, HRV, CYP, EST, FIN, FRA, DEU, GRC, IRL, ITA, LVA, LTU, LUX, MLT, NLD, PRT, SVK, SVN, ESP] | |
| 154 | +- id: brics | |
| 155 | + slug: brics | |
| 156 | + name: BRICS | |
| 157 | + kind: org | |
| 158 | + description: BRICS (expanded membership since 2024–2025). | |
| 159 | + members: [BRA, RUS, IND, CHN, ZAF, EGY, ETH, IRN, ARE, IDN] | |
| 160 | +- id: asean | |
| 161 | + slug: asean | |
| 162 | + name: ASEAN | |
| 163 | + kind: org | |
| 164 | + description: Association of Southeast Asian Nations (11 members since Timor-Leste joined in 2025). | |
| 165 | + members: [BRN, KHM, IDN, LAO, MYS, MMR, PHL, SGP, THA, VNM, TLS] | |
| 166 | +- id: usmca | |
| 167 | + slug: usmca | |
| 168 | + name: USMCA | |
| 169 | + kind: org | |
| 170 | + description: United States–Mexico–Canada Agreement. | |
| 171 | + members: [CAN, MEX, USA] | |
| 172 | +- id: nordic | |
| 173 | + slug: nordic-countries | |
| 174 | + name: Nordic countries | |
| 175 | + kind: org | |
| 176 | + description: Denmark, Finland, Iceland, Norway, Sweden (plus the Faroe Islands and Greenland). | |
| 177 | + members: [DNK, FIN, ISL, NOR, SWE, FRO, GRL] | |
| 178 | +- id: african-union | |
| 179 | + slug: african-union | |
| 180 | + name: African Union | |
| 181 | + kind: org | |
| 182 | + members: CONTINENT:Africa | |
| 183 | +- id: opec | |
| 184 | + slug: opec | |
| 185 | + name: OPEC | |
| 186 | + kind: org | |
| 187 | + description: Organization of the Petroleum Exporting Countries (12 members). | |
| 188 | + members: [DZA, COG, GNQ, GAB, IRN, IRQ, KWT, LBY, NGA, SAU, ARE, VEN] | |
| 189 | +- id: commonwealth | |
| 190 | + slug: commonwealth | |
| 191 | + name: Commonwealth of Nations | |
| 192 | + kind: org | |
| 193 | + members: [ATG, AUS, BHS, BGD, BRB, BLZ, BWA, BRN, CMR, CAN, CYP, DMA, SWZ, FJI, GAB, GMB, GHA, GRD, GUY, IND, JAM, KEN, KIR, LSO, | |
| 194 | + MWI, MYS, MDV, MLT, MUS, MOZ, NAM, NRU, NZL, NGA, PAK, PNG, RWA, KNA, LCA, VCT, WSM, SYC, SLE, SGP, SLB, ZAF, LKA, | |
| 195 | + TZA, TGO, TON, TTO, TUV, UGA, GBR, VUT, ZMB] | |
| 196 | +- id: mercosur | |
| 197 | + slug: mercosur | |
| 198 | + name: Mercosur | |
| 199 | + kind: org | |
| 200 | + members: [ARG, BRA, PRY, URY, BOL] | |
| 201 | +- id: gcc | |
| 202 | + slug: gulf-cooperation-council | |
| 203 | + name: Gulf Cooperation Council | |
| 204 | + kind: org | |
| 205 | + members: [BHR, KWT, OMN, QAT, SAU, ARE] | |
| 206 | +- id: small-island-developing-states | |
| 207 | + slug: small-island-developing-states | |
| 208 | + name: Small island developing states | |
| 209 | + kind: org | |
| 210 | + wb_code: SST | |
| 211 | + members: [ATG, BHS, BRB, BLZ, CPV, COM, CUB, DMA, DOM, FJI, GRD, GNB, GUY, HTI, JAM, KIR, MDV, MHL, MUS, FSM, NRU, PLW, PNG, | |
| 212 | + WSM, STP, SYC, SGP, SLB, KNA, LCA, VCT, SUR, TLS, TON, TTO, TUV, VUT] | |
added
registry/indicators.yaml
+3086 −0
@@ -0,0 +1,3086 @@ | ||
| 1 | +# Canonical CountryAtlas indicator registry. | |
| 2 | +# | |
| 3 | +# Defaults (applied by the loader when a key is absent): | |
| 4 | +# frequency: A · precision: 1 · aggregation: none · higher_is_better: null · ranking_eligible: true · featured: false | |
| 5 | +# scale: raw · bounds: [null, null] · jump_threshold: 4 (× MAD) · stale_after_days: by frequency (A 800, Q 200, M 75) | |
| 6 | +# `format`: currency | number | percent | years | index | per_1000 | per_100k | per_million | ratio | tonnes | kwh | ha | km | |
| 7 | +# `sources`: ordered by `priority` (1 = preferred). connector ∈ worldbank | imf | oecd | eurostat | who | fred | owid | bis | ilo | |
| 8 | +# worldbank: {dataset: WDI, code} imf: {dataset: WEO, code} oecd: {dataset: <dataflow>, code/filter: …} | |
| 9 | +# eurostat: {dataset, params: {…}} who: {dataset: GHO, code, params} fred: {code, countries: [USA]} | |
| 10 | +# owid: {dataset: co2|energy|grapher, code: <column or grapher slug>} bis: {dataset: WS_SPP|WS_CBPOL, filter} | |
| 11 | +# `transform`: optional expression on x (e.g. "x/1e9"), `countries`: restrict a source to listed ISO3. | |
| 12 | +# Connector agents append additional sources; keep slugs stable. | |
| 13 | + | |
| 14 | +indicators: | |
| 15 | + | |
| 16 | +# =========================================================== ECONOMY =========================================================== | |
| 17 | +- slug: gdp | |
| 18 | + name: GDP (current US$) | |
| 19 | + short_name: GDP | |
| 20 | + topic: economy | |
| 21 | + subtopic: Output | |
| 22 | + unit: current US$ | |
| 23 | + unit_short: US$ | |
| 24 | + format: currency | |
| 25 | + precision: 0 | |
| 26 | + aggregation: sum | |
| 27 | + featured: true | |
| 28 | + bounds: [0, null] | |
| 29 | + description: Gross domestic product at purchaser's prices, converted to US dollars at official exchange rates. | |
| 30 | + sources: | |
| 31 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.MKTP.CD, priority: 1} | |
| 32 | + - {connector: imf, dataset: WEO, code: NGDPD, priority: 2, transform: "x*1e9"} | |
| 33 | +- slug: gdp-ppp | |
| 34 | + name: GDP, PPP (current international $) | |
| 35 | + short_name: GDP (PPP) | |
| 36 | + topic: economy | |
| 37 | + subtopic: Output | |
| 38 | + unit: current international $ | |
| 39 | + unit_short: intl $ | |
| 40 | + format: currency | |
| 41 | + precision: 0 | |
| 42 | + aggregation: sum | |
| 43 | + bounds: [0, null] | |
| 44 | + description: GDP converted to international dollars using purchasing power parity rates. | |
| 45 | + sources: | |
| 46 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.MKTP.PP.CD, priority: 1} | |
| 47 | + - {connector: imf, dataset: WEO, code: PPPGDP, priority: 2, transform: "x*1e9"} | |
| 48 | +- slug: gdp-per-capita | |
| 49 | + name: GDP per capita (current US$) | |
| 50 | + short_name: GDP per capita | |
| 51 | + topic: economy | |
| 52 | + subtopic: Output | |
| 53 | + unit: current US$ | |
| 54 | + unit_short: US$ | |
| 55 | + format: currency | |
| 56 | + precision: 0 | |
| 57 | + aggregation: weighted_mean | |
| 58 | + higher_is_better: true | |
| 59 | + featured: true | |
| 60 | + bounds: [0, null] | |
| 61 | + description: Gross domestic product divided by midyear population, in current US dollars. | |
| 62 | + sources: | |
| 63 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.PCAP.CD, priority: 1} | |
| 64 | + - {connector: imf, dataset: WEO, code: NGDPDPC, priority: 2} | |
| 65 | +- slug: gdp-per-capita-ppp | |
| 66 | + name: GDP per capita, PPP (current international $) | |
| 67 | + short_name: GDP per capita (PPP) | |
| 68 | + topic: economy | |
| 69 | + subtopic: Output | |
| 70 | + unit: current international $ | |
| 71 | + unit_short: intl $ | |
| 72 | + format: currency | |
| 73 | + precision: 0 | |
| 74 | + higher_is_better: true | |
| 75 | + featured: true | |
| 76 | + bounds: [0, null] | |
| 77 | + description: GDP per capita based on purchasing power parity. | |
| 78 | + sources: | |
| 79 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.PCAP.PP.CD, priority: 1} | |
| 80 | + - {connector: imf, dataset: WEO, code: PPPPC, priority: 2} | |
| 81 | +- slug: gdp-growth | |
| 82 | + name: Real GDP growth | |
| 83 | + short_name: GDP growth | |
| 84 | + topic: economy | |
| 85 | + subtopic: Growth | |
| 86 | + unit: annual % | |
| 87 | + unit_short: "%" | |
| 88 | + format: percent | |
| 89 | + higher_is_better: true | |
| 90 | + featured: true | |
| 91 | + bounds: [-70, 150] | |
| 92 | + change_floor: 3 | |
| 93 | + description: Annual percentage growth rate of GDP at market prices based on constant local currency. | |
| 94 | + sources: | |
| 95 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.MKTP.KD.ZG, priority: 1} | |
| 96 | + - {connector: imf, dataset: WEO, code: NGDP_RPCH, priority: 2} | |
| 97 | +- slug: gdp-per-capita-growth | |
| 98 | + name: GDP per capita growth | |
| 99 | + topic: economy | |
| 100 | + subtopic: Growth | |
| 101 | + unit: annual % | |
| 102 | + unit_short: "%" | |
| 103 | + format: percent | |
| 104 | + higher_is_better: true | |
| 105 | + bounds: [-70, 150] | |
| 106 | + change_floor: 3 | |
| 107 | + description: Annual percentage growth rate of GDP per capita based on constant local currency. | |
| 108 | + sources: | |
| 109 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.PCAP.KD.ZG, priority: 1} | |
| 110 | +- slug: gdp-constant | |
| 111 | + name: GDP (constant 2015 US$) | |
| 112 | + short_name: Real GDP | |
| 113 | + topic: economy | |
| 114 | + subtopic: Output | |
| 115 | + unit: constant 2015 US$ | |
| 116 | + unit_short: US$ (2015) | |
| 117 | + format: currency | |
| 118 | + precision: 0 | |
| 119 | + aggregation: sum | |
| 120 | + bounds: [0, null] | |
| 121 | + description: GDP in constant 2015 US dollars — the volume measure used for real growth. | |
| 122 | + sources: | |
| 123 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.MKTP.KD, priority: 1} | |
| 124 | +- slug: inflation | |
| 125 | + name: Inflation, consumer prices | |
| 126 | + short_name: Inflation | |
| 127 | + topic: economy | |
| 128 | + subtopic: Prices | |
| 129 | + unit: annual % | |
| 130 | + unit_short: "%" | |
| 131 | + format: percent | |
| 132 | + higher_is_better: false | |
| 133 | + featured: true | |
| 134 | + bounds: [-30, 100000] | |
| 135 | + change_floor: 2 | |
| 136 | + description: Annual percentage change in the cost to the average consumer of acquiring a basket of goods and services. | |
| 137 | + sources: | |
| 138 | + - {connector: worldbank, dataset: WDI, code: FP.CPI.TOTL.ZG, priority: 1} | |
| 139 | + - {connector: imf, dataset: WEO, code: PCPIPCH, priority: 2} | |
| 140 | +- slug: inflation-gdp-deflator | |
| 141 | + name: Inflation, GDP deflator | |
| 142 | + topic: economy | |
| 143 | + subtopic: Prices | |
| 144 | + unit: annual % | |
| 145 | + unit_short: "%" | |
| 146 | + format: percent | |
| 147 | + bounds: [-50, 100000] | |
| 148 | + ranking_eligible: false | |
| 149 | + description: Annual growth rate of the GDP implicit deflator. | |
| 150 | + sources: | |
| 151 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.DEFL.KD.ZG, priority: 1} | |
| 152 | +- slug: policy-rate | |
| 153 | + name: Central bank policy rate | |
| 154 | + short_name: Policy rate | |
| 155 | + topic: economy | |
| 156 | + subtopic: Money & rates | |
| 157 | + unit: "% per annum" | |
| 158 | + unit_short: "%" | |
| 159 | + format: percent | |
| 160 | + precision: 2 | |
| 161 | + frequency: M | |
| 162 | + ranking_eligible: false | |
| 163 | + bounds: [-2, 200] | |
| 164 | + description: Official policy interest rate set by the central bank (end of period). | |
| 165 | + sources: [] # bis WS_CBPOL (all), fred FEDFUNDS (USA) — added by connector agents | |
| 166 | +- slug: lending-rate | |
| 167 | + name: Lending interest rate | |
| 168 | + topic: economy | |
| 169 | + subtopic: Money & rates | |
| 170 | + unit: "%" | |
| 171 | + unit_short: "%" | |
| 172 | + format: percent | |
| 173 | + ranking_eligible: false | |
| 174 | + bounds: [0, 500] | |
| 175 | + description: Bank rate that usually meets the short- and medium-term financing needs of the private sector. | |
| 176 | + sources: | |
| 177 | + - {connector: worldbank, dataset: WDI, code: FR.INR.LEND, priority: 1} | |
| 178 | +- slug: exchange-rate | |
| 179 | + name: Official exchange rate (LCU per US$) | |
| 180 | + short_name: Exchange rate | |
| 181 | + topic: economy | |
| 182 | + subtopic: Money & rates | |
| 183 | + unit: local currency units per US$ | |
| 184 | + unit_short: LCU/US$ | |
| 185 | + format: number | |
| 186 | + precision: 3 | |
| 187 | + ranking_eligible: false | |
| 188 | + bounds: [0, null] | |
| 189 | + description: Period-average official exchange rate, local currency units per US dollar. | |
| 190 | + sources: | |
| 191 | + - {connector: worldbank, dataset: WDI, code: PA.NUS.FCRF, priority: 1} | |
| 192 | +- slug: real-effective-exchange-rate | |
| 193 | + name: Real effective exchange rate index | |
| 194 | + short_name: REER | |
| 195 | + topic: economy | |
| 196 | + subtopic: Money & rates | |
| 197 | + unit: index (2010 = 100) | |
| 198 | + unit_short: index | |
| 199 | + format: index | |
| 200 | + ranking_eligible: false | |
| 201 | + description: Nominal effective exchange rate divided by a price deflator or index of costs (2010 = 100). | |
| 202 | + sources: | |
| 203 | + - {connector: worldbank, dataset: WDI, code: PX.REX.REER, priority: 1} | |
| 204 | +- slug: current-account-balance-pct-gdp | |
| 205 | + name: Current account balance (% of GDP) | |
| 206 | + short_name: Current account | |
| 207 | + topic: economy | |
| 208 | + subtopic: External | |
| 209 | + unit: "% of GDP" | |
| 210 | + unit_short: "% GDP" | |
| 211 | + format: percent | |
| 212 | + bounds: [-150, 100] | |
| 213 | + change_floor: 3 | |
| 214 | + description: Sum of net exports of goods and services, net primary income and net secondary income, as a share of GDP. | |
| 215 | + sources: | |
| 216 | + - {connector: worldbank, dataset: WDI, code: BN.CAB.XOKA.GD.ZS, priority: 1} | |
| 217 | + - {connector: imf, dataset: WEO, code: BCA_NGDPD, priority: 2} | |
| 218 | +- slug: current-account-balance | |
| 219 | + name: Current account balance (US$) | |
| 220 | + topic: trade | |
| 221 | + subtopic: Balance | |
| 222 | + unit: current US$ | |
| 223 | + unit_short: US$ | |
| 224 | + format: currency | |
| 225 | + precision: 0 | |
| 226 | + aggregation: sum | |
| 227 | + description: Current account balance in current US dollars. | |
| 228 | + sources: | |
| 229 | + - {connector: worldbank, dataset: WDI, code: BN.CAB.XOKA.CD, priority: 1} | |
| 230 | +- slug: gross-capital-formation-pct-gdp | |
| 231 | + name: Gross capital formation (% of GDP) | |
| 232 | + short_name: Investment | |
| 233 | + topic: economy | |
| 234 | + subtopic: Demand | |
| 235 | + unit: "% of GDP" | |
| 236 | + unit_short: "% GDP" | |
| 237 | + format: percent | |
| 238 | + bounds: [-20, 120] | |
| 239 | + description: Outlays on additions to fixed assets plus net changes in inventories, as a share of GDP. | |
| 240 | + sources: | |
| 241 | + - {connector: worldbank, dataset: WDI, code: NE.GDI.TOTL.ZS, priority: 1} | |
| 242 | +- slug: household-consumption-pct-gdp | |
| 243 | + name: Household consumption (% of GDP) | |
| 244 | + topic: economy | |
| 245 | + subtopic: Demand | |
| 246 | + unit: "% of GDP" | |
| 247 | + unit_short: "% GDP" | |
| 248 | + format: percent | |
| 249 | + bounds: [0, 200] | |
| 250 | + description: Final consumption expenditure of households and NPISHs as a share of GDP. | |
| 251 | + sources: | |
| 252 | + - {connector: worldbank, dataset: WDI, code: NE.CON.PRVT.ZS, priority: 1} | |
| 253 | +- slug: fdi-inflows-pct-gdp | |
| 254 | + name: Foreign direct investment, net inflows (% of GDP) | |
| 255 | + short_name: FDI inflows | |
| 256 | + topic: economy | |
| 257 | + subtopic: External | |
| 258 | + unit: "% of GDP" | |
| 259 | + unit_short: "% GDP" | |
| 260 | + format: percent | |
| 261 | + bounds: [-500, 500] | |
| 262 | + description: Net inflows of investment to acquire a lasting management interest in an enterprise, as a share of GDP. | |
| 263 | + sources: | |
| 264 | + - {connector: worldbank, dataset: WDI, code: BX.KLT.DINV.WD.GD.ZS, priority: 1} | |
| 265 | +- slug: fdi-outflows-pct-gdp | |
| 266 | + name: Foreign direct investment, net outflows (% of GDP) | |
| 267 | + short_name: FDI outflows | |
| 268 | + topic: trade | |
| 269 | + subtopic: Investment | |
| 270 | + unit: "% of GDP" | |
| 271 | + unit_short: "% GDP" | |
| 272 | + format: percent | |
| 273 | + bounds: [-500, 500] | |
| 274 | + sources: | |
| 275 | + - {connector: worldbank, dataset: WDI, code: BM.KLT.DINV.WD.GD.ZS, priority: 1} | |
| 276 | +- slug: broad-money-pct-gdp | |
| 277 | + name: Broad money (% of GDP) | |
| 278 | + topic: economy | |
| 279 | + subtopic: Money & rates | |
| 280 | + unit: "% of GDP" | |
| 281 | + unit_short: "% GDP" | |
| 282 | + format: percent | |
| 283 | + bounds: [0, 1000] | |
| 284 | + sources: | |
| 285 | + - {connector: worldbank, dataset: WDI, code: FM.LBL.BMNY.GD.ZS, priority: 1} | |
| 286 | +- slug: industrial-production-index | |
| 287 | + name: Industrial production index | |
| 288 | + topic: economy | |
| 289 | + subtopic: Output | |
| 290 | + unit: index (2015 = 100) | |
| 291 | + unit_short: index | |
| 292 | + format: index | |
| 293 | + frequency: M | |
| 294 | + ranking_eligible: false | |
| 295 | + description: Volume index of industrial production. | |
| 296 | + sources: [] # oecd/fred — added by connector agents | |
| 297 | +- slug: gdp-per-hour-worked | |
| 298 | + name: GDP per hour worked | |
| 299 | + short_name: Productivity | |
| 300 | + topic: economy | |
| 301 | + subtopic: Productivity | |
| 302 | + unit: US$ (PPP, current prices) | |
| 303 | + unit_short: US$/h | |
| 304 | + format: currency | |
| 305 | + precision: 1 | |
| 306 | + higher_is_better: true | |
| 307 | + bounds: [0, 500] | |
| 308 | + description: Labour productivity — GDP per hour worked, current prices, PPP. | |
| 309 | + sources: [] # oecd DSD_PDB — added by connector agents | |
| 310 | +- slug: gdp-per-person-employed | |
| 311 | + name: GDP per person employed (constant 2021 PPP $) | |
| 312 | + topic: labor | |
| 313 | + subtopic: Productivity | |
| 314 | + unit: constant 2021 PPP $ | |
| 315 | + unit_short: PPP $ | |
| 316 | + format: currency | |
| 317 | + precision: 0 | |
| 318 | + higher_is_better: true | |
| 319 | + bounds: [0, null] | |
| 320 | + sources: | |
| 321 | + - {connector: worldbank, dataset: WDI, code: SL.GDP.PCAP.EM.KD, priority: 1} | |
| 322 | +- slug: agriculture-value-added-pct-gdp | |
| 323 | + name: Agriculture, forestry and fishing, value added (% of GDP) | |
| 324 | + short_name: Agriculture share | |
| 325 | + topic: economy | |
| 326 | + subtopic: Structure | |
| 327 | + unit: "% of GDP" | |
| 328 | + unit_short: "% GDP" | |
| 329 | + format: percent | |
| 330 | + bounds: [0, 100] | |
| 331 | + sources: | |
| 332 | + - {connector: worldbank, dataset: WDI, code: NV.AGR.TOTL.ZS, priority: 1} | |
| 333 | +- slug: industry-value-added-pct-gdp | |
| 334 | + name: Industry (incl. construction), value added (% of GDP) | |
| 335 | + short_name: Industry share | |
| 336 | + topic: economy | |
| 337 | + subtopic: Structure | |
| 338 | + unit: "% of GDP" | |
| 339 | + unit_short: "% GDP" | |
| 340 | + format: percent | |
| 341 | + bounds: [0, 100] | |
| 342 | + sources: | |
| 343 | + - {connector: worldbank, dataset: WDI, code: NV.IND.TOTL.ZS, priority: 1} | |
| 344 | +- slug: manufacturing-value-added-pct-gdp | |
| 345 | + name: Manufacturing, value added (% of GDP) | |
| 346 | + short_name: Manufacturing share | |
| 347 | + topic: economy | |
| 348 | + subtopic: Structure | |
| 349 | + unit: "% of GDP" | |
| 350 | + unit_short: "% GDP" | |
| 351 | + format: percent | |
| 352 | + bounds: [0, 100] | |
| 353 | + sources: | |
| 354 | + - {connector: worldbank, dataset: WDI, code: NV.IND.MANF.ZS, priority: 1} | |
| 355 | +- slug: services-value-added-pct-gdp | |
| 356 | + name: Services, value added (% of GDP) | |
| 357 | + short_name: Services share | |
| 358 | + topic: economy | |
| 359 | + subtopic: Structure | |
| 360 | + unit: "% of GDP" | |
| 361 | + unit_short: "% GDP" | |
| 362 | + format: percent | |
| 363 | + bounds: [0, 100] | |
| 364 | + sources: | |
| 365 | + - {connector: worldbank, dataset: WDI, code: NV.SRV.TOTL.ZS, priority: 1} | |
| 366 | +- slug: gross-savings-pct-gdp | |
| 367 | + name: Gross savings (% of GDP) | |
| 368 | + topic: economy | |
| 369 | + subtopic: Demand | |
| 370 | + unit: "% of GDP" | |
| 371 | + unit_short: "% GDP" | |
| 372 | + format: percent | |
| 373 | + bounds: [-100, 100] | |
| 374 | + sources: | |
| 375 | + - {connector: worldbank, dataset: WDI, code: NY.GNS.ICTR.ZS, priority: 1} | |
| 376 | +- slug: natural-resources-rents-pct-gdp | |
| 377 | + name: Total natural resources rents (% of GDP) | |
| 378 | + short_name: Resource rents | |
| 379 | + topic: economy | |
| 380 | + subtopic: Structure | |
| 381 | + unit: "% of GDP" | |
| 382 | + unit_short: "% GDP" | |
| 383 | + format: percent | |
| 384 | + bounds: [0, 100] | |
| 385 | + sources: | |
| 386 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.TOTL.RT.ZS, priority: 1} | |
| 387 | +- slug: remittances-received-pct-gdp | |
| 388 | + name: Personal remittances received (% of GDP) | |
| 389 | + short_name: Remittances | |
| 390 | + topic: economy | |
| 391 | + subtopic: External | |
| 392 | + unit: "% of GDP" | |
| 393 | + unit_short: "% GDP" | |
| 394 | + format: percent | |
| 395 | + bounds: [0, 100] | |
| 396 | + sources: | |
| 397 | + - {connector: worldbank, dataset: WDI, code: BX.TRF.PWKR.DT.GD.ZS, priority: 1} | |
| 398 | + | |
| 399 | +# ========================================================= GOVERNMENT ========================================================== | |
| 400 | +- slug: government-debt-pct-gdp | |
| 401 | + name: Central government debt (% of GDP) | |
| 402 | + short_name: Debt / GDP | |
| 403 | + topic: government | |
| 404 | + subtopic: Debt | |
| 405 | + unit: "% of GDP" | |
| 406 | + unit_short: "% GDP" | |
| 407 | + format: percent | |
| 408 | + higher_is_better: false | |
| 409 | + featured: true | |
| 410 | + bounds: [0, 600] | |
| 411 | + change_floor: 5 | |
| 412 | + description: Entire stock of direct government fixed-term contractual obligations to others outstanding, as a share of GDP. | |
| 413 | + sources: | |
| 414 | + - {connector: worldbank, dataset: WDI, code: GC.DOD.TOTL.GD.ZS, priority: 1} | |
| 415 | +- slug: general-government-gross-debt-pct-gdp | |
| 416 | + name: General government gross debt (% of GDP) | |
| 417 | + short_name: Gross debt / GDP | |
| 418 | + topic: government | |
| 419 | + subtopic: Debt | |
| 420 | + unit: "% of GDP" | |
| 421 | + unit_short: "% GDP" | |
| 422 | + format: percent | |
| 423 | + higher_is_better: false | |
| 424 | + featured: true | |
| 425 | + bounds: [0, 600] | |
| 426 | + change_floor: 5 | |
| 427 | + description: Gross debt of the general government sector (IMF WEO), including projections. | |
| 428 | + sources: | |
| 429 | + - {connector: imf, dataset: WEO, code: GGXWDG_NGDP, priority: 1} | |
| 430 | +- slug: fiscal-balance-pct-gdp | |
| 431 | + name: General government net lending/borrowing (% of GDP) | |
| 432 | + short_name: Fiscal balance | |
| 433 | + topic: government | |
| 434 | + subtopic: Balance | |
| 435 | + unit: "% of GDP" | |
| 436 | + unit_short: "% GDP" | |
| 437 | + format: percent | |
| 438 | + higher_is_better: true | |
| 439 | + bounds: [-150, 100] | |
| 440 | + change_floor: 3 | |
| 441 | + description: Overall fiscal balance of the general government (IMF WEO), surplus positive. | |
| 442 | + sources: | |
| 443 | + - {connector: imf, dataset: WEO, code: GGXCNL_NGDP, priority: 1} | |
| 444 | +- slug: government-revenue-pct-gdp | |
| 445 | + name: Government revenue, excluding grants (% of GDP) | |
| 446 | + short_name: Revenue | |
| 447 | + topic: government | |
| 448 | + subtopic: Revenue & spending | |
| 449 | + unit: "% of GDP" | |
| 450 | + unit_short: "% GDP" | |
| 451 | + format: percent | |
| 452 | + bounds: [0, 150] | |
| 453 | + sources: | |
| 454 | + - {connector: worldbank, dataset: WDI, code: GC.REV.XGRT.GD.ZS, priority: 1} | |
| 455 | + - {connector: imf, dataset: WEO, code: GGR_NGDP, priority: 2} | |
| 456 | +- slug: government-expenditure-pct-gdp | |
| 457 | + name: Government expenditure (% of GDP) | |
| 458 | + short_name: Expenditure | |
| 459 | + topic: government | |
| 460 | + subtopic: Revenue & spending | |
| 461 | + unit: "% of GDP" | |
| 462 | + unit_short: "% GDP" | |
| 463 | + format: percent | |
| 464 | + bounds: [0, 200] | |
| 465 | + sources: | |
| 466 | + - {connector: worldbank, dataset: WDI, code: GC.XPN.TOTL.GD.ZS, priority: 1} | |
| 467 | + - {connector: imf, dataset: WEO, code: GGX_NGDP, priority: 2} | |
| 468 | +- slug: tax-revenue-pct-gdp | |
| 469 | + name: Tax revenue (% of GDP) | |
| 470 | + short_name: Tax revenue | |
| 471 | + topic: government | |
| 472 | + subtopic: Revenue & spending | |
| 473 | + unit: "% of GDP" | |
| 474 | + unit_short: "% GDP" | |
| 475 | + format: percent | |
| 476 | + bounds: [0, 100] | |
| 477 | + sources: | |
| 478 | + - {connector: worldbank, dataset: WDI, code: GC.TAX.TOTL.GD.ZS, priority: 1} | |
| 479 | +- slug: social-expenditure-pct-gdp | |
| 480 | + name: Public social expenditure (% of GDP) | |
| 481 | + short_name: Social spending | |
| 482 | + topic: government | |
| 483 | + subtopic: Revenue & spending | |
| 484 | + unit: "% of GDP" | |
| 485 | + unit_short: "% GDP" | |
| 486 | + format: percent | |
| 487 | + bounds: [0, 60] | |
| 488 | + sources: [] # oecd SOCX — added by connector agents | |
| 489 | +- slug: military-expenditure-pct-gdp | |
| 490 | + name: Military expenditure (% of GDP) | |
| 491 | + short_name: Military spending | |
| 492 | + topic: government | |
| 493 | + subtopic: Revenue & spending | |
| 494 | + unit: "% of GDP" | |
| 495 | + unit_short: "% GDP" | |
| 496 | + format: percent | |
| 497 | + bounds: [0, 120] | |
| 498 | + sources: | |
| 499 | + - {connector: worldbank, dataset: WDI, code: MS.MIL.XPND.GD.ZS, priority: 1} | |
| 500 | +- slug: military-expenditure | |
| 501 | + name: Military expenditure (current US$) | |
| 502 | + topic: security | |
| 503 | + subtopic: Defence | |
| 504 | + unit: current US$ | |
| 505 | + unit_short: US$ | |
| 506 | + format: currency | |
| 507 | + precision: 0 | |
| 508 | + aggregation: sum | |
| 509 | + bounds: [0, null] | |
| 510 | + sources: | |
| 511 | + - {connector: worldbank, dataset: WDI, code: MS.MIL.XPND.CD, priority: 1} | |
| 512 | +- slug: health-expenditure-pct-gdp | |
| 513 | + name: Current health expenditure (% of GDP) | |
| 514 | + short_name: Health spending | |
| 515 | + topic: health | |
| 516 | + subtopic: Spending | |
| 517 | + unit: "% of GDP" | |
| 518 | + unit_short: "% GDP" | |
| 519 | + format: percent | |
| 520 | + bounds: [0, 40] | |
| 521 | + sources: | |
| 522 | + - {connector: worldbank, dataset: WDI, code: SH.XPD.CHEX.GD.ZS, priority: 1} | |
| 523 | +- slug: education-expenditure-pct-gdp | |
| 524 | + name: Government expenditure on education (% of GDP) | |
| 525 | + short_name: Education spending | |
| 526 | + topic: education | |
| 527 | + subtopic: Spending | |
| 528 | + unit: "% of GDP" | |
| 529 | + unit_short: "% GDP" | |
| 530 | + format: percent | |
| 531 | + bounds: [0, 30] | |
| 532 | + sources: | |
| 533 | + - {connector: worldbank, dataset: WDI, code: SE.XPD.TOTL.GD.ZS, priority: 1} | |
| 534 | +- slug: interest-payments-pct-revenue | |
| 535 | + name: Interest payments (% of revenue) | |
| 536 | + topic: government | |
| 537 | + subtopic: Debt | |
| 538 | + unit: "% of revenue" | |
| 539 | + unit_short: "%" | |
| 540 | + format: percent | |
| 541 | + higher_is_better: false | |
| 542 | + bounds: [0, 200] | |
| 543 | + sources: | |
| 544 | + - {connector: worldbank, dataset: WDI, code: GC.XPN.INTP.RV.ZS, priority: 1} | |
| 545 | +- slug: external-debt-pct-gni | |
| 546 | + name: External debt stocks (% of GNI) | |
| 547 | + topic: government | |
| 548 | + subtopic: Debt | |
| 549 | + unit: "% of GNI" | |
| 550 | + unit_short: "% GNI" | |
| 551 | + format: percent | |
| 552 | + bounds: [0, 2000] | |
| 553 | + sources: | |
| 554 | + - {connector: worldbank, dataset: WDI, code: DT.DOD.DECT.GN.ZS, priority: 1} | |
| 555 | +- slug: government-effectiveness | |
| 556 | + name: Government effectiveness (WGI estimate) | |
| 557 | + topic: government | |
| 558 | + subtopic: Institutions | |
| 559 | + unit: estimate (−2.5 to 2.5) | |
| 560 | + unit_short: score | |
| 561 | + format: number | |
| 562 | + precision: 2 | |
| 563 | + higher_is_better: true | |
| 564 | + bounds: [-3, 3] | |
| 565 | + description: Worldwide Governance Indicators — perceptions of the quality of public services and policy implementation. | |
| 566 | + sources: | |
| 567 | + - {connector: worldbank, dataset: WDI, code: GE.EST, priority: 1} | |
| 568 | +- slug: control-of-corruption | |
| 569 | + name: Control of corruption (WGI estimate) | |
| 570 | + topic: government | |
| 571 | + subtopic: Institutions | |
| 572 | + unit: estimate (−2.5 to 2.5) | |
| 573 | + unit_short: score | |
| 574 | + format: number | |
| 575 | + precision: 2 | |
| 576 | + higher_is_better: true | |
| 577 | + bounds: [-3, 3] | |
| 578 | + sources: | |
| 579 | + - {connector: worldbank, dataset: WDI, code: CC.EST, priority: 1} | |
| 580 | +- slug: rule-of-law | |
| 581 | + name: Rule of law (WGI estimate) | |
| 582 | + topic: government | |
| 583 | + subtopic: Institutions | |
| 584 | + unit: estimate (−2.5 to 2.5) | |
| 585 | + unit_short: score | |
| 586 | + format: number | |
| 587 | + precision: 2 | |
| 588 | + higher_is_better: true | |
| 589 | + bounds: [-3, 3] | |
| 590 | + sources: | |
| 591 | + - {connector: worldbank, dataset: WDI, code: RL.EST, priority: 1} | |
| 592 | +- slug: political-stability | |
| 593 | + name: Political stability and absence of violence (WGI estimate) | |
| 594 | + short_name: Political stability | |
| 595 | + topic: security | |
| 596 | + subtopic: Institutions | |
| 597 | + unit: estimate (−2.5 to 2.5) | |
| 598 | + unit_short: score | |
| 599 | + format: number | |
| 600 | + precision: 2 | |
| 601 | + higher_is_better: true | |
| 602 | + bounds: [-3, 3] | |
| 603 | + sources: | |
| 604 | + - {connector: worldbank, dataset: WDI, code: PV.EST, priority: 1} | |
| 605 | +- slug: voice-and-accountability | |
| 606 | + name: Voice and accountability (WGI estimate) | |
| 607 | + topic: security | |
| 608 | + subtopic: Institutions | |
| 609 | + unit: estimate (−2.5 to 2.5) | |
| 610 | + unit_short: score | |
| 611 | + format: number | |
| 612 | + precision: 2 | |
| 613 | + higher_is_better: true | |
| 614 | + bounds: [-3, 3] | |
| 615 | + sources: | |
| 616 | + - {connector: worldbank, dataset: WDI, code: VA.EST, priority: 1} | |
| 617 | +- slug: regulatory-quality | |
| 618 | + name: Regulatory quality (WGI estimate) | |
| 619 | + topic: security | |
| 620 | + subtopic: Institutions | |
| 621 | + unit: estimate (−2.5 to 2.5) | |
| 622 | + unit_short: score | |
| 623 | + format: number | |
| 624 | + precision: 2 | |
| 625 | + higher_is_better: true | |
| 626 | + bounds: [-3, 3] | |
| 627 | + sources: | |
| 628 | + - {connector: worldbank, dataset: WDI, code: RQ.EST, priority: 1} | |
| 629 | + | |
| 630 | +# ========================================================= POPULATION ========================================================== | |
| 631 | +- slug: population | |
| 632 | + name: Population, total | |
| 633 | + short_name: Population | |
| 634 | + topic: population | |
| 635 | + subtopic: Size & growth | |
| 636 | + unit: people | |
| 637 | + unit_short: people | |
| 638 | + format: number | |
| 639 | + precision: 0 | |
| 640 | + aggregation: sum | |
| 641 | + featured: true | |
| 642 | + bounds: [0, null] | |
| 643 | + description: Midyear estimate of all residents regardless of legal status or citizenship. | |
| 644 | + sources: | |
| 645 | + - {connector: worldbank, dataset: WDI, code: SP.POP.TOTL, priority: 1} | |
| 646 | +- slug: population-growth | |
| 647 | + name: Population growth | |
| 648 | + topic: population | |
| 649 | + subtopic: Size & growth | |
| 650 | + unit: annual % | |
| 651 | + unit_short: "%" | |
| 652 | + format: percent | |
| 653 | + precision: 2 | |
| 654 | + featured: true | |
| 655 | + bounds: [-30, 30] | |
| 656 | + change_floor: 0.5 | |
| 657 | + description: Exponential rate of growth of midyear population from year t−1 to t. | |
| 658 | + sources: | |
| 659 | + - {connector: worldbank, dataset: WDI, code: SP.POP.GROW, priority: 1} | |
| 660 | +- slug: population-density | |
| 661 | + name: Population density | |
| 662 | + topic: population | |
| 663 | + subtopic: Size & growth | |
| 664 | + unit: people per km² of land area | |
| 665 | + unit_short: /km² | |
| 666 | + format: number | |
| 667 | + precision: 1 | |
| 668 | + bounds: [0, 100000] | |
| 669 | + sources: | |
| 670 | + - {connector: worldbank, dataset: WDI, code: EN.POP.DNST, priority: 1} | |
| 671 | +- slug: urban-population-share | |
| 672 | + name: Urban population (% of total) | |
| 673 | + short_name: Urbanisation | |
| 674 | + topic: population | |
| 675 | + subtopic: Urbanisation | |
| 676 | + unit: "% of population" | |
| 677 | + unit_short: "%" | |
| 678 | + format: percent | |
| 679 | + bounds: [0, 100] | |
| 680 | + sources: | |
| 681 | + - {connector: worldbank, dataset: WDI, code: SP.URB.TOTL.IN.ZS, priority: 1} | |
| 682 | +- slug: urban-population | |
| 683 | + name: Urban population | |
| 684 | + topic: population | |
| 685 | + subtopic: Urbanisation | |
| 686 | + unit: people | |
| 687 | + unit_short: people | |
| 688 | + format: number | |
| 689 | + precision: 0 | |
| 690 | + aggregation: sum | |
| 691 | + bounds: [0, null] | |
| 692 | + sources: | |
| 693 | + - {connector: worldbank, dataset: WDI, code: SP.URB.TOTL, priority: 1} | |
| 694 | +- slug: rural-population | |
| 695 | + name: Rural population | |
| 696 | + topic: population | |
| 697 | + subtopic: Urbanisation | |
| 698 | + unit: people | |
| 699 | + unit_short: people | |
| 700 | + format: number | |
| 701 | + precision: 0 | |
| 702 | + aggregation: sum | |
| 703 | + bounds: [0, null] | |
| 704 | + sources: | |
| 705 | + - {connector: worldbank, dataset: WDI, code: SP.RUR.TOTL, priority: 1} | |
| 706 | +- slug: fertility-rate | |
| 707 | + name: Fertility rate, total | |
| 708 | + short_name: Fertility | |
| 709 | + topic: population | |
| 710 | + subtopic: Births & deaths | |
| 711 | + unit: births per woman | |
| 712 | + unit_short: births/woman | |
| 713 | + format: number | |
| 714 | + precision: 2 | |
| 715 | + featured: true | |
| 716 | + bounds: [0, 10] | |
| 717 | + change_floor: 0.2 | |
| 718 | + sources: | |
| 719 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.TFRT.IN, priority: 1} | |
| 720 | +- slug: birth-rate | |
| 721 | + name: Birth rate, crude | |
| 722 | + topic: population | |
| 723 | + subtopic: Births & deaths | |
| 724 | + unit: per 1,000 people | |
| 725 | + unit_short: /1,000 | |
| 726 | + format: per_1000 | |
| 727 | + bounds: [0, 70] | |
| 728 | + sources: | |
| 729 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.CBRT.IN, priority: 1} | |
| 730 | +- slug: death-rate | |
| 731 | + name: Death rate, crude | |
| 732 | + topic: population | |
| 733 | + subtopic: Births & deaths | |
| 734 | + unit: per 1,000 people | |
| 735 | + unit_short: /1,000 | |
| 736 | + format: per_1000 | |
| 737 | + bounds: [0, 100] | |
| 738 | + sources: | |
| 739 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.CDRT.IN, priority: 1} | |
| 740 | +- slug: median-age | |
| 741 | + name: Median age | |
| 742 | + topic: population | |
| 743 | + subtopic: Age structure | |
| 744 | + unit: years | |
| 745 | + unit_short: yrs | |
| 746 | + format: years | |
| 747 | + featured: true | |
| 748 | + bounds: [10, 70] | |
| 749 | + description: Age that divides the population into two numerically equal groups (UN World Population Prospects). | |
| 750 | + sources: | |
| 751 | + - {connector: owid, dataset: grapher, code: median-age, priority: 1} | |
| 752 | +- slug: population-0-14-share | |
| 753 | + name: Population ages 0–14 (% of total) | |
| 754 | + short_name: Children (0–14) | |
| 755 | + topic: population | |
| 756 | + subtopic: Age structure | |
| 757 | + unit: "% of population" | |
| 758 | + unit_short: "%" | |
| 759 | + format: percent | |
| 760 | + bounds: [0, 70] | |
| 761 | + sources: | |
| 762 | + - {connector: worldbank, dataset: WDI, code: SP.POP.0014.TO.ZS, priority: 1} | |
| 763 | +- slug: population-15-64-share | |
| 764 | + name: Population ages 15–64 (% of total) | |
| 765 | + short_name: Working age (15–64) | |
| 766 | + topic: population | |
| 767 | + subtopic: Age structure | |
| 768 | + unit: "% of population" | |
| 769 | + unit_short: "%" | |
| 770 | + format: percent | |
| 771 | + bounds: [0, 100] | |
| 772 | + sources: | |
| 773 | + - {connector: worldbank, dataset: WDI, code: SP.POP.1564.TO.ZS, priority: 1} | |
| 774 | +- slug: population-65-plus-share | |
| 775 | + name: Population ages 65 and above (% of total) | |
| 776 | + short_name: Seniors (65+) | |
| 777 | + topic: population | |
| 778 | + subtopic: Age structure | |
| 779 | + unit: "% of population" | |
| 780 | + unit_short: "%" | |
| 781 | + format: percent | |
| 782 | + bounds: [0, 60] | |
| 783 | + sources: | |
| 784 | + - {connector: worldbank, dataset: WDI, code: SP.POP.65UP.TO.ZS, priority: 1} | |
| 785 | +- slug: dependency-ratio | |
| 786 | + name: Age dependency ratio | |
| 787 | + topic: population | |
| 788 | + subtopic: Age structure | |
| 789 | + unit: "% of working-age population" | |
| 790 | + unit_short: "%" | |
| 791 | + format: percent | |
| 792 | + bounds: [0, 200] | |
| 793 | + sources: | |
| 794 | + - {connector: worldbank, dataset: WDI, code: SP.POP.DPND, priority: 1} | |
| 795 | +- slug: old-age-dependency-ratio | |
| 796 | + name: Old-age dependency ratio | |
| 797 | + topic: population | |
| 798 | + subtopic: Age structure | |
| 799 | + unit: "% of working-age population" | |
| 800 | + unit_short: "%" | |
| 801 | + format: percent | |
| 802 | + bounds: [0, 150] | |
| 803 | + sources: | |
| 804 | + - {connector: worldbank, dataset: WDI, code: SP.POP.DPND.OL, priority: 1} | |
| 805 | +- slug: net-migration | |
| 806 | + name: Net migration | |
| 807 | + topic: population | |
| 808 | + subtopic: Migration | |
| 809 | + unit: people | |
| 810 | + unit_short: people | |
| 811 | + format: number | |
| 812 | + precision: 0 | |
| 813 | + aggregation: sum | |
| 814 | + description: Total number of immigrants less the annual number of emigrants, including citizens and noncitizens. | |
| 815 | + sources: | |
| 816 | + - {connector: worldbank, dataset: WDI, code: SM.POP.NETM, priority: 1} | |
| 817 | +- slug: international-migrant-stock-share | |
| 818 | + name: International migrant stock (% of population) | |
| 819 | + short_name: Migrant stock | |
| 820 | + topic: population | |
| 821 | + subtopic: Migration | |
| 822 | + unit: "% of population" | |
| 823 | + unit_short: "%" | |
| 824 | + format: percent | |
| 825 | + bounds: [0, 100] | |
| 826 | + sources: | |
| 827 | + - {connector: worldbank, dataset: WDI, code: SM.POP.TOTL.ZS, priority: 1} | |
| 828 | +- slug: refugee-population | |
| 829 | + name: Refugee population by country of asylum | |
| 830 | + short_name: Refugees hosted | |
| 831 | + topic: security | |
| 832 | + subtopic: Displacement | |
| 833 | + unit: people | |
| 834 | + unit_short: people | |
| 835 | + format: number | |
| 836 | + precision: 0 | |
| 837 | + aggregation: sum | |
| 838 | + bounds: [0, null] | |
| 839 | + sources: | |
| 840 | + - {connector: worldbank, dataset: WDI, code: SM.POP.REFG, priority: 1} | |
| 841 | +- slug: refugees-by-origin | |
| 842 | + name: Refugee population by country of origin | |
| 843 | + topic: security | |
| 844 | + subtopic: Displacement | |
| 845 | + unit: people | |
| 846 | + unit_short: people | |
| 847 | + format: number | |
| 848 | + precision: 0 | |
| 849 | + aggregation: sum | |
| 850 | + bounds: [0, null] | |
| 851 | + sources: | |
| 852 | + - {connector: worldbank, dataset: WDI, code: SM.POP.REFG.OR, priority: 1} | |
| 853 | +- slug: internally-displaced-persons | |
| 854 | + name: Internally displaced persons (conflict and violence) | |
| 855 | + topic: security | |
| 856 | + subtopic: Displacement | |
| 857 | + unit: people | |
| 858 | + unit_short: people | |
| 859 | + format: number | |
| 860 | + precision: 0 | |
| 861 | + aggregation: sum | |
| 862 | + bounds: [0, null] | |
| 863 | + sources: | |
| 864 | + - {connector: worldbank, dataset: WDI, code: VC.IDP.TOCV, priority: 1} | |
| 865 | +- slug: life-expectancy | |
| 866 | + name: Life expectancy at birth | |
| 867 | + short_name: Life expectancy | |
| 868 | + topic: health | |
| 869 | + subtopic: Longevity | |
| 870 | + unit: years | |
| 871 | + unit_short: yrs | |
| 872 | + format: years | |
| 873 | + higher_is_better: true | |
| 874 | + featured: true | |
| 875 | + bounds: [20, 100] | |
| 876 | + change_floor: 1 | |
| 877 | + description: Number of years a newborn infant would live if prevailing patterns of mortality were to stay the same throughout its life. | |
| 878 | + sources: | |
| 879 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.LE00.IN, priority: 1} | |
| 880 | + - {connector: who, dataset: GHO, code: WHOSIS_000001, params: {Dim1: SEX_BTSX}, priority: 2} | |
| 881 | +- slug: life-expectancy-female | |
| 882 | + name: Life expectancy at birth, female | |
| 883 | + topic: health | |
| 884 | + subtopic: Longevity | |
| 885 | + unit: years | |
| 886 | + unit_short: yrs | |
| 887 | + format: years | |
| 888 | + higher_is_better: true | |
| 889 | + bounds: [20, 100] | |
| 890 | + sources: | |
| 891 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.LE00.FE.IN, priority: 1} | |
| 892 | +- slug: life-expectancy-male | |
| 893 | + name: Life expectancy at birth, male | |
| 894 | + topic: health | |
| 895 | + subtopic: Longevity | |
| 896 | + unit: years | |
| 897 | + unit_short: yrs | |
| 898 | + format: years | |
| 899 | + higher_is_better: true | |
| 900 | + bounds: [20, 100] | |
| 901 | + sources: | |
| 902 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.LE00.MA.IN, priority: 1} | |
| 903 | +- slug: adolescent-fertility-rate | |
| 904 | + name: Adolescent fertility rate | |
| 905 | + topic: population | |
| 906 | + subtopic: Births & deaths | |
| 907 | + unit: births per 1,000 women ages 15–19 | |
| 908 | + unit_short: /1,000 | |
| 909 | + format: per_1000 | |
| 910 | + higher_is_better: false | |
| 911 | + bounds: [0, 300] | |
| 912 | + sources: | |
| 913 | + - {connector: worldbank, dataset: WDI, code: SP.ADO.TFRT, priority: 1} | |
| 914 | +- slug: population-female-share | |
| 915 | + name: Population, female (% of total) | |
| 916 | + topic: population | |
| 917 | + subtopic: Size & growth | |
| 918 | + unit: "% of population" | |
| 919 | + unit_short: "%" | |
| 920 | + format: percent | |
| 921 | + bounds: [20, 70] | |
| 922 | + ranking_eligible: false | |
| 923 | + sources: | |
| 924 | + - {connector: worldbank, dataset: WDI, code: SP.POP.TOTL.FE.ZS, priority: 1} | |
| 925 | + | |
| 926 | +# =========================================================== LABOR ============================================================= | |
| 927 | +- slug: unemployment-rate | |
| 928 | + name: Unemployment rate | |
| 929 | + short_name: Unemployment | |
| 930 | + topic: labor | |
| 931 | + subtopic: Unemployment | |
| 932 | + unit: "% of labour force" | |
| 933 | + unit_short: "%" | |
| 934 | + format: percent | |
| 935 | + higher_is_better: false | |
| 936 | + featured: true | |
| 937 | + bounds: [0, 60] | |
| 938 | + change_floor: 1 | |
| 939 | + description: Share of the labour force that is without work but available for and seeking employment (ILO modelled estimate). | |
| 940 | + sources: | |
| 941 | + - {connector: worldbank, dataset: WDI, code: SL.UEM.TOTL.ZS, priority: 1} | |
| 942 | + - {connector: imf, dataset: WEO, code: LUR, priority: 2} | |
| 943 | +- slug: youth-unemployment-rate | |
| 944 | + name: Youth unemployment rate (ages 15–24) | |
| 945 | + short_name: Youth unemployment | |
| 946 | + topic: labor | |
| 947 | + subtopic: Unemployment | |
| 948 | + unit: "% of labour force ages 15–24" | |
| 949 | + unit_short: "%" | |
| 950 | + format: percent | |
| 951 | + higher_is_better: false | |
| 952 | + bounds: [0, 100] | |
| 953 | + change_floor: 2 | |
| 954 | + sources: | |
| 955 | + - {connector: worldbank, dataset: WDI, code: SL.UEM.1524.ZS, priority: 1} | |
| 956 | +- slug: labor-force-participation-rate | |
| 957 | + name: Labour force participation rate (ages 15+) | |
| 958 | + short_name: Participation | |
| 959 | + topic: labor | |
| 960 | + subtopic: Participation | |
| 961 | + unit: "% of population ages 15+" | |
| 962 | + unit_short: "%" | |
| 963 | + format: percent | |
| 964 | + bounds: [0, 100] | |
| 965 | + sources: | |
| 966 | + - {connector: worldbank, dataset: WDI, code: SL.TLF.CACT.ZS, priority: 1} | |
| 967 | +- slug: labor-force-participation-female | |
| 968 | + name: Labour force participation rate, female (ages 15+) | |
| 969 | + topic: labor | |
| 970 | + subtopic: Participation | |
| 971 | + unit: "% of female population ages 15+" | |
| 972 | + unit_short: "%" | |
| 973 | + format: percent | |
| 974 | + bounds: [0, 100] | |
| 975 | + sources: | |
| 976 | + - {connector: worldbank, dataset: WDI, code: SL.TLF.CACT.FE.ZS, priority: 1} | |
| 977 | +- slug: employment-to-population-ratio | |
| 978 | + name: Employment to population ratio (ages 15+) | |
| 979 | + topic: labor | |
| 980 | + subtopic: Employment | |
| 981 | + unit: "% of population ages 15+" | |
| 982 | + unit_short: "%" | |
| 983 | + format: percent | |
| 984 | + bounds: [0, 100] | |
| 985 | + sources: | |
| 986 | + - {connector: worldbank, dataset: WDI, code: SL.EMP.TOTL.SP.ZS, priority: 1} | |
| 987 | +- slug: employment-rate | |
| 988 | + name: Employment rate (ages 15–64) | |
| 989 | + topic: labor | |
| 990 | + subtopic: Employment | |
| 991 | + unit: "% of population ages 15–64" | |
| 992 | + unit_short: "%" | |
| 993 | + format: percent | |
| 994 | + higher_is_better: true | |
| 995 | + bounds: [0, 100] | |
| 996 | + sources: [] # oecd / eurostat lfsi_emp_a — added by connector agents | |
| 997 | +- slug: labor-force | |
| 998 | + name: Labour force, total | |
| 999 | + topic: labor | |
| 1000 | + subtopic: Employment | |
| 1001 | + unit: people | |
| 1002 | + unit_short: people | |
| 1003 | + format: number | |
| 1004 | + precision: 0 | |
| 1005 | + aggregation: sum | |
| 1006 | + bounds: [0, null] | |
| 1007 | + sources: | |
| 1008 | + - {connector: worldbank, dataset: WDI, code: SL.TLF.TOTL.IN, priority: 1} | |
| 1009 | +- slug: average-annual-wages | |
| 1010 | + name: Average annual wages | |
| 1011 | + short_name: Average wage | |
| 1012 | + topic: labor | |
| 1013 | + subtopic: Wages | |
| 1014 | + unit: US$ PPP, constant prices | |
| 1015 | + unit_short: US$ PPP | |
| 1016 | + format: currency | |
| 1017 | + precision: 0 | |
| 1018 | + higher_is_better: true | |
| 1019 | + bounds: [0, 500000] | |
| 1020 | + sources: [] # oecd AV_AN_WAGE — added by connector agents | |
| 1021 | +- slug: hours-worked | |
| 1022 | + name: Average annual hours worked per worker | |
| 1023 | + short_name: Hours worked | |
| 1024 | + topic: labor | |
| 1025 | + subtopic: Wages | |
| 1026 | + unit: hours per year | |
| 1027 | + unit_short: h/yr | |
| 1028 | + format: number | |
| 1029 | + precision: 0 | |
| 1030 | + bounds: [800, 3000] | |
| 1031 | + sources: [] # oecd — added by connector agents | |
| 1032 | +- slug: minimum-wage-relative | |
| 1033 | + name: Minimum wage relative to median wage | |
| 1034 | + topic: labor | |
| 1035 | + subtopic: Wages | |
| 1036 | + unit: ratio | |
| 1037 | + unit_short: ratio | |
| 1038 | + format: ratio | |
| 1039 | + precision: 2 | |
| 1040 | + bounds: [0, 1.5] | |
| 1041 | + sources: [] # oecd — optional | |
| 1042 | +- slug: self-employed-share | |
| 1043 | + name: Self-employed (% of total employment) | |
| 1044 | + topic: labor | |
| 1045 | + subtopic: Employment | |
| 1046 | + unit: "% of employment" | |
| 1047 | + unit_short: "%" | |
| 1048 | + format: percent | |
| 1049 | + bounds: [0, 100] | |
| 1050 | + sources: | |
| 1051 | + - {connector: worldbank, dataset: WDI, code: SL.EMP.SELF.ZS, priority: 1} | |
| 1052 | +- slug: vulnerable-employment-share | |
| 1053 | + name: Vulnerable employment (% of total employment) | |
| 1054 | + topic: labor | |
| 1055 | + subtopic: Employment | |
| 1056 | + unit: "% of employment" | |
| 1057 | + unit_short: "%" | |
| 1058 | + format: percent | |
| 1059 | + higher_is_better: false | |
| 1060 | + bounds: [0, 100] | |
| 1061 | + sources: | |
| 1062 | + - {connector: worldbank, dataset: WDI, code: SL.EMP.VULN.ZS, priority: 1} | |
| 1063 | +- slug: employment-agriculture-share | |
| 1064 | + name: Employment in agriculture (% of total employment) | |
| 1065 | + topic: labor | |
| 1066 | + subtopic: Structure | |
| 1067 | + unit: "% of employment" | |
| 1068 | + unit_short: "%" | |
| 1069 | + format: percent | |
| 1070 | + bounds: [0, 100] | |
| 1071 | + sources: | |
| 1072 | + - {connector: worldbank, dataset: WDI, code: SL.AGR.EMPL.ZS, priority: 1} | |
| 1073 | +- slug: employment-industry-share | |
| 1074 | + name: Employment in industry (% of total employment) | |
| 1075 | + topic: labor | |
| 1076 | + subtopic: Structure | |
| 1077 | + unit: "% of employment" | |
| 1078 | + unit_short: "%" | |
| 1079 | + format: percent | |
| 1080 | + bounds: [0, 100] | |
| 1081 | + sources: | |
| 1082 | + - {connector: worldbank, dataset: WDI, code: SL.IND.EMPL.ZS, priority: 1} | |
| 1083 | +- slug: employment-services-share | |
| 1084 | + name: Employment in services (% of total employment) | |
| 1085 | + topic: labor | |
| 1086 | + subtopic: Structure | |
| 1087 | + unit: "% of employment" | |
| 1088 | + unit_short: "%" | |
| 1089 | + format: percent | |
| 1090 | + bounds: [0, 100] | |
| 1091 | + sources: | |
| 1092 | + - {connector: worldbank, dataset: WDI, code: SL.SRV.EMPL.ZS, priority: 1} | |
| 1093 | +- slug: part-time-employment-share | |
| 1094 | + name: Part-time employment (% of employment) | |
| 1095 | + topic: labor | |
| 1096 | + subtopic: Employment | |
| 1097 | + unit: "% of employment" | |
| 1098 | + unit_short: "%" | |
| 1099 | + format: percent | |
| 1100 | + bounds: [0, 100] | |
| 1101 | + sources: [] # oecd — optional | |
| 1102 | +- slug: long-term-unemployment-share | |
| 1103 | + name: Long-term unemployment (% of unemployed) | |
| 1104 | + topic: labor | |
| 1105 | + subtopic: Unemployment | |
| 1106 | + unit: "% of unemployed" | |
| 1107 | + unit_short: "%" | |
| 1108 | + format: percent | |
| 1109 | + higher_is_better: false | |
| 1110 | + bounds: [0, 100] | |
| 1111 | + sources: [] # oecd / eurostat — optional | |
| 1112 | + | |
| 1113 | +# ============================================================ INCOME =========================================================== | |
| 1114 | +- slug: gni-per-capita | |
| 1115 | + name: GNI per capita, Atlas method (current US$) | |
| 1116 | + short_name: GNI per capita | |
| 1117 | + topic: income | |
| 1118 | + subtopic: Income | |
| 1119 | + unit: current US$ | |
| 1120 | + unit_short: US$ | |
| 1121 | + format: currency | |
| 1122 | + precision: 0 | |
| 1123 | + higher_is_better: true | |
| 1124 | + bounds: [0, null] | |
| 1125 | + sources: | |
| 1126 | + - {connector: worldbank, dataset: WDI, code: NY.GNP.PCAP.CD, priority: 1} | |
| 1127 | +- slug: gni-per-capita-ppp | |
| 1128 | + name: GNI per capita, PPP (current international $) | |
| 1129 | + topic: income | |
| 1130 | + subtopic: Income | |
| 1131 | + unit: current international $ | |
| 1132 | + unit_short: intl $ | |
| 1133 | + format: currency | |
| 1134 | + precision: 0 | |
| 1135 | + higher_is_better: true | |
| 1136 | + bounds: [0, null] | |
| 1137 | + sources: | |
| 1138 | + - {connector: worldbank, dataset: WDI, code: NY.GNP.PCAP.PP.CD, priority: 1} | |
| 1139 | +- slug: gini-index | |
| 1140 | + name: Gini index | |
| 1141 | + topic: income | |
| 1142 | + subtopic: Inequality | |
| 1143 | + unit: index (0 = perfect equality, 100 = perfect inequality) | |
| 1144 | + unit_short: Gini | |
| 1145 | + format: number | |
| 1146 | + precision: 1 | |
| 1147 | + higher_is_better: false | |
| 1148 | + featured: true | |
| 1149 | + bounds: [15, 80] | |
| 1150 | + description: Extent to which the distribution of income among individuals deviates from a perfectly equal distribution. | |
| 1151 | + sources: | |
| 1152 | + - {connector: worldbank, dataset: WDI, code: SI.POV.GINI, priority: 1} | |
| 1153 | +- slug: income-share-top-10 | |
| 1154 | + name: Income share held by highest 10% | |
| 1155 | + topic: income | |
| 1156 | + subtopic: Inequality | |
| 1157 | + unit: "% of income" | |
| 1158 | + unit_short: "%" | |
| 1159 | + format: percent | |
| 1160 | + higher_is_better: false | |
| 1161 | + bounds: [10, 80] | |
| 1162 | + sources: | |
| 1163 | + - {connector: worldbank, dataset: WDI, code: SI.DST.10TH.10, priority: 1} | |
| 1164 | +- slug: income-share-bottom-20 | |
| 1165 | + name: Income share held by lowest 20% | |
| 1166 | + topic: income | |
| 1167 | + subtopic: Inequality | |
| 1168 | + unit: "% of income" | |
| 1169 | + unit_short: "%" | |
| 1170 | + format: percent | |
| 1171 | + higher_is_better: true | |
| 1172 | + bounds: [0, 20] | |
| 1173 | + sources: | |
| 1174 | + - {connector: worldbank, dataset: WDI, code: SI.DST.FRST.20, priority: 1} | |
| 1175 | +- slug: poverty-headcount-215 | |
| 1176 | + name: Poverty headcount ratio at the international poverty line | |
| 1177 | + short_name: Extreme poverty | |
| 1178 | + topic: income | |
| 1179 | + subtopic: Poverty | |
| 1180 | + unit: "% of population" | |
| 1181 | + unit_short: "%" | |
| 1182 | + format: percent | |
| 1183 | + higher_is_better: false | |
| 1184 | + bounds: [0, 100] | |
| 1185 | + description: Share of the population living below the World Bank international poverty line (US$3.00 a day, 2021 PPP). | |
| 1186 | + sources: | |
| 1187 | + - {connector: worldbank, dataset: WDI, code: SI.POV.DDAY, priority: 1} | |
| 1188 | +- slug: poverty-headcount-national | |
| 1189 | + name: Poverty headcount ratio at national poverty lines | |
| 1190 | + topic: income | |
| 1191 | + subtopic: Poverty | |
| 1192 | + unit: "% of population" | |
| 1193 | + unit_short: "%" | |
| 1194 | + format: percent | |
| 1195 | + higher_is_better: false | |
| 1196 | + ranking_eligible: false | |
| 1197 | + bounds: [0, 100] | |
| 1198 | + sources: | |
| 1199 | + - {connector: worldbank, dataset: WDI, code: SI.POV.NAHC, priority: 1} | |
| 1200 | +- slug: median-household-income | |
| 1201 | + name: Median equivalised net household income | |
| 1202 | + topic: income | |
| 1203 | + subtopic: Income | |
| 1204 | + unit: euro (PPS) | |
| 1205 | + unit_short: PPS | |
| 1206 | + format: currency | |
| 1207 | + precision: 0 | |
| 1208 | + higher_is_better: true | |
| 1209 | + sources: [] # eurostat ilc_di03 — added by connector agents | |
| 1210 | +- slug: at-risk-of-poverty-rate | |
| 1211 | + name: At-risk-of-poverty rate | |
| 1212 | + topic: income | |
| 1213 | + subtopic: Poverty | |
| 1214 | + unit: "% of population" | |
| 1215 | + unit_short: "%" | |
| 1216 | + format: percent | |
| 1217 | + higher_is_better: false | |
| 1218 | + bounds: [0, 100] | |
| 1219 | + sources: [] # eurostat ilc_li02 — added by connector agents | |
| 1220 | +- slug: household-consumption-per-capita | |
| 1221 | + name: Household consumption per capita (constant 2015 US$) | |
| 1222 | + topic: income | |
| 1223 | + subtopic: Income | |
| 1224 | + unit: constant 2015 US$ | |
| 1225 | + unit_short: US$ | |
| 1226 | + format: currency | |
| 1227 | + precision: 0 | |
| 1228 | + higher_is_better: true | |
| 1229 | + bounds: [0, null] | |
| 1230 | + sources: | |
| 1231 | + - {connector: worldbank, dataset: WDI, code: NE.CON.PRVT.PC.KD, priority: 1} | |
| 1232 | + | |
| 1233 | +# =========================================================== HOUSING =========================================================== | |
| 1234 | +- slug: real-house-price-index | |
| 1235 | + name: Real house price index | |
| 1236 | + short_name: Real house prices | |
| 1237 | + topic: housing | |
| 1238 | + subtopic: Prices | |
| 1239 | + unit: index (2015 = 100) | |
| 1240 | + unit_short: index | |
| 1241 | + format: index | |
| 1242 | + frequency: Q | |
| 1243 | + ranking_eligible: false | |
| 1244 | + featured: true | |
| 1245 | + bounds: [0, 2000] | |
| 1246 | + description: Residential property prices deflated by the consumer price index. | |
| 1247 | + sources: [] # oecd DF_HOUSE_PRICES / bis WS_SPP / fred Q??R628BIS — added by connector agents | |
| 1248 | +- slug: nominal-house-price-index | |
| 1249 | + name: Nominal house price index | |
| 1250 | + topic: housing | |
| 1251 | + subtopic: Prices | |
| 1252 | + unit: index (2015 = 100) | |
| 1253 | + unit_short: index | |
| 1254 | + format: index | |
| 1255 | + frequency: Q | |
| 1256 | + ranking_eligible: false | |
| 1257 | + bounds: [0, 5000] | |
| 1258 | + sources: [] | |
| 1259 | +- slug: house-price-growth | |
| 1260 | + name: Real house price growth (year on year) | |
| 1261 | + topic: housing | |
| 1262 | + subtopic: Prices | |
| 1263 | + unit: annual % | |
| 1264 | + unit_short: "%" | |
| 1265 | + format: percent | |
| 1266 | + frequency: Q | |
| 1267 | + bounds: [-60, 100] | |
| 1268 | + change_floor: 5 | |
| 1269 | + sources: [] # derived by connector agents from real-house-price-index, or bis | |
| 1270 | +- slug: rent-price-index | |
| 1271 | + name: Rent price index | |
| 1272 | + topic: housing | |
| 1273 | + subtopic: Prices | |
| 1274 | + unit: index (2015 = 100) | |
| 1275 | + unit_short: index | |
| 1276 | + format: index | |
| 1277 | + frequency: Q | |
| 1278 | + ranking_eligible: false | |
| 1279 | + sources: [] | |
| 1280 | +- slug: price-to-income-ratio | |
| 1281 | + name: House price-to-income ratio | |
| 1282 | + topic: housing | |
| 1283 | + subtopic: Affordability | |
| 1284 | + unit: index (2015 = 100) | |
| 1285 | + unit_short: index | |
| 1286 | + format: index | |
| 1287 | + frequency: Q | |
| 1288 | + higher_is_better: false | |
| 1289 | + sources: [] | |
| 1290 | +- slug: price-to-rent-ratio | |
| 1291 | + name: House price-to-rent ratio | |
| 1292 | + topic: housing | |
| 1293 | + subtopic: Affordability | |
| 1294 | + unit: index (2015 = 100) | |
| 1295 | + unit_short: index | |
| 1296 | + format: index | |
| 1297 | + frequency: Q | |
| 1298 | + sources: [] | |
| 1299 | +- slug: mortgage-rate | |
| 1300 | + name: Mortgage interest rate | |
| 1301 | + topic: housing | |
| 1302 | + subtopic: Financing | |
| 1303 | + unit: "%" | |
| 1304 | + unit_short: "%" | |
| 1305 | + format: percent | |
| 1306 | + precision: 2 | |
| 1307 | + frequency: M | |
| 1308 | + ranking_eligible: false | |
| 1309 | + bounds: [0, 50] | |
| 1310 | + sources: [] # fred MORTGAGE30US (USA) — added by connector agents | |
| 1311 | +- slug: housing-starts | |
| 1312 | + name: Housing starts | |
| 1313 | + topic: housing | |
| 1314 | + subtopic: Construction | |
| 1315 | + unit: thousands of units (annual rate) | |
| 1316 | + unit_short: k units | |
| 1317 | + format: number | |
| 1318 | + precision: 0 | |
| 1319 | + frequency: M | |
| 1320 | + ranking_eligible: false | |
| 1321 | + sources: [] # fred HOUST (USA) | |
| 1322 | +- slug: building-permits | |
| 1323 | + name: Building permits | |
| 1324 | + topic: housing | |
| 1325 | + subtopic: Construction | |
| 1326 | + unit: thousands of units (annual rate) | |
| 1327 | + unit_short: k units | |
| 1328 | + format: number | |
| 1329 | + precision: 0 | |
| 1330 | + frequency: M | |
| 1331 | + ranking_eligible: false | |
| 1332 | + sources: [] # fred PERMIT (USA) | |
| 1333 | +- slug: homeownership-rate | |
| 1334 | + name: Homeownership rate | |
| 1335 | + topic: housing | |
| 1336 | + subtopic: Tenure | |
| 1337 | + unit: "% of households" | |
| 1338 | + unit_short: "%" | |
| 1339 | + format: percent | |
| 1340 | + bounds: [0, 100] | |
| 1341 | + sources: [] # eurostat ilc_lvho02 / fred RHORUSQ156N (USA) | |
| 1342 | +- slug: housing-cost-overburden-rate | |
| 1343 | + name: Housing cost overburden rate | |
| 1344 | + topic: housing | |
| 1345 | + subtopic: Affordability | |
| 1346 | + unit: "% of population" | |
| 1347 | + unit_short: "%" | |
| 1348 | + format: percent | |
| 1349 | + higher_is_better: false | |
| 1350 | + bounds: [0, 100] | |
| 1351 | + description: Share of the population living in households where total housing costs exceed 40 % of disposable income. | |
| 1352 | + sources: [] # eurostat ilc_lvho07a | |
| 1353 | +- slug: house-price-to-income-growth | |
| 1354 | + name: Price-to-income ratio change (5 years) | |
| 1355 | + topic: housing | |
| 1356 | + subtopic: Affordability | |
| 1357 | + unit: "%" | |
| 1358 | + unit_short: "%" | |
| 1359 | + format: percent | |
| 1360 | + frequency: Q | |
| 1361 | + sources: [] # optional derived | |
| 1362 | + | |
| 1363 | +# ============================================================ HEALTH =========================================================== | |
| 1364 | +- slug: healthy-life-expectancy | |
| 1365 | + name: Healthy life expectancy at birth | |
| 1366 | + topic: health | |
| 1367 | + subtopic: Longevity | |
| 1368 | + unit: years | |
| 1369 | + unit_short: yrs | |
| 1370 | + format: years | |
| 1371 | + higher_is_better: true | |
| 1372 | + bounds: [20, 90] | |
| 1373 | + sources: | |
| 1374 | + - {connector: who, dataset: GHO, code: WHOSIS_000002, params: {Dim1: SEX_BTSX}, priority: 1} | |
| 1375 | +- slug: infant-mortality-rate | |
| 1376 | + name: Infant mortality rate | |
| 1377 | + short_name: Infant mortality | |
| 1378 | + topic: health | |
| 1379 | + subtopic: Mortality | |
| 1380 | + unit: per 1,000 live births | |
| 1381 | + unit_short: /1,000 | |
| 1382 | + format: per_1000 | |
| 1383 | + higher_is_better: false | |
| 1384 | + featured: true | |
| 1385 | + bounds: [0, 300] | |
| 1386 | + sources: | |
| 1387 | + - {connector: worldbank, dataset: WDI, code: SP.DYN.IMRT.IN, priority: 1} | |
| 1388 | +- slug: under-5-mortality-rate | |
| 1389 | + name: Under-5 mortality rate | |
| 1390 | + topic: health | |
| 1391 | + subtopic: Mortality | |
| 1392 | + unit: per 1,000 live births | |
| 1393 | + unit_short: /1,000 | |
| 1394 | + format: per_1000 | |
| 1395 | + higher_is_better: false | |
| 1396 | + bounds: [0, 500] | |
| 1397 | + sources: | |
| 1398 | + - {connector: worldbank, dataset: WDI, code: SH.DYN.MORT, priority: 1} | |
| 1399 | +- slug: maternal-mortality-ratio | |
| 1400 | + name: Maternal mortality ratio | |
| 1401 | + topic: health | |
| 1402 | + subtopic: Mortality | |
| 1403 | + unit: per 100,000 live births | |
| 1404 | + unit_short: /100k | |
| 1405 | + format: per_100k | |
| 1406 | + higher_is_better: false | |
| 1407 | + bounds: [0, 5000] | |
| 1408 | + sources: | |
| 1409 | + - {connector: worldbank, dataset: WDI, code: SH.STA.MMRT, priority: 1} | |
| 1410 | +- slug: health-expenditure-per-capita | |
| 1411 | + name: Current health expenditure per capita (current US$) | |
| 1412 | + topic: health | |
| 1413 | + subtopic: Spending | |
| 1414 | + unit: current US$ | |
| 1415 | + unit_short: US$ | |
| 1416 | + format: currency | |
| 1417 | + precision: 0 | |
| 1418 | + bounds: [0, 50000] | |
| 1419 | + sources: | |
| 1420 | + - {connector: worldbank, dataset: WDI, code: SH.XPD.CHEX.PC.CD, priority: 1} | |
| 1421 | +- slug: out-of-pocket-health-expenditure-share | |
| 1422 | + name: Out-of-pocket expenditure (% of current health expenditure) | |
| 1423 | + topic: health | |
| 1424 | + subtopic: Spending | |
| 1425 | + unit: "% of health expenditure" | |
| 1426 | + unit_short: "%" | |
| 1427 | + format: percent | |
| 1428 | + higher_is_better: false | |
| 1429 | + bounds: [0, 100] | |
| 1430 | + sources: | |
| 1431 | + - {connector: worldbank, dataset: WDI, code: SH.XPD.OOPC.CH.ZS, priority: 1} | |
| 1432 | +- slug: physicians-per-1000 | |
| 1433 | + name: Physicians | |
| 1434 | + topic: health | |
| 1435 | + subtopic: Capacity | |
| 1436 | + unit: per 1,000 people | |
| 1437 | + unit_short: /1,000 | |
| 1438 | + format: per_1000 | |
| 1439 | + precision: 2 | |
| 1440 | + higher_is_better: true | |
| 1441 | + bounds: [0, 30] | |
| 1442 | + sources: | |
| 1443 | + - {connector: worldbank, dataset: WDI, code: SH.MED.PHYS.ZS, priority: 1} | |
| 1444 | + - {connector: who, dataset: GHO, code: HWF_0001, priority: 2, transform: "x/10"} | |
| 1445 | +- slug: nurses-per-1000 | |
| 1446 | + name: Nurses and midwives | |
| 1447 | + topic: health | |
| 1448 | + subtopic: Capacity | |
| 1449 | + unit: per 1,000 people | |
| 1450 | + unit_short: /1,000 | |
| 1451 | + format: per_1000 | |
| 1452 | + precision: 2 | |
| 1453 | + higher_is_better: true | |
| 1454 | + bounds: [0, 60] | |
| 1455 | + sources: | |
| 1456 | + - {connector: worldbank, dataset: WDI, code: SH.MED.NUMW.P3, priority: 1} | |
| 1457 | +- slug: hospital-beds-per-1000 | |
| 1458 | + name: Hospital beds | |
| 1459 | + topic: health | |
| 1460 | + subtopic: Capacity | |
| 1461 | + unit: per 1,000 people | |
| 1462 | + unit_short: /1,000 | |
| 1463 | + format: per_1000 | |
| 1464 | + precision: 2 | |
| 1465 | + bounds: [0, 30] | |
| 1466 | + sources: | |
| 1467 | + - {connector: worldbank, dataset: WDI, code: SH.MED.BEDS.ZS, priority: 1} | |
| 1468 | +- slug: ncd-mortality-30-70 | |
| 1469 | + name: Probability of dying between ages 30 and 70 from NCDs | |
| 1470 | + short_name: NCD mortality | |
| 1471 | + topic: health | |
| 1472 | + subtopic: Mortality | |
| 1473 | + unit: "%" | |
| 1474 | + unit_short: "%" | |
| 1475 | + format: percent | |
| 1476 | + higher_is_better: false | |
| 1477 | + bounds: [0, 60] | |
| 1478 | + description: Cardiovascular disease, cancer, diabetes or chronic respiratory disease. | |
| 1479 | + sources: | |
| 1480 | + - {connector: worldbank, dataset: WDI, code: SH.DYN.NCOM.ZS, priority: 1} | |
| 1481 | +- slug: suicide-rate | |
| 1482 | + name: Suicide mortality rate | |
| 1483 | + topic: health | |
| 1484 | + subtopic: Mortality | |
| 1485 | + unit: per 100,000 people | |
| 1486 | + unit_short: /100k | |
| 1487 | + format: per_100k | |
| 1488 | + higher_is_better: false | |
| 1489 | + bounds: [0, 100] | |
| 1490 | + sources: | |
| 1491 | + - {connector: worldbank, dataset: WDI, code: SH.STA.SUIC.P5, priority: 1} | |
| 1492 | +- slug: smoking-prevalence | |
| 1493 | + name: Prevalence of current tobacco use (ages 15+) | |
| 1494 | + short_name: Smoking | |
| 1495 | + topic: health | |
| 1496 | + subtopic: Risk factors | |
| 1497 | + unit: "% of adults" | |
| 1498 | + unit_short: "%" | |
| 1499 | + format: percent | |
| 1500 | + higher_is_better: false | |
| 1501 | + bounds: [0, 80] | |
| 1502 | + sources: | |
| 1503 | + - {connector: worldbank, dataset: WDI, code: SH.PRV.SMOK, priority: 1} | |
| 1504 | +- slug: obesity-prevalence | |
| 1505 | + name: Prevalence of obesity among adults (BMI ≥ 30) | |
| 1506 | + short_name: Obesity | |
| 1507 | + topic: health | |
| 1508 | + subtopic: Risk factors | |
| 1509 | + unit: "% of adults" | |
| 1510 | + unit_short: "%" | |
| 1511 | + format: percent | |
| 1512 | + higher_is_better: false | |
| 1513 | + bounds: [0, 80] | |
| 1514 | + sources: | |
| 1515 | + - {connector: who, dataset: GHO, code: NCD_BMI_30A, params: {Dim1: SEX_BTSX}, priority: 1} | |
| 1516 | +- slug: alcohol-consumption | |
| 1517 | + name: Total alcohol consumption per capita (ages 15+) | |
| 1518 | + short_name: Alcohol | |
| 1519 | + topic: health | |
| 1520 | + subtopic: Risk factors | |
| 1521 | + unit: litres of pure alcohol per year | |
| 1522 | + unit_short: L | |
| 1523 | + format: number | |
| 1524 | + precision: 1 | |
| 1525 | + bounds: [0, 30] | |
| 1526 | + sources: | |
| 1527 | + - {connector: worldbank, dataset: WDI, code: SH.ALC.PCAP.LI, priority: 1} | |
| 1528 | +- slug: measles-immunization | |
| 1529 | + name: Immunization, measles (% of children ages 12–23 months) | |
| 1530 | + topic: health | |
| 1531 | + subtopic: Prevention | |
| 1532 | + unit: "% of children" | |
| 1533 | + unit_short: "%" | |
| 1534 | + format: percent | |
| 1535 | + higher_is_better: true | |
| 1536 | + bounds: [0, 100] | |
| 1537 | + sources: | |
| 1538 | + - {connector: worldbank, dataset: WDI, code: SH.IMM.MEAS, priority: 1} | |
| 1539 | +- slug: dtp3-immunization | |
| 1540 | + name: Immunization, DPT (% of children ages 12–23 months) | |
| 1541 | + topic: health | |
| 1542 | + subtopic: Prevention | |
| 1543 | + unit: "% of children" | |
| 1544 | + unit_short: "%" | |
| 1545 | + format: percent | |
| 1546 | + higher_is_better: true | |
| 1547 | + bounds: [0, 100] | |
| 1548 | + sources: | |
| 1549 | + - {connector: worldbank, dataset: WDI, code: SH.IMM.IDPT, priority: 1} | |
| 1550 | +- slug: hiv-prevalence | |
| 1551 | + name: Prevalence of HIV (ages 15–49) | |
| 1552 | + topic: health | |
| 1553 | + subtopic: Disease | |
| 1554 | + unit: "% of population ages 15–49" | |
| 1555 | + unit_short: "%" | |
| 1556 | + format: percent | |
| 1557 | + higher_is_better: false | |
| 1558 | + bounds: [0, 40] | |
| 1559 | + sources: | |
| 1560 | + - {connector: worldbank, dataset: WDI, code: SH.DYN.AIDS.ZS, priority: 1} | |
| 1561 | +- slug: tuberculosis-incidence | |
| 1562 | + name: Incidence of tuberculosis | |
| 1563 | + topic: health | |
| 1564 | + subtopic: Disease | |
| 1565 | + unit: per 100,000 people | |
| 1566 | + unit_short: /100k | |
| 1567 | + format: per_100k | |
| 1568 | + higher_is_better: false | |
| 1569 | + bounds: [0, 2000] | |
| 1570 | + sources: | |
| 1571 | + - {connector: worldbank, dataset: WDI, code: SH.TBS.INCD, priority: 1} | |
| 1572 | +- slug: safely-managed-water | |
| 1573 | + name: People using safely managed drinking water services | |
| 1574 | + short_name: Safe drinking water | |
| 1575 | + topic: health | |
| 1576 | + subtopic: Access | |
| 1577 | + unit: "% of population" | |
| 1578 | + unit_short: "%" | |
| 1579 | + format: percent | |
| 1580 | + higher_is_better: true | |
| 1581 | + bounds: [0, 100] | |
| 1582 | + sources: | |
| 1583 | + - {connector: worldbank, dataset: WDI, code: SH.H2O.SMDW.ZS, priority: 1} | |
| 1584 | +- slug: safely-managed-sanitation | |
| 1585 | + name: People using safely managed sanitation services | |
| 1586 | + short_name: Safe sanitation | |
| 1587 | + topic: health | |
| 1588 | + subtopic: Access | |
| 1589 | + unit: "% of population" | |
| 1590 | + unit_short: "%" | |
| 1591 | + format: percent | |
| 1592 | + higher_is_better: true | |
| 1593 | + bounds: [0, 100] | |
| 1594 | + sources: | |
| 1595 | + - {connector: worldbank, dataset: WDI, code: SH.STA.SMSS.ZS, priority: 1} | |
| 1596 | +- slug: road-traffic-deaths | |
| 1597 | + name: Mortality caused by road traffic injury | |
| 1598 | + topic: health | |
| 1599 | + subtopic: Mortality | |
| 1600 | + unit: per 100,000 people | |
| 1601 | + unit_short: /100k | |
| 1602 | + format: per_100k | |
| 1603 | + higher_is_better: false | |
| 1604 | + bounds: [0, 100] | |
| 1605 | + sources: | |
| 1606 | + - {connector: worldbank, dataset: WDI, code: SH.STA.TRAF.P5, priority: 1} | |
| 1607 | + | |
| 1608 | +# =========================================================== EDUCATION ========================================================= | |
| 1609 | +- slug: literacy-rate-adult | |
| 1610 | + name: Literacy rate, adult total (ages 15+) | |
| 1611 | + short_name: Adult literacy | |
| 1612 | + topic: education | |
| 1613 | + subtopic: Literacy | |
| 1614 | + unit: "% of people ages 15+" | |
| 1615 | + unit_short: "%" | |
| 1616 | + format: percent | |
| 1617 | + higher_is_better: true | |
| 1618 | + bounds: [0, 100] | |
| 1619 | + sources: | |
| 1620 | + - {connector: worldbank, dataset: WDI, code: SE.ADT.LITR.ZS, priority: 1} | |
| 1621 | +- slug: literacy-rate-youth | |
| 1622 | + name: Literacy rate, youth total (ages 15–24) | |
| 1623 | + topic: education | |
| 1624 | + subtopic: Literacy | |
| 1625 | + unit: "% of people ages 15–24" | |
| 1626 | + unit_short: "%" | |
| 1627 | + format: percent | |
| 1628 | + higher_is_better: true | |
| 1629 | + bounds: [0, 100] | |
| 1630 | + sources: | |
| 1631 | + - {connector: worldbank, dataset: WDI, code: SE.ADT.1524.LT.ZS, priority: 1} | |
| 1632 | +- slug: primary-enrollment | |
| 1633 | + name: School enrolment, primary (% gross) | |
| 1634 | + topic: education | |
| 1635 | + subtopic: Enrolment | |
| 1636 | + unit: "% gross" | |
| 1637 | + unit_short: "%" | |
| 1638 | + format: percent | |
| 1639 | + bounds: [0, 200] | |
| 1640 | + ranking_eligible: false | |
| 1641 | + sources: | |
| 1642 | + - {connector: worldbank, dataset: WDI, code: SE.PRM.ENRR, priority: 1} | |
| 1643 | +- slug: secondary-enrollment | |
| 1644 | + name: School enrolment, secondary (% gross) | |
| 1645 | + topic: education | |
| 1646 | + subtopic: Enrolment | |
| 1647 | + unit: "% gross" | |
| 1648 | + unit_short: "%" | |
| 1649 | + format: percent | |
| 1650 | + higher_is_better: true | |
| 1651 | + bounds: [0, 200] | |
| 1652 | + sources: | |
| 1653 | + - {connector: worldbank, dataset: WDI, code: SE.SEC.ENRR, priority: 1} | |
| 1654 | +- slug: tertiary-enrollment | |
| 1655 | + name: School enrolment, tertiary (% gross) | |
| 1656 | + short_name: Tertiary enrolment | |
| 1657 | + topic: education | |
| 1658 | + subtopic: Enrolment | |
| 1659 | + unit: "% gross" | |
| 1660 | + unit_short: "%" | |
| 1661 | + format: percent | |
| 1662 | + higher_is_better: true | |
| 1663 | + featured: true | |
| 1664 | + bounds: [0, 200] | |
| 1665 | + sources: | |
| 1666 | + - {connector: worldbank, dataset: WDI, code: SE.TER.ENRR, priority: 1} | |
| 1667 | +- slug: primary-completion-rate | |
| 1668 | + name: Primary completion rate | |
| 1669 | + topic: education | |
| 1670 | + subtopic: Attainment | |
| 1671 | + unit: "% of relevant age group" | |
| 1672 | + unit_short: "%" | |
| 1673 | + format: percent | |
| 1674 | + higher_is_better: true | |
| 1675 | + bounds: [0, 200] | |
| 1676 | + sources: | |
| 1677 | + - {connector: worldbank, dataset: WDI, code: SE.PRM.CMPT.ZS, priority: 1} | |
| 1678 | +- slug: tertiary-attainment-25-64 | |
| 1679 | + name: Tertiary educational attainment (ages 25–64) | |
| 1680 | + short_name: Tertiary attainment | |
| 1681 | + topic: education | |
| 1682 | + subtopic: Attainment | |
| 1683 | + unit: "% of population ages 25–64" | |
| 1684 | + unit_short: "%" | |
| 1685 | + format: percent | |
| 1686 | + higher_is_better: true | |
| 1687 | + bounds: [0, 100] | |
| 1688 | + sources: | |
| 1689 | + - {connector: worldbank, dataset: WDI, code: SE.TER.CUAT.BA.ZS, priority: 3} # Bachelor's or higher, 25+ (fallback) | |
| 1690 | +- slug: tertiary-attainment-25-34 | |
| 1691 | + name: Tertiary educational attainment (ages 25–34) | |
| 1692 | + topic: education | |
| 1693 | + subtopic: Attainment | |
| 1694 | + unit: "% of population ages 25–34" | |
| 1695 | + unit_short: "%" | |
| 1696 | + format: percent | |
| 1697 | + higher_is_better: true | |
| 1698 | + bounds: [0, 100] | |
| 1699 | + sources: [] # oecd / eurostat edat_lfse_03 — added by connector agents | |
| 1700 | +- slug: upper-secondary-attainment | |
| 1701 | + name: At least upper secondary attainment (ages 25–64) | |
| 1702 | + topic: education | |
| 1703 | + subtopic: Attainment | |
| 1704 | + unit: "% of population ages 25–64" | |
| 1705 | + unit_short: "%" | |
| 1706 | + format: percent | |
| 1707 | + higher_is_better: true | |
| 1708 | + bounds: [0, 100] | |
| 1709 | + sources: | |
| 1710 | + - {connector: worldbank, dataset: WDI, code: SE.SEC.CUAT.UP.ZS, priority: 2} | |
| 1711 | +- slug: education-expenditure-pct-government | |
| 1712 | + name: Government expenditure on education (% of government expenditure) | |
| 1713 | + topic: education | |
| 1714 | + subtopic: Spending | |
| 1715 | + unit: "% of government expenditure" | |
| 1716 | + unit_short: "%" | |
| 1717 | + format: percent | |
| 1718 | + bounds: [0, 60] | |
| 1719 | + sources: | |
| 1720 | + - {connector: worldbank, dataset: WDI, code: SE.XPD.TOTL.GB.ZS, priority: 1} | |
| 1721 | +- slug: expected-years-of-schooling | |
| 1722 | + name: Expected years of schooling | |
| 1723 | + topic: education | |
| 1724 | + subtopic: Attainment | |
| 1725 | + unit: years | |
| 1726 | + unit_short: yrs | |
| 1727 | + format: years | |
| 1728 | + higher_is_better: true | |
| 1729 | + bounds: [0, 25] | |
| 1730 | + sources: | |
| 1731 | + - {connector: owid, dataset: grapher, code: expected-years-of-schooling, priority: 1} | |
| 1732 | +- slug: mean-years-of-schooling | |
| 1733 | + name: Mean years of schooling (ages 25+) | |
| 1734 | + topic: education | |
| 1735 | + subtopic: Attainment | |
| 1736 | + unit: years | |
| 1737 | + unit_short: yrs | |
| 1738 | + format: years | |
| 1739 | + higher_is_better: true | |
| 1740 | + bounds: [0, 20] | |
| 1741 | + sources: | |
| 1742 | + - {connector: owid, dataset: grapher, code: mean-years-of-schooling-long-run, priority: 1} | |
| 1743 | +- slug: pupil-teacher-ratio-primary | |
| 1744 | + name: Pupil-teacher ratio, primary | |
| 1745 | + topic: education | |
| 1746 | + subtopic: Capacity | |
| 1747 | + unit: pupils per teacher | |
| 1748 | + unit_short: pupils/teacher | |
| 1749 | + format: number | |
| 1750 | + precision: 1 | |
| 1751 | + higher_is_better: false | |
| 1752 | + bounds: [1, 150] | |
| 1753 | + sources: | |
| 1754 | + - {connector: worldbank, dataset: WDI, code: SE.PRM.ENRL.TC.ZS, priority: 1} | |
| 1755 | +- slug: out-of-school-children | |
| 1756 | + name: Children out of school, primary | |
| 1757 | + topic: education | |
| 1758 | + subtopic: Enrolment | |
| 1759 | + unit: children | |
| 1760 | + unit_short: children | |
| 1761 | + format: number | |
| 1762 | + precision: 0 | |
| 1763 | + aggregation: sum | |
| 1764 | + higher_is_better: false | |
| 1765 | + bounds: [0, null] | |
| 1766 | + sources: | |
| 1767 | + - {connector: worldbank, dataset: WDI, code: SE.PRM.UNER, priority: 1} | |
| 1768 | +- slug: learning-poverty | |
| 1769 | + name: Learning poverty | |
| 1770 | + topic: education | |
| 1771 | + subtopic: Attainment | |
| 1772 | + unit: "% of children at end of primary age" | |
| 1773 | + unit_short: "%" | |
| 1774 | + format: percent | |
| 1775 | + higher_is_better: false | |
| 1776 | + bounds: [0, 100] | |
| 1777 | + description: Share of children unable to read and understand a simple text by age 10. | |
| 1778 | + sources: | |
| 1779 | + - {connector: worldbank, dataset: WDI, code: SE.LPV.PRIM, priority: 1} | |
| 1780 | + | |
| 1781 | +# ============================================================ TRADE ============================================================ | |
| 1782 | +- slug: exports-goods-services | |
| 1783 | + name: Exports of goods and services (current US$) | |
| 1784 | + short_name: Exports | |
| 1785 | + topic: trade | |
| 1786 | + subtopic: Flows | |
| 1787 | + unit: current US$ | |
| 1788 | + unit_short: US$ | |
| 1789 | + format: currency | |
| 1790 | + precision: 0 | |
| 1791 | + aggregation: sum | |
| 1792 | + featured: true | |
| 1793 | + bounds: [0, null] | |
| 1794 | + sources: | |
| 1795 | + - {connector: worldbank, dataset: WDI, code: NE.EXP.GNFS.CD, priority: 1} | |
| 1796 | +- slug: imports-goods-services | |
| 1797 | + name: Imports of goods and services (current US$) | |
| 1798 | + short_name: Imports | |
| 1799 | + topic: trade | |
| 1800 | + subtopic: Flows | |
| 1801 | + unit: current US$ | |
| 1802 | + unit_short: US$ | |
| 1803 | + format: currency | |
| 1804 | + precision: 0 | |
| 1805 | + aggregation: sum | |
| 1806 | + bounds: [0, null] | |
| 1807 | + sources: | |
| 1808 | + - {connector: worldbank, dataset: WDI, code: NE.IMP.GNFS.CD, priority: 1} | |
| 1809 | +- slug: trade-balance | |
| 1810 | + name: External balance on goods and services (current US$) | |
| 1811 | + short_name: Trade balance | |
| 1812 | + topic: trade | |
| 1813 | + subtopic: Balance | |
| 1814 | + unit: current US$ | |
| 1815 | + unit_short: US$ | |
| 1816 | + format: currency | |
| 1817 | + precision: 0 | |
| 1818 | + aggregation: sum | |
| 1819 | + sources: | |
| 1820 | + - {connector: worldbank, dataset: WDI, code: NE.RSB.GNFS.CD, priority: 1} | |
| 1821 | +- slug: exports-pct-gdp | |
| 1822 | + name: Exports of goods and services (% of GDP) | |
| 1823 | + topic: trade | |
| 1824 | + subtopic: Openness | |
| 1825 | + unit: "% of GDP" | |
| 1826 | + unit_short: "% GDP" | |
| 1827 | + format: percent | |
| 1828 | + bounds: [0, 400] | |
| 1829 | + sources: | |
| 1830 | + - {connector: worldbank, dataset: WDI, code: NE.EXP.GNFS.ZS, priority: 1} | |
| 1831 | +- slug: imports-pct-gdp | |
| 1832 | + name: Imports of goods and services (% of GDP) | |
| 1833 | + topic: trade | |
| 1834 | + subtopic: Openness | |
| 1835 | + unit: "% of GDP" | |
| 1836 | + unit_short: "% GDP" | |
| 1837 | + format: percent | |
| 1838 | + bounds: [0, 400] | |
| 1839 | + sources: | |
| 1840 | + - {connector: worldbank, dataset: WDI, code: NE.IMP.GNFS.ZS, priority: 1} | |
| 1841 | +- slug: trade-pct-gdp | |
| 1842 | + name: Trade (% of GDP) | |
| 1843 | + short_name: Trade openness | |
| 1844 | + topic: trade | |
| 1845 | + subtopic: Openness | |
| 1846 | + unit: "% of GDP" | |
| 1847 | + unit_short: "% GDP" | |
| 1848 | + format: percent | |
| 1849 | + bounds: [0, 800] | |
| 1850 | + description: Sum of exports and imports of goods and services as a share of GDP. | |
| 1851 | + sources: | |
| 1852 | + - {connector: worldbank, dataset: WDI, code: NE.TRD.GNFS.ZS, priority: 1} | |
| 1853 | +- slug: merchandise-exports | |
| 1854 | + name: Merchandise exports (current US$) | |
| 1855 | + topic: trade | |
| 1856 | + subtopic: Flows | |
| 1857 | + unit: current US$ | |
| 1858 | + unit_short: US$ | |
| 1859 | + format: currency | |
| 1860 | + precision: 0 | |
| 1861 | + aggregation: sum | |
| 1862 | + bounds: [0, null] | |
| 1863 | + sources: | |
| 1864 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.MRCH.CD.WT, priority: 1} | |
| 1865 | +- slug: merchandise-imports | |
| 1866 | + name: Merchandise imports (current US$) | |
| 1867 | + topic: trade | |
| 1868 | + subtopic: Flows | |
| 1869 | + unit: current US$ | |
| 1870 | + unit_short: US$ | |
| 1871 | + format: currency | |
| 1872 | + precision: 0 | |
| 1873 | + aggregation: sum | |
| 1874 | + bounds: [0, null] | |
| 1875 | + sources: | |
| 1876 | + - {connector: worldbank, dataset: WDI, code: TM.VAL.MRCH.CD.WT, priority: 1} | |
| 1877 | +- slug: high-tech-exports-share | |
| 1878 | + name: High-technology exports (% of manufactured exports) | |
| 1879 | + short_name: High-tech exports | |
| 1880 | + topic: innovation | |
| 1881 | + subtopic: Technology | |
| 1882 | + unit: "% of manufactured exports" | |
| 1883 | + unit_short: "%" | |
| 1884 | + format: percent | |
| 1885 | + bounds: [0, 100] | |
| 1886 | + sources: | |
| 1887 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.TECH.MF.ZS, priority: 1} | |
| 1888 | +- slug: high-tech-exports | |
| 1889 | + name: High-technology exports (current US$) | |
| 1890 | + topic: innovation | |
| 1891 | + subtopic: Technology | |
| 1892 | + unit: current US$ | |
| 1893 | + unit_short: US$ | |
| 1894 | + format: currency | |
| 1895 | + precision: 0 | |
| 1896 | + aggregation: sum | |
| 1897 | + bounds: [0, null] | |
| 1898 | + sources: | |
| 1899 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.TECH.CD, priority: 1} | |
| 1900 | +- slug: fuel-exports-share | |
| 1901 | + name: Fuel exports (% of merchandise exports) | |
| 1902 | + topic: trade | |
| 1903 | + subtopic: Composition | |
| 1904 | + unit: "% of merchandise exports" | |
| 1905 | + unit_short: "%" | |
| 1906 | + format: percent | |
| 1907 | + bounds: [0, 100] | |
| 1908 | + sources: | |
| 1909 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.FUEL.ZS.UN, priority: 1} | |
| 1910 | +- slug: food-exports-share | |
| 1911 | + name: Food exports (% of merchandise exports) | |
| 1912 | + topic: trade | |
| 1913 | + subtopic: Composition | |
| 1914 | + unit: "% of merchandise exports" | |
| 1915 | + unit_short: "%" | |
| 1916 | + format: percent | |
| 1917 | + bounds: [0, 100] | |
| 1918 | + sources: | |
| 1919 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.FOOD.ZS.UN, priority: 1} | |
| 1920 | +- slug: manufactures-exports-share | |
| 1921 | + name: Manufactures exports (% of merchandise exports) | |
| 1922 | + topic: trade | |
| 1923 | + subtopic: Composition | |
| 1924 | + unit: "% of merchandise exports" | |
| 1925 | + unit_short: "%" | |
| 1926 | + format: percent | |
| 1927 | + bounds: [0, 100] | |
| 1928 | + sources: | |
| 1929 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.MANF.ZS.UN, priority: 1} | |
| 1930 | +- slug: ores-metals-exports-share | |
| 1931 | + name: Ores and metals exports (% of merchandise exports) | |
| 1932 | + topic: trade | |
| 1933 | + subtopic: Composition | |
| 1934 | + unit: "% of merchandise exports" | |
| 1935 | + unit_short: "%" | |
| 1936 | + format: percent | |
| 1937 | + bounds: [0, 100] | |
| 1938 | + sources: | |
| 1939 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.MMTL.ZS.UN, priority: 1} | |
| 1940 | +- slug: agricultural-exports-share | |
| 1941 | + name: Agricultural raw materials exports (% of merchandise exports) | |
| 1942 | + topic: agriculture | |
| 1943 | + subtopic: Trade | |
| 1944 | + unit: "% of merchandise exports" | |
| 1945 | + unit_short: "%" | |
| 1946 | + format: percent | |
| 1947 | + bounds: [0, 100] | |
| 1948 | + sources: | |
| 1949 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.AGRI.ZS.UN, priority: 1} | |
| 1950 | +- slug: services-exports-pct-gdp | |
| 1951 | + name: Service exports (BoP, current US$) | |
| 1952 | + short_name: Services exports | |
| 1953 | + topic: trade | |
| 1954 | + subtopic: Flows | |
| 1955 | + unit: current US$ | |
| 1956 | + unit_short: US$ | |
| 1957 | + format: currency | |
| 1958 | + precision: 0 | |
| 1959 | + aggregation: sum | |
| 1960 | + bounds: [0, null] | |
| 1961 | + sources: | |
| 1962 | + - {connector: worldbank, dataset: WDI, code: BX.GSR.NFSV.CD, priority: 1} | |
| 1963 | +- slug: terms-of-trade-index | |
| 1964 | + name: Net barter terms of trade index | |
| 1965 | + topic: trade | |
| 1966 | + subtopic: Prices | |
| 1967 | + unit: index (2015 = 100) | |
| 1968 | + unit_short: index | |
| 1969 | + format: index | |
| 1970 | + ranking_eligible: false | |
| 1971 | + sources: | |
| 1972 | + - {connector: worldbank, dataset: WDI, code: TT.PRI.MRCH.XD.WD, priority: 1} | |
| 1973 | +- slug: tariff-rate-applied-mean | |
| 1974 | + name: Tariff rate, applied, weighted mean, all products | |
| 1975 | + short_name: Tariffs | |
| 1976 | + topic: trade | |
| 1977 | + subtopic: Policy | |
| 1978 | + unit: "%" | |
| 1979 | + unit_short: "%" | |
| 1980 | + format: percent | |
| 1981 | + bounds: [0, 100] | |
| 1982 | + sources: | |
| 1983 | + - {connector: worldbank, dataset: WDI, code: TM.TAX.MRCH.WM.AR.ZS, priority: 1} | |
| 1984 | +- slug: logistics-performance-index | |
| 1985 | + name: Logistics performance index, overall | |
| 1986 | + topic: infrastructure | |
| 1987 | + subtopic: Logistics | |
| 1988 | + unit: score (1 = low, 5 = high) | |
| 1989 | + unit_short: score | |
| 1990 | + format: number | |
| 1991 | + precision: 2 | |
| 1992 | + higher_is_better: true | |
| 1993 | + bounds: [1, 5] | |
| 1994 | + sources: | |
| 1995 | + - {connector: worldbank, dataset: WDI, code: LP.LPI.OVRL.XQ, priority: 1} | |
| 1996 | + | |
| 1997 | +# ============================================================ ENERGY =========================================================== | |
| 1998 | +- slug: electricity-generation | |
| 1999 | + name: Electricity generation | |
| 2000 | + topic: energy | |
| 2001 | + subtopic: Electricity | |
| 2002 | + unit: terawatt-hours | |
| 2003 | + unit_short: TWh | |
| 2004 | + format: number | |
| 2005 | + precision: 1 | |
| 2006 | + aggregation: sum | |
| 2007 | + bounds: [0, null] | |
| 2008 | + sources: | |
| 2009 | + - {connector: owid, dataset: energy, code: electricity_generation, priority: 1} | |
| 2010 | +- slug: electricity-consumption-per-capita | |
| 2011 | + name: Electricity consumption per capita | |
| 2012 | + topic: energy | |
| 2013 | + subtopic: Electricity | |
| 2014 | + unit: kilowatt-hours per person | |
| 2015 | + unit_short: kWh | |
| 2016 | + format: kwh | |
| 2017 | + precision: 0 | |
| 2018 | + bounds: [0, 100000] | |
| 2019 | + sources: | |
| 2020 | + - {connector: owid, dataset: energy, code: per_capita_electricity, priority: 1} | |
| 2021 | + - {connector: worldbank, dataset: WDI, code: EG.USE.ELEC.KH.PC, priority: 2} | |
| 2022 | +- slug: primary-energy-consumption | |
| 2023 | + name: Primary energy consumption | |
| 2024 | + topic: energy | |
| 2025 | + subtopic: Consumption | |
| 2026 | + unit: terawatt-hours | |
| 2027 | + unit_short: TWh | |
| 2028 | + format: number | |
| 2029 | + precision: 0 | |
| 2030 | + aggregation: sum | |
| 2031 | + bounds: [0, null] | |
| 2032 | + sources: | |
| 2033 | + - {connector: owid, dataset: energy, code: primary_energy_consumption, priority: 1} | |
| 2034 | +- slug: energy-use-per-capita | |
| 2035 | + name: Energy use per capita | |
| 2036 | + topic: energy | |
| 2037 | + subtopic: Consumption | |
| 2038 | + unit: kilowatt-hours per person | |
| 2039 | + unit_short: kWh | |
| 2040 | + format: kwh | |
| 2041 | + precision: 0 | |
| 2042 | + bounds: [0, 500000] | |
| 2043 | + sources: | |
| 2044 | + - {connector: owid, dataset: energy, code: energy_per_capita, priority: 1} | |
| 2045 | +- slug: renewable-electricity-share | |
| 2046 | + name: Renewable electricity share | |
| 2047 | + short_name: Renewable electricity | |
| 2048 | + topic: energy | |
| 2049 | + subtopic: Electricity mix | |
| 2050 | + unit: "% of electricity generation" | |
| 2051 | + unit_short: "%" | |
| 2052 | + format: percent | |
| 2053 | + higher_is_better: true | |
| 2054 | + featured: true | |
| 2055 | + bounds: [0, 100] | |
| 2056 | + change_floor: 3 | |
| 2057 | + description: Share of electricity generated from renewables (hydro, wind, solar, bioenergy, other). | |
| 2058 | + sources: | |
| 2059 | + - {connector: owid, dataset: energy, code: renewables_share_elec, priority: 1} | |
| 2060 | + - {connector: worldbank, dataset: WDI, code: EG.ELC.RNEW.ZS, priority: 2} | |
| 2061 | +- slug: fossil-electricity-share | |
| 2062 | + name: Fossil fuel electricity share | |
| 2063 | + topic: energy | |
| 2064 | + subtopic: Electricity mix | |
| 2065 | + unit: "% of electricity generation" | |
| 2066 | + unit_short: "%" | |
| 2067 | + format: percent | |
| 2068 | + higher_is_better: false | |
| 2069 | + bounds: [0, 100] | |
| 2070 | + sources: | |
| 2071 | + - {connector: owid, dataset: energy, code: fossil_share_elec, priority: 1} | |
| 2072 | + - {connector: worldbank, dataset: WDI, code: EG.ELC.FOSL.ZS, priority: 2} | |
| 2073 | +- slug: low-carbon-electricity-share | |
| 2074 | + name: Low-carbon electricity share | |
| 2075 | + topic: energy | |
| 2076 | + subtopic: Electricity mix | |
| 2077 | + unit: "% of electricity generation" | |
| 2078 | + unit_short: "%" | |
| 2079 | + format: percent | |
| 2080 | + higher_is_better: true | |
| 2081 | + bounds: [0, 100] | |
| 2082 | + sources: | |
| 2083 | + - {connector: owid, dataset: energy, code: low_carbon_share_elec, priority: 1} | |
| 2084 | +- slug: hydro-electricity-share | |
| 2085 | + name: Hydropower electricity share | |
| 2086 | + topic: energy | |
| 2087 | + subtopic: Electricity mix | |
| 2088 | + unit: "% of electricity generation" | |
| 2089 | + unit_short: "%" | |
| 2090 | + format: percent | |
| 2091 | + bounds: [0, 100] | |
| 2092 | + sources: | |
| 2093 | + - {connector: owid, dataset: energy, code: hydro_share_elec, priority: 1} | |
| 2094 | + - {connector: worldbank, dataset: WDI, code: EG.ELC.HYRO.ZS, priority: 2} | |
| 2095 | +- slug: nuclear-electricity-share | |
| 2096 | + name: Nuclear electricity share | |
| 2097 | + topic: energy | |
| 2098 | + subtopic: Electricity mix | |
| 2099 | + unit: "% of electricity generation" | |
| 2100 | + unit_short: "%" | |
| 2101 | + format: percent | |
| 2102 | + bounds: [0, 100] | |
| 2103 | + sources: | |
| 2104 | + - {connector: owid, dataset: energy, code: nuclear_share_elec, priority: 1} | |
| 2105 | + - {connector: worldbank, dataset: WDI, code: EG.ELC.NUCL.ZS, priority: 2} | |
| 2106 | +- slug: solar-electricity-share | |
| 2107 | + name: Solar electricity share | |
| 2108 | + topic: energy | |
| 2109 | + subtopic: Electricity mix | |
| 2110 | + unit: "% of electricity generation" | |
| 2111 | + unit_short: "%" | |
| 2112 | + format: percent | |
| 2113 | + bounds: [0, 100] | |
| 2114 | + sources: | |
| 2115 | + - {connector: owid, dataset: energy, code: solar_share_elec, priority: 1} | |
| 2116 | +- slug: wind-electricity-share | |
| 2117 | + name: Wind electricity share | |
| 2118 | + topic: energy | |
| 2119 | + subtopic: Electricity mix | |
| 2120 | + unit: "% of electricity generation" | |
| 2121 | + unit_short: "%" | |
| 2122 | + format: percent | |
| 2123 | + bounds: [0, 100] | |
| 2124 | + sources: | |
| 2125 | + - {connector: owid, dataset: energy, code: wind_share_elec, priority: 1} | |
| 2126 | +- slug: coal-electricity-share | |
| 2127 | + name: Coal electricity share | |
| 2128 | + topic: energy | |
| 2129 | + subtopic: Electricity mix | |
| 2130 | + unit: "% of electricity generation" | |
| 2131 | + unit_short: "%" | |
| 2132 | + format: percent | |
| 2133 | + higher_is_better: false | |
| 2134 | + bounds: [0, 100] | |
| 2135 | + sources: | |
| 2136 | + - {connector: owid, dataset: energy, code: coal_share_elec, priority: 1} | |
| 2137 | +- slug: gas-electricity-share | |
| 2138 | + name: Gas electricity share | |
| 2139 | + topic: energy | |
| 2140 | + subtopic: Electricity mix | |
| 2141 | + unit: "% of electricity generation" | |
| 2142 | + unit_short: "%" | |
| 2143 | + format: percent | |
| 2144 | + bounds: [0, 100] | |
| 2145 | + sources: | |
| 2146 | + - {connector: owid, dataset: energy, code: gas_share_elec, priority: 1} | |
| 2147 | +- slug: solar-generation | |
| 2148 | + name: Solar electricity generation | |
| 2149 | + topic: energy | |
| 2150 | + subtopic: Electricity | |
| 2151 | + unit: terawatt-hours | |
| 2152 | + unit_short: TWh | |
| 2153 | + format: number | |
| 2154 | + precision: 2 | |
| 2155 | + aggregation: sum | |
| 2156 | + bounds: [0, null] | |
| 2157 | + sources: | |
| 2158 | + - {connector: owid, dataset: energy, code: solar_electricity, priority: 1} | |
| 2159 | +- slug: wind-generation | |
| 2160 | + name: Wind electricity generation | |
| 2161 | + topic: energy | |
| 2162 | + subtopic: Electricity | |
| 2163 | + unit: terawatt-hours | |
| 2164 | + unit_short: TWh | |
| 2165 | + format: number | |
| 2166 | + precision: 2 | |
| 2167 | + aggregation: sum | |
| 2168 | + bounds: [0, null] | |
| 2169 | + sources: | |
| 2170 | + - {connector: owid, dataset: energy, code: wind_electricity, priority: 1} | |
| 2171 | +- slug: hydro-generation | |
| 2172 | + name: Hydropower electricity generation | |
| 2173 | + topic: energy | |
| 2174 | + subtopic: Electricity | |
| 2175 | + unit: terawatt-hours | |
| 2176 | + unit_short: TWh | |
| 2177 | + format: number | |
| 2178 | + precision: 2 | |
| 2179 | + aggregation: sum | |
| 2180 | + bounds: [0, null] | |
| 2181 | + sources: | |
| 2182 | + - {connector: owid, dataset: energy, code: hydro_electricity, priority: 1} | |
| 2183 | +- slug: nuclear-generation | |
| 2184 | + name: Nuclear electricity generation | |
| 2185 | + topic: energy | |
| 2186 | + subtopic: Electricity | |
| 2187 | + unit: terawatt-hours | |
| 2188 | + unit_short: TWh | |
| 2189 | + format: number | |
| 2190 | + precision: 2 | |
| 2191 | + aggregation: sum | |
| 2192 | + bounds: [0, null] | |
| 2193 | + sources: | |
| 2194 | + - {connector: owid, dataset: energy, code: nuclear_electricity, priority: 1} | |
| 2195 | +- slug: renewable-energy-consumption-share | |
| 2196 | + name: Renewable energy consumption (% of total final energy consumption) | |
| 2197 | + short_name: Renewable energy | |
| 2198 | + topic: energy | |
| 2199 | + subtopic: Consumption | |
| 2200 | + unit: "% of final energy consumption" | |
| 2201 | + unit_short: "%" | |
| 2202 | + format: percent | |
| 2203 | + higher_is_better: true | |
| 2204 | + bounds: [0, 100] | |
| 2205 | + sources: | |
| 2206 | + - {connector: worldbank, dataset: WDI, code: EG.FEC.RNEW.ZS, priority: 1} | |
| 2207 | +- slug: energy-imports-share | |
| 2208 | + name: Energy imports, net (% of energy use) | |
| 2209 | + short_name: Energy imports | |
| 2210 | + topic: energy | |
| 2211 | + subtopic: Dependence | |
| 2212 | + unit: "% of energy use" | |
| 2213 | + unit_short: "%" | |
| 2214 | + format: percent | |
| 2215 | + bounds: [-2000, 100] | |
| 2216 | + sources: | |
| 2217 | + - {connector: worldbank, dataset: WDI, code: EG.IMP.CONS.ZS, priority: 1} | |
| 2218 | +- slug: net-electricity-imports-share | |
| 2219 | + name: Net electricity imports (% of demand) | |
| 2220 | + topic: energy | |
| 2221 | + subtopic: Dependence | |
| 2222 | + unit: "% of electricity demand" | |
| 2223 | + unit_short: "%" | |
| 2224 | + format: percent | |
| 2225 | + bounds: [-500, 100] | |
| 2226 | + sources: | |
| 2227 | + - {connector: owid, dataset: energy, code: net_elec_imports_share_demand, priority: 1} | |
| 2228 | +- slug: energy-intensity | |
| 2229 | + name: Energy intensity of GDP | |
| 2230 | + topic: energy | |
| 2231 | + subtopic: Intensity | |
| 2232 | + unit: kilowatt-hours per US$ (2011 PPP) | |
| 2233 | + unit_short: kWh/$ | |
| 2234 | + format: number | |
| 2235 | + precision: 2 | |
| 2236 | + higher_is_better: false | |
| 2237 | + bounds: [0, 50] | |
| 2238 | + sources: | |
| 2239 | + - {connector: owid, dataset: energy, code: energy_per_gdp, priority: 1} | |
| 2240 | +- slug: access-to-electricity | |
| 2241 | + name: Access to electricity (% of population) | |
| 2242 | + topic: energy | |
| 2243 | + subtopic: Access | |
| 2244 | + unit: "% of population" | |
| 2245 | + unit_short: "%" | |
| 2246 | + format: percent | |
| 2247 | + higher_is_better: true | |
| 2248 | + bounds: [0, 100] | |
| 2249 | + sources: | |
| 2250 | + - {connector: worldbank, dataset: WDI, code: EG.ELC.ACCS.ZS, priority: 1} | |
| 2251 | +- slug: carbon-intensity-electricity | |
| 2252 | + name: Carbon intensity of electricity | |
| 2253 | + topic: energy | |
| 2254 | + subtopic: Intensity | |
| 2255 | + unit: grams of CO₂ per kWh | |
| 2256 | + unit_short: gCO₂/kWh | |
| 2257 | + format: number | |
| 2258 | + precision: 0 | |
| 2259 | + higher_is_better: false | |
| 2260 | + bounds: [0, 1500] | |
| 2261 | + sources: | |
| 2262 | + - {connector: owid, dataset: energy, code: carbon_intensity_elec, priority: 1} | |
| 2263 | +- slug: oil-production | |
| 2264 | + name: Oil production | |
| 2265 | + topic: energy | |
| 2266 | + subtopic: Production | |
| 2267 | + unit: terawatt-hours | |
| 2268 | + unit_short: TWh | |
| 2269 | + format: number | |
| 2270 | + precision: 0 | |
| 2271 | + aggregation: sum | |
| 2272 | + bounds: [0, null] | |
| 2273 | + sources: | |
| 2274 | + - {connector: owid, dataset: energy, code: oil_production, priority: 1} | |
| 2275 | +- slug: gas-production | |
| 2276 | + name: Gas production | |
| 2277 | + topic: energy | |
| 2278 | + subtopic: Production | |
| 2279 | + unit: terawatt-hours | |
| 2280 | + unit_short: TWh | |
| 2281 | + format: number | |
| 2282 | + precision: 0 | |
| 2283 | + aggregation: sum | |
| 2284 | + bounds: [0, null] | |
| 2285 | + sources: | |
| 2286 | + - {connector: owid, dataset: energy, code: gas_production, priority: 1} | |
| 2287 | +- slug: coal-production | |
| 2288 | + name: Coal production | |
| 2289 | + topic: energy | |
| 2290 | + subtopic: Production | |
| 2291 | + unit: terawatt-hours | |
| 2292 | + unit_short: TWh | |
| 2293 | + format: number | |
| 2294 | + precision: 0 | |
| 2295 | + aggregation: sum | |
| 2296 | + bounds: [0, null] | |
| 2297 | + sources: | |
| 2298 | + - {connector: owid, dataset: energy, code: coal_production, priority: 1} | |
| 2299 | + | |
| 2300 | +# =========================================================== CLIMATE =========================================================== | |
| 2301 | +- slug: co2-emissions | |
| 2302 | + name: CO₂ emissions (fossil fuels and industry) | |
| 2303 | + short_name: CO₂ emissions | |
| 2304 | + topic: climate | |
| 2305 | + subtopic: Emissions | |
| 2306 | + unit: million tonnes | |
| 2307 | + unit_short: Mt | |
| 2308 | + format: tonnes | |
| 2309 | + precision: 1 | |
| 2310 | + aggregation: sum | |
| 2311 | + featured: true | |
| 2312 | + bounds: [0, null] | |
| 2313 | + sources: | |
| 2314 | + - {connector: owid, dataset: co2, code: co2, priority: 1} | |
| 2315 | +- slug: co2-per-capita | |
| 2316 | + name: CO₂ emissions per capita | |
| 2317 | + short_name: CO₂ per capita | |
| 2318 | + topic: climate | |
| 2319 | + subtopic: Emissions | |
| 2320 | + unit: tonnes per person | |
| 2321 | + unit_short: t | |
| 2322 | + format: tonnes | |
| 2323 | + precision: 2 | |
| 2324 | + higher_is_better: false | |
| 2325 | + featured: true | |
| 2326 | + bounds: [0, 120] | |
| 2327 | + change_floor: 0.5 | |
| 2328 | + sources: | |
| 2329 | + - {connector: owid, dataset: co2, code: co2_per_capita, priority: 1} | |
| 2330 | +- slug: co2-per-gdp | |
| 2331 | + name: CO₂ emissions per unit of GDP | |
| 2332 | + short_name: CO₂ intensity | |
| 2333 | + topic: climate | |
| 2334 | + subtopic: Intensity | |
| 2335 | + unit: kg per US$ (2011 PPP) | |
| 2336 | + unit_short: kg/$ | |
| 2337 | + format: number | |
| 2338 | + precision: 3 | |
| 2339 | + higher_is_better: false | |
| 2340 | + bounds: [0, 10] | |
| 2341 | + sources: | |
| 2342 | + - {connector: owid, dataset: co2, code: co2_per_gdp, priority: 1} | |
| 2343 | +- slug: consumption-co2-per-capita | |
| 2344 | + name: Consumption-based CO₂ emissions per capita | |
| 2345 | + topic: climate | |
| 2346 | + subtopic: Emissions | |
| 2347 | + unit: tonnes per person | |
| 2348 | + unit_short: t | |
| 2349 | + format: tonnes | |
| 2350 | + precision: 2 | |
| 2351 | + higher_is_better: false | |
| 2352 | + bounds: [0, 120] | |
| 2353 | + sources: | |
| 2354 | + - {connector: owid, dataset: co2, code: consumption_co2_per_capita, priority: 1} | |
| 2355 | +- slug: cumulative-co2 | |
| 2356 | + name: Cumulative CO₂ emissions | |
| 2357 | + topic: climate | |
| 2358 | + subtopic: Emissions | |
| 2359 | + unit: million tonnes | |
| 2360 | + unit_short: Mt | |
| 2361 | + format: tonnes | |
| 2362 | + precision: 0 | |
| 2363 | + aggregation: sum | |
| 2364 | + bounds: [0, null] | |
| 2365 | + sources: | |
| 2366 | + - {connector: owid, dataset: co2, code: cumulative_co2, priority: 1} | |
| 2367 | +- slug: share-global-co2 | |
| 2368 | + name: Share of global CO₂ emissions | |
| 2369 | + topic: climate | |
| 2370 | + subtopic: Emissions | |
| 2371 | + unit: "% of global emissions" | |
| 2372 | + unit_short: "%" | |
| 2373 | + format: percent | |
| 2374 | + precision: 2 | |
| 2375 | + bounds: [0, 100] | |
| 2376 | + sources: | |
| 2377 | + - {connector: owid, dataset: co2, code: share_global_co2, priority: 1} | |
| 2378 | +- slug: methane-emissions | |
| 2379 | + name: Methane emissions | |
| 2380 | + topic: climate | |
| 2381 | + subtopic: Other gases | |
| 2382 | + unit: million tonnes CO₂-equivalent | |
| 2383 | + unit_short: Mt CO₂e | |
| 2384 | + format: tonnes | |
| 2385 | + precision: 1 | |
| 2386 | + aggregation: sum | |
| 2387 | + bounds: [0, null] | |
| 2388 | + sources: | |
| 2389 | + - {connector: owid, dataset: co2, code: methane, priority: 1} | |
| 2390 | +- slug: nitrous-oxide-emissions | |
| 2391 | + name: Nitrous oxide emissions | |
| 2392 | + topic: climate | |
| 2393 | + subtopic: Other gases | |
| 2394 | + unit: million tonnes CO₂-equivalent | |
| 2395 | + unit_short: Mt CO₂e | |
| 2396 | + format: tonnes | |
| 2397 | + precision: 1 | |
| 2398 | + aggregation: sum | |
| 2399 | + bounds: [0, null] | |
| 2400 | + sources: | |
| 2401 | + - {connector: owid, dataset: co2, code: nitrous_oxide, priority: 1} | |
| 2402 | +- slug: total-ghg-emissions | |
| 2403 | + name: Total greenhouse gas emissions | |
| 2404 | + topic: climate | |
| 2405 | + subtopic: Emissions | |
| 2406 | + unit: million tonnes CO₂-equivalent | |
| 2407 | + unit_short: Mt CO₂e | |
| 2408 | + format: tonnes | |
| 2409 | + precision: 1 | |
| 2410 | + aggregation: sum | |
| 2411 | + bounds: [0, null] | |
| 2412 | + sources: | |
| 2413 | + - {connector: owid, dataset: co2, code: total_ghg, priority: 1} | |
| 2414 | +- slug: ghg-per-capita | |
| 2415 | + name: Greenhouse gas emissions per capita | |
| 2416 | + topic: climate | |
| 2417 | + subtopic: Emissions | |
| 2418 | + unit: tonnes CO₂-equivalent per person | |
| 2419 | + unit_short: t CO₂e | |
| 2420 | + format: tonnes | |
| 2421 | + precision: 2 | |
| 2422 | + higher_is_better: false | |
| 2423 | + bounds: [0, 200] | |
| 2424 | + sources: | |
| 2425 | + - {connector: owid, dataset: co2, code: ghg_per_capita, priority: 1} | |
| 2426 | +- slug: coal-co2 | |
| 2427 | + name: CO₂ emissions from coal | |
| 2428 | + topic: climate | |
| 2429 | + subtopic: By fuel | |
| 2430 | + unit: million tonnes | |
| 2431 | + unit_short: Mt | |
| 2432 | + format: tonnes | |
| 2433 | + precision: 1 | |
| 2434 | + aggregation: sum | |
| 2435 | + bounds: [0, null] | |
| 2436 | + sources: | |
| 2437 | + - {connector: owid, dataset: co2, code: coal_co2, priority: 1} | |
| 2438 | +- slug: oil-co2 | |
| 2439 | + name: CO₂ emissions from oil | |
| 2440 | + topic: climate | |
| 2441 | + subtopic: By fuel | |
| 2442 | + unit: million tonnes | |
| 2443 | + unit_short: Mt | |
| 2444 | + format: tonnes | |
| 2445 | + precision: 1 | |
| 2446 | + aggregation: sum | |
| 2447 | + bounds: [0, null] | |
| 2448 | + sources: | |
| 2449 | + - {connector: owid, dataset: co2, code: oil_co2, priority: 1} | |
| 2450 | +- slug: gas-co2 | |
| 2451 | + name: CO₂ emissions from gas | |
| 2452 | + topic: climate | |
| 2453 | + subtopic: By fuel | |
| 2454 | + unit: million tonnes | |
| 2455 | + unit_short: Mt | |
| 2456 | + format: tonnes | |
| 2457 | + precision: 1 | |
| 2458 | + aggregation: sum | |
| 2459 | + bounds: [0, null] | |
| 2460 | + sources: | |
| 2461 | + - {connector: owid, dataset: co2, code: gas_co2, priority: 1} | |
| 2462 | +- slug: land-use-change-co2 | |
| 2463 | + name: CO₂ emissions from land-use change | |
| 2464 | + topic: climate | |
| 2465 | + subtopic: By fuel | |
| 2466 | + unit: million tonnes | |
| 2467 | + unit_short: Mt | |
| 2468 | + format: tonnes | |
| 2469 | + precision: 1 | |
| 2470 | + aggregation: sum | |
| 2471 | + sources: | |
| 2472 | + - {connector: owid, dataset: co2, code: land_use_change_co2, priority: 1} | |
| 2473 | +- slug: temperature-change-from-ghg | |
| 2474 | + name: Contribution to global warming from greenhouse gases | |
| 2475 | + topic: climate | |
| 2476 | + subtopic: Temperature | |
| 2477 | + unit: °C | |
| 2478 | + unit_short: °C | |
| 2479 | + format: celsius | |
| 2480 | + precision: 4 | |
| 2481 | + aggregation: sum | |
| 2482 | + bounds: [0, 2] | |
| 2483 | + description: Change in global mean surface temperature caused by the country's cumulative CO₂, methane and N₂O emissions. | |
| 2484 | + sources: | |
| 2485 | + - {connector: owid, dataset: co2, code: temperature_change_from_ghg, priority: 1} | |
| 2486 | + | |
| 2487 | +# ========================================================= ENVIRONMENT ========================================================= | |
| 2488 | +- slug: forest-area-share | |
| 2489 | + name: Forest area (% of land area) | |
| 2490 | + short_name: Forest cover | |
| 2491 | + topic: environment | |
| 2492 | + subtopic: Land | |
| 2493 | + unit: "% of land area" | |
| 2494 | + unit_short: "%" | |
| 2495 | + format: percent | |
| 2496 | + bounds: [0, 100] | |
| 2497 | + sources: | |
| 2498 | + - {connector: worldbank, dataset: WDI, code: AG.LND.FRST.ZS, priority: 1} | |
| 2499 | +- slug: forest-area | |
| 2500 | + name: Forest area | |
| 2501 | + topic: environment | |
| 2502 | + subtopic: Land | |
| 2503 | + unit: km² | |
| 2504 | + unit_short: km² | |
| 2505 | + format: km | |
| 2506 | + precision: 0 | |
| 2507 | + aggregation: sum | |
| 2508 | + bounds: [0, null] | |
| 2509 | + sources: | |
| 2510 | + - {connector: worldbank, dataset: WDI, code: AG.LND.FRST.K2, priority: 1} | |
| 2511 | +- slug: pm25-exposure | |
| 2512 | + name: PM2.5 air pollution, mean annual exposure | |
| 2513 | + short_name: Air pollution (PM2.5) | |
| 2514 | + topic: environment | |
| 2515 | + subtopic: Air | |
| 2516 | + unit: micrograms per m³ | |
| 2517 | + unit_short: µg/m³ | |
| 2518 | + format: number | |
| 2519 | + precision: 1 | |
| 2520 | + higher_is_better: false | |
| 2521 | + featured: true | |
| 2522 | + bounds: [0, 200] | |
| 2523 | + sources: | |
| 2524 | + - {connector: worldbank, dataset: WDI, code: EN.ATM.PM25.MC.M3, priority: 1} | |
| 2525 | +- slug: protected-areas-share | |
| 2526 | + name: Terrestrial protected areas (% of total land area) | |
| 2527 | + topic: environment | |
| 2528 | + subtopic: Land | |
| 2529 | + unit: "% of land area" | |
| 2530 | + unit_short: "%" | |
| 2531 | + format: percent | |
| 2532 | + higher_is_better: true | |
| 2533 | + bounds: [0, 100] | |
| 2534 | + sources: | |
| 2535 | + - {connector: worldbank, dataset: WDI, code: ER.LND.PTLD.ZS, priority: 1} | |
| 2536 | +- slug: agricultural-land-share | |
| 2537 | + name: Agricultural land (% of land area) | |
| 2538 | + topic: agriculture | |
| 2539 | + subtopic: Land | |
| 2540 | + unit: "% of land area" | |
| 2541 | + unit_short: "%" | |
| 2542 | + format: percent | |
| 2543 | + bounds: [0, 100] | |
| 2544 | + sources: | |
| 2545 | + - {connector: worldbank, dataset: WDI, code: AG.LND.AGRI.ZS, priority: 1} | |
| 2546 | +- slug: arable-land-share | |
| 2547 | + name: Arable land (% of land area) | |
| 2548 | + topic: agriculture | |
| 2549 | + subtopic: Land | |
| 2550 | + unit: "% of land area" | |
| 2551 | + unit_short: "%" | |
| 2552 | + format: percent | |
| 2553 | + bounds: [0, 100] | |
| 2554 | + sources: | |
| 2555 | + - {connector: worldbank, dataset: WDI, code: AG.LND.ARBL.ZS, priority: 1} | |
| 2556 | +- slug: freshwater-withdrawal-share | |
| 2557 | + name: Annual freshwater withdrawals (% of internal resources) | |
| 2558 | + short_name: Water stress | |
| 2559 | + topic: environment | |
| 2560 | + subtopic: Water | |
| 2561 | + unit: "% of internal resources" | |
| 2562 | + unit_short: "%" | |
| 2563 | + format: percent | |
| 2564 | + higher_is_better: false | |
| 2565 | + bounds: [0, 10000] | |
| 2566 | + sources: | |
| 2567 | + - {connector: worldbank, dataset: WDI, code: ER.H2O.FWTL.ZS, priority: 1} | |
| 2568 | +- slug: renewable-freshwater-per-capita | |
| 2569 | + name: Renewable internal freshwater resources per capita | |
| 2570 | + topic: environment | |
| 2571 | + subtopic: Water | |
| 2572 | + unit: cubic metres per person | |
| 2573 | + unit_short: m³ | |
| 2574 | + format: number | |
| 2575 | + precision: 0 | |
| 2576 | + bounds: [0, null] | |
| 2577 | + sources: | |
| 2578 | + - {connector: worldbank, dataset: WDI, code: ER.H2O.INTR.PC, priority: 1} | |
| 2579 | + | |
| 2580 | +# ======================================================= INFRASTRUCTURE ======================================================== | |
| 2581 | +- slug: air-passengers | |
| 2582 | + name: Air transport, passengers carried | |
| 2583 | + topic: infrastructure | |
| 2584 | + subtopic: Air | |
| 2585 | + unit: passengers | |
| 2586 | + unit_short: passengers | |
| 2587 | + format: number | |
| 2588 | + precision: 0 | |
| 2589 | + aggregation: sum | |
| 2590 | + bounds: [0, null] | |
| 2591 | + sources: | |
| 2592 | + - {connector: worldbank, dataset: WDI, code: IS.AIR.PSGR, priority: 1} | |
| 2593 | +- slug: air-freight | |
| 2594 | + name: Air transport, freight | |
| 2595 | + topic: infrastructure | |
| 2596 | + subtopic: Air | |
| 2597 | + unit: million tonne-km | |
| 2598 | + unit_short: Mt-km | |
| 2599 | + format: number | |
| 2600 | + precision: 0 | |
| 2601 | + aggregation: sum | |
| 2602 | + bounds: [0, null] | |
| 2603 | + sources: | |
| 2604 | + - {connector: worldbank, dataset: WDI, code: IS.AIR.GOOD.MT.K1, priority: 1} | |
| 2605 | +- slug: rail-lines | |
| 2606 | + name: Rail lines (total route-km) | |
| 2607 | + topic: infrastructure | |
| 2608 | + subtopic: Rail | |
| 2609 | + unit: km | |
| 2610 | + unit_short: km | |
| 2611 | + format: km | |
| 2612 | + precision: 0 | |
| 2613 | + aggregation: sum | |
| 2614 | + bounds: [0, null] | |
| 2615 | + sources: | |
| 2616 | + - {connector: worldbank, dataset: WDI, code: IS.RRS.TOTL.KM, priority: 1} | |
| 2617 | +- slug: rail-passengers | |
| 2618 | + name: Railways, passengers carried | |
| 2619 | + topic: infrastructure | |
| 2620 | + subtopic: Rail | |
| 2621 | + unit: million passenger-km | |
| 2622 | + unit_short: M pkm | |
| 2623 | + format: number | |
| 2624 | + precision: 0 | |
| 2625 | + aggregation: sum | |
| 2626 | + bounds: [0, null] | |
| 2627 | + sources: | |
| 2628 | + - {connector: worldbank, dataset: WDI, code: IS.RRS.PASG.KM, priority: 1} | |
| 2629 | +- slug: rail-freight | |
| 2630 | + name: Railways, goods transported | |
| 2631 | + topic: infrastructure | |
| 2632 | + subtopic: Rail | |
| 2633 | + unit: million tonne-km | |
| 2634 | + unit_short: Mt-km | |
| 2635 | + format: number | |
| 2636 | + precision: 0 | |
| 2637 | + aggregation: sum | |
| 2638 | + bounds: [0, null] | |
| 2639 | + sources: | |
| 2640 | + - {connector: worldbank, dataset: WDI, code: IS.RRS.GOOD.MT.K6, priority: 1} | |
| 2641 | +- slug: container-port-traffic | |
| 2642 | + name: Container port traffic | |
| 2643 | + topic: infrastructure | |
| 2644 | + subtopic: Shipping | |
| 2645 | + unit: TEU (20-foot equivalent units) | |
| 2646 | + unit_short: TEU | |
| 2647 | + format: number | |
| 2648 | + precision: 0 | |
| 2649 | + aggregation: sum | |
| 2650 | + bounds: [0, null] | |
| 2651 | + sources: | |
| 2652 | + - {connector: worldbank, dataset: WDI, code: IS.SHP.GOOD.TU, priority: 1} | |
| 2653 | +- slug: liner-shipping-connectivity | |
| 2654 | + name: Liner shipping connectivity index | |
| 2655 | + topic: infrastructure | |
| 2656 | + subtopic: Shipping | |
| 2657 | + unit: index (maximum value in 2004 = 100) | |
| 2658 | + unit_short: index | |
| 2659 | + format: index | |
| 2660 | + higher_is_better: true | |
| 2661 | + sources: | |
| 2662 | + - {connector: worldbank, dataset: WDI, code: IS.SHP.GCNW.XQ, priority: 1} | |
| 2663 | + | |
| 2664 | +# =========================================================== DIGITAL =========================================================== | |
| 2665 | +- slug: internet-users | |
| 2666 | + name: Individuals using the Internet (% of population) | |
| 2667 | + short_name: Internet users | |
| 2668 | + topic: digital | |
| 2669 | + subtopic: Adoption | |
| 2670 | + unit: "% of population" | |
| 2671 | + unit_short: "%" | |
| 2672 | + format: percent | |
| 2673 | + higher_is_better: true | |
| 2674 | + featured: true | |
| 2675 | + bounds: [0, 100] | |
| 2676 | + change_floor: 5 | |
| 2677 | + sources: | |
| 2678 | + - {connector: worldbank, dataset: WDI, code: IT.NET.USER.ZS, priority: 1} | |
| 2679 | +- slug: fixed-broadband-subscriptions | |
| 2680 | + name: Fixed broadband subscriptions (per 100 people) | |
| 2681 | + short_name: Fixed broadband | |
| 2682 | + topic: digital | |
| 2683 | + subtopic: Infrastructure | |
| 2684 | + unit: per 100 people | |
| 2685 | + unit_short: /100 | |
| 2686 | + format: number | |
| 2687 | + precision: 1 | |
| 2688 | + higher_is_better: true | |
| 2689 | + bounds: [0, 100] | |
| 2690 | + sources: | |
| 2691 | + - {connector: worldbank, dataset: WDI, code: IT.NET.BBND.P2, priority: 1} | |
| 2692 | +- slug: mobile-subscriptions | |
| 2693 | + name: Mobile cellular subscriptions (per 100 people) | |
| 2694 | + short_name: Mobile subscriptions | |
| 2695 | + topic: digital | |
| 2696 | + subtopic: Infrastructure | |
| 2697 | + unit: per 100 people | |
| 2698 | + unit_short: /100 | |
| 2699 | + format: number | |
| 2700 | + precision: 1 | |
| 2701 | + bounds: [0, 500] | |
| 2702 | + sources: | |
| 2703 | + - {connector: worldbank, dataset: WDI, code: IT.CEL.SETS.P2, priority: 1} | |
| 2704 | +- slug: secure-internet-servers | |
| 2705 | + name: Secure Internet servers (per 1 million people) | |
| 2706 | + topic: digital | |
| 2707 | + subtopic: Infrastructure | |
| 2708 | + unit: per million people | |
| 2709 | + unit_short: /M | |
| 2710 | + format: per_million | |
| 2711 | + precision: 0 | |
| 2712 | + higher_is_better: true | |
| 2713 | + bounds: [0, null] | |
| 2714 | + sources: | |
| 2715 | + - {connector: worldbank, dataset: WDI, code: IT.NET.SECR.P6, priority: 1} | |
| 2716 | +- slug: ict-goods-exports-share | |
| 2717 | + name: ICT goods exports (% of total goods exports) | |
| 2718 | + topic: digital | |
| 2719 | + subtopic: Economy | |
| 2720 | + unit: "% of goods exports" | |
| 2721 | + unit_short: "%" | |
| 2722 | + format: percent | |
| 2723 | + bounds: [0, 100] | |
| 2724 | + sources: | |
| 2725 | + - {connector: worldbank, dataset: WDI, code: TX.VAL.ICTG.ZS.UN, priority: 1} | |
| 2726 | +- slug: ict-service-exports-share | |
| 2727 | + name: ICT service exports (% of service exports) | |
| 2728 | + topic: digital | |
| 2729 | + subtopic: Economy | |
| 2730 | + unit: "% of service exports" | |
| 2731 | + unit_short: "%" | |
| 2732 | + format: percent | |
| 2733 | + bounds: [0, 100] | |
| 2734 | + sources: | |
| 2735 | + - {connector: worldbank, dataset: WDI, code: BX.GSR.CCIS.ZS, priority: 1} | |
| 2736 | + | |
| 2737 | +# ========================================================== INNOVATION ========================================================= | |
| 2738 | +- slug: rd-expenditure-pct-gdp | |
| 2739 | + name: Research and development expenditure (% of GDP) | |
| 2740 | + short_name: R&D spending | |
| 2741 | + topic: innovation | |
| 2742 | + subtopic: Research | |
| 2743 | + unit: "% of GDP" | |
| 2744 | + unit_short: "% GDP" | |
| 2745 | + format: percent | |
| 2746 | + precision: 2 | |
| 2747 | + higher_is_better: true | |
| 2748 | + featured: true | |
| 2749 | + bounds: [0, 10] | |
| 2750 | + sources: | |
| 2751 | + - {connector: worldbank, dataset: WDI, code: GB.XPD.RSDV.GD.ZS, priority: 1} | |
| 2752 | +- slug: researchers-per-million | |
| 2753 | + name: Researchers in R&D (per million people) | |
| 2754 | + topic: innovation | |
| 2755 | + subtopic: Research | |
| 2756 | + unit: per million people | |
| 2757 | + unit_short: /M | |
| 2758 | + format: per_million | |
| 2759 | + precision: 0 | |
| 2760 | + higher_is_better: true | |
| 2761 | + bounds: [0, 20000] | |
| 2762 | + sources: | |
| 2763 | + - {connector: worldbank, dataset: WDI, code: SP.POP.SCIE.RD.P6, priority: 1} | |
| 2764 | +- slug: patent-applications-residents | |
| 2765 | + name: Patent applications, residents | |
| 2766 | + topic: innovation | |
| 2767 | + subtopic: Patents | |
| 2768 | + unit: applications | |
| 2769 | + unit_short: applications | |
| 2770 | + format: number | |
| 2771 | + precision: 0 | |
| 2772 | + aggregation: sum | |
| 2773 | + bounds: [0, null] | |
| 2774 | + sources: | |
| 2775 | + - {connector: worldbank, dataset: WDI, code: IP.PAT.RESD, priority: 1} | |
| 2776 | +- slug: patent-applications-nonresidents | |
| 2777 | + name: Patent applications, nonresidents | |
| 2778 | + topic: innovation | |
| 2779 | + subtopic: Patents | |
| 2780 | + unit: applications | |
| 2781 | + unit_short: applications | |
| 2782 | + format: number | |
| 2783 | + precision: 0 | |
| 2784 | + aggregation: sum | |
| 2785 | + bounds: [0, null] | |
| 2786 | + sources: | |
| 2787 | + - {connector: worldbank, dataset: WDI, code: IP.PAT.NRES, priority: 1} | |
| 2788 | +- slug: scientific-articles | |
| 2789 | + name: Scientific and technical journal articles | |
| 2790 | + topic: innovation | |
| 2791 | + subtopic: Research | |
| 2792 | + unit: articles | |
| 2793 | + unit_short: articles | |
| 2794 | + format: number | |
| 2795 | + precision: 0 | |
| 2796 | + aggregation: sum | |
| 2797 | + bounds: [0, null] | |
| 2798 | + sources: | |
| 2799 | + - {connector: worldbank, dataset: WDI, code: IP.JRN.ARTC.SC, priority: 1} | |
| 2800 | +- slug: trademark-applications | |
| 2801 | + name: Trademark applications, total | |
| 2802 | + topic: innovation | |
| 2803 | + subtopic: Patents | |
| 2804 | + unit: applications | |
| 2805 | + unit_short: applications | |
| 2806 | + format: number | |
| 2807 | + precision: 0 | |
| 2808 | + aggregation: sum | |
| 2809 | + bounds: [0, null] | |
| 2810 | + sources: | |
| 2811 | + - {connector: worldbank, dataset: WDI, code: IP.TMK.TOTL, priority: 1} | |
| 2812 | + | |
| 2813 | +# ========================================================== AGRICULTURE ======================================================== | |
| 2814 | +- slug: arable-land-per-capita | |
| 2815 | + name: Arable land (hectares per person) | |
| 2816 | + topic: agriculture | |
| 2817 | + subtopic: Land | |
| 2818 | + unit: hectares per person | |
| 2819 | + unit_short: ha | |
| 2820 | + format: ha | |
| 2821 | + precision: 2 | |
| 2822 | + bounds: [0, 10] | |
| 2823 | + sources: | |
| 2824 | + - {connector: worldbank, dataset: WDI, code: AG.LND.ARBL.HA.PC, priority: 1} | |
| 2825 | +- slug: cereal-yield | |
| 2826 | + name: Cereal yield | |
| 2827 | + topic: agriculture | |
| 2828 | + subtopic: Production | |
| 2829 | + unit: kg per hectare | |
| 2830 | + unit_short: kg/ha | |
| 2831 | + format: number | |
| 2832 | + precision: 0 | |
| 2833 | + higher_is_better: true | |
| 2834 | + bounds: [0, 50000] | |
| 2835 | + sources: | |
| 2836 | + - {connector: worldbank, dataset: WDI, code: AG.YLD.CREL.KG, priority: 1} | |
| 2837 | +- slug: food-production-index | |
| 2838 | + name: Food production index | |
| 2839 | + topic: agriculture | |
| 2840 | + subtopic: Production | |
| 2841 | + unit: index (2014–2016 = 100) | |
| 2842 | + unit_short: index | |
| 2843 | + format: index | |
| 2844 | + ranking_eligible: false | |
| 2845 | + sources: | |
| 2846 | + - {connector: worldbank, dataset: WDI, code: AG.PRD.FOOD.XD, priority: 1} | |
| 2847 | +- slug: crop-production-index | |
| 2848 | + name: Crop production index | |
| 2849 | + topic: agriculture | |
| 2850 | + subtopic: Production | |
| 2851 | + unit: index (2014–2016 = 100) | |
| 2852 | + unit_short: index | |
| 2853 | + format: index | |
| 2854 | + ranking_eligible: false | |
| 2855 | + sources: | |
| 2856 | + - {connector: worldbank, dataset: WDI, code: AG.PRD.CROP.XD, priority: 1} | |
| 2857 | +- slug: livestock-production-index | |
| 2858 | + name: Livestock production index | |
| 2859 | + topic: agriculture | |
| 2860 | + subtopic: Production | |
| 2861 | + unit: index (2014–2016 = 100) | |
| 2862 | + unit_short: index | |
| 2863 | + format: index | |
| 2864 | + ranking_eligible: false | |
| 2865 | + sources: | |
| 2866 | + - {connector: worldbank, dataset: WDI, code: AG.PRD.LVSK.XD, priority: 1} | |
| 2867 | +- slug: fertilizer-consumption | |
| 2868 | + name: Fertilizer consumption | |
| 2869 | + topic: agriculture | |
| 2870 | + subtopic: Inputs | |
| 2871 | + unit: kg per hectare of arable land | |
| 2872 | + unit_short: kg/ha | |
| 2873 | + format: number | |
| 2874 | + precision: 0 | |
| 2875 | + bounds: [0, 50000] | |
| 2876 | + sources: | |
| 2877 | + - {connector: worldbank, dataset: WDI, code: AG.CON.FERT.ZS, priority: 1} | |
| 2878 | +- slug: oil-rents-pct-gdp | |
| 2879 | + name: Oil rents (% of GDP) | |
| 2880 | + topic: agriculture | |
| 2881 | + subtopic: Resources | |
| 2882 | + unit: "% of GDP" | |
| 2883 | + unit_short: "% GDP" | |
| 2884 | + format: percent | |
| 2885 | + bounds: [0, 100] | |
| 2886 | + sources: | |
| 2887 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.PETR.RT.ZS, priority: 1} | |
| 2888 | +- slug: mineral-rents-pct-gdp | |
| 2889 | + name: Mineral rents (% of GDP) | |
| 2890 | + topic: agriculture | |
| 2891 | + subtopic: Resources | |
| 2892 | + unit: "% of GDP" | |
| 2893 | + unit_short: "% GDP" | |
| 2894 | + format: percent | |
| 2895 | + bounds: [0, 100] | |
| 2896 | + sources: | |
| 2897 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.MINR.RT.ZS, priority: 1} | |
| 2898 | +- slug: forest-rents-pct-gdp | |
| 2899 | + name: Forest rents (% of GDP) | |
| 2900 | + topic: agriculture | |
| 2901 | + subtopic: Resources | |
| 2902 | + unit: "% of GDP" | |
| 2903 | + unit_short: "% GDP" | |
| 2904 | + format: percent | |
| 2905 | + bounds: [0, 100] | |
| 2906 | + sources: | |
| 2907 | + - {connector: worldbank, dataset: WDI, code: NY.GDP.FRST.RT.ZS, priority: 1} | |
| 2908 | +- slug: food-insecurity-prevalence | |
| 2909 | + name: Prevalence of moderate or severe food insecurity | |
| 2910 | + topic: agriculture | |
| 2911 | + subtopic: Food security | |
| 2912 | + unit: "% of population" | |
| 2913 | + unit_short: "%" | |
| 2914 | + format: percent | |
| 2915 | + higher_is_better: false | |
| 2916 | + bounds: [0, 100] | |
| 2917 | + sources: | |
| 2918 | + - {connector: worldbank, dataset: WDI, code: SN.ITK.MSFI.ZS, priority: 1} | |
| 2919 | +- slug: undernourishment-prevalence | |
| 2920 | + name: Prevalence of undernourishment | |
| 2921 | + topic: agriculture | |
| 2922 | + subtopic: Food security | |
| 2923 | + unit: "% of population" | |
| 2924 | + unit_short: "%" | |
| 2925 | + format: percent | |
| 2926 | + higher_is_better: false | |
| 2927 | + bounds: [0, 100] | |
| 2928 | + sources: | |
| 2929 | + - {connector: worldbank, dataset: WDI, code: SN.ITK.DEFC.ZS, priority: 1} | |
| 2930 | + | |
| 2931 | +# =========================================================== TOURISM =========================================================== | |
| 2932 | +- slug: tourist-arrivals | |
| 2933 | + name: International tourism, number of arrivals | |
| 2934 | + short_name: Tourist arrivals | |
| 2935 | + topic: tourism | |
| 2936 | + subtopic: Flows | |
| 2937 | + unit: arrivals | |
| 2938 | + unit_short: arrivals | |
| 2939 | + format: number | |
| 2940 | + precision: 0 | |
| 2941 | + aggregation: sum | |
| 2942 | + featured: true | |
| 2943 | + bounds: [0, null] | |
| 2944 | + sources: | |
| 2945 | + - {connector: worldbank, dataset: WDI, code: ST.INT.ARVL, priority: 1} | |
| 2946 | +- slug: tourist-departures | |
| 2947 | + name: International tourism, number of departures | |
| 2948 | + topic: tourism | |
| 2949 | + subtopic: Flows | |
| 2950 | + unit: departures | |
| 2951 | + unit_short: departures | |
| 2952 | + format: number | |
| 2953 | + precision: 0 | |
| 2954 | + aggregation: sum | |
| 2955 | + bounds: [0, null] | |
| 2956 | + sources: | |
| 2957 | + - {connector: worldbank, dataset: WDI, code: ST.INT.DPRT, priority: 1} | |
| 2958 | +- slug: tourism-receipts | |
| 2959 | + name: International tourism, receipts (current US$) | |
| 2960 | + short_name: Tourism receipts | |
| 2961 | + topic: tourism | |
| 2962 | + subtopic: Money | |
| 2963 | + unit: current US$ | |
| 2964 | + unit_short: US$ | |
| 2965 | + format: currency | |
| 2966 | + precision: 0 | |
| 2967 | + aggregation: sum | |
| 2968 | + bounds: [0, null] | |
| 2969 | + sources: | |
| 2970 | + - {connector: worldbank, dataset: WDI, code: ST.INT.RCPT.CD, priority: 1} | |
| 2971 | +- slug: tourism-receipts-pct-exports | |
| 2972 | + name: International tourism receipts (% of total exports) | |
| 2973 | + topic: tourism | |
| 2974 | + subtopic: Money | |
| 2975 | + unit: "% of total exports" | |
| 2976 | + unit_short: "%" | |
| 2977 | + format: percent | |
| 2978 | + bounds: [0, 100] | |
| 2979 | + sources: | |
| 2980 | + - {connector: worldbank, dataset: WDI, code: ST.INT.RCPT.XP.ZS, priority: 1} | |
| 2981 | +- slug: tourism-expenditures | |
| 2982 | + name: International tourism, expenditures (current US$) | |
| 2983 | + topic: tourism | |
| 2984 | + subtopic: Money | |
| 2985 | + unit: current US$ | |
| 2986 | + unit_short: US$ | |
| 2987 | + format: currency | |
| 2988 | + precision: 0 | |
| 2989 | + aggregation: sum | |
| 2990 | + bounds: [0, null] | |
| 2991 | + sources: | |
| 2992 | + - {connector: worldbank, dataset: WDI, code: ST.INT.XPND.CD, priority: 1} | |
| 2993 | + | |
| 2994 | +# =========================================================== SECURITY ========================================================== | |
| 2995 | +- slug: homicide-rate | |
| 2996 | + name: Intentional homicides | |
| 2997 | + short_name: Homicide rate | |
| 2998 | + topic: security | |
| 2999 | + subtopic: Crime | |
| 3000 | + unit: per 100,000 people | |
| 3001 | + unit_short: /100k | |
| 3002 | + format: per_100k | |
| 3003 | + precision: 1 | |
| 3004 | + higher_is_better: false | |
| 3005 | + featured: true | |
| 3006 | + bounds: [0, 150] | |
| 3007 | + sources: | |
| 3008 | + - {connector: worldbank, dataset: WDI, code: VC.IHR.PSRC.P5, priority: 1} | |
| 3009 | +- slug: armed-forces-personnel | |
| 3010 | + name: Armed forces personnel, total | |
| 3011 | + topic: security | |
| 3012 | + subtopic: Defence | |
| 3013 | + unit: people | |
| 3014 | + unit_short: people | |
| 3015 | + format: number | |
| 3016 | + precision: 0 | |
| 3017 | + aggregation: sum | |
| 3018 | + bounds: [0, null] | |
| 3019 | + sources: | |
| 3020 | + - {connector: worldbank, dataset: WDI, code: MS.MIL.TOTL.P1, priority: 1} | |
| 3021 | +- slug: armed-forces-personnel-share | |
| 3022 | + name: Armed forces personnel (% of total labour force) | |
| 3023 | + topic: security | |
| 3024 | + subtopic: Defence | |
| 3025 | + unit: "% of labour force" | |
| 3026 | + unit_short: "%" | |
| 3027 | + format: percent | |
| 3028 | + bounds: [0, 50] | |
| 3029 | + sources: | |
| 3030 | + - {connector: worldbank, dataset: WDI, code: MS.MIL.TOTL.TF.ZS, priority: 1} | |
| 3031 | +- slug: battle-related-deaths | |
| 3032 | + name: Battle-related deaths | |
| 3033 | + topic: security | |
| 3034 | + subtopic: Conflict | |
| 3035 | + unit: deaths | |
| 3036 | + unit_short: deaths | |
| 3037 | + format: number | |
| 3038 | + precision: 0 | |
| 3039 | + aggregation: sum | |
| 3040 | + higher_is_better: false | |
| 3041 | + bounds: [0, null] | |
| 3042 | + sources: | |
| 3043 | + - {connector: worldbank, dataset: WDI, code: VC.BTL.DETH, priority: 1} | |
| 3044 | + | |
| 3045 | +# ======================================================= QUALITY OF LIFE ======================================================= | |
| 3046 | +- slug: human-development-index | |
| 3047 | + name: Human Development Index | |
| 3048 | + short_name: HDI | |
| 3049 | + topic: quality-of-life | |
| 3050 | + subtopic: Composite | |
| 3051 | + unit: index (0–1) | |
| 3052 | + unit_short: HDI | |
| 3053 | + format: number | |
| 3054 | + precision: 3 | |
| 3055 | + higher_is_better: true | |
| 3056 | + featured: true | |
| 3057 | + bounds: [0, 1] | |
| 3058 | + description: UNDP composite of life expectancy, education and income per capita. | |
| 3059 | + sources: | |
| 3060 | + - {connector: owid, dataset: grapher, code: human-development-index, priority: 1} | |
| 3061 | +- slug: life-satisfaction | |
| 3062 | + name: Self-reported life satisfaction (Cantril ladder) | |
| 3063 | + short_name: Life satisfaction | |
| 3064 | + topic: quality-of-life | |
| 3065 | + subtopic: Wellbeing | |
| 3066 | + unit: score (0–10) | |
| 3067 | + unit_short: /10 | |
| 3068 | + format: number | |
| 3069 | + precision: 2 | |
| 3070 | + higher_is_better: true | |
| 3071 | + bounds: [0, 10] | |
| 3072 | + description: Average answer to the Cantril ladder question in the Gallup World Poll, as compiled by the World Happiness Report. | |
| 3073 | + sources: | |
| 3074 | + - {connector: owid, dataset: grapher, code: happiness-cantril-ladder, priority: 1} | |
| 3075 | +- slug: women-in-parliament-share | |
| 3076 | + name: Proportion of seats held by women in national parliaments | |
| 3077 | + short_name: Women in parliament | |
| 3078 | + topic: quality-of-life | |
| 3079 | + subtopic: Gender | |
| 3080 | + unit: "% of seats" | |
| 3081 | + unit_short: "%" | |
| 3082 | + format: percent | |
| 3083 | + higher_is_better: true | |
| 3084 | + bounds: [0, 100] | |
| 3085 | + sources: | |
| 3086 | + - {connector: worldbank, dataset: WDI, code: SG.GEN.PARL.ZS, priority: 1} | |
added
registry/topics.yaml
+176 −0
@@ -0,0 +1,176 @@ | ||
| 1 | +# Topics shown on country pages and in navigation. `headline` = indicators on the country overview (in order). | |
| 2 | +# `indicators` = ordered list for the topic page (grouped by subtopic in the UI using the indicator's `subtopic`). | |
| 3 | +headline: | |
| 4 | + - population | |
| 5 | + - gdp | |
| 6 | + - gdp-per-capita | |
| 7 | + - gdp-growth | |
| 8 | + - inflation | |
| 9 | + - unemployment-rate | |
| 10 | + - life-expectancy | |
| 11 | + - median-age | |
| 12 | + - government-debt-pct-gdp | |
| 13 | + - co2-per-capita | |
| 14 | + - renewable-electricity-share | |
| 15 | + - internet-users | |
| 16 | + | |
| 17 | +topics: | |
| 18 | +- id: economy | |
| 19 | + name: Economy | |
| 20 | + short: Economy | |
| 21 | + order: 1 | |
| 22 | + blurb: Output, growth, prices, productivity and external balance. | |
| 23 | + indicators: [gdp, gdp-ppp, gdp-per-capita, gdp-per-capita-ppp, gdp-growth, gdp-per-capita-growth, gdp-constant, | |
| 24 | + inflation, inflation-gdp-deflator, policy-rate, lending-rate, exchange-rate, real-effective-exchange-rate, | |
| 25 | + current-account-balance-pct-gdp, gross-capital-formation-pct-gdp, household-consumption-pct-gdp, | |
| 26 | + fdi-inflows-pct-gdp, broad-money-pct-gdp, industrial-production-index, gdp-per-hour-worked, | |
| 27 | + agriculture-value-added-pct-gdp, industry-value-added-pct-gdp, manufacturing-value-added-pct-gdp, services-value-added-pct-gdp, | |
| 28 | + gross-savings-pct-gdp, natural-resources-rents-pct-gdp, remittances-received-pct-gdp] | |
| 29 | +- id: government | |
| 30 | + name: Government & public finance | |
| 31 | + short: Government | |
| 32 | + order: 2 | |
| 33 | + blurb: Public debt, deficits, revenue, spending and taxation. | |
| 34 | + indicators: [government-debt-pct-gdp, general-government-gross-debt-pct-gdp, fiscal-balance-pct-gdp, government-revenue-pct-gdp, | |
| 35 | + government-expenditure-pct-gdp, tax-revenue-pct-gdp, social-expenditure-pct-gdp, military-expenditure-pct-gdp, | |
| 36 | + military-expenditure, health-expenditure-pct-gdp, education-expenditure-pct-gdp, interest-payments-pct-revenue, | |
| 37 | + external-debt-pct-gni, government-effectiveness, control-of-corruption, rule-of-law] | |
| 38 | +- id: population | |
| 39 | + name: Population & demographics | |
| 40 | + short: Population | |
| 41 | + order: 3 | |
| 42 | + blurb: Size, growth, ages, births, deaths, urbanisation and migration. | |
| 43 | + indicators: [population, population-growth, population-density, urban-population-share, urban-population, rural-population, | |
| 44 | + fertility-rate, birth-rate, death-rate, median-age, population-0-14-share, population-15-64-share, population-65-plus-share, | |
| 45 | + dependency-ratio, old-age-dependency-ratio, net-migration, international-migrant-stock-share, refugee-population, | |
| 46 | + life-expectancy, life-expectancy-female, life-expectancy-male, adolescent-fertility-rate, population-female-share] | |
| 47 | +- id: labor | |
| 48 | + name: Employment & wages | |
| 49 | + short: Labor | |
| 50 | + order: 4 | |
| 51 | + blurb: Unemployment, participation, employment, youth, wages and hours. | |
| 52 | + indicators: [unemployment-rate, youth-unemployment-rate, labor-force-participation-rate, labor-force-participation-female, | |
| 53 | + employment-to-population-ratio, employment-rate, labor-force, average-annual-wages, hours-worked, minimum-wage-relative, | |
| 54 | + self-employed-share, vulnerable-employment-share, employment-agriculture-share, employment-industry-share, employment-services-share, | |
| 55 | + gdp-per-person-employed, gdp-per-hour-worked, part-time-employment-share, long-term-unemployment-share] | |
| 56 | +- id: income | |
| 57 | + name: Income & inequality | |
| 58 | + short: Income | |
| 59 | + order: 5 | |
| 60 | + blurb: Living standards, poverty and distribution. | |
| 61 | + indicators: [gni-per-capita, gni-per-capita-ppp, gini-index, income-share-top-10, income-share-bottom-20, poverty-headcount-215, | |
| 62 | + poverty-headcount-national, median-household-income, at-risk-of-poverty-rate, palma-ratio, household-consumption-per-capita] | |
| 63 | +- id: housing | |
| 64 | + name: Housing | |
| 65 | + short: Housing | |
| 66 | + order: 6 | |
| 67 | + blurb: Prices, rents, affordability, mortgages and construction. | |
| 68 | + indicators: [real-house-price-index, nominal-house-price-index, house-price-growth, rent-price-index, price-to-income-ratio, price-to-rent-ratio, | |
| 69 | + mortgage-rate, housing-starts, building-permits, homeownership-rate, housing-cost-overburden-rate, house-price-to-income-growth] | |
| 70 | +- id: health | |
| 71 | + name: Health | |
| 72 | + short: Health | |
| 73 | + order: 7 | |
| 74 | + blurb: Longevity, mortality, health system capacity and risk factors. | |
| 75 | + indicators: [life-expectancy, healthy-life-expectancy, infant-mortality-rate, under-5-mortality-rate, maternal-mortality-ratio, | |
| 76 | + health-expenditure-pct-gdp, health-expenditure-per-capita, out-of-pocket-health-expenditure-share, physicians-per-1000, nurses-per-1000, | |
| 77 | + hospital-beds-per-1000, ncd-mortality-30-70, suicide-rate, smoking-prevalence, obesity-prevalence, alcohol-consumption, | |
| 78 | + measles-immunization, dtp3-immunization, hiv-prevalence, tuberculosis-incidence, safely-managed-water, safely-managed-sanitation, | |
| 79 | + road-traffic-deaths] | |
| 80 | +- id: education | |
| 81 | + name: Education | |
| 82 | + short: Education | |
| 83 | + order: 8 | |
| 84 | + blurb: Literacy, enrolment, attainment and spending. | |
| 85 | + indicators: [literacy-rate-adult, literacy-rate-youth, primary-enrollment, secondary-enrollment, tertiary-enrollment, primary-completion-rate, | |
| 86 | + tertiary-attainment-25-64, tertiary-attainment-25-34, upper-secondary-attainment, education-expenditure-pct-gdp, | |
| 87 | + education-expenditure-pct-government, expected-years-of-schooling, mean-years-of-schooling, pupil-teacher-ratio-primary, | |
| 88 | + out-of-school-children, learning-poverty] | |
| 89 | +- id: trade | |
| 90 | + name: Trade | |
| 91 | + short: Trade | |
| 92 | + order: 9 | |
| 93 | + blurb: Exports, imports, balances, openness and composition. | |
| 94 | + indicators: [exports-goods-services, imports-goods-services, trade-balance, exports-pct-gdp, imports-pct-gdp, trade-pct-gdp, | |
| 95 | + current-account-balance-pct-gdp, current-account-balance, merchandise-exports, merchandise-imports, high-tech-exports-share, | |
| 96 | + fuel-exports-share, food-exports-share, manufactures-exports-share, ores-metals-exports-share, services-exports-pct-gdp, | |
| 97 | + terms-of-trade-index, tariff-rate-applied-mean, fdi-inflows-pct-gdp, fdi-outflows-pct-gdp, logistics-performance-index] | |
| 98 | +- id: energy | |
| 99 | + name: Energy | |
| 100 | + short: Energy | |
| 101 | + order: 10 | |
| 102 | + blurb: Generation, consumption, mix, dependence and intensity. | |
| 103 | + indicators: [electricity-generation, electricity-consumption-per-capita, primary-energy-consumption, energy-use-per-capita, | |
| 104 | + renewable-electricity-share, fossil-electricity-share, low-carbon-electricity-share, hydro-electricity-share, | |
| 105 | + nuclear-electricity-share, solar-electricity-share, wind-electricity-share, coal-electricity-share, gas-electricity-share, | |
| 106 | + renewable-energy-consumption-share, energy-imports-share, energy-intensity, net-electricity-imports-share, access-to-electricity, | |
| 107 | + solar-generation, wind-generation, hydro-generation, nuclear-generation, carbon-intensity-electricity, oil-production, gas-production, coal-production] | |
| 108 | +- id: climate | |
| 109 | + name: Climate | |
| 110 | + short: Climate | |
| 111 | + order: 11 | |
| 112 | + blurb: Greenhouse gases, intensity and temperature contribution. | |
| 113 | + indicators: [co2-emissions, co2-per-capita, co2-per-gdp, consumption-co2-per-capita, cumulative-co2, share-global-co2, methane-emissions, | |
| 114 | + nitrous-oxide-emissions, total-ghg-emissions, ghg-per-capita, coal-co2, oil-co2, gas-co2, land-use-change-co2, | |
| 115 | + temperature-change-from-ghg, carbon-intensity-electricity] | |
| 116 | +- id: environment | |
| 117 | + name: Environment | |
| 118 | + short: Environment | |
| 119 | + order: 12 | |
| 120 | + blurb: Forests, air quality, land, water and protected areas. | |
| 121 | + indicators: [forest-area-share, forest-area, pm25-exposure, protected-areas-share, agricultural-land-share, arable-land-share, | |
| 122 | + freshwater-withdrawal-share, renewable-freshwater-per-capita, threatened-species, deforestation-rate, environmental-performance, | |
| 123 | + safely-managed-water, safely-managed-sanitation] | |
| 124 | +- id: infrastructure | |
| 125 | + name: Infrastructure & transportation | |
| 126 | + short: Infrastructure | |
| 127 | + order: 13 | |
| 128 | + blurb: Transport networks, passengers, freight and access. | |
| 129 | + indicators: [air-passengers, air-freight, rail-lines, rail-passengers, rail-freight, container-port-traffic, logistics-performance-index, | |
| 130 | + access-to-electricity, road-traffic-deaths, vehicles-per-1000, paved-roads-share, liner-shipping-connectivity] | |
| 131 | +- id: digital | |
| 132 | + name: Digital economy & Internet | |
| 133 | + short: Digital | |
| 134 | + order: 14 | |
| 135 | + blurb: Connectivity, adoption and digital infrastructure. | |
| 136 | + indicators: [internet-users, fixed-broadband-subscriptions, mobile-subscriptions, mobile-broadband-subscriptions, secure-internet-servers, | |
| 137 | + ict-goods-exports-share, ict-service-exports-share, households-with-internet, fixed-broadband-speed, mobile-broadband-speed] | |
| 138 | +- id: innovation | |
| 139 | + name: Innovation, research & technology | |
| 140 | + short: Innovation | |
| 141 | + order: 15 | |
| 142 | + blurb: R&D, patents, publications, researchers and high-tech. | |
| 143 | + indicators: [rd-expenditure-pct-gdp, researchers-per-million, patent-applications-residents, patent-applications-nonresidents, | |
| 144 | + scientific-articles, high-tech-exports-share, high-tech-exports, ict-service-exports-share, trademark-applications, | |
| 145 | + rd-expenditure, business-rd-share] | |
| 146 | +- id: agriculture | |
| 147 | + name: Agriculture & natural resources | |
| 148 | + short: Agriculture | |
| 149 | + order: 16 | |
| 150 | + blurb: Land, production, employment and resource rents. | |
| 151 | + indicators: [agriculture-value-added-pct-gdp, agricultural-land-share, arable-land-share, arable-land-per-capita, cereal-yield, | |
| 152 | + food-production-index, crop-production-index, livestock-production-index, employment-agriculture-share, fertilizer-consumption, | |
| 153 | + natural-resources-rents-pct-gdp, oil-rents-pct-gdp, mineral-rents-pct-gdp, forest-rents-pct-gdp, agricultural-exports-share, | |
| 154 | + oil-production, gas-production, coal-production, food-insecurity-prevalence, undernourishment-prevalence] | |
| 155 | +- id: tourism | |
| 156 | + name: Tourism | |
| 157 | + short: Tourism | |
| 158 | + order: 17 | |
| 159 | + blurb: Arrivals, departures and tourism receipts. | |
| 160 | + indicators: [tourist-arrivals, tourist-departures, tourism-receipts, tourism-receipts-pct-exports, tourism-expenditures, tourism-receipts-per-arrival] | |
| 161 | +- id: security | |
| 162 | + name: Security & governance | |
| 163 | + short: Security | |
| 164 | + order: 18 | |
| 165 | + blurb: Homicide, military spending, refugees, displacement and institutions. | |
| 166 | + indicators: [homicide-rate, military-expenditure-pct-gdp, military-expenditure, armed-forces-personnel, armed-forces-personnel-share, | |
| 167 | + refugee-population, refugees-by-origin, internally-displaced-persons, battle-related-deaths, political-stability, | |
| 168 | + rule-of-law, control-of-corruption, voice-and-accountability, government-effectiveness, regulatory-quality] | |
| 169 | +- id: quality-of-life | |
| 170 | + name: Quality of life | |
| 171 | + short: Quality of life | |
| 172 | + order: 19 | |
| 173 | + blurb: Human development, happiness, safety, access and environment. | |
| 174 | + indicators: [human-development-index, life-satisfaction, life-expectancy, healthy-life-expectancy, gini-index, pm25-exposure, | |
| 175 | + homicide-rate, safely-managed-water, access-to-electricity, internet-users, expected-years-of-schooling, unemployment-rate, | |
| 176 | + housing-cost-overburden-rate, gender-inequality-index, women-in-parliament-share] | |
added
scripts/build_country_registry.py
+191 −0
@@ -0,0 +1,191 @@ | ||
| 1 | +#!/usr/bin/env python3 | |
| 2 | +"""Build registry/countries.yaml from the World Bank country list + mledoze/countries. | |
| 3 | + | |
| 4 | +World Bank : region, income group, capital, lat/long, WB aggregates (excluded here, listed in groups.yaml). | |
| 5 | +mledoze : ISO numeric, official name, subregion, currency, area, UN membership, flag, borders, languages, demonym. | |
| 6 | + | |
| 7 | +Hand overrides survive regeneration: edit registry/countries.overrides.yaml (keyed by iso3). | |
| 8 | +Usage: python3 scripts/build_country_registry.py [--offline] (offline = reuse cached /tmp files) | |
| 9 | +""" | |
| 10 | +from __future__ import annotations | |
| 11 | + | |
| 12 | +import json | |
| 13 | +import re | |
| 14 | +import sys | |
| 15 | +import unicodedata | |
| 16 | +import urllib.request | |
| 17 | +from pathlib import Path | |
| 18 | + | |
| 19 | +import yaml | |
| 20 | + | |
| 21 | +ROOT = Path(__file__).resolve().parents[1] | |
| 22 | +OUT = ROOT / "registry" / "countries.yaml" | |
| 23 | +OVERRIDES = ROOT / "registry" / "countries.overrides.yaml" | |
| 24 | +CACHE = Path("/tmp/countryatlas-registry") | |
| 25 | +CACHE.mkdir(parents=True, exist_ok=True) | |
| 26 | + | |
| 27 | +WB_URL = "https://api.worldbank.org/v2/country?format=json&per_page=400" | |
| 28 | +MLEDOZE_URL = "https://raw.githubusercontent.com/mledoze/countries/master/countries.json" | |
| 29 | + | |
| 30 | +CONTINENT_BY_REGION = { | |
| 31 | + "Africa": "Africa", | |
| 32 | + "Americas": "Americas", | |
| 33 | + "Asia": "Asia", | |
| 34 | + "Europe": "Europe", | |
| 35 | + "Oceania": "Oceania", | |
| 36 | + "Antarctic": "Antarctica", | |
| 37 | +} | |
| 38 | + | |
| 39 | +# Short display names preferred over the WB/mledoze defaults | |
| 40 | +SHORT_NAME_OVERRIDES = { | |
| 41 | + "USA": "United States", | |
| 42 | + "GBR": "United Kingdom", | |
| 43 | + "RUS": "Russia", | |
| 44 | + "KOR": "South Korea", | |
| 45 | + "PRK": "North Korea", | |
| 46 | + "IRN": "Iran", | |
| 47 | + "SYR": "Syria", | |
| 48 | + "VEN": "Venezuela", | |
| 49 | + "BOL": "Bolivia", | |
| 50 | + "TZA": "Tanzania", | |
| 51 | + "LAO": "Laos", | |
| 52 | + "VNM": "Vietnam", | |
| 53 | + "EGY": "Egypt", | |
| 54 | + "YEM": "Yemen", | |
| 55 | + "GMB": "Gambia", | |
| 56 | + "BHS": "Bahamas", | |
| 57 | + "COD": "DR Congo", | |
| 58 | + "COG": "Republic of the Congo", | |
| 59 | + "CIV": "Côte d'Ivoire", | |
| 60 | + "CZE": "Czechia", | |
| 61 | + "SVK": "Slovakia", | |
| 62 | + "MKD": "North Macedonia", | |
| 63 | + "MDA": "Moldova", | |
| 64 | + "KGZ": "Kyrgyzstan", | |
| 65 | + "BRN": "Brunei", | |
| 66 | + "FSM": "Micronesia", | |
| 67 | + "STP": "São Tomé and Príncipe", | |
| 68 | + "TUR": "Türkiye", | |
| 69 | + "HKG": "Hong Kong", | |
| 70 | + "MAC": "Macao", | |
| 71 | + "PSE": "Palestine", | |
| 72 | + "TWN": "Taiwan", | |
| 73 | + "CPV": "Cabo Verde", | |
| 74 | + "SWZ": "Eswatini", | |
| 75 | + "TLS": "Timor-Leste", | |
| 76 | + "VIR": "U.S. Virgin Islands", | |
| 77 | + "VGB": "British Virgin Islands", | |
| 78 | + "SXM": "Sint Maarten", | |
| 79 | + "MAF": "Saint Martin", | |
| 80 | + "CUW": "Curaçao", | |
| 81 | + "XKX": "Kosovo", | |
| 82 | +} | |
| 83 | + | |
| 84 | + | |
| 85 | +def fetch(url: str, name: str, offline: bool) -> bytes: | |
| 86 | + p = CACHE / name | |
| 87 | + if offline and p.exists(): | |
| 88 | + return p.read_bytes() | |
| 89 | + req = urllib.request.Request(url, headers={"User-Agent": "CountryAtlas registry builder (contact@countryatlas.co)"}) | |
| 90 | + with urllib.request.urlopen(req, timeout=60) as r: | |
| 91 | + data = r.read() | |
| 92 | + p.write_bytes(data) | |
| 93 | + return data | |
| 94 | + | |
| 95 | + | |
| 96 | +def slugify(name: str) -> str: | |
| 97 | + s = unicodedata.normalize("NFKD", name).encode("ascii", "ignore").decode() | |
| 98 | + s = s.lower().replace("&", "and").replace("'", "") | |
| 99 | + s = re.sub(r"[^a-z0-9]+", "-", s).strip("-") | |
| 100 | + return s | |
| 101 | + | |
| 102 | + | |
| 103 | +def main() -> None: | |
| 104 | + offline = "--offline" in sys.argv | |
| 105 | + wb = json.loads(fetch(WB_URL, "wb-countries.json", offline))[1] | |
| 106 | + ml = json.loads(fetch(MLEDOZE_URL, "mledoze.json", offline)) | |
| 107 | + ml_by3 = {c["cca3"]: c for c in ml} | |
| 108 | + overrides = yaml.safe_load(OVERRIDES.read_text()) if OVERRIDES.exists() else {} | |
| 109 | + overrides = overrides or {} | |
| 110 | + | |
| 111 | + countries: list[dict] = [] | |
| 112 | + seen = set() | |
| 113 | + for c in wb: | |
| 114 | + if c["region"]["id"] == "NA" or not c["region"]["id"]: | |
| 115 | + continue # aggregate | |
| 116 | + iso3 = c["id"] | |
| 117 | + m = ml_by3.get(iso3) | |
| 118 | + if iso3 == "XKX": # Kosovo: mledoze uses UNK | |
| 119 | + m = ml_by3.get("UNK") | |
| 120 | + if iso3 == "CHI": # Channel Islands (WB pseudo-country) — keep as territory using Jersey/Guernsey info | |
| 121 | + m = None | |
| 122 | + name = SHORT_NAME_OVERRIDES.get(iso3) or (m["name"]["common"] if m else c["name"]) | |
| 123 | + cur_code, cur_name = None, None | |
| 124 | + if m and m.get("currencies"): | |
| 125 | + cur_code = sorted(m["currencies"].keys())[0] | |
| 126 | + cur_name = m["currencies"][cur_code].get("name") | |
| 127 | + region_ml = m["region"] if m else None | |
| 128 | + entry = { | |
| 129 | + "id": iso3, | |
| 130 | + "iso2": c["iso2Code"], | |
| 131 | + "iso3": iso3, | |
| 132 | + "iso_numeric": (m or {}).get("ccn3") or None, | |
| 133 | + "slug": slugify(name), | |
| 134 | + "short_name": name, | |
| 135 | + "official_name": (m["name"]["official"] if m else c["name"]), | |
| 136 | + "capital": (m["capital"][0] if m and m.get("capital") else c.get("capitalCity") or None), | |
| 137 | + "continent": CONTINENT_BY_REGION.get(region_ml or "", None), | |
| 138 | + "region_wb": c["region"]["id"], | |
| 139 | + "region_wb_name": c["region"]["value"].strip(), | |
| 140 | + "subregion": (m or {}).get("subregion") or None, | |
| 141 | + "income_group": c["incomeLevel"]["id"] if c["incomeLevel"]["id"] not in ("", "INX") else None, | |
| 142 | + "income_group_name": c["incomeLevel"]["value"] if c["incomeLevel"]["id"] not in ("", "INX") else None, | |
| 143 | + "currency_code": cur_code, | |
| 144 | + "currency_name": cur_name, | |
| 145 | + "area_km2": (m or {}).get("area"), | |
| 146 | + "latitude": float(c["latitude"]) if c.get("latitude") else ((m or {}).get("latlng") or [None, None])[0], | |
| 147 | + "longitude": float(c["longitude"]) if c.get("longitude") else ((m or {}).get("latlng") or [None, None])[1], | |
| 148 | + "flag_emoji": (m or {}).get("flag") or "".join(chr(0x1F1E6 + ord(ch) - 65) for ch in c["iso2Code"] if ch.isalpha()), | |
| 149 | + "un_member": bool((m or {}).get("unMember", False)), | |
| 150 | + "independent": bool((m or {}).get("independent", False)), | |
| 151 | + "landlocked": bool((m or {}).get("landlocked", False)), | |
| 152 | + "borders": (m or {}).get("borders") or [], | |
| 153 | + "languages": sorted(((m or {}).get("languages") or {}).values()), | |
| 154 | + "demonym": (((m or {}).get("demonyms") or {}).get("eng") or {}).get("m") or None, | |
| 155 | + "status": "country" if (m and m.get("independent")) else "territory", | |
| 156 | + "kind": "country", | |
| 157 | + } | |
| 158 | + # WB lists some territories with income levels; status from independence | |
| 159 | + entry.update(overrides.get(iso3, {})) | |
| 160 | + if entry["slug"] in seen: | |
| 161 | + raise SystemExit(f"duplicate slug {entry['slug']} ({iso3})") | |
| 162 | + seen.add(entry["slug"]) | |
| 163 | + countries.append(entry) | |
| 164 | + | |
| 165 | + # Taiwan is not in the WB list — add from mledoze so the registry is complete (data will be sparse). | |
| 166 | + if "TWN" not in {c["id"] for c in countries} and "TWN" in ml_by3: | |
| 167 | + m = ml_by3["TWN"] | |
| 168 | + countries.append({ | |
| 169 | + "id": "TWN", "iso2": "TW", "iso3": "TWN", "iso_numeric": m.get("ccn3"), "slug": "taiwan", | |
| 170 | + "short_name": "Taiwan", "official_name": m["name"]["official"], "capital": m["capital"][0], | |
| 171 | + "continent": "Asia", "region_wb": "EAS", "region_wb_name": "East Asia & Pacific", "subregion": m.get("subregion"), | |
| 172 | + "income_group": "HIC", "income_group_name": "High income", "currency_code": "TWD", "currency_name": "New Taiwan dollar", | |
| 173 | + "area_km2": m.get("area"), "latitude": m["latlng"][0], "longitude": m["latlng"][1], "flag_emoji": m.get("flag"), | |
| 174 | + "un_member": False, "independent": False, "landlocked": False, "borders": [], "languages": sorted(m["languages"].values()), | |
| 175 | + "demonym": "Taiwanese", "status": "territory", "kind": "country", | |
| 176 | + **overrides.get("TWN", {}), | |
| 177 | + }) | |
| 178 | + | |
| 179 | + countries.sort(key=lambda x: x["short_name"]) | |
| 180 | + header = ( | |
| 181 | + "# Canonical CountryAtlas country registry — GENERATED by scripts/build_country_registry.py\n" | |
| 182 | + "# Sources: World Bank country API (region, income, capital, coordinates) + mledoze/countries (ISO numeric, official name,\n" | |
| 183 | + "# subregion, currency, area, UN membership, flag, borders, languages). Edit registry/countries.overrides.yaml, not this file.\n" | |
| 184 | + ) | |
| 185 | + OUT.write_text(header + yaml.safe_dump({"countries": countries}, allow_unicode=True, sort_keys=False, width=120)) | |
| 186 | + n_country = sum(1 for c in countries if c["status"] == "country") | |
| 187 | + print(f"wrote {OUT} — {len(countries)} entries ({n_country} independent countries, {len(countries)-n_country} territories)") | |
| 188 | + | |
| 189 | + | |
| 190 | +if __name__ == "__main__": | |
| 191 | + main() | |
added
src/countryatlas/__init__.py
+0 −0
added
src/countryatlas/api/__init__.py
+0 −0
added
src/countryatlas/config.py
+59 −0
@@ -0,0 +1,59 @@ | ||
| 1 | +"""Runtime settings (environment-driven). Data lives OUTSIDE the repo by default (~/countryatlas-data).""" | |
| 2 | +from __future__ import annotations | |
| 3 | + | |
| 4 | +import os | |
| 5 | +from pathlib import Path | |
| 6 | + | |
| 7 | +from pydantic import BaseModel | |
| 8 | + | |
| 9 | +ROOT = Path(__file__).resolve().parents[2] # repo root | |
| 10 | + | |
| 11 | + | |
| 12 | +class Settings(BaseModel): | |
| 13 | + data_dir: Path = Path(os.environ.get("CA_DATA_DIR", str(Path.home() / "countryatlas-data"))).expanduser() | |
| 14 | + registry_dir: Path = Path(os.environ.get("CA_REGISTRY_DIR", str(ROOT / "registry"))) | |
| 15 | + api_host: str = os.environ.get("CA_API_HOST", "127.0.0.1") | |
| 16 | + api_port: int = int(os.environ.get("CA_API_PORT", "8291")) | |
| 17 | + admin_token: str | None = os.environ.get("CA_ADMIN_TOKEN") | |
| 18 | + fred_api_key: str | None = os.environ.get("FRED_API_KEY") | |
| 19 | + site_url: str = os.environ.get("CA_SITE_URL", "https://www.countryatlas.co") | |
| 20 | + timezone: str = os.environ.get("CA_TZ", "America/Toronto") | |
| 21 | + refresh_hour: int = int(os.environ.get("CA_REFRESH_HOUR", "3")) | |
| 22 | + refresh_minute: int = int(os.environ.get("CA_REFRESH_MINUTE", "15")) | |
| 23 | + keep_snapshots: int = int(os.environ.get("CA_KEEP_SNAPSHOTS", "7")) | |
| 24 | + http_concurrency: int = int(os.environ.get("CA_HTTP_CONCURRENCY", "6")) | |
| 25 | + | |
| 26 | + @property | |
| 27 | + def raw_dir(self) -> Path: | |
| 28 | + return self.data_dir / "raw" | |
| 29 | + | |
| 30 | + @property | |
| 31 | + def staging_dir(self) -> Path: | |
| 32 | + return self.data_dir / "staging" | |
| 33 | + | |
| 34 | + @property | |
| 35 | + def build_dir(self) -> Path: | |
| 36 | + return self.data_dir / "build" | |
| 37 | + | |
| 38 | + @property | |
| 39 | + def snapshots_dir(self) -> Path: | |
| 40 | + return self.data_dir / "snapshots" | |
| 41 | + | |
| 42 | + @property | |
| 43 | + def exports_dir(self) -> Path: | |
| 44 | + return self.data_dir / "exports" | |
| 45 | + | |
| 46 | + @property | |
| 47 | + def logs_dir(self) -> Path: | |
| 48 | + return self.data_dir / "logs" | |
| 49 | + | |
| 50 | + @property | |
| 51 | + def db_path(self) -> Path: | |
| 52 | + return self.data_dir / "atlas.duckdb" | |
| 53 | + | |
| 54 | + def ensure_dirs(self) -> None: | |
| 55 | + for d in (self.raw_dir, self.staging_dir, self.build_dir, self.snapshots_dir, self.exports_dir, self.logs_dir): | |
| 56 | + d.mkdir(parents=True, exist_ok=True) | |
| 57 | + | |
| 58 | + | |
| 59 | +settings = Settings() | |
added
src/countryatlas/connectors/__init__.py
+0 −0
added
src/countryatlas/connectors/base.py
+203 −0
@@ -0,0 +1,203 @@ | ||
| 1 | +"""Connector base class: HTTP with retries/backoff/rate limiting, raw storage, and the normalize contract. | |
| 2 | + | |
| 3 | +Every connector lives in `countryatlas/connectors/<id>.py`, subclasses `Connector`, sets `id`, and is registered in | |
| 4 | +`countryatlas/connectors/__init__.py::CONNECTORS`. See docs/ARCHITECTURE.md §5. | |
| 5 | +""" | |
| 6 | +from __future__ import annotations | |
| 7 | + | |
| 8 | +import gzip | |
| 9 | +import hashlib | |
| 10 | +import json | |
| 11 | +import threading | |
| 12 | +import time | |
| 13 | +from abc import ABC, abstractmethod | |
| 14 | +from datetime import datetime, timezone | |
| 15 | +from pathlib import Path | |
| 16 | +from typing import Any, ClassVar | |
| 17 | + | |
| 18 | +import httpx | |
| 19 | +from tenacity import retry, retry_if_exception_type, stop_after_attempt, wait_exponential_jitter | |
| 20 | + | |
| 21 | +from countryatlas.config import settings | |
| 22 | +from countryatlas.models import ( | |
| 23 | + DatasetDescriptor, | |
| 24 | + IndicatorSourceSpec, | |
| 25 | + NormalizedObservation, | |
| 26 | + RawPayload, | |
| 27 | + ValidationIssue, | |
| 28 | + ValidationReport, | |
| 29 | +) | |
| 30 | + | |
| 31 | +USER_AGENT = "CountryAtlas/0.1 (+https://www.countryatlas.co; data@countryatlas.co)" | |
| 32 | + | |
| 33 | + | |
| 34 | +class RateLimiter: | |
| 35 | + """Simple token bucket: `rate` requests per `per` seconds, shared per connector.""" | |
| 36 | + | |
| 37 | + def __init__(self, rate: int, per: float = 60.0) -> None: | |
| 38 | + self.rate, self.per = rate, per | |
| 39 | + self._tokens = float(rate) | |
| 40 | + self._last = time.monotonic() | |
| 41 | + self._lock = threading.Lock() | |
| 42 | + | |
| 43 | + def acquire(self) -> None: | |
| 44 | + with self._lock: | |
| 45 | + now = time.monotonic() | |
| 46 | + self._tokens = min(self.rate, self._tokens + (now - self._last) * self.rate / self.per) | |
| 47 | + self._last = now | |
| 48 | + if self._tokens < 1: | |
| 49 | + sleep = (1 - self._tokens) * self.per / self.rate | |
| 50 | + time.sleep(sleep) | |
| 51 | + self._tokens = 0 | |
| 52 | + else: | |
| 53 | + self._tokens -= 1 | |
| 54 | + | |
| 55 | + | |
| 56 | +class TransientHTTPError(Exception): | |
| 57 | + pass | |
| 58 | + | |
| 59 | + | |
| 60 | +class Connector(ABC): | |
| 61 | + id: ClassVar[str] = "" | |
| 62 | + name: ClassVar[str] = "" | |
| 63 | + organization: ClassVar[str] = "" | |
| 64 | + url: ClassVar[str] = "" | |
| 65 | + licence: ClassVar[str] = "" | |
| 66 | + attribution: ClassVar[str] = "" | |
| 67 | + api_base: ClassVar[str] = "" | |
| 68 | + rate_per_minute: ClassVar[int] = 60 | |
| 69 | + timeout: ClassVar[float] = 60.0 | |
| 70 | + # country code system used by the source: iso3 | iso2 | wb (iso3 + WB pseudo codes) | eurostat (iso2 with EL/UK quirks) | |
| 71 | + country_codes: ClassVar[str] = "iso3" | |
| 72 | + | |
| 73 | + def __init__(self) -> None: | |
| 74 | + self._limiter = RateLimiter(self.rate_per_minute) | |
| 75 | + self._client = httpx.Client( | |
| 76 | + timeout=self.timeout, | |
| 77 | + headers={"User-Agent": USER_AGENT, "Accept": "application/json, text/csv;q=0.9, */*;q=0.8"}, | |
| 78 | + follow_redirects=True, | |
| 79 | + ) | |
| 80 | + | |
| 81 | + # ---------------------------------------------------------------- HTTP | |
| 82 | + @retry( | |
| 83 | + reraise=True, | |
| 84 | + stop=stop_after_attempt(5), | |
| 85 | + wait=wait_exponential_jitter(initial=2, max=60), | |
| 86 | + retry=retry_if_exception_type((TransientHTTPError, httpx.TransportError)), | |
| 87 | + ) | |
| 88 | + def get(self, url: str, params: dict[str, Any] | None = None, headers: dict[str, str] | None = None) -> httpx.Response: | |
| 89 | + self._limiter.acquire() | |
| 90 | + r = self._client.get(url, params=params, headers=headers) | |
| 91 | + if r.status_code in (429, 500, 502, 503, 504): | |
| 92 | + retry_after = r.headers.get("Retry-After") | |
| 93 | + if retry_after and retry_after.isdigit(): | |
| 94 | + time.sleep(min(int(retry_after), 120)) | |
| 95 | + raise TransientHTTPError(f"{r.status_code} {url}") | |
| 96 | + r.raise_for_status() | |
| 97 | + return r | |
| 98 | + | |
| 99 | + def payload(self, r: httpx.Response, dataset: str, code: str, pages: int = 1, **meta: Any) -> RawPayload: | |
| 100 | + lm = r.headers.get("Last-Modified") | |
| 101 | + src_upd = None | |
| 102 | + if lm: | |
| 103 | + try: | |
| 104 | + from email.utils import parsedate_to_datetime | |
| 105 | + | |
| 106 | + src_upd = parsedate_to_datetime(lm) | |
| 107 | + except Exception: # noqa: BLE001 | |
| 108 | + src_upd = None | |
| 109 | + return RawPayload( | |
| 110 | + connector=self.id, | |
| 111 | + dataset=dataset, | |
| 112 | + code=code, | |
| 113 | + url=str(r.url), | |
| 114 | + retrieved_at=datetime.now(timezone.utc), | |
| 115 | + status_code=r.status_code, | |
| 116 | + content_type=r.headers.get("Content-Type"), | |
| 117 | + body=r.content, | |
| 118 | + source_updated_at=src_upd, | |
| 119 | + pages=pages, | |
| 120 | + meta=meta, | |
| 121 | + ) | |
| 122 | + | |
| 123 | + # ------------------------------------------------------------- raw store | |
| 124 | + def store_raw(self, raw: RawPayload) -> Path: | |
| 125 | + """Persist the payload gzip'd under raw/<connector>/<dataset>/<date>/<code>-<hash>.{json|csv}.gz + sidecar .meta.json.""" | |
| 126 | + day = raw.retrieved_at.strftime("%Y-%m-%d") | |
| 127 | + safe = "".join(ch if ch.isalnum() or ch in "-_." else "_" for ch in raw.code) or "payload" | |
| 128 | + ext = "csv" if raw.content_type and "csv" in raw.content_type else "json" | |
| 129 | + h = hashlib.sha1(raw.body).hexdigest()[:10] | |
| 130 | + d = settings.raw_dir / self.id / raw.dataset / day | |
| 131 | + d.mkdir(parents=True, exist_ok=True) | |
| 132 | + p = d / f"{safe}-{h}.{ext}.gz" | |
| 133 | + if not p.exists(): | |
| 134 | + with gzip.open(p, "wb") as f: | |
| 135 | + f.write(raw.body) | |
| 136 | + p.with_suffix(".meta.json").write_text( | |
| 137 | + json.dumps( | |
| 138 | + { | |
| 139 | + "url": raw.url, | |
| 140 | + "retrieved_at": raw.retrieved_at.isoformat(), | |
| 141 | + "status_code": raw.status_code, | |
| 142 | + "content_type": raw.content_type, | |
| 143 | + "source_updated_at": raw.source_updated_at.isoformat() if raw.source_updated_at else None, | |
| 144 | + "pages": raw.pages, | |
| 145 | + "bytes": len(raw.body), | |
| 146 | + "sha1": h, | |
| 147 | + "meta": raw.meta, | |
| 148 | + }, | |
| 149 | + default=str, | |
| 150 | + ) | |
| 151 | + ) | |
| 152 | + return p | |
| 153 | + | |
| 154 | + # -------------------------------------------------------------- contract | |
| 155 | + def discover(self) -> list[DatasetDescriptor]: | |
| 156 | + return [DatasetDescriptor(connector=self.id, dataset="default", name=self.name, url=self.url, licence=self.licence)] | |
| 157 | + | |
| 158 | + @abstractmethod | |
| 159 | + def fetch(self, spec: IndicatorSourceSpec) -> RawPayload | list[RawPayload]: | |
| 160 | + """Download everything needed for one indicator-source spec (all countries, all years). Store nothing here; | |
| 161 | + the pipeline calls store_raw(). May return several payloads (pagination handled inside → concatenated).""" | |
| 162 | + | |
| 163 | + @abstractmethod | |
| 164 | + def normalize(self, raw: RawPayload | list[RawPayload], spec: IndicatorSourceSpec) -> list[NormalizedObservation]: | |
| 165 | + """Parse raw payload(s) into canonical rows. Must map country codes to registry ISO3 (use | |
| 166 | + countryatlas.registry.lookup helpers), drop aggregates, apply `spec.transform`, set is_forecast/is_estimate.""" | |
| 167 | + | |
| 168 | + def validate(self, rows: list[NormalizedObservation]) -> ValidationReport: | |
| 169 | + """Source-specific validation. Default: duplicate-key check only (generic rules run in the pipeline).""" | |
| 170 | + seen: set[tuple[str, str, str, str]] = set() | |
| 171 | + issues: list[ValidationIssue] = [] | |
| 172 | + for r in rows: | |
| 173 | + k = (r.country_id, r.indicator_id, r.period.isoformat(), r.frequency) | |
| 174 | + if k in seen: | |
| 175 | + issues.append( | |
| 176 | + ValidationIssue( | |
| 177 | + severity="error", | |
| 178 | + code="duplicate", | |
| 179 | + message=f"duplicate key {k}", | |
| 180 | + indicator_id=r.indicator_id, | |
| 181 | + country_id=r.country_id, | |
| 182 | + period=r.period, | |
| 183 | + ) | |
| 184 | + ) | |
| 185 | + seen.add(k) | |
| 186 | + return ValidationReport( | |
| 187 | + connector=self.id, | |
| 188 | + dataset=rows[0].source_dataset if rows else "", | |
| 189 | + rows_in=len(rows), | |
| 190 | + rows_out=len(rows) - len(issues), | |
| 191 | + issues=issues, | |
| 192 | + quarantine_dataset=bool(issues), | |
| 193 | + ) | |
| 194 | + | |
| 195 | + # ---------------------------------------------------------------- utils | |
| 196 | + @staticmethod | |
| 197 | + def apply_transform(value: float, transform: str | None) -> float: | |
| 198 | + if not transform: | |
| 199 | + return value | |
| 200 | + return float(eval(transform, {"__builtins__": {}}, {"x": value})) # noqa: S307 — registry-controlled expressions | |
| 201 | + | |
| 202 | + def close(self) -> None: | |
| 203 | + self._client.close() | |
added
src/countryatlas/models.py
+121 −0
@@ -0,0 +1,121 @@ | ||
| 1 | +"""Shared data models for the CountryAtlas data platform (pipeline, connectors, API). | |
| 2 | + | |
| 3 | +These are the *only* types connectors may emit. Keep them stable; see docs/ARCHITECTURE.md §2.1 / §5. | |
| 4 | +""" | |
| 5 | +from __future__ import annotations | |
| 6 | + | |
| 7 | +from datetime import date, datetime | |
| 8 | +from typing import Any, Literal | |
| 9 | + | |
| 10 | +from pydantic import BaseModel, Field | |
| 11 | + | |
| 12 | +Frequency = Literal["A", "Q", "M"] | |
| 13 | +Status = Literal["verified", "imported", "warning", "stale", "quarantined"] | |
| 14 | +Severity = Literal["info", "warning", "error"] | |
| 15 | + | |
| 16 | + | |
| 17 | +class IndicatorSourceSpec(BaseModel): | |
| 18 | + """One external series mapped onto a canonical indicator (an entry of `indicators[].sources` in the registry).""" | |
| 19 | + | |
| 20 | + indicator_id: str # canonical slug | |
| 21 | + connector: str # worldbank | imf | oecd | eurostat | who | fred | owid | bis | ilo | |
| 22 | + dataset: str = "" # WDI, WEO, GHO, energy, co2, grapher, <oecd dataflow>, <eurostat dataset>, WS_SPP … | |
| 23 | + code: str = "" # series / indicator / column code inside the dataset | |
| 24 | + params: dict[str, Any] = Field(default_factory=dict) # extra filters (WHO Dim1, Eurostat dimensions, …) | |
| 25 | + priority: int = 1 # 1 = preferred | |
| 26 | + transform: str | None = None # python expression on `x`, e.g. "x*1e9" (applied at normalize time) | |
| 27 | + countries: list[str] | None = None # restrict this source to these ISO3 (e.g. FRED → ["USA"]) | |
| 28 | + frequency: Frequency | None = None # override the indicator frequency for this source | |
| 29 | + notes: str | None = None | |
| 30 | + | |
| 31 | + @property | |
| 32 | + def key(self) -> str: | |
| 33 | + return f"{self.connector}:{self.dataset}:{self.code}:{self.indicator_id}" | |
| 34 | + | |
| 35 | + | |
| 36 | +class DatasetDescriptor(BaseModel): | |
| 37 | + connector: str | |
| 38 | + dataset: str | |
| 39 | + name: str | |
| 40 | + url: str | None = None | |
| 41 | + licence: str | None = None | |
| 42 | + notes: str | None = None | |
| 43 | + | |
| 44 | + | |
| 45 | +class RawPayload(BaseModel): | |
| 46 | + """What `fetch` returns and what is stored under raw/. `body` is bytes (JSON/CSV as served).""" | |
| 47 | + | |
| 48 | + connector: str | |
| 49 | + dataset: str | |
| 50 | + code: str | |
| 51 | + url: str | |
| 52 | + retrieved_at: datetime | |
| 53 | + status_code: int | |
| 54 | + content_type: str | None = None | |
| 55 | + body: bytes | |
| 56 | + source_updated_at: datetime | None = None # from headers or payload metadata when available | |
| 57 | + pages: int = 1 | |
| 58 | + meta: dict[str, Any] = Field(default_factory=dict) | |
| 59 | + | |
| 60 | + | |
| 61 | +class NormalizedObservation(BaseModel): | |
| 62 | + """The canonical row. One per (country, indicator, period, frequency) per source.""" | |
| 63 | + | |
| 64 | + country_id: str # ISO3 from the registry (aggregates are dropped or mapped to a group code elsewhere) | |
| 65 | + indicator_id: str | |
| 66 | + period: date # first day of the period | |
| 67 | + year: int | |
| 68 | + frequency: Frequency | |
| 69 | + value: float | |
| 70 | + unit: str | |
| 71 | + source_id: str | |
| 72 | + source_dataset: str | |
| 73 | + source_series_code: str | |
| 74 | + is_estimate: bool = False | |
| 75 | + is_forecast: bool = False | |
| 76 | + retrieved_at: datetime | |
| 77 | + source_updated_at: datetime | None = None | |
| 78 | + status: Status = "imported" | |
| 79 | + metadata: dict[str, Any] = Field(default_factory=dict) | |
| 80 | + | |
| 81 | + | |
| 82 | +class ValidationIssue(BaseModel): | |
| 83 | + severity: Severity | |
| 84 | + code: str # duplicate | out_of_bounds | unit_mismatch | extreme_jump | partial_download | unknown_country | stale | schema_change | |
| 85 | + message: str | |
| 86 | + indicator_id: str | None = None | |
| 87 | + country_id: str | None = None | |
| 88 | + period: date | None = None | |
| 89 | + | |
| 90 | + | |
| 91 | +class ValidationReport(BaseModel): | |
| 92 | + connector: str | |
| 93 | + dataset: str | |
| 94 | + rows_in: int | |
| 95 | + rows_out: int | |
| 96 | + issues: list[ValidationIssue] = Field(default_factory=list) | |
| 97 | + quarantine_dataset: bool = False # true → the staging file must be ignored and the previous one kept | |
| 98 | + | |
| 99 | + @property | |
| 100 | + def errors(self) -> int: | |
| 101 | + return sum(1 for i in self.issues if i.severity == "error") | |
| 102 | + | |
| 103 | + @property | |
| 104 | + def warnings(self) -> int: | |
| 105 | + return sum(1 for i in self.issues if i.severity == "warning") | |
| 106 | + | |
| 107 | + | |
| 108 | +class ImportRun(BaseModel): | |
| 109 | + run_id: str | |
| 110 | + connector: str | |
| 111 | + dataset: str | |
| 112 | + started_at: datetime | |
| 113 | + finished_at: datetime | None = None | |
| 114 | + status: Literal["running", "ok", "failed", "partial", "quarantined"] = "running" | |
| 115 | + rows_raw: int = 0 | |
| 116 | + rows_norm: int = 0 | |
| 117 | + rows_valid: int = 0 | |
| 118 | + warnings: int = 0 | |
| 119 | + errors: int = 0 | |
| 120 | + message: str | None = None | |
| 121 | + raw_path: str | None = None | |
added
src/countryatlas/pipeline/__init__.py
+0 −0
added
src/countryatlas/registry/__init__.py
+368 −0
@@ -0,0 +1,368 @@ | ||
| 1 | +"""Registry loaders (countries, groups, indicators, topics) + country-code lookup helpers. | |
| 2 | + | |
| 3 | +Loaded once per process (lru_cache). All connectors MUST map source country codes through `lookup`. | |
| 4 | +""" | |
| 5 | +from __future__ import annotations | |
| 6 | + | |
| 7 | +from dataclasses import dataclass, field | |
| 8 | +from functools import lru_cache | |
| 9 | +from typing import Any | |
| 10 | + | |
| 11 | +import yaml | |
| 12 | + | |
| 13 | +from countryatlas.config import settings | |
| 14 | +from countryatlas.models import IndicatorSourceSpec | |
| 15 | + | |
| 16 | +TOPICS = [ | |
| 17 | + "economy", "government", "population", "labor", "income", "housing", "health", "education", "trade", "energy", | |
| 18 | + "climate", "environment", "infrastructure", "digital", "innovation", "agriculture", "tourism", "security", "quality-of-life", | |
| 19 | +] | |
| 20 | +CONNECTORS = ["worldbank", "imf", "oecd", "eurostat", "who", "fred", "owid", "bis", "ilo"] | |
| 21 | + | |
| 22 | +INDICATOR_DEFAULTS: dict[str, Any] = { | |
| 23 | + "short_name": None, | |
| 24 | + "description": "", | |
| 25 | + "subtopic": "", | |
| 26 | + "unit_short": "", | |
| 27 | + "format": "number", | |
| 28 | + "frequency": "A", | |
| 29 | + "precision": 1, | |
| 30 | + "aggregation": "none", | |
| 31 | + "higher_is_better": None, | |
| 32 | + "ranking_eligible": True, | |
| 33 | + "featured": False, | |
| 34 | + "scale": "raw", | |
| 35 | + "bounds": [None, None], | |
| 36 | + "jump_threshold": 4.0, | |
| 37 | + "change_floor": None, | |
| 38 | + "stale_after_days": None, | |
| 39 | + "methodology": "", | |
| 40 | + "tags": [], | |
| 41 | + "per_capita_of": None, | |
| 42 | +} | |
| 43 | +STALE_DAYS_BY_FREQ = {"A": 800, "Q": 200, "M": 75} | |
| 44 | + | |
| 45 | + | |
| 46 | +def _read(name: str) -> Any: | |
| 47 | + return yaml.safe_load((settings.registry_dir / name).read_text()) | |
| 48 | + | |
| 49 | + | |
| 50 | +# ------------------------------------------------------------------------------------------------ countries | |
| 51 | +@dataclass | |
| 52 | +class Country: | |
| 53 | + id: str | |
| 54 | + iso2: str | |
| 55 | + iso3: str | |
| 56 | + slug: str | |
| 57 | + short_name: str | |
| 58 | + official_name: str | |
| 59 | + capital: str | None | |
| 60 | + continent: str | None | |
| 61 | + region_wb: str | |
| 62 | + region_wb_name: str | |
| 63 | + subregion: str | None | |
| 64 | + income_group: str | None | |
| 65 | + income_group_name: str | None | |
| 66 | + currency_code: str | None | |
| 67 | + currency_name: str | None | |
| 68 | + area_km2: float | None | |
| 69 | + latitude: float | None | |
| 70 | + longitude: float | None | |
| 71 | + flag_emoji: str | |
| 72 | + un_member: bool | |
| 73 | + independent: bool | |
| 74 | + landlocked: bool | |
| 75 | + borders: list[str] | |
| 76 | + languages: list[str] | |
| 77 | + demonym: str | None | |
| 78 | + status: str | |
| 79 | + kind: str = "country" | |
| 80 | + iso_numeric: str | None = None | |
| 81 | + | |
| 82 | + def as_row(self) -> dict[str, Any]: | |
| 83 | + return self.__dict__.copy() | |
| 84 | + | |
| 85 | + | |
| 86 | +@lru_cache(maxsize=1) | |
| 87 | +def countries() -> list[Country]: | |
| 88 | + raw = _read("countries.yaml")["countries"] | |
| 89 | + out = [] | |
| 90 | + for c in raw: | |
| 91 | + c = dict(c) | |
| 92 | + c["iso_numeric"] = str(c["iso_numeric"]).zfill(3) if c.get("iso_numeric") not in (None, "") else None | |
| 93 | + out.append(Country(**c)) | |
| 94 | + return out | |
| 95 | + | |
| 96 | + | |
| 97 | +@lru_cache(maxsize=1) | |
| 98 | +def countries_by_id() -> dict[str, Country]: | |
| 99 | + return {c.id: c for c in countries()} | |
| 100 | + | |
| 101 | + | |
| 102 | +@lru_cache(maxsize=1) | |
| 103 | +def countries_by_slug() -> dict[str, Country]: | |
| 104 | + return {c.slug: c for c in countries()} | |
| 105 | + | |
| 106 | + | |
| 107 | +# ------------------------------------------------------------------------------------------------ groups | |
| 108 | +@dataclass | |
| 109 | +class Group: | |
| 110 | + id: str | |
| 111 | + slug: str | |
| 112 | + name: str | |
| 113 | + kind: str | |
| 114 | + description: str | |
| 115 | + wb_code: str | None | |
| 116 | + members: list[str] = field(default_factory=list) | |
| 117 | + | |
| 118 | + | |
| 119 | +@lru_cache(maxsize=1) | |
| 120 | +def groups() -> list[Group]: | |
| 121 | + raw = _read("groups.yaml")["groups"] | |
| 122 | + cs = countries() | |
| 123 | + out = [] | |
| 124 | + for g in raw: | |
| 125 | + m = g.get("members", []) | |
| 126 | + if m == "ALL": | |
| 127 | + members = [c.id for c in cs] | |
| 128 | + elif isinstance(m, str) and m.startswith("WB_REGION:"): | |
| 129 | + members = [c.id for c in cs if c.region_wb == m.split(":", 1)[1]] | |
| 130 | + elif isinstance(m, str) and m.startswith("WB_INCOME:"): | |
| 131 | + members = [c.id for c in cs if c.income_group == m.split(":", 1)[1]] | |
| 132 | + elif isinstance(m, str) and m.startswith("CONTINENT:"): | |
| 133 | + members = [c.id for c in cs if c.continent == m.split(":", 1)[1]] | |
| 134 | + else: | |
| 135 | + known = countries_by_id() | |
| 136 | + members = [x for x in m if x in known] | |
| 137 | + out.append( | |
| 138 | + Group( | |
| 139 | + id=g["id"], | |
| 140 | + slug=g.get("slug", g["id"]), | |
| 141 | + name=g["name"], | |
| 142 | + kind=g.get("kind", "custom"), | |
| 143 | + description=g.get("description", ""), | |
| 144 | + wb_code=g.get("wb_code"), | |
| 145 | + members=members, | |
| 146 | + ) | |
| 147 | + ) | |
| 148 | + return out | |
| 149 | + | |
| 150 | + | |
| 151 | +@lru_cache(maxsize=1) | |
| 152 | +def groups_by_id() -> dict[str, Group]: | |
| 153 | + return {g.id: g for g in groups()} | |
| 154 | + | |
| 155 | + | |
| 156 | +# ------------------------------------------------------------------------------------------------ indicators | |
| 157 | +@dataclass | |
| 158 | +class Indicator: | |
| 159 | + slug: str | |
| 160 | + name: str | |
| 161 | + topic: str | |
| 162 | + unit: str | |
| 163 | + short_name: str | None | |
| 164 | + description: str | |
| 165 | + subtopic: str | |
| 166 | + unit_short: str | |
| 167 | + format: str | |
| 168 | + frequency: str | |
| 169 | + precision: int | |
| 170 | + aggregation: str | |
| 171 | + higher_is_better: bool | None | |
| 172 | + ranking_eligible: bool | |
| 173 | + featured: bool | |
| 174 | + scale: str | |
| 175 | + bounds: list[float | None] | |
| 176 | + jump_threshold: float | |
| 177 | + change_floor: float | None | |
| 178 | + stale_after_days: int | |
| 179 | + methodology: str | |
| 180 | + tags: list[str] | |
| 181 | + per_capita_of: str | None | |
| 182 | + sources: list[IndicatorSourceSpec] | |
| 183 | + | |
| 184 | + @property | |
| 185 | + def id(self) -> str: | |
| 186 | + return self.slug | |
| 187 | + | |
| 188 | + @property | |
| 189 | + def display_name(self) -> str: | |
| 190 | + return self.short_name or self.name | |
| 191 | + | |
| 192 | + | |
| 193 | +@lru_cache(maxsize=1) | |
| 194 | +def indicators() -> list[Indicator]: | |
| 195 | + raw = _read("indicators.yaml")["indicators"] | |
| 196 | + out: list[Indicator] = [] | |
| 197 | + seen: set[str] = set() | |
| 198 | + for i in raw: | |
| 199 | + if i["slug"] in seen: | |
| 200 | + raise ValueError(f"duplicate indicator slug {i['slug']}") | |
| 201 | + seen.add(i["slug"]) | |
| 202 | + if i["topic"] not in TOPICS: | |
| 203 | + raise ValueError(f"indicator {i['slug']}: unknown topic {i['topic']}") | |
| 204 | + d = {**INDICATOR_DEFAULTS, **i} | |
| 205 | + if d["stale_after_days"] is None: | |
| 206 | + d["stale_after_days"] = STALE_DAYS_BY_FREQ[d["frequency"]] | |
| 207 | + specs = [] | |
| 208 | + for s in d.pop("sources", []) or []: | |
| 209 | + if s["connector"] not in CONNECTORS: | |
| 210 | + raise ValueError(f"indicator {i['slug']}: unknown connector {s['connector']}") | |
| 211 | + specs.append(IndicatorSourceSpec(indicator_id=i["slug"], **{k: v for k, v in s.items()})) | |
| 212 | + specs.sort(key=lambda s: s.priority) | |
| 213 | + out.append(Indicator(**d, sources=specs)) | |
| 214 | + return out | |
| 215 | + | |
| 216 | + | |
| 217 | +@lru_cache(maxsize=1) | |
| 218 | +def indicators_by_id() -> dict[str, Indicator]: | |
| 219 | + return {i.slug: i for i in indicators()} | |
| 220 | + | |
| 221 | + | |
| 222 | +def source_specs(connector: str | None = None, indicator: str | None = None) -> list[IndicatorSourceSpec]: | |
| 223 | + out = [] | |
| 224 | + for ind in indicators(): | |
| 225 | + if indicator and ind.slug != indicator: | |
| 226 | + continue | |
| 227 | + for s in ind.sources: | |
| 228 | + if connector and s.connector != connector: | |
| 229 | + continue | |
| 230 | + out.append(s) | |
| 231 | + return out | |
| 232 | + | |
| 233 | + | |
| 234 | +# ------------------------------------------------------------------------------------------------ topics | |
| 235 | +@lru_cache(maxsize=1) | |
| 236 | +def topics() -> dict[str, Any]: | |
| 237 | + t = _read("topics.yaml") | |
| 238 | + known = indicators_by_id() | |
| 239 | + t["headline"] = [s for s in t["headline"] if s in known] | |
| 240 | + for topic in t["topics"]: | |
| 241 | + topic["indicators"] = [s for s in topic["indicators"] if s in known] | |
| 242 | + return t | |
| 243 | + | |
| 244 | + | |
| 245 | +# ------------------------------------------------------------------------------------------------ lookups | |
| 246 | +class Lookup: | |
| 247 | + """Map source country codes → registry ISO3. Returns None for aggregates/unknowns (callers drop them).""" | |
| 248 | + | |
| 249 | + def __init__(self) -> None: | |
| 250 | + cs = countries() | |
| 251 | + self.iso3 = {c.iso3 for c in cs} | |
| 252 | + self.iso2_to_iso3 = {c.iso2: c.iso3 for c in cs} | |
| 253 | + self.numeric_to_iso3 = {c.iso_numeric: c.iso3 for c in cs if c.iso_numeric} | |
| 254 | + self.slug_to_iso3 = {c.slug: c.iso3 for c in cs} | |
| 255 | + self.name_to_iso3 = {c.short_name.lower(): c.iso3 for c in cs} | |
| 256 | + self.name_to_iso3.update({c.official_name.lower(): c.iso3 for c in cs}) | |
| 257 | + # Common alternative names seen in sources (OWID, WHO, IMF) | |
| 258 | + self.name_to_iso3.update( | |
| 259 | + { | |
| 260 | + "united states of america": "USA", "russian federation": "RUS", "korea, rep.": "KOR", "republic of korea": "KOR", | |
| 261 | + "korea, dem. people's rep.": "PRK", "iran, islamic rep.": "IRN", "iran (islamic republic of)": "IRN", | |
| 262 | + "egypt, arab rep.": "EGY", "venezuela, rb": "VEN", "venezuela (bolivarian republic of)": "VEN", | |
| 263 | + "yemen, rep.": "YEM", "gambia, the": "GMB", "bahamas, the": "BHS", "congo, dem. rep.": "COD", | |
| 264 | + "democratic republic of congo": "COD", "democratic republic of the congo": "COD", "congo, rep.": "COG", "congo": "COG", | |
| 265 | + "cote d'ivoire": "CIV", "côte d'ivoire": "CIV", "czech republic": "CZE", "slovak republic": "SVK", | |
| 266 | + "turkiye": "TUR", "turkey": "TUR", "hong kong sar, china": "HKG", "hong kong": "HKG", "macao sar, china": "MAC", "macao": "MAC", | |
| 267 | + "west bank and gaza": "PSE", "palestine": "PSE", "lao pdr": "LAO", "laos": "LAO", "micronesia, fed. sts.": "FSM", | |
| 268 | + "micronesia (country)": "FSM", "st. lucia": "LCA", "saint lucia": "LCA", "st. kitts and nevis": "KNA", | |
| 269 | + "st. vincent and the grenadines": "VCT", "kyrgyz republic": "KGZ", "brunei darussalam": "BRN", "viet nam": "VNM", | |
| 270 | + "vietnam": "VNM", "syrian arab republic": "SYR", "syria": "SYR", "bolivia (plurinational state of)": "BOL", | |
| 271 | + "united republic of tanzania": "TZA", "tanzania": "TZA", "republic of moldova": "MDA", "moldova": "MDA", | |
| 272 | + "north macedonia": "MKD", "eswatini": "SWZ", "cabo verde": "CPV", "cape verde": "CPV", "timor": "TLS", "east timor": "TLS", | |
| 273 | + "timor-leste": "TLS", "sao tome and principe": "STP", "são tomé and príncipe": "STP", "curacao": "CUW", "curaçao": "CUW", | |
| 274 | + "united kingdom": "GBR", "uk": "GBR", "us": "USA", "united states": "USA", "taiwan": "TWN", "kosovo": "XKX", | |
| 275 | + "netherlands (kingdom of the)": "NLD", "türkiye": "TUR", "the bahamas": "BHS", "the gambia": "GMB", "somalia, fed. rep.": "SOM", | |
| 276 | + } | |
| 277 | + ) | |
| 278 | + # Aggregate / non-country codes frequently seen in sources → always dropped | |
| 279 | + self.non_country_codes = { | |
| 280 | + "WLD", "OED", "EUU", "EMU", "HIC", "UMC", "LMC", "LIC", "MIC", "LMY", "NAC", "LCN", "ECS", "MEA", "SAS", "EAS", "SSF", | |
| 281 | + "ARB", "CEB", "EAP", "EAR", "ECA", "FCS", "HPC", "IBD", "IBT", "IDA", "IDB", "IDX", "INX", "LAC", "LDC", "LTE", "MNA", | |
| 282 | + "OSS", "PRE", "PSS", "PST", "SSA", "SST", "TEA", "TEC", "TLA", "TMN", "TSA", "TSS", "AFE", "AFW", "CSS", "EU27_2020", "EA20", | |
| 283 | + "EA19", "EA", "EU", "EU28", "EU27", "G20", "G7", "OECD", "OAVG", "WORLD", | |
| 284 | + } | |
| 285 | + | |
| 286 | + def from_iso3(self, code: str | None) -> str | None: | |
| 287 | + if not code: | |
| 288 | + return None | |
| 289 | + code = code.strip().upper() | |
| 290 | + if code == "UNK": | |
| 291 | + code = "XKX" | |
| 292 | + return code if code in self.iso3 else None | |
| 293 | + | |
| 294 | + def from_iso2(self, code: str | None) -> str | None: | |
| 295 | + if not code: | |
| 296 | + return None | |
| 297 | + code = code.strip().upper() | |
| 298 | + if code in ("EL",): # Eurostat Greece | |
| 299 | + code = "GR" | |
| 300 | + if code in ("UK",): # Eurostat United Kingdom | |
| 301 | + code = "GB" | |
| 302 | + if code == "XK": | |
| 303 | + return "XKX" | |
| 304 | + return self.iso2_to_iso3.get(code) | |
| 305 | + | |
| 306 | + def from_numeric(self, code: str | int | None) -> str | None: | |
| 307 | + if code is None: | |
| 308 | + return None | |
| 309 | + return self.numeric_to_iso3.get(str(code).zfill(3)) | |
| 310 | + | |
| 311 | + def from_name(self, name: str | None) -> str | None: | |
| 312 | + if not name: | |
| 313 | + return None | |
| 314 | + return self.name_to_iso3.get(name.strip().lower()) | |
| 315 | + | |
| 316 | + def any(self, code: str | None) -> str | None: | |
| 317 | + """Best effort: iso3, then iso2, then numeric, then name.""" | |
| 318 | + if not code: | |
| 319 | + return None | |
| 320 | + c = code.strip() | |
| 321 | + if len(c) == 3 and c.isalpha(): | |
| 322 | + return self.from_iso3(c) | |
| 323 | + if len(c) == 2 and c.isalpha(): | |
| 324 | + return self.from_iso2(c) | |
| 325 | + if c.isdigit(): | |
| 326 | + return self.from_numeric(c) | |
| 327 | + return self.from_name(c) | |
| 328 | + | |
| 329 | + | |
| 330 | +@lru_cache(maxsize=1) | |
| 331 | +def lookup() -> Lookup: | |
| 332 | + return Lookup() | |
| 333 | + | |
| 334 | + | |
| 335 | +def validate_registry() -> list[str]: | |
| 336 | + """Return a list of problems (empty = OK).""" | |
| 337 | + problems: list[str] = [] | |
| 338 | + try: | |
| 339 | + cs = countries() | |
| 340 | + slugs = [c.slug for c in cs] | |
| 341 | + if len(slugs) != len(set(slugs)): | |
| 342 | + problems.append("duplicate country slugs") | |
| 343 | + except Exception as e: # noqa: BLE001 | |
| 344 | + problems.append(f"countries.yaml: {e}") | |
| 345 | + try: | |
| 346 | + inds = indicators() | |
| 347 | + n_no_source = [i.slug for i in inds if not i.sources] | |
| 348 | + if n_no_source: | |
| 349 | + problems.append(f"{len(n_no_source)} indicators without sources (allowed, hidden until a connector maps them): " | |
| 350 | + + ", ".join(n_no_source[:12]) + (" …" if len(n_no_source) > 12 else "")) | |
| 351 | + except Exception as e: # noqa: BLE001 | |
| 352 | + problems.append(f"indicators.yaml: {e}") | |
| 353 | + try: | |
| 354 | + groups() | |
| 355 | + except Exception as e: # noqa: BLE001 | |
| 356 | + problems.append(f"groups.yaml: {e}") | |
| 357 | + try: | |
| 358 | + t = _read("topics.yaml") | |
| 359 | + known = {i.slug for i in indicators()} | |
| 360 | + for topic in t["topics"]: | |
| 361 | + if topic["id"] not in TOPICS: | |
| 362 | + problems.append(f"topics.yaml: unknown topic id {topic['id']}") | |
| 363 | + missing = [s for s in topic["indicators"] if s not in known] | |
| 364 | + if missing: | |
| 365 | + problems.append(f"topics.yaml[{topic['id']}]: unknown indicators {missing}") | |
| 366 | + except Exception as e: # noqa: BLE001 | |
| 367 | + problems.append(f"topics.yaml: {e}") | |
| 368 | + return problems | |
added
src/countryatlas/storage/__init__.py
+0 −0
added
src/countryatlas/storage/schema.sql
+104 −0
@@ -0,0 +1,104 @@ | ||
| 1 | +-- CountryAtlas DuckDB schema — SINGLE SOURCE OF TRUTH for pipeline (writer) and API (reader). | |
| 2 | +-- schema_version is stored in meta. Bump it and add a migration note in docs/ARCHITECTURE.md when changing. | |
| 3 | + | |
| 4 | +CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT); | |
| 5 | + | |
| 6 | +CREATE TABLE IF NOT EXISTS countries ( | |
| 7 | + id TEXT PRIMARY KEY, iso2 TEXT, iso3 TEXT, iso_numeric TEXT, slug TEXT UNIQUE, short_name TEXT, official_name TEXT, | |
| 8 | + capital TEXT, continent TEXT, region_wb TEXT, region_wb_name TEXT, subregion TEXT, income_group TEXT, income_group_name TEXT, | |
| 9 | + currency_code TEXT, currency_name TEXT, area_km2 DOUBLE, latitude DOUBLE, longitude DOUBLE, flag_emoji TEXT, | |
| 10 | + un_member BOOLEAN, independent BOOLEAN, landlocked BOOLEAN, borders TEXT[], languages TEXT[], demonym TEXT, | |
| 11 | + status TEXT, kind TEXT | |
| 12 | +); | |
| 13 | + | |
| 14 | +CREATE TABLE IF NOT EXISTS groups ( | |
| 15 | + id TEXT PRIMARY KEY, slug TEXT UNIQUE, name TEXT, kind TEXT, description TEXT, wb_code TEXT, n_members INTEGER | |
| 16 | +); | |
| 17 | +CREATE TABLE IF NOT EXISTS group_members (group_id TEXT, country_id TEXT); | |
| 18 | + | |
| 19 | +CREATE TABLE IF NOT EXISTS sources ( | |
| 20 | + id TEXT PRIMARY KEY, name TEXT, organization TEXT, url TEXT, licence TEXT, attribution TEXT, api_base TEXT, | |
| 21 | + last_success_at TIMESTAMP, n_indicators INTEGER, n_observations BIGINT, notes TEXT | |
| 22 | +); | |
| 23 | + | |
| 24 | +CREATE TABLE IF NOT EXISTS indicators ( | |
| 25 | + id TEXT PRIMARY KEY, slug TEXT UNIQUE, name TEXT, short_name TEXT, description TEXT, topic TEXT, subtopic TEXT, | |
| 26 | + unit TEXT, unit_short TEXT, frequency TEXT, precision INTEGER, aggregation TEXT, higher_is_better BOOLEAN, | |
| 27 | + ranking_eligible BOOLEAN, featured BOOLEAN, format TEXT, scale TEXT, bounds_min DOUBLE, bounds_max DOUBLE, | |
| 28 | + methodology TEXT, tags TEXT[], per_capita_of TEXT, | |
| 29 | + -- coverage (filled by build) | |
| 30 | + n_countries INTEGER, n_observations BIGINT, first_year INTEGER, last_year INTEGER, latest_source_updated_at TIMESTAMP, | |
| 31 | + primary_source_id TEXT | |
| 32 | +); | |
| 33 | + | |
| 34 | +CREATE TABLE IF NOT EXISTS indicator_sources ( | |
| 35 | + indicator_id TEXT, source_id TEXT, dataset TEXT, series_code TEXT, params JSON, priority INTEGER, transform TEXT, | |
| 36 | + countries TEXT[], notes TEXT, source_url TEXT, | |
| 37 | + -- coverage of this particular source in the current build | |
| 38 | + n_observations BIGINT, n_countries INTEGER, last_year INTEGER, last_run_id TEXT, last_status TEXT | |
| 39 | +); | |
| 40 | + | |
| 41 | +-- One row per (country, indicator, period, frequency): the highest-priority source having a value. | |
| 42 | +CREATE TABLE IF NOT EXISTS observations ( | |
| 43 | + country_id TEXT, indicator_id TEXT, period DATE, year INTEGER, frequency TEXT, value DOUBLE, unit TEXT, | |
| 44 | + source_id TEXT, source_dataset TEXT, source_series_code TEXT, is_estimate BOOLEAN, is_forecast BOOLEAN, | |
| 45 | + revision INTEGER, retrieved_at TIMESTAMP, source_updated_at TIMESTAMP, status TEXT, metadata JSON | |
| 46 | +); | |
| 47 | +-- Same shape: values from lower-priority sources (kept for provenance / alternative views). | |
| 48 | +CREATE TABLE IF NOT EXISTS observations_alt ( | |
| 49 | + country_id TEXT, indicator_id TEXT, period DATE, year INTEGER, frequency TEXT, value DOUBLE, unit TEXT, | |
| 50 | + source_id TEXT, source_dataset TEXT, source_series_code TEXT, is_estimate BOOLEAN, is_forecast BOOLEAN, | |
| 51 | + revision INTEGER, retrieved_at TIMESTAMP, source_updated_at TIMESTAMP, status TEXT, metadata JSON | |
| 52 | +); | |
| 53 | +CREATE TABLE IF NOT EXISTS observation_revisions ( | |
| 54 | + country_id TEXT, indicator_id TEXT, period DATE, frequency TEXT, old_value DOUBLE, new_value DOUBLE, | |
| 55 | + old_source_id TEXT, new_source_id TEXT, changed_at TIMESTAMP, run_id TEXT | |
| 56 | +); | |
| 57 | + | |
| 58 | +CREATE TABLE IF NOT EXISTS latest ( | |
| 59 | + country_id TEXT, indicator_id TEXT, period DATE, year INTEGER, frequency TEXT, value DOUBLE, | |
| 60 | + prev_period DATE, prev_value DOUBLE, change_abs DOUBLE, change_pct DOUBLE, | |
| 61 | + rank_world INTEGER, n_world INTEGER, rank_region INTEGER, n_region INTEGER, rank_income INTEGER, n_income INTEGER, | |
| 62 | + rank_year INTEGER, source_id TEXT, is_forecast BOOLEAN, is_estimate BOOLEAN, status TEXT, | |
| 63 | + value_10y_ago DOUBLE, change_10y_abs DOUBLE, change_10y_pct DOUBLE | |
| 64 | +); | |
| 65 | + | |
| 66 | +CREATE TABLE IF NOT EXISTS rankings ( | |
| 67 | + indicator_id TEXT, year INTEGER, country_id TEXT, value DOUBLE, rank INTEGER, n INTEGER, pct_rank DOUBLE | |
| 68 | +); | |
| 69 | + | |
| 70 | +CREATE TABLE IF NOT EXISTS changes ( | |
| 71 | + id TEXT, country_id TEXT, indicator_id TEXT, kind TEXT, period DATE, year INTEGER, value DOUBLE, ref_value DOUBLE, | |
| 72 | + delta DOUBLE, delta_pct DOUBLE, window_years INTEGER, severity DOUBLE, headline TEXT, detail JSON, detected_at TIMESTAMP | |
| 73 | +); | |
| 74 | +CREATE TABLE IF NOT EXISTS events ( | |
| 75 | + id TEXT, country_id TEXT, indicator_id TEXT, kind TEXT, period DATE, year INTEGER, value DOUBLE, ref_value DOUBLE, | |
| 76 | + delta DOUBLE, delta_pct DOUBLE, window_years INTEGER, severity DOUBLE, headline TEXT, detail JSON | |
| 77 | +); | |
| 78 | + | |
| 79 | +CREATE TABLE IF NOT EXISTS similarity ( | |
| 80 | + country_id TEXT, mode TEXT, peer_id TEXT, score DOUBLE, rank INTEGER, contributions JSON | |
| 81 | +); | |
| 82 | + | |
| 83 | +CREATE TABLE IF NOT EXISTS insights ( | |
| 84 | + id TEXT, country_id TEXT, template_id TEXT, text TEXT, values JSON, indicators TEXT[], computed_at TIMESTAMP | |
| 85 | +); | |
| 86 | + | |
| 87 | +CREATE TABLE IF NOT EXISTS country_dna (country_id TEXT, dims JSON, year_ref INTEGER); | |
| 88 | + | |
| 89 | +CREATE TABLE IF NOT EXISTS coverage ( | |
| 90 | + country_id TEXT, n_indicators INTEGER, n_observations BIGINT, latest_year INTEGER, coverage_pct DOUBLE, updated_at TIMESTAMP | |
| 91 | +); | |
| 92 | + | |
| 93 | +CREATE TABLE IF NOT EXISTS import_runs ( | |
| 94 | + run_id TEXT, connector TEXT, dataset TEXT, started_at TIMESTAMP, finished_at TIMESTAMP, status TEXT, | |
| 95 | + rows_raw BIGINT, rows_norm BIGINT, rows_valid BIGINT, warnings INTEGER, errors INTEGER, message TEXT, raw_path TEXT | |
| 96 | +); | |
| 97 | +CREATE TABLE IF NOT EXISTS validation_issues ( | |
| 98 | + run_id TEXT, connector TEXT, indicator_id TEXT, country_id TEXT, period DATE, severity TEXT, code TEXT, message TEXT | |
| 99 | +); | |
| 100 | + | |
| 101 | +-- Search index (denormalised, small): type ∈ country|indicator|topic|region|source | |
| 102 | +CREATE TABLE IF NOT EXISTS search_index ( | |
| 103 | + type TEXT, id TEXT, slug TEXT, name TEXT, alt_names TEXT, hint TEXT, weight DOUBLE | |
| 104 | +); | |
| 105 | ||