# WHO GHO — Zapi reference > World Health Organization Global Health Observatory — 3,095 indicators with country, region, year and disaggregation filters plus uncertainty intervals. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a free key at https://zpi.web.id/dashboard/keys. **Response envelope:** `{ content, message, errors }` **Rate limit:** 60 req/min on free tier. **Related:** - Detail page: https://zpi.web.id/api/health/who - Endpoint catalog: https://zpi.web.id/category/health - Concise index: https://zpi.web.id/llms.txt - Full reference: https://zpi.web.id/llms-full.txt --- ## WHO GHO **Category:** health · **Slug:** `who` **Detail page:** https://zpi.web.id/api/health/who World Health Organization Global Health Observatory — 3,095 indicators with country, region, year and disaggregation filters plus uncertainty intervals. **Tags:** who, global-health, indicators, statistics, gho ### Countries WHO Global Health Observatory — the COUNTRY dimension pre-bound, rung 1 (direct). These ISO3 codes are what indicator-data's `country` filter matches on, and each row - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/countries` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `region` | string | query | no | WHO region code to restrict the countries to | **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/countries?region=SEAR" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/countries?region=SEAR", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/countries?region=SEAR", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 10, "items": [ { "code": "BGD", "name": "Bangladesh", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "BTN", "name": "Bhutan", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "IND", "name": "India", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "LKA", "name": "Sri Lanka", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "MDV", "name": "Maldives", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "MMR", "name": "Myanmar", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "NPL", "name": "Nepal", "regionCode": "SEAR", "regionName": "South-East Asia" }, { "code": "PRK", "name": "Democratic People's Republic of Korea", "regionCode": "SEAR", "regionName": "South-East Asia" } ], "region": "SEAR", "provider": "who" } ``` --- ### Dimension Values WHO Global Health Observatory — valid values for one dimension, rung 1 (direct). An unknown dimension answers 200 with an empty `value[]` rather than a 404, so the empty - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/dimension-values/:dimension` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `dimension` | string | path | yes | Dimension code from the dimensions endpoint | **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/dimension-values/:dimension" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/dimension-values/:dimension", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/dimension-values/:dimension", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 234, "items": [ { "code": "ABW", "title": "Aruba", "dimension": "COUNTRY", "parentCode": "AMR", "parentTitle": "Americas", "parentDimension": "REGION" }, { "code": "AFG", "title": "Afghanistan", "dimension": "COUNTRY", "parentCode": "EMR", "parentTitle": "Eastern Mediterranean", "parentDimension": "REGION" }, { "code": "AGO", "title": "Angola", "dimension": "COUNTRY", "parentCode": "AFR", "parentTitle": "Africa", "parentDimension": "REGION" }, { "code": "AIA", "title": "Anguilla", "dimension": "COUNTRY", "parentCode": "AMR", "parentTitle": "Americas", "parentDimension": "REGION" }, { "code": "ALB", "title": "Albania", "dimension": "COUNTRY", "parentCode": "EUR", "parentTitle": "Europe", "parentDimension": "REGION" }, { "code": "AND", "title": "Andorra", "dimension": "COUNTRY", "parentCode": "EUR", "parentTitle": "Europe", "parentDimension": "REGION" }, { "code": "ARE", "title": "United Arab Emirates", "dimension": "COUNTRY", "parentCode": "EMR", "parentTitle": "Eastern Mediterranean", "parentDimension": "REGION" }, { "code": "ARG", "title": "Argentina", "dimension": "COUNTRY", "parentCode": "AMR", "parentTitle": "Americas", "parentDimension": "REGION" } ], "provider": "who", "dimension": "COUNTRY" } ``` --- ### Dimensions WHO Global Health Observatory — the dimension catalogue, rung 1 (direct). The vocabulary behind every filterable field on indicator-data; the collection has no - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/dimensions` - **Cache TTL:** 300s **Parameters:** _No parameters._ **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/dimensions" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/dimensions", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/dimensions", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 202, "items": [ { "code": "ADVERTISINGTYPE", "title": "SUBSTANCE_ABUSE_ADVERTISING_TYPES" }, { "code": "AGEGROUP", "title": "Age Group" }, { "code": "ALCOHOLTYPE", "title": "Beverage Types" }, { "code": "AMRGLASSCATEGORY", "title": "AMR GLASS Category" }, { "code": "ANTIBIOTIC", "title": "Antibiotic" }, { "code": "ARCHIVE", "title": "Archive date" }, { "code": "ASSISTIVETECHBARRIER", "title": "Barriers to accessing assistive products" }, { "code": "ASSISTIVETECHFUNDING", "title": "Funding for assistive tech products" } ], "provider": "who" } ``` --- ### Indicator Data WHO Global Health Observatory — observations for one indicator, rung 1 (direct). Every indicator code is its own OData collection, so the code goes in the path and an unknown - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/indicator-data/:indicator` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `indicator` | string | path | yes | Indicator code from the indicators endpoint | | `country` | string | query | no | ISO3 country code to restrict the rows to | | `region` | string | query | no | WHO region code of the parent location | | `spatialDimType` | enum(COUNTRY|REGION|WORLDBANKINCOMEGROUP) | query | no | Level the rows are reported at | | `year` | number | query | no | Single reporting year | | `yearFrom` | number | query | no | Earliest reporting year | | `yearTo` | number | query | no | Latest reporting year | | `dim1` | string | query | no | First disaggregation code, commonly sex | | `dim2` | string | query | no | Second disaggregation code | | `dim3` | string | query | no | Third disaggregation code | | `orderBy` | enum(year|value|country|id) | query | no | Sort field. Default year | | `order` | enum(asc|desc) | query | no | Sort direction. Default desc | | `page` | number | query | no | Page number. Default 1 | | `limit` | number | query | no | Items per page. Default 20, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/indicator-data/:indicator?country=IDN®ion=SEAR&spatialDimType=COUNTRY&year=2019&yearFrom=2010&yearTo=2020&dim1=SEX_BTSX&dim2=AGEGROUP_YEARS15-19&dim3=RESIDENCEAREATYPE_RUR&orderBy=year&order=desc&page=1&limit=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/indicator-data/:indicator?country=IDN®ion=SEAR&spatialDimType=COUNTRY&year=2019&yearFrom=2010&yearTo=2020&dim1=SEX_BTSX&dim2=AGEGROUP_YEARS15-19&dim3=RESIDENCEAREATYPE_RUR&orderBy=year&order=desc&page=1&limit=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/indicator-data/:indicator?country=IDN®ion=SEAR&spatialDimType=COUNTRY&year=2019&yearFrom=2010&yearTo=2020&dim1=SEX_BTSX&dim2=AGEGROUP_YEARS15-19&dim3=RESIDENCEAREATYPE_RUR&orderBy=year&order=desc&page=1&limit=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "page": 1, "count": 0, "items": [], "limit": 3, "total": 0, "hasMore": false, "nextPage": null, "provider": "who", "indicator": "WHOSIS_000001" } ``` --- ### Indicators WHO Global Health Observatory — the indicator catalogue (3,095 rows), rung 1 (direct). OData v4 over an Azure CDN edge, no key. $filter is built here from named parameters only: - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/indicators` - **Cache TTL:** 300s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `search` | string | query | no | Substring matched against the indicator name | | `code` | string | query | no | Exact indicator code | | `page` | number | query | no | Page number. Default 1 | | `limit` | number | query | no | Items per page. Default 20, max 200 | **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/indicators?search=malaria&code=WHOSIS_000001&page=1&limit=20" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/indicators?search=malaria&code=WHOSIS_000001&page=1&limit=20", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/indicators?search=malaria&code=WHOSIS_000001&page=1&limit=20", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "code": "WHOSIS_000001", "page": 1, "count": 0, "items": [], "limit": 3, "total": 0, "search": "malaria", "hasMore": false, "nextPage": null, "provider": "who" } ``` --- ### Regions WHO Global Health Observatory — the REGION dimension pre-bound, rung 1 (direct). Region rows are top-level, so ParentCode/ParentTitle arrive null here rather than absent. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/health:who/regions` - **Cache TTL:** 300s **Parameters:** _No parameters._ **cURL:** ```bash curl "https://api.zpi.web.id/v1/health:who/regions" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/health:who/regions", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/health:who/regions", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "count": 43, "items": [ { "code": "AFR", "name": "Africa", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "AMR", "name": "Americas", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "EMR", "name": "Eastern Mediterranean", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "EUR", "name": "Europe", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "GBD_REG14_AFRD", "name": "Africa region, stratum D (AFR D)", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "GBD_REG14_AFRE", "name": "Africa region, stratum E(AFR E)", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "GBD_REG14_AMRA", "name": "Americas region, stratum A (AMR A)", "dimension": "REGION", "parentCode": null, "parentName": null }, { "code": "GBD_REG14_AMRB", "name": "Americas region, stratum B (AMR B)", "dimension": "REGION", "parentCode": null, "parentName": null } ], "provider": "who" } ``` --- _Generated: 2026-08-30T05:08:21.556Z_