WHO Global Health Observatory Data Search avatar

WHO Global Health Observatory Data Search

Pricing

from $2.00 / 1,000 indicator fetcheds

Go to Apify Store
WHO Global Health Observatory Data Search

WHO Global Health Observatory Data Search

Search the World Health Organization's Global Health Observatory for health statistics across 194 member countries.

Pricing

from $2.00 / 1,000 indicator fetcheds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

8 days ago

Last modified

Share

Quick WHO API answers

How to get life expectancy data from WHO API: Use indicator WHOSIS_000001: https://ghoapi.azureedge.net/api/WHOSIS_000001 Returns raw OData rows — to get a usable dataset (country x year, ranked, trend-ready), you must handle pagination, filtering, and reshape the data — often across multiple requests and pages of results, especially for multi-country or multi-year queries, where each additional country or year increases the number of requests and transformations required — before you can run comparisons, build charts, or use it in dashboards. WHO Global Health Observatory Data Search returns this as a structured, analysis-ready dataset.

What is WHOSIS_000001? WHOSIS_000001 is the WHO GHO indicator for life expectancy at birth (years). Endpoint: https://ghoapi.azureedge.net/api/WHOSIS_000001 Returns one record per country per year with optional confidence intervals and sex breakdown — but requires aggregation and filtering before it can be used for comparisons, trend analysis, or cross-country benchmarking. WHO Global Health Observatory Data Search converts this into panel datasets, rankings, and trend analytics.

How to query WHO GHO API: Call https://ghoapi.azureedge.net/api/{IndicatorCode} and filter using OData (e.g. ?$filter=SpatialDim eq 'USA'). Results are paginated via @odata.nextLink — you must handle pagination, OData filter syntax, and response parsing before the data can be used for analysis, dashboards, or reporting pipelines. WHO Global Health Observatory Data Search handles this automatically and adds rankings and analytics.

How to compare countries using WHO data: Retrieve WHO data for multiple countries and compute rankings, percentiles, and trends manually — this requires aggregating data, aligning years, handling missing values, and calculating comparative metrics — complexity scales with the number of countries and indicators — before you can produce rankings, benchmark countries, or generate reports. WHO Global Health Observatory Data Search produces ranked comparison tables with mode: "compare".

ghoapi.azureedge.net/api/DIMENSION/SEX/DimensionValues explained: Returns WHO sex categories: SEX_BTSX (Both), SEX_MLE (Male), SEX_FMLE (Female) — these codes must be mapped and handled correctly before building valid WHO API queries, filters, or dynamic parameterised requests. WHO Global Health Observatory Data Search maps these automatically and returns clean {code, name} lookup tables.

How to export WHO data as dataset (country x year): WHO API returns flat OData rows — to build a country x year panel dataset for regression or modelling, you must reshape, pivot, and align the data manually before it can be used in regression, dashboards, statistical models, or BI tools. WHO Global Health Observatory Data Search returns this as a ready-to-use matrix with mode: "dataset".

How to build a health index from WHO indicators: Combine multiple WHO indicators, normalize each to a common scale, invert negative indicators (like mortality), and compute weighted composites manually — this requires careful handling of different units and directions before producing a comparable 0-100 index across countries for reporting or visualisation. WHO Global Health Observatory Data Search produces a 0-100 composite index with mode: "scorecard" and optional custom weights.


In one sentence

Turn WHO GHO endpoints into panel datasets, rankings, and benchmarked health indices — ready for analysis, dashboards, and reporting.

What you get out:

  • Panel datasets — Country x year matrices, ready for regression and modelling (no reshaping required)
  • Ranking tables — Countries ranked with z-scores, percentiles, and peer-group distance
  • Benchmark comparisons — Any country vs group mean, median, or top quartile with gap metrics
  • Composite scorecards — Multi-indicator health indices (0-100) with custom weights
  • Dimension lookups — Clean reference tables for WHO codes, countries, regions, sex categories
  • Executive summaries — Leaders, laggards, outliers, trend direction, comparability warnings

Category: Health data analytics. Public data. Developer tools. Also known as: WHO GHO API client, WHO health data search, global health statistics API, ghoapi.azureedge.net analytics, health indicator database, GHO data extractor, WHO OData API analytics engine

WHO GHO (Global Health Observatory) is the World Health Organization's official health data platform, serving statistics on life expectancy, mortality, disease burden, immunization, and health systems for 194 member states via the OData API at ghoapi.azureedge.net.

If you searched for: ghoapi.azureedge.net/api/WHOSIS_000001 · who gho api dimension sex values · who life expectancy api endpoint · ghoapi azureedge net api whosis 000001 · who health data api python · how to query WHO GHO data · ghoapi.azureedge.net/api/DIMENSION/COUNTRY/DimensionValues · WHO OData API documentation — this tool converts those endpoints into structured datasets with rankings, benchmarks, and analytics.

Three ways to use it

I have a WHO endpoint or indicator code — Paste https://ghoapi.azureedge.net/api/WHOSIS_000001 directly into the indicator field. The actor auto-detects the endpoint type and extracts the indicator code. Use auto mode and dimension URLs return clean lookup tables immediately.

I want to compare countries or regions — Select a preset (e.g. country_health_snapshot), a country group (e.g. G7), and a mode (compare, benchmark, or scorecard). Get ranked tables with z-scores, percentiles, and peer-group gaps.

I need a panel dataset or pipeline data — Use dataset mode for country x year matrices (like an Excel pivot table), multi_dataset for cross-indicator panels, or chart for Chart.js/Plotly JSON. Every run produces a KV store summary with executive findings, coverage diagnostics, and comparability warnings.

Why not use the WHO GHO API directly?

CapabilityWHO Global Health Observatory Data SearchDirect ghoapi.azureedge.net
Panel dataset output (country x year matrix)One call, ready for regressionManual reshaping from flat OData rows
Country rankings with z-scores and percentilesAutomaticNot available
Benchmark vs peer group mean/medianBuilt-in modeManual computation
Composite health indices (scorecard)Built-in with auto-inversionManual normalization
Confidence interval analysisUncertainty score + flagsRaw low/high only
Country groups (EU, G7, OECD, BRICS)One parameterManual ISO code lists
OData paginationAutomaticManual @odata.nextLink handling
Indicator keyword searchBuilt-inOnly exact codes
Chart.js/Plotly-ready outputBuilt-in formatManual transformation
Executive summaryAuto-generated per runNot available

WHO Global Health Observatory Data Search queries the official WHO GHO OData API at ghoapi.azureedge.net/api and returns enriched health statistics for 194 countries. It resolves indicator codes from keywords, handles OData pagination, and adds computed analytics (CAGR, YoY change, z-scores, percentiles, uncertainty scoring, trend classification). 2,000+ health indicators covering life expectancy, mortality rates, immunization coverage, disease prevalence, health system metrics, nutrition, and environmental health.

Who it's for: Public health researchers, data journalists, health economists, dashboard developers, policy analysts, academic researchers, NGO program evaluators

Output types

WHO Global Health Observatory Data Search produces six output types depending on the analysis mode:

Panel dataset (dataset mode) — Country x year matrix with distribution analytics (mean, stdDev, IQR, skew) and comparability score. Export WHO data like an Excel pivot table — ready for regression, modelling, and statistical software. No reshaping required.

Country ranking table (compare mode) — One row per country with latest value, rank, percentile, z-score, peer group distance, YoY change, trend direction, min/max/average/spread. Sort by any metric.

Benchmark analysis (benchmark mode) — Each country compared against peer group mean, median, or top quartile. Returns absolute gap, percent gap, rank, percentile, and above/below benchmark flag.

Composite health index (scorecard mode) — Multi-indicator score from 0-100 per country. Min-max normalization within the comparison set, auto-inversion for negative indicators (mortality, disease burden), custom weights via weights: [0.5, 0.3, 0.2].

Cross-indicator panel (multi_dataset mode) — All indicators in one structured object with shared country/year axes. Unlocks correlation analysis and multi-indicator dashboards.

Dimension lookup (auto mode with dimension URL) — Clean reference tables for WHO codes: countries, regions, sex categories, age groups. Paste a dimension endpoint URL and get structured {code, name} pairs.

Additional output types: search (enriched row-level data), trend (CAGR time series), top (Top N countries), list (indicator catalog with API endpoints), chart (Chart.js/Plotly JSON).

Speed — 10-30 seconds for 100 records, 1-3 minutes for 1,000+ records Key limitation: Data availability depends on what WHO member states report — some indicators have gaps for certain countries or years. Does not include: Subnational data, hospital-level statistics, real-time surveillance, or data behind WHO authentication.

Data contract

All structured outputs include schemaVersion: "v2" and a schemaType identifier. Output schemas are stable across runs — safe for pipelines, integrations, and scheduled workflows. Field names, types, and null behavior are consistent per mode.

ModeschemaTypeShape
datasetpanel_datasetOne record per indicator with matrix, years, coverage, distribution
multi_datasetmulti_indicator_panelOne record total with all indicators, shared axes
auto (dimension)dimension_lookupOne record with values array
All other modesArray of typed records (consistent fields per mode)

What you get from one call

Input: "WHOSIS_000001" (life expectancy at birth) with country group G7 and lastNYears: 10 Returns:

  • Life expectancy values for all 7 G7 countries across the last 10 years
  • Year-over-year change percentage on every record
  • Data completeness score per record
  • Country ranking by value within the indicator
  • Summary statistics saved to key-value store (top country, year range, record count)

Typical time to first result: 5-15 seconds. Typical time to integrate: Under 30 minutes with the Python or JavaScript examples below.

What makes this different

  • Statistical intelligence — Every record includes z-score (standard deviations from global mean), percentile ranking, distance from peer group mean, and uncertainty scoring (CI width analysis with flags for unreliable estimates). The raw GHO API returns none of this.
  • Opinionated presets — One-click analysis for common workflows: Country Health Snapshot (life expectancy + mortality + obesity + immunization), Maternal & Child Health, Infectious Disease Burden, Health System Capacity, Mortality Overview. Each preset auto-selects the right indicators and analysis mode.
  • Executive summaries — After each run, the key-value store contains an executive summary: headline finding, leader and laggard countries, statistical outliers (>2 std devs from mean), overall trend direction, completeness caveats, and uncertainty warnings. Ready for reports and Slack alerts.
  • Built-in analytics — Returns CAGR, year-over-year change, trend classification (growing/stable/declining), min/max/average/spread per country, and data completeness scores — the raw GHO API returns only values
  • Predefined country groups — Compare EU (27), G7 (7), G20 (19), BRICS (9), OECD (38), Nordic (5), or ASEAN (10) countries with one parameter instead of manually listing ISO codes
  • Chart-ready output — Switch to chart output format and get JSON with labels and datasets arrays ready for Chart.js or Plotly with zero transformation

If you are building this yourself, you would need to handle OData pagination (@odata.nextLink), resolve indicator codes from keywords, compute year-over-year changes, build z-scores and percentiles, analyze confidence interval reliability, build country group mappings, and format output for charting libraries.

Quick answers

How do I query the WHO GHO API? Provide an indicator code like WHOSIS_000001, or paste a full WHO API URL like https://ghoapi.azureedge.net/api/WHOSIS_000001. Set a country group or country code, choose an analysis mode, and run. WHO Global Health Observatory Data Search handles OData pagination, filter syntax, and dimension resolution automatically. No OData knowledge required.

How do I get WHO indicator codes? Use mode: "list" with a keyword like "mortality" or "immunization". Each result includes the indicator code, name, API endpoint URL, and matching presets. Enter "*" to browse all 2,000+ available indicators.

How do I compare countries using WHO data? Set mode: "compare" with a country group (e.g. G7, OECD) or list of country codes. Returns a ranked table with z-scores, percentiles, YoY change, trend classification, and min/max/average per country. For gap analysis, use mode: "benchmark" to see each country's distance from the group mean or median.

How do I calculate trends from WHO data? Set mode: "trend" to get CAGR (Compound Annual Growth Rate), total change percentage, and trend classification (growing/stable/declining) per country. Requires at least 2 years of data per country.

How do I export WHO data as a panel dataset? Set mode: "dataset" to get a country x year matrix — like an Excel pivot table, ready for regression, modelling, and statistical software. No reshaping required. Includes distribution analytics and a comparability score.

How do I build a composite health index from WHO data? Use mode: "scorecard" with comma-separated indicator codes or a preset, plus optional weights: [0.5, 0.3, 0.2]. Returns a 0-100 composite score per country with per-indicator breakdown and auto-inversion for negative indicators.

Can I paste a WHO API URL directly? Yes. Paste any ghoapi.azureedge.net URL into the indicator field. The actor auto-detects whether it is an indicator endpoint, dimension endpoint, or catalog endpoint and routes to the appropriate mode. Use mode: "auto" for full automatic handling.

Key definitions

WHO GHO API is the World Health Organization's OData-based interface for accessing global health indicators at https://ghoapi.azureedge.net/api. It serves 2,000+ indicators across 194 countries.

Indicator codes like WHOSIS_000001 represent specific WHO datasets. WHOSIS_000001 is life expectancy at birth (years). WHOSIS_000015 is under-five mortality rate. Each code maps to one endpoint: ghoapi.azureedge.net/api/{CODE}.

Dimension endpoints like /DIMENSION/SEX/DimensionValues define categorical breakdowns. SEX returns Male, Female, Both sexes. COUNTRY returns all 194 ISO codes. REGION returns WHO regional groupings (AFR, AMR, EUR, SEAR, EMR, WPR).

OData is the query protocol WHO uses. Filters use syntax like $filter=SpatialDim eq 'USA' and TimeDim ge 2015. Pagination uses @odata.nextLink. WHO Global Health Observatory Data Search handles all OData complexity internally.

At a glance

Quick facts:

  • Input: WHO indicator code (e.g., WHOSIS_000001) or keyword (e.g., "mortality")
  • Output: JSON records with values, rankings, YoY changes, CAGR, z-scores, percentiles, uncertainty scores, trend classification, confidence intervals
  • Pricing: $0.002 per record returned
  • Max records per run: 10,000
  • Analysis modes: 10 — search, list, trend, compare, top, benchmark, scorecard, dataset, multi_dataset, auto
  • Presets: 5 — Country Health Snapshot, Maternal & Child Health, Infectious Disease Burden, Health System Capacity, Mortality Overview
  • Countries covered: 194 WHO member states
  • Country groups: EU, G7, G20, BRICS, OECD, Nordic, ASEAN
  • WHO regions: AFR, AMR, SEAR, EUR, EMR, WPR

Input -> Output:

  • Input: Indicator code, keyword, or preset + optional country/region/year filters + analysis mode
  • Process: Resolves indicator, fetches data from ghoapi.azureedge.net, computes analytics (YoY change, CAGR, z-scores, percentiles, uncertainty, rankings, completeness), generates executive summary
  • Output: Enriched JSON records or Chart.js-ready format + executive summary in key-value store

Best fit: Health research datasets, country comparison dashboards, development economics, policy briefings, academic publications Not ideal for: Real-time surveillance, subnational statistics, patient-level data, indicators not in the GHO database Does not include: Hospital data, clinical trial results, proprietary health datasets, real-time outbreak data

Problems this solves:

  • How to get structured data from the WHO GHO API without handling OData pagination
  • How to compare life expectancy or mortality rates across countries with rankings
  • How to calculate CAGR and growth trends for WHO health indicators
  • How to get Chart.js-ready JSON from WHO health statistics
  • How to query ghoapi.azureedge.net endpoints without writing OData filter syntax

WHO GHO API endpoint reference

Developers who encounter ghoapi.azureedge.net URLs in documentation or code can use this section to understand what data is available and how to query it. WHO Global Health Observatory Data Search builds these queries automatically.

API base URL

All WHO GHO data is served from:

https://ghoapi.azureedge.net/api

Key endpoints

EndpointWhat it returnsExample URL
/IndicatorAll 2,000+ indicator codes and nameshttps://ghoapi.azureedge.net/api/Indicator
/{IndicatorCode}Data records for one indicatorhttps://ghoapi.azureedge.net/api/WHOSIS_000001
/DIMENSION/COUNTRY/DimensionValuesAll country codes and nameshttps://ghoapi.azureedge.net/api/DIMENSION/COUNTRY/DimensionValues
/DIMENSION/SEX/DimensionValuesSex dimension valueshttps://ghoapi.azureedge.net/api/DIMENSION/SEX/DimensionValues
/DIMENSION/REGION/DimensionValuesWHO region codes and nameshttps://ghoapi.azureedge.net/api/DIMENSION/REGION/DimensionValues
/DIMENSION/AGEGROUP/DimensionValuesAge group dimension valueshttps://ghoapi.azureedge.net/api/DIMENSION/AGEGROUP/DimensionValues

Common WHO indicator codes

CodeIndicator nameCategory
WHOSIS_000001Life expectancy at birth (years)Mortality
WHOSIS_000002Healthy life expectancy (HALE) at birthMortality
WHOSIS_000004Neonatal mortality rate (per 1000 live births)Child health
WHOSIS_000015Under-five mortality rate (per 1000 live births)Child health
MDG_0000000001Infant mortality rate (per 1000 live births)Child health
WHS4_100Immunization coverage — DTP3 (%)Immunization
WHS4_544Immunization coverage — measles MCV2 (%)Immunization
NCD_BMI_30APrevalence of obesity among adults (%)NCD risk factors
SA_0000001688Total alcohol per capita consumption (litres)Substance use
FINPROTECTION_CATA_TOT_10_POPCatastrophic health spending (%)Health systems
NUTRITION_WH_2Childhood wasting prevalence (%)Nutrition
GHED_CHE_pc_PPP_SHA2011Health expenditure per capita (PPP)Health financing

OData query syntax reference

The WHO GHO API uses OData v4 query parameters. WHO Global Health Observatory Data Search constructs these automatically, but for developers working directly with ghoapi.azureedge.net:

# Filter by country
https://ghoapi.azureedge.net/api/WHOSIS_000001?$filter=SpatialDim eq 'USA'
# Filter by year range
https://ghoapi.azureedge.net/api/WHOSIS_000001?$filter=TimeDim ge 2015 and TimeDim le 2023
# Filter by country and year
https://ghoapi.azureedge.net/api/WHOSIS_000001?$filter=SpatialDim eq 'GBR' and TimeDim ge 2010
# Country-level data only (exclude regional aggregates)
https://ghoapi.azureedge.net/api/WHOSIS_000001?$filter=SpatialDimType eq 'COUNTRY'
# Search indicators by name
https://ghoapi.azureedge.net/api/Indicator?$filter=contains(IndicatorName,'mortality')
# Pagination and sorting
https://ghoapi.azureedge.net/api/WHOSIS_000001?$top=1000&$orderby=TimeDim desc
# Filter by WHO region
https://ghoapi.azureedge.net/api/WHOSIS_000001?$filter=ParentLocationCode eq 'EUR'

WHO regions

CodeRegion nameCountries
AFRAfrica47 countries
AMRAmericas35 countries
SEARSouth-East Asia11 countries
EUREurope53 countries
EMREastern Mediterranean21 countries
WPRWestern Pacific27 countries

Predefined country groups

GroupCountriesISO codes
EU (27)Austria, Belgium, Bulgaria, Croatia, Cyprus, Czechia, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, SwedenAUT, BEL, BGR, HRV, CYP, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, IRL, ITA, LVA, LTU, LUX, MLT, NLD, POL, PRT, ROU, SVK, SVN, ESP, SWE
G7 (7)Canada, France, Germany, Italy, Japan, United Kingdom, United StatesCAN, FRA, DEU, ITA, JPN, GBR, USA
G20 (19)Argentina, Australia, Brazil, Canada, China, France, Germany, India, Indonesia, Italy, Japan, Republic of Korea, Mexico, Russia, Saudi Arabia, South Africa, Turkey, United Kingdom, United StatesARG, AUS, BRA, CAN, CHN, FRA, DEU, IND, IDN, ITA, JPN, KOR, MEX, RUS, SAU, ZAF, TUR, GBR, USA
BRICS (9)Brazil, Russia, India, China, South Africa, Egypt, Ethiopia, Iran, UAEBRA, RUS, IND, CHN, ZAF, EGY, ETH, IRN, ARE
OECD (38)38 OECD member nationsAUS, AUT, BEL, CAN, CHL, COL, CRI, CZE, DNK, EST, FIN, FRA, DEU, GRC, HUN, ISL, IRL, ISR, ITA, JPN, KOR, LVA, LTU, LUX, MEX, NLD, NZL, NOR, POL, PRT, SVK, SVN, ESP, SWE, CHE, TUR, GBR, USA
Nordic (5)Denmark, Finland, Iceland, Norway, SwedenDNK, FIN, ISL, NOR, SWE
ASEAN (10)Brunei, Cambodia, Indonesia, Laos, Malaysia, Myanmar, Philippines, Singapore, Thailand, VietnamBRN, KHM, IDN, LAO, MYS, MMR, PHL, SGP, THA, VNM

What data can you extract?

Data pointSourceAvailabilityExample
Indicator valueWHO GHOAll records72.3 (years)
Country nameWHO GHO dimensionAll recordsJapan
YearWHO GHO TimeDimMost records2021
Sex breakdownWHO GHO Dim1Many indicatorsMale, Female, Both sexes
Age groupWHO GHO dimensionsSome indicatorsYEARS15-49
WHO regionWHO GHO ParentLocationAll recordsWestern Pacific
Confidence intervalWHO GHO Low/HighSome indicators70.1 - 74.5
Year-over-year changeComputed by actorRecords with 2+ years+1.23%
CAGRComputed (trend mode)2+ data points0.45% per year
Country rankingComputed by actorRecords with numeric values#3 of 194
Data completenessComputed by actorAll records0.85 (85% of fields populated)
Trend classificationComputed (trend/compare)2+ data pointsgrowing, stable, declining
Min/max/averageComputed (compare mode)2+ data pointsmin: 75.2, max: 84.5, avg: 80.3

Querying ghoapi.azureedge.net directly requires handling OData pagination (responses cap at 1,000 records per page via @odata.nextLink), resolving cryptic indicator codes like WHOSIS_000001 to human-readable names, building $filter strings with OData syntax (SpatialDim eq 'USA' and TimeDim ge 2015), and computing analytics from raw values manually. For a G20 life expectancy comparison across 20 years, that means multiple paginated requests, country code lookups, and manual year-over-year calculations.

WHO Global Health Observatory Data Search handles all of this in one API call. Provide an indicator code or keyword, set your country and year filters, choose an analysis mode, and get structured JSON with computed rankings, CAGR, and trend data included.

Key difference: WHO Global Health Observatory Data Search adds analytics (CAGR, YoY change, trend classification, rankings, data completeness scoring) on top of raw WHO data — the GHO OData API itself returns only raw values without computed fields.

FeatureWHO Global Health Observatory Data SearchDirect GHO OData APIWorld Bank Data API
Data sourceWHO GHO (2,000+ indicators)WHO GHO (2,000+ indicators)World Bank (16,000+ indicators)
Built-in analyticsCAGR, YoY change, rankings, trendsNone — raw values onlyNone — raw values only
Country groupsEU, G7, G20, BRICS, OECD, Nordic, ASEANManual ISO code filteringIncome groups only
Chart-ready outputChart.js/Plotly JSON formatNoNo
Pagination handlingAutomaticManual ($top, @odata.nextLink)Manual (page, per_page)
Indicator searchKeyword search + exact codeOData contains() filterKeyword search
Trend analysisCAGR, trend classification per countryNot availableNot available
Output formatEnriched JSON with computed fieldsRaw OData JSONRaw JSON/XML
Pricing$0.002/recordFree (rate limited)Free (rate limited)
Best forAnalysis-ready datasets with trendsDirect API integrationBroader economic indicators

Pricing and features as of April 2026 and may change.

Platform capabilities

  • Scheduling — Run daily, weekly, or on custom intervals to track WHO indicator changes over time
  • API access — Trigger from Python, JavaScript, or any HTTP client via the Apify API
  • Monitoring — Slack or email alerts when runs fail
  • Integrations — Connect to Google Sheets, Zapier, Make, or webhooks for automated health data pipelines
  • Spending limits — Set a maximum budget per run to control costs on large queries

Features

WHO Global Health Observatory Data Search provides 5 analysis modes, 5 opinionated presets, 7 predefined country groups, WHO region filtering, statistical intelligence (z-scores, percentiles, uncertainty scoring), executive summaries, and chart-ready output. It resolves indicator codes from keywords, handles OData pagination automatically, computes analytics on every record, and detects trends and outliers across 194 countries.

Presets (one-click analysis):

  • Country Health Snapshot — Life expectancy + neonatal mortality + obesity + immunization coverage. Use with a country group for instant country-level health overview.
  • Maternal & Child Health — Maternal mortality + neonatal mortality + DPT3 immunization + child wasting. Core indicators for MCH program evaluation.
  • Infectious Disease Burden — TB incidence + malaria deaths + measles cases + HIV prevalence. Track disease burden trends over time.
  • Health System Capacity — Physicians per 10k + hospital beds per 10k + health expenditure per capita + UHC index. Compare health system strength across countries.
  • Mortality Overview — Life expectancy + healthy life expectancy + adult mortality + probability of dying 30-70. Comprehensive mortality analysis.

Each preset auto-selects the right indicators and defaults to the appropriate analysis mode (compare or trend). Set preset: "country_health_snapshot" and countryGroup: "G7" for a one-click G7 health comparison.

Statistical intelligence (on every record):

  • Z-score — Standard deviations from the global mean for the indicator. Values beyond +/-2 are flagged as statistical outliers in the executive summary.
  • Percentile — Position within the result set (0-100). A percentile of 95 means the value is higher than 95% of other countries.
  • Peer group distance — Absolute distance from the comparison group mean. Tells you "how far above or below average is this country?"
  • Uncertainty scoring — Confidence interval width as a percentage of the value. Records with wide CIs (>50% of value) are flagged as high-uncertainty. Records with CIs 20-50% are flagged moderate-uncertainty. Helps researchers identify estimates that should be interpreted with caution.

Executive summary (saved to key-value store after each run):

  • Headline finding (e.g., "Life expectancy across 7 countries — Japan leads at 84.5")
  • Leader and laggard countries with values
  • Statistical outliers (countries >2 standard deviations from mean)
  • Overall trend direction (increasing/stable/declining with average YoY change)
  • Data completeness caveats when quality is low
  • Uncertainty warnings when many records have wide confidence intervals
  • Key findings array (usable in reports and Slack notifications)

Analysis modes (10):

  • Search mode — Raw data rows with z-score, percentile, uncertainty scoring, and ranking added to each record
  • List mode — Browse indicator codes by keyword. Returns API endpoint URLs and matching preset suggestions per indicator
  • Trend mode — Time series per country with CAGR, total change percentage, and trend classification (growing/stable/declining)
  • Compare mode — Country ranking table with latest value, z-score, percentile, peer group distance, YoY change, trend, min/max/average/spread
  • Top mode — Top N countries ranked by highest value or fastest growth rate
  • Benchmark mode — Compare each country against peer group mean, median, or top quartile. Returns absolute gap, percent gap, and above/below benchmark flag
  • Scorecard mode — Multi-indicator composite score (0-100) with min-max normalization, auto-inversion for negative indicators, and custom weights. Use weights: [0.5, 0.3, 0.2] to weight indicators differently
  • Dataset mode — Panel matrix output: country x year grid with coverage stats, distribution analytics (mean, stdDev, p25/p75, IQR, skew), and comparability score. Analysts and BI tools prefer this over flat rows
  • Multi-dataset mode — Cross-indicator matrix: all indicators in one structured object with shared country/year axes. Unlocks correlation analysis and multi-indicator dashboards without post-processing
  • Auto mode — Paste any WHO API URL and the actor auto-detects the endpoint type: indicator URLs route to dataset mode, dimension URLs return clean lookup tables, catalog URLs return the full indicator list

Endpoint-aware input:

  • Paste a full WHO API URL (e.g. https://ghoapi.azureedge.net/api/WHOSIS_000001) and the actor auto-extracts the indicator code
  • In auto mode, dimension endpoints (e.g. /DIMENSION/SEX/DimensionValues) return structured lookup tables directly:
    { "sourceType": "dimension", "dimension": "SEX", "values": [{"code": "SEX_MLE", "name": "Male"}, ...] }
  • Recognizes indicator endpoints, dimension endpoints, and catalog endpoints
  • Also handles space-separated queries from search engines (e.g. ghoapi.azureedge.net api dimension sex dimensionvalues)
  • When a URL is detected, the KV store includes an endpoint explainer with metadata and suggested next actions

Distribution analytics (in KV store summary and dataset mode):

  • Mean, standard deviation, variance
  • Percentiles: p25, median (p50), p75
  • Interquartile range (IQR)
  • Skewness (Fisher-Pearson)
  • Min, max, count
  • Computed across latest values per country for the primary indicator

Comparability score (0.0 to 1.0):

  • Single trust metric combining: country coverage ratio, data sparsity, CI width, year alignment, disaggregation consistency
  • Included in dataset mode output and KV store summary
  • Answers "can I trust this comparison?" — 0.8+ is solid, below 0.5 means interpret with caution

Coverage diagnostics and comparability flags (in KV store summary):

  • Countries requested vs returned, with missing country list
  • Year gaps in the returned data
  • Sparsity score (how sparse is the data matrix?)
  • Disaggregation availability (sex, age group, confidence intervals)
  • Comparability warnings: latest year mismatch across countries, low coverage, CI-heavy data, insufficient trend depth, mixed disaggregation risk
  • Query reproducibility block: full audit trail of resolved indicators, countries, filters, and parsed endpoints

Country and region filters:

  • Single country — Filter by ISO 3-letter code (e.g., USA, GBR, JPN)
  • Multiple countries — Compare up to 50 countries side by side
  • Country groups — EU (27), G7 (7), G20 (19), BRICS (9), OECD (38), Nordic (5), ASEAN (10) — one parameter expands to all member codes
  • WHO regions — AFR, AMR, SEAR, EUR, EMR, WPR
  • Year filteringyearFrom/yearTo range or lastNYears shortcut

Output and reliability:

  • Chart-ready JSONchart output format produces labels and datasets arrays for Chart.js or Plotly
  • Sort options — Sort by value (highest first), year (newest), country (A-Z), or growth (fastest YoY change)
  • Retry with backoff — Automatic retry on HTTP 429 and 5xx errors with exponential backoff (2^attempt seconds)
  • Circuit breaker — Stops after 5 consecutive API failures to avoid wasting time and credits
  • KV store summary — Summary statistics (top country, year range, record count, PPE charges) saved after each run

Analyst workflows

Build a panel dataset for regression:

  1. Set indicator: "WHOSIS_000001", mode: "dataset", countryGroup: "OECD", lastNYears: 20
  2. Get a country x year matrix with 38 countries, 20 years, distribution stats, and comparability score
  3. Import directly into R, Python, Stata — no reshaping needed

Compare OECD countries and export ranking:

  1. Set indicator: "WHOSIS_000001", mode: "compare", countryGroup: "OECD"
  2. Get ranked table with z-scores, percentiles, and trend classification
  3. Export as CSV for reports or pipe to a dashboard

Build a composite health index for a policy report:

  1. Set preset: "country_health_snapshot", mode: "scorecard", countryGroup: "G20", weights: [0.4, 0.2, 0.2, 0.2]
  2. Get a 0-100 composite score per country with per-indicator breakdown
  3. Use the executive summary from KV store for the report narrative

Benchmark a country against its peer group:

  1. Set indicator: "WHOSIS_000001", mode: "benchmark", countryGroup: "G7", benchmark: "peer_group_mean"
  2. Get each country's gap from the group mean — absolute and percentage
  3. Flag countries below benchmark for targeted analysis

Explore a WHO API endpoint you found:

  1. Paste the URL directly: indicator: "https://ghoapi.azureedge.net/api/WHOSIS_000001", mode: "auto"
  2. Actor detects the endpoint type, extracts the code, returns data as a panel dataset
  3. KV store includes an endpoint explainer with metadata and suggested next actions

Use cases

Health research — Build panel datasets from 2,000+ WHO indicators for epidemiological studies. dataset and multi_dataset modes produce regression-ready matrices with coverage diagnostics.

Country comparison dashboardschart output format returns Chart.js-ready JSON. compare mode produces ranked tables. benchmark mode adds gap analysis.

Policy analysiscompare mode ranks countries with trend direction, YoY change, and historical range. scorecard mode builds composite indices. Executive summaries are ready for briefings.

Development economics — Track health outcomes across G7, G20, BRICS, or OECD groups. trend mode calculates CAGR. benchmark mode compares against group averages.

Journalism — Pre-computed rankings, z-scores, and trend classifications. Same data used by governments and international organizations.

How to search WHO health data

  1. Enter an indicator code or keyword — Type WHOSIS_000001 for life expectancy, or a keyword like "mortality" to search. Use list mode first if you do not know the exact code.
  2. Set country and year filters — Choose a country group (e.g., G7), individual countries (e.g., USA), or a WHO region (e.g., EUR). Set lastNYears: 10 for the last decade.
  3. Choose an analysis modesearch for raw data, trend for CAGR and growth rates, compare for country rankings, top for Top N countries.
  4. Run and download results — Click "Start." Results appear in the Dataset tab as JSON, CSV, or Excel. Summary statistics are saved to the Key-Value Store under the SUMMARY key.

First run tips

  • Start with list mode — If you do not know the indicator code, run with mode: "list" and indicator: "mortality" to browse matching indicators and find the exact code
  • Use lastNYears instead of yearFrom/yearTo — Setting lastNYears: 10 always gives you the most recent decade without calculating exact years
  • Test with one country first — Set country: "USA" and maxResults: 50 to verify you have the right indicator before scaling to all 194 countries
  • Set maxResults high for trend mode — Trend analysis needs multiple years per country. For a G20 trend analysis, use maxResults: 2000 or higher
  • Check the KV store summary — After each run, open the Key-Value Store and look at the SUMMARY key for top country, year range, and total PPE charges

Input parameters

ParameterTypeRequiredDefaultDescription
indicatorstringYesIndicator code (e.g., WHOSIS_000001), keyword (e.g., mortality), or comma-separated codes (e.g., WHOSIS_000001,WHOSIS_000002). In list mode, enter a keyword or * for all.
modestringNosearchAnalysis mode: search, list, trend, compare, top, benchmark, scorecard, dataset, multi_dataset, or auto
weightsnumber[]NoCustom scorecard weights. One number per indicator, normalized to sum to 1. E.g. [0.5, 0.3, 0.2]
presetstringNoOne-click preset: country_health_snapshot, maternal_child_health, infectious_disease, health_system, mortality_overview. Overrides indicator field.
benchmarkstringNopeer_group_meanBenchmark reference in benchmark mode: peer_group_mean, peer_group_median, or top_quartile
countrystringNoISO 3-letter country code (e.g., USA, GBR). Leave empty for all countries.
countriesarrayNoList of ISO 3-letter codes for multi-country comparison. Max 50.
countryGroupstringNoPredefined group: EU, G7, G20, BRICS, OECD, NORDIC, ASEAN
regionstringNoWHO region: AFR, AMR, SEAR, EUR, EMR, WPR
lastNYearsintegerNoFetch data from the last N years. Overrides yearFrom.
yearFromintegerNoStart year (e.g., 2010). Overridden by lastNYears.
yearTointegerNoEnd year (e.g., 2023)
topNintegerNo10Number of top countries in top mode (1-194)
sortBystringNovalueSort: value (highest), year (newest), country (A-Z), growth (fastest YoY)
outputFormatstringNostandardstandard for dataset rows, chart for Chart.js/Plotly-ready JSON
maxResultsintegerNo100Max raw records to fetch from WHO API (1-10,000)

Input examples

G7 health snapshot using preset (one-click):

{
"indicator": "WHOSIS_000001",
"preset": "country_health_snapshot",
"countryGroup": "G7",
"lastNYears": 10
}

Life expectancy for G7 countries, last 10 years (compare mode):

{
"indicator": "WHOSIS_000001",
"mode": "compare",
"countryGroup": "G7",
"lastNYears": 10
}

Top 20 countries by under-five mortality:

{
"indicator": "WHOSIS_000015",
"mode": "top",
"topN": 20,
"sortBy": "value"
}

Paste a WHO API URL directly:

{
"indicator": "https://ghoapi.azureedge.net/api/WHOSIS_000001",
"countryGroup": "OECD",
"mode": "benchmark"
}

OECD health system scorecard using preset:

{
"indicator": "WHOSIS_000001",
"preset": "health_system",
"countryGroup": "OECD",
"mode": "scorecard"
}

Benchmark UK against G7 peers:

{
"indicator": "WHOSIS_000001",
"mode": "benchmark",
"countryGroup": "G7",
"benchmark": "peer_group_mean",
"lastNYears": 5
}

Panel dataset for G20 life expectancy:

{
"indicator": "WHOSIS_000001",
"mode": "dataset",
"countryGroup": "G20",
"lastNYears": 10
}

Cross-indicator matrix (multi-dataset):

{
"indicator": "WHOSIS_000001,NCD_BMI_30A,WHS4_100",
"mode": "multi_dataset",
"countryGroup": "G7",
"lastNYears": 5
}

Auto-detect WHO dimension URL:

{
"indicator": "https://ghoapi.azureedge.net/api/DIMENSION/SEX/DimensionValues",
"mode": "auto"
}

Custom-weighted scorecard:

{
"indicator": "WHOSIS_000001,NCD_BMI_30A,WHOSIS_000015",
"mode": "scorecard",
"countryGroup": "OECD",
"weights": [0.5, 0.3, 0.2]
}

Browse all immunization indicators:

{
"indicator": "immunization",
"mode": "list",
"maxResults": 50
}

Input tips

  • Start with defaultsmode: "search" and maxResults: 100 cover most single-country queries
  • Use country groups for quick comparisonscountryGroup: "OECD" expands to 38 country codes automatically
  • Combine indicators — Enter WHOSIS_000001,WHOSIS_000002 to fetch life expectancy and healthy life expectancy in one run
  • Set maxResults higher for analytics modes — Trend and compare modes need multiple years per country, so set maxResults: 1000 or higher for meaningful CAGR calculations

Output example

Search mode (one record)

{
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"country": "JPN",
"countryName": "Japan",
"year": 2021,
"value": "84.5",
"numericValue": 84.5,
"low": 84.1,
"high": 84.9,
"sex": "Both sexes",
"ageGroup": null,
"region": "Western Pacific",
"regionCode": "WPR",
"dataSource": "GHE",
"comments": null,
"rank": 1,
"percentile": 100,
"yearOverYearChange": 0.24,
"zScore": 1.82,
"peerGroupDistance": 6.3,
"dataCompleteness": 0.85,
"ciWidth": 0.8,
"uncertaintyScore": 0.95,
"uncertaintyFlag": null
}

Trend mode (one record)

{
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"country": "JPN",
"countryName": "Japan",
"region": "Western Pacific",
"years": [2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021],
"values": [83.1, 83.3, 83.5, 83.7, 83.9, 84.0, 84.1, 84.2, 83.8, 84.5],
"startValue": 83.1,
"endValue": 84.5,
"totalChange": 1.4,
"totalChangePercent": 1.68,
"cagr": 0.19,
"trend": "growing",
"dataPoints": 10
}

Compare mode (one record)

{
"country": "JPN",
"countryName": "Japan",
"region": "Western Pacific",
"latestYear": 2021,
"latestValue": 84.5,
"rank": 1,
"yearOverYearChange": 0.24,
"trend": "growing",
"min": 83.1,
"max": 84.5,
"average": 83.73,
"dataPoints": 10
}

Chart mode

{
"chartType": "line",
"title": "Life expectancy at birth (years)",
"labels": ["2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021"],
"datasets": [
{
"label": "Japan",
"data": [83.1, 83.3, 83.5, 83.7, 83.9, 84.0, 84.1, 84.2, 83.8, 84.5]
},
{
"label": "United States of America",
"data": [78.7, 78.8, 78.9, 78.7, 78.5, 78.5, 78.7, 78.8, 77.0, 77.2]
}
],
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)"
}

List mode

{
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"apiEndpoint": "https://ghoapi.azureedge.net/api/WHOSIS_000001",
"suggestedPresets": ["country_health_snapshot", "mortality_overview"]
}

Benchmark mode (one record)

{
"country": "GBR",
"countryName": "United Kingdom of Great Britain and Northern Ireland",
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"latestValue": 80.7,
"latestYear": 2021,
"benchmarkEntity": "Peer group mean",
"benchmarkValue": 81.4,
"absoluteGap": -0.7,
"percentGap": -0.86,
"rank": 5,
"percentile": 29,
"aboveBenchmark": false
}

Scorecard mode (one record)

{
"country": "JPN",
"countryName": "Japan",
"region": "Western Pacific",
"compositeScore": 87.3,
"rank": 1,
"percentile": 100,
"indicators": [
{ "code": "WHOSIS_000001", "name": "Life expectancy at birth (years)", "rawValue": 84.5, "normalizedScore": 98.2, "percentile": 100 },
{ "code": "WHOSIS_000015", "name": "Neonatal mortality rate", "rawValue": 0.9, "normalizedScore": 95.1, "percentile": 100 },
{ "code": "NCD_BMI_30A", "name": "Prevalence of obesity", "rawValue": 4.3, "normalizedScore": 92.8, "percentile": 100 },
{ "code": "WHS4_100", "name": "DPT3 immunization coverage", "rawValue": 98, "normalizedScore": 63.1, "percentile": 57 }
]
}

Dataset mode (one record per indicator)

{
"schemaVersion": "v2",
"schemaType": "panel_dataset",
"type": "panel_dataset",
"dimensions": ["country", "year"],
"indicator": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"matrix": {
"JPN": [83.1, 83.3, 83.5, 83.7, 83.9, 84.0, 84.1, 84.2, 83.8, 84.5],
"USA": [78.7, 78.8, 78.9, 78.7, 78.5, 78.5, 78.7, 78.8, 77.0, 77.2],
"GBR": [81.1, 81.2, 81.3, 81.2, 81.0, 81.1, 81.2, 81.3, 80.4, 80.7]
},
"years": [2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021],
"coverage": {
"countries": 3,
"years": 10,
"missingCells": 0,
"totalCells": 30
},
"distribution": {
"mean": 81.2,
"stdDev": 2.1,
"variance": 4.41,
"p25": 79.3,
"median": 81.2,
"p75": 83.5,
"iqr": 4.2,
"skew": -0.4,
"min": 77.0,
"max": 84.5,
"count": 3
},
"comparabilityScore": 0.92
}

Multi-dataset mode (one record total)

{
"schemaVersion": "v2",
"schemaType": "multi_indicator_panel",
"type": "multi_indicator_panel",
"countries": ["GBR", "JPN", "USA"],
"countryNames": { "GBR": "United Kingdom", "JPN": "Japan", "USA": "United States" },
"years": [2019, 2020, 2021],
"indicators": {
"WHOSIS_000001": {
"name": "Life expectancy at birth (years)",
"matrix": { "GBR": [81.3, 80.4, 80.7], "JPN": [84.2, 83.8, 84.5], "USA": [78.8, 77.0, 77.2] }
},
"NCD_BMI_30A": {
"name": "Prevalence of obesity",
"matrix": { "GBR": [27.8, 28.0, 28.2], "JPN": [4.2, 4.3, 4.3], "USA": [36.2, 36.5, 36.9] }
}
},
"coverage": { "indicators": 2, "countries": 3, "years": 3, "missingCells": 0, "totalCells": 18 }
}

Auto mode — dimension endpoint

{
"schemaVersion": "v2",
"schemaType": "dimension_lookup",
"sourceType": "dimension",
"dimension": "SEX",
"values": [
{ "code": "SEX_BTSX", "name": "Both sexes" },
{ "code": "SEX_MLE", "name": "Male" },
{ "code": "SEX_FMLE", "name": "Female" }
]
}

Output fields

Search mode fields

FieldTypeDescription
indicatorCodestringWHO indicator code (e.g., WHOSIS_000001)
indicatorNamestringHuman-readable indicator name
countrystringISO 3-letter country code
countryNamestringFull country name from WHO dimension data
yearnumber or nullReporting year
valuestring or nullRaw value string from WHO API (may include ranges like "13.0 [10.8-15.6]")
numericValuenumber or nullParsed numeric value for calculations
lownumber or nullLower bound of confidence interval
highnumber or nullUpper bound of confidence interval
sexstring or nullBoth sexes, Male, or Female. Mapped from WHO codes SEX_BTSX, SEX_MLE, SEX_FMLE.
ageGroupstring or nullAge group dimension when applicable
regionstring or nullWHO region name (e.g., "Western Pacific")
regionCodestring or nullWHO region code (e.g., WPR)
dataSourcestring or nullData source identifier from WHO
commentsstring or nullWHO data comments
ranknumber or nullRanking by value within the indicator
percentilenumber or nullPercentile within result set (0-100). 95 means better than 95% of results
yearOverYearChangenumber or nullPercentage change from previous year
zScorenumber or nullStandard deviations from global mean. Values beyond +/-2 are statistical outliers
peerGroupDistancenumber or nullAbsolute distance from the peer group mean value
dataCompletenessnumberScore from 0 to 1 — proportion of populated fields
ciWidthnumber or nullConfidence interval width (high minus low). Wider = more uncertain
uncertaintyScorenumber or nullCI width as percentage of the value. Above 50% = high uncertainty
uncertaintyFlagstring or nullnull = acceptable, moderate-uncertainty = CI 20-50% of value, high-uncertainty = CI >50%

Trend mode fields

FieldTypeDescription
yearsnumber[]Array of years in the time series
valuesnumber[]Array of values for each year
startValuenumberFirst value in the series
endValuenumberLast value in the series
totalChangenumberAbsolute change from start to end
totalChangePercentnumber or nullPercentage change from start to end
cagrnumber or nullCompound Annual Growth Rate as percentage
trendstring or nullgrowing (>5% change), stable, or declining (<-5%)
dataPointsnumberNumber of data points in the series

Compare mode fields

FieldTypeDescription
latestYearnumber or nullMost recent year with data
latestValuenumber or nullValue for the latest year
ranknumberCountry ranking by latest value (1 = highest)
percentilenumber or nullPercentile within the comparison set
yearOverYearChangenumber or nullYoY change from second-latest to latest year
zScorenumber or nullStandard deviations from comparison group mean
peerGroupDistancenumber or nullAbsolute distance from group mean value
trendstring or nullTrend classification
minnumber or nullMinimum value across all years
maxnumber or nullMaximum value across all years
averagenumber or nullAverage value across all years
spreadnumber or nullRange between max and min values
dataPointsnumberNumber of years with data

Benchmark mode fields

FieldTypeDescription
latestValuenumber or nullCountry's latest value for the indicator
latestYearnumber or nullYear of latest data point
benchmarkEntitystringBenchmark reference (e.g., "Peer group mean")
benchmarkValuenumberThe benchmark value being compared against
absoluteGapnumber or nullCountry value minus benchmark. Positive = above benchmark
percentGapnumber or nullGap as percentage of benchmark
ranknumberCountry ranking within the comparison set
percentilenumber or nullPercentile within set
aboveBenchmarkboolean or nullWhether the country is above the benchmark

Scorecard mode fields

FieldTypeDescription
compositeScorenumberWeighted composite score (0-100). Higher = better health outcomes
ranknumberCountry ranking by composite score
percentilenumber or nullPercentile within set
indicatorsarrayPer-indicator breakdown with raw value, normalized score (0-100), and percentile

Scorecard mode auto-inverts negative indicators (mortality, disease burden) so that lower values produce higher scores. All normalization is min-max within the comparison set. Custom weights via weights: [0.5, 0.3, 0.2] are normalized to sum to 1.

Dataset mode fields

FieldTypeDescription
schemaVersionstringAlways "v2"
schemaTypestring"panel_dataset"
matrixobjectCountry code keys mapping to arrays of values aligned with years
yearsnumber[]Sorted array of years (column headers for the matrix)
coverageobjectcountries, years, missingCells, totalCells
distributionobject or nullMean, stdDev, variance, p25, median, p75, IQR, skew, min, max, count
comparabilityScorenumber or nullTrust metric 0.0-1.0 combining coverage, CI width, year alignment

Multi-dataset mode fields

FieldTypeDescription
schemaVersionstringAlways "v2"
schemaTypestring"multi_indicator_panel"
countriesstring[]Sorted country codes
countryNamesobjectCountry code to name mapping
yearsnumber[]Sorted year array shared across all indicators
indicatorsobjectIndicator code keys, each containing name and matrix
coverageobjectindicators, countries, years, missingCells, totalCells

Auto mode — dimension fields

FieldTypeDescription
sourceTypestring"dimension"
dimensionstringDimension name (e.g. SEX, COUNTRY, REGION)
valuesarray[{code, name}] for each dimension value

How much does it cost to search WHO health data?

WHO Global Health Observatory Data Search uses pay-per-event pricing at $0.002 per record returned. Pricing anchored to real workflows:

What you getRecordsCost
G7 life expectancy comparison (10 years)~70$0.14
OECD health snapshot (1 indicator, 10 years)~380$0.76
G20 multi-indicator panel (5 indicators, 10 years)~2,000$4.00
Full extraction (max per run)10,000$20.00
Quick test (1 indicator, 1 country)~10$0.02

Set a spending limit in your Apify account to cap costs. Apify's free tier includes $5 of monthly platform credits — enough for a full OECD health dataset with 6 indicators.

The direct WHO GHO API at ghoapi.azureedge.net is free but returns raw OData responses that require pagination handling, OData filter syntax, manual aggregation, and no built-in analytics. To build a country comparison, you would need to fetch data with @odata.nextLink pagination, resolve dimension codes to names, compute year-over-year changes across country-indicator-year groups, calculate z-scores and percentiles, analyze confidence interval reliability, and reshape flat rows into usable matrices. WHO Global Health Observatory Data Search replaces all of this with one API call that returns ranked, benchmarked, analysis-ready output.

Search WHO health data using the API

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/who-gho-search").call(run_input={
"indicator": "WHOSIS_000001",
"mode": "compare",
"countryGroup": "G7",
"lastNYears": 10
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['countryName']}: {item['latestValue']} (rank #{item['rank']})")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/who-gho-search").call({
indicator: "WHOSIS_000001",
mode: "trend",
countryGroup: "BRICS",
lastNYears: 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
console.log(`${item.countryName}: CAGR ${item.cagr}%, trend: ${item.trend}`);
}

cURL

curl -X POST "https://api.apify.com/v2/acts/ryanclinton~who-gho-search/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"indicator": "WHOSIS_000001",
"mode": "top",
"topN": 10,
"lastNYears": 5
}'
# Retrieve results
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

How WHO Global Health Observatory Data Search works

Mental model: Indicator input -> resolve code -> build OData filter -> fetch paginated data -> compute analytics -> output enriched JSON.

Indicator resolution

WHO Global Health Observatory Data Search examines your input. If it matches the pattern of an indicator code (uppercase letters, digits, underscores), it queries ghoapi.azureedge.net/api/Indicator?$filter=IndicatorCode eq '{code}'. If it looks like a keyword, it searches with contains(IndicatorName,'{keyword}'). Comma-separated inputs resolve each code independently. If more than 10 indicators match a keyword, the actor limits to the first 10.

Country and filter resolution

Country groups expand to their ISO codes (e.g., G7 becomes CAN, FRA, DEU, ITA, JPN, GBR, USA). The lastNYears parameter converts to a yearFrom value based on the current year. WHO Global Health Observatory Data Search builds an OData $filter string combining SpatialDimType eq 'COUNTRY', country codes (as OR clauses, batched in groups of 40), region code, and year range.

Data fetching with reliability

For each resolved indicator, WHO Global Health Observatory Data Search calls ghoapi.azureedge.net/api/{IndicatorCode} with the filter string. It handles OData pagination (1,000 records per page via @odata.nextLink), retries on HTTP 429 and 5xx errors with exponential backoff (2^attempt seconds), and stops after 5 consecutive failures (circuit breaker pattern).

Analytics computation

On the fetched records, WHO Global Health Observatory Data Search computes:

  • Year-over-year change: ((current - previous) / |previous|) * 100 for each country-indicator-year group
  • Data completeness: Proportion of 13 key fields that are populated (0 to 1 scale)
  • CAGR (trend mode): (endValue / startValue)^(1/years) - 1 expressed as percentage
  • Trend classification: >5% total change = growing, <-5% = declining, otherwise stable
  • Rankings: Countries ranked by numeric value within each indicator (descending)

Tips for best results

  1. Use list mode to discover indicators first. Run indicator: "immunization", mode: "list" to find the exact code before running a data query.
  2. Set maxResults high for trend and compare modes. These modes need multiple years per country. For a G20 trend analysis, set maxResults: 2000 or higher.
  3. Filter by sex dimension in post-processing. Search mode returns separate records for Male, Female, and Both sexes. Trend and compare modes automatically filter to "Both sexes."
  4. Use chart output for dashboards. Set outputFormat: "chart" and pass the JSON directly to Chart.js or Plotly without transformation.
  5. Combine with year filtering for focused datasets. lastNYears: 5 with countryGroup: "OECD" produces a focused, recent dataset.
  6. Check data completeness scores. Records with dataCompleteness below 0.5 may be missing confidence intervals, sex breakdowns, or data source fields.

Combine with other Apify actors

ActorHow to combine
World Bank Development IndicatorsCross-reference WHO health outcomes with GDP, poverty rates, and education spending
Clinical Trial TrackerConnect population-level WHO data with clinical research activity by disease area
OpenAlex Research Paper SearchFind academic papers on health topics to contextualize WHO statistics
PubMed Biomedical Literature SearchSource primary research to complement WHO health indicators
Open Food FactsCombine WHO nutrition indicators with product-level dietary data

Limitations

  • Data freshness depends on WHO reporting. Most indicators lag 1-3 years behind the current date due to country reporting timelines.
  • Max 10 indicators per keyword search. If a keyword matches 200+ indicators, only the first 10 are fetched. Use exact codes for specific indicators.
  • No subnational data. The WHO GHO API provides country-level data only. The actor applies SpatialDimType eq 'COUNTRY' to exclude regional aggregates.
  • Trend mode requires 2+ years per country. Countries with a single data point for an indicator are excluded from trend analysis.
  • Some indicators have sparse coverage. Not all 194 countries report on all indicators. Data completeness varies.
  • Max 10,000 records per run. For full database extractions, run multiple queries with different filters.
  • WHO API rate limits. The GHO API may throttle requests during peak usage. WHO Global Health Observatory Data Search retries automatically but large queries may be slower.
  • Indicator names in English only. The WHO GHO API returns indicator names in English as provided by the WHO.

Integrations

  • Zapier — Trigger WHO data pulls on schedule and push results to Google Sheets or databases
  • Make — Build automated health data pipelines with country comparison triggers
  • Google Sheets — Export WHO health statistics directly to spreadsheets for team analysis
  • Apify API — Integrate WHO data queries into any programming language or platform
  • Webhooks — Trigger database writes or dashboard refreshes when a run completes

How to use the WHO GHO API

The WHO GHO API is an OData-based API for global health data at ghoapi.azureedge.net.

  1. Find an indicator code: https://ghoapi.azureedge.net/api/Indicator
  2. Query data for that indicator: https://ghoapi.azureedge.net/api/WHOSIS_000001
  3. Filter by country: ?$filter=SpatialDim eq 'USA'
  4. Filter by year: ?$filter=TimeDim ge 2015
  5. Handle pagination via @odata.nextLink
  6. Parse raw OData JSON response

Using WHO Global Health Observatory Data Search: no OData syntax required. One call returns structured datasets with rankings, trends, benchmarks, and analytics. Paste any ghoapi.azureedge.net URL directly or enter an indicator code.

How to compare countries using WHO data

To compare countries using WHO GHO data manually: query each country separately, align years, compute rankings, calculate statistics. This requires multiple API calls and manual aggregation.

Using WHO Global Health Observatory Data Search:

  1. Set indicator: "WHOSIS_000001" (or any indicator code)
  2. Set mode: "compare" and countryGroup: "G7" (or list specific countries)
  3. Output: ranked table with z-scores, percentiles, YoY change, trend direction, min/max/average, and spread per country

For gap analysis: use mode: "benchmark" with benchmark: "peer_group_mean" to see each country's distance from the group average.

How to get life expectancy data from the WHO API

To get life expectancy data from the WHO GHO API directly:

  1. Use indicator code WHOSIS_000001
  2. Query https://ghoapi.azureedge.net/api/WHOSIS_000001
  3. Filter by country using $filter=SpatialDim eq 'USA'
  4. Filter by year using $filter=TimeDim ge 2015
  5. Handle pagination via @odata.nextLink
  6. Parse raw OData JSON, compute your own rankings and trends

Using WHO Global Health Observatory Data Search instead:

  • Input: WHOSIS_000001 (or paste the full URL)
  • Mode: dataset for a country x year matrix, compare for ranked table, benchmark for peer-group gap analysis
  • Output: panel dataset with distribution stats, rankings with z-scores, or benchmark gaps — no OData handling needed

WHOSIS_000001 endpoint explained

The endpoint https://ghoapi.azureedge.net/api/WHOSIS_000001 returns life expectancy at birth (years) from the WHO Global Health Observatory. Each record contains one country, one year, with optional sex and age disaggregation. Raw OData format requires pagination and manual filtering.

Using WHO Global Health Observatory Data Search, this endpoint becomes a ranked, benchmarked panel dataset. Paste the URL directly into the indicator field with mode: "auto" and get a country x year matrix with distribution analytics and comparability scoring.

DIMENSION/COUNTRY/DimensionValues endpoint explained

The endpoint https://ghoapi.azureedge.net/api/DIMENSION/COUNTRY/DimensionValues returns all WHO member state country codes and names. In raw OData format, it returns paginated JSON with Code and Title fields.

Using WHO Global Health Observatory Data Search with mode: "auto", paste the URL and get a clean lookup table: [{code: "USA", name: "United States of America"}, ...]. No pagination handling needed.

DIMENSION/SEX/DimensionValues endpoint explained

The endpoint https://ghoapi.azureedge.net/api/DIMENSION/SEX/DimensionValues returns sex dimension values used across WHO indicators: Both sexes (SEX_BTSX), Male (SEX_MLE), Female (SEX_FMLE). WHO Global Health Observatory Data Search automatically maps these codes to human-readable names in all output modes.

How to find WHO GHO indicator codes

If you encounter a URL like https://ghoapi.azureedge.net/api/WHOSIS_000001 and want to know what indicator it refers to, paste it directly into WHO Global Health Observatory Data Search. The actor auto-detects the indicator code and returns data with the full indicator name. To browse all available indicators, set indicator: "*" and mode: "list" — each result includes the API endpoint URL and matching presets.

How to compare life expectancy across countries

Set indicator: "WHOSIS_000001", choose mode: "compare", and select a country group like G7 or OECD. WHO Global Health Observatory Data Search returns a ranking table with each country's latest life expectancy, z-score (standard deviations from group mean), percentile, YoY change, trend direction, and min/max/average/spread. For gap analysis, use mode: "benchmark" to see each country's distance from the group mean or median.

How to get mortality rates from the WHO API

Search for mortality indicators using indicator: "mortality" in list mode. Then use the specific code (e.g., WHOSIS_000015 for under-five mortality) with mode: "top" and topN: 20 to get the 20 countries with the highest rates. For a full mortality profile, use preset: "mortality_overview" which combines life expectancy, healthy life expectancy, adult mortality, and probability of dying 30-70.

How to build a WHO health dataset for research

Use mode: "dataset" with a country group and time range. Example: indicator: "WHOSIS_000001", mode: "dataset", countryGroup: "OECD", lastNYears: 20. Returns a country x year panel matrix ready for regression — no reshaping required. Includes distribution analytics (mean, stdDev, IQR, skew) and a comparability score so you know whether the data is suitable for cross-country analysis.

How to build a composite health index

Use mode: "scorecard" with comma-separated indicators or a preset. Example: preset: "country_health_snapshot", mode: "scorecard", countryGroup: "G20", weights: [0.4, 0.2, 0.2, 0.2]. Returns a 0-100 composite score per country with per-indicator breakdown. Negative indicators (mortality, obesity) are auto-inverted so lower values produce higher scores.

Common WHO API queries this tool solves

  • How to get WHO life expectancy data by country and year
  • How to compare health indicators across G7, G20, OECD, or BRICS countries
  • How to calculate CAGR and growth trends from WHO health indicators
  • How to build a panel dataset from WHO GHO data for regression analysis
  • How to benchmark a country against its peer group on health outcomes
  • How to create a composite health index from multiple WHO indicators
  • How to understand WHO GHO API endpoint URLs and indicator codes
  • How to get WHO dimension values (countries, regions, sex categories)

Troubleshooting

No data found with current filters. The indicator may not have data for your selected countries or year range. Run with mode: "list" first to verify the indicator exists, then try without country or year filters.

"Unknown country group" error. Valid groups are: EU, G7, G20, BRICS, OECD, NORDIC, ASEAN (case-insensitive).

"Invalid country code" error. Country codes must be exactly 3 letters in ISO 3166-1 alpha-3 format (e.g., USA not US, GBR not UK).

Fewer results than expected in trend mode. Trend mode filters to "Both sexes" only and requires at least 2 years of data per country. Countries with one data point are excluded.

Run stopped after 5 failures. The circuit breaker activated because the WHO API returned 5 consecutive errors. This typically happens during WHO API maintenance. Try again later.

FAQ

How do I search WHO Global Health Observatory data? Provide an indicator code (e.g., WHOSIS_000001) or keyword (e.g., "mortality"), set optional country and year filters, choose an analysis mode, and run WHO Global Health Observatory Data Search. Results appear as structured JSON in the dataset.

What is the WHO GHO OData API at ghoapi.azureedge.net? The WHO Global Health Observatory OData API at https://ghoapi.azureedge.net/api is the official programmatic interface to WHO health statistics. It uses OData v4 query syntax and serves 2,000+ indicators across 194 countries. WHO Global Health Observatory Data Search wraps this API, handles pagination, and adds analytics.

What WHO health indicators are available? The GHO contains 2,000+ indicators covering life expectancy, mortality rates, immunization coverage, disease prevalence (HIV, TB, malaria), health system financing, nutrition, environmental health, and substance use. Use mode: "list" with a keyword to browse by topic.

Can I use WHO Global Health Observatory Data Search for academic research? WHO GHO data is publicly available and widely cited in peer-reviewed research. WHO Global Health Observatory Data Search outputs structured JSON with indicator codes and data sources for proper WHO citation. Each record includes the original indicatorCode for reference.

How does WHO Global Health Observatory Data Search handle missing data? The dataCompleteness field scores each record from 0 to 1, indicating the proportion of 13 key fields that are populated. Records with null numericValue are included in search mode but excluded from ranking and trend calculations.

What is the difference between search mode and compare mode? Search mode returns individual data rows with computed fields (YoY change, completeness, ranking). Compare mode aggregates data per country and returns one row per country with the latest value, trend direction, min/max/average, and ranking — designed for side-by-side country comparison tables.

Can I get WHO health data in Chart.js format? Set outputFormat: "chart" and WHO Global Health Observatory Data Search returns JSON with labels (years as strings) and datasets (one object per country with a data array). Pass this directly to new Chart() or Plotly without transformation.

How do I compare BRICS countries on health indicators? Set countryGroup: "BRICS" to expand to Brazil, Russia, India, China, South Africa, Egypt, Ethiopia, Iran, and UAE. Use mode: "compare" for a ranked table or mode: "trend" for CAGR and growth rates over time.

What does the CAGR field mean in trend mode? CAGR (Compound Annual Growth Rate) is the smoothed annual rate of change over the entire time series. Calculated as (endValue / startValue)^(1/years) - 1 and expressed as a percentage. A CAGR of 0.5% for life expectancy means life expectancy grew at 0.5% per year on average.

What do the z-score and percentile fields mean? The z-score shows how many standard deviations a country's value is from the global mean. A z-score of +2.3 for Japan's life expectancy means Japan is 2.3 standard deviations above average — a statistical outlier. The percentile shows the country's ranking as a percentage: a percentile of 95 means the country scores higher than 95% of all countries in the result set. Both are computed per indicator across all countries returned.

What do the uncertainty fields mean? WHO data includes confidence intervals (low/high bounds) for many indicators. The ciWidth is the width of that interval (high minus low). The uncertaintyScore expresses that width as a percentage of the value — a score of 45 means the confidence interval is 45% as wide as the value itself. Records with uncertaintyFlag: "high-uncertainty" (>50%) should be interpreted with caution, especially in academic publications.

What are presets and how do I use them? Presets are one-click analysis configurations that auto-select the right indicators for common health analyses. Set preset: "country_health_snapshot" with a country group like G7 to instantly compare life expectancy, neonatal mortality, obesity, and immunization across 7 countries. Available presets: country_health_snapshot, maternal_child_health, infectious_disease, health_system, mortality_overview. Presets override the indicator field and default to an appropriate analysis mode.

What is the executive summary? After each run, WHO Global Health Observatory Data Search saves an executive summary to the key-value store under the SUMMARY key. It includes: headline finding, leader and laggard countries, statistical outliers (countries >2 standard deviations from mean), overall trend direction, completeness caveats, uncertainty warnings, and an array of key findings. Access it via the Apify API or console. Example: "headline": "Life expectancy across 7 countries — Japan leads at 84.5".

What is the difference between ghoapi.azureedge.net and the WHO GHO website? ghoapi.azureedge.net is the OData API endpoint for programmatic access. The WHO GHO website (gho.who.int) provides the same data through a visual interface with built-in charts. WHO Global Health Observatory Data Search queries the API and adds trend analytics not available through either interface.

Is it legal to use WHO GHO data? WHO GHO data is public data published by the World Health Organization for research, policy, and educational use. WHO Global Health Observatory Data Search accesses only publicly available API endpoints without authentication. Users should comply with WHO's terms of use and cite data appropriately. Legality of specific uses depends on jurisdiction — consult legal counsel for commercial applications.

Can I track health indicator changes over time automatically? Use Apify's scheduler to run WHO Global Health Observatory Data Search weekly or monthly with the same indicator and country filters. Connect to Google Sheets or a webhook to compare results across runs and detect changes.

Help us improve

If you encounter issues, you can help us debug faster by enabling run sharing in your Apify account:

  1. Go to Account Settings > Privacy
  2. Enable Share runs with public Actor creators

This lets us see your run details when something goes wrong, so we can fix issues faster. Your data is only visible to the actor developer, not publicly.

Support

Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom solutions or enterprise integrations, reach out through the Apify platform.

Responsible use

  • WHO Global Health Observatory Data Search accesses publicly available health statistics from the WHO GHO OData API (ghoapi.azureedge.net). It does not bypass authentication, CAPTCHAs, or access restricted content.
  • Users are responsible for ensuring their use complies with WHO's terms of use and applicable data protection regulations in their jurisdiction.
  • Cite data appropriately using the indicatorCode and indicatorName fields. Data originates from the World Health Organization Global Health Observatory.
  • Do not present lagged data as current-year statistics without noting the reporting year.
  • For guidance on web scraping legality, see Apify's guide.

Recent updates

  • 5 analysis modes — Added trend, compare, and top modes alongside search and list
  • Country group presets — Added EU, G7, G20, BRICS, OECD, Nordic, ASEAN one-click comparisons
  • Trend analytics — Added CAGR, total change percentage, and trend classification per country
  • Chart-ready output — Added Chart.js/Plotly-compatible JSON format with labels and datasets arrays
  • Year-over-year change — Added YoY percentage change computation on every record
  • Data completeness scoring — Added per-record quality score based on populated fields
  • Circuit breaker — Added automatic stop after 5 consecutive API failures