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 WHO Global Health Observatory for 2,000+ health indicators across 194 countries. Get life expectancy, mortality, disease, immunization, and health system data with country and year filtering. Free WHO OData API.

Pricing

from $2.00 / 1,000 indicator fetcheds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Share

WHO Global Health Observatory Search

Search the World Health Organization's Global Health Observatory for health statistics across 194 member countries. This Apify actor queries the official WHO GHO OData API to retrieve structured data on over 2,000 health indicators -- including life expectancy, mortality rates, disease prevalence, immunization coverage, nutrition, environmental health, and health system capacity. Search by indicator code or keyword, filter by country and year range, and receive clean JSON output with confidence intervals, sex breakdowns, and age group stratification ready for research, analysis, or integration into public health workflows.


Accessing the WHO GHO OData API directly requires understanding OData query syntax, constructing complex $filter expressions, handling paginated responses with @odata.nextLink, resolving cryptic indicator codes to human-readable names, and mapping dimension codes like SEX_BTSX, SEX_MLE, and SEX_FMLE to meaningful labels. This actor handles all of that complexity for you. Provide an indicator keyword or code, optionally filter by country and year, click Start (or call the API), and receive clean, structured JSON with every field normalized and ready for analysis. No OData expertise, no code to write, no infrastructure to maintain.

Running on Apify's cloud platform gives you scheduled runs for continuous health data monitoring, built-in dataset storage with export to JSON, CSV, and Excel, and one-click integrations with Google Sheets, Slack, Zapier, Make, and hundreds of other services. For public health researchers, this means automated weekly or monthly extraction of disease surveillance data. For journalists covering global health, it means bulk data retrieval that would take hours through the WHO's web interface completed in under a minute. For NGOs and policy analysts, it means programmatic access to the same authoritative statistics used by governments and international organizations worldwide.


Key features

  • 2,000+ health indicators -- Access the full breadth of WHO health data including life expectancy, child mortality, maternal health, HIV/AIDS, tuberculosis, malaria, immunization coverage, nutrition, water and sanitation, air quality, health workforce, and universal health coverage metrics
  • Smart indicator resolution -- Enter a keyword like "mortality" or "immunization" and the actor automatically searches the indicator catalog using OData contains() filtering, or enter an exact code like WHOSIS_000001 for precise lookup
  • 194 WHO member countries -- Retrieve data for any country using ISO 3-letter codes (USA, GBR, JPN, BRA, IND, CHN) with automatic resolution to full country names via the COUNTRY dimension endpoint
  • Year range filtering -- Narrow results to a specific time period using yearFrom and yearTo parameters, powered by OData ge and le operators on the TimeDim field
  • Confidence intervals -- Output includes low and high bounds when the WHO provides uncertainty estimates, enabling proper statistical interpretation of health metrics
  • Sex and age breakdowns -- Results include human-readable sex labels (Male, Female, Both sexes) mapped from WHO dimension codes, plus age group stratification when available across Dim1, Dim2, and Dim3 fields
  • Multi-indicator support -- Keyword searches matching multiple indicators return data from up to 10 matching indicators in a single run, with maxResults distributed across them
  • Automatic pagination -- Handles large datasets by following OData @odata.nextLink pagination, fetching up to your specified maximum of 10,000 results
  • WHO region labels -- Each record includes the WHO regional classification (e.g., Western Pacific, South-East Asia, European) for geographic grouping and analysis
  • No API key required -- The WHO GHO OData API is free and open, requiring no authentication or registration
  • Country-level filtering -- Automatically applies SpatialDimType eq 'COUNTRY' to skip regional aggregates and return only country-level data points
  • Newest data first -- Results are sorted by TimeDim desc so the most recent data appears at the top of your dataset

How to use

Using Apify Console

  1. Navigate to the WHO Global Health Observatory Search actor page on the Apify Store and click Try for free.
  2. On the Input tab, enter an indicator code or keyword in the Indicator field. For example:
    • WHOSIS_000001 -- Life expectancy at birth
    • mortality -- All mortality-related indicators
    • immunization -- Vaccination coverage indicators
    • tuberculosis -- TB incidence and treatment data
    • NUTRITION_WH_2 -- Childhood wasting prevalence
  3. Optionally enter a Country Code (ISO 3-letter, such as USA, GBR, JPN, DEU, IND, BRA) to limit results to one country.
  4. Optionally set Year From and Year To to restrict the time range (e.g., 2015 to 2023 for SDG-era data).
  5. Adjust Max Results if you need more or fewer records (default is 100, maximum is 10,000).
  6. Click Start to run the actor.
  7. Once the run finishes, open the Dataset tab to view, filter, and export results as JSON, CSV, or Excel.

Using the API

Call the actor programmatically using the Apify REST API, official client libraries, or cURL:

cURL:

curl "https://api.apify.com/v2/acts/jgahofLKxi6FAycgA/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"indicator": "WHOSIS_000001",
"country": "JPN",
"yearFrom": 2015,
"yearTo": 2023,
"maxResults": 100
}'

Input parameters

ParameterTypeRequiredDefaultDescription
indicatorStringYesWHOSIS_000001WHO indicator code (e.g., WHOSIS_000001 for life expectancy) or keyword to search indicators (e.g., mortality, immunization, malaria, nutrition). If the input is all uppercase with underscores/digits, it is verified as an exact code first; otherwise it performs a keyword search.
countryStringNo--ISO 3-letter country code to filter results (e.g., USA, GBR, JPN, DEU, IND, BRA, CHN). Leave empty for all countries.
yearFromIntegerNo--Start year for filtering results (e.g., 2010). Uses OData TimeDim ge filter.
yearToIntegerNo--End year for filtering results (e.g., 2023). Uses OData TimeDim le filter.
maxResultsIntegerNo100Maximum number of results to return. Range: 1 to 10,000. For keyword searches matching multiple indicators, results are distributed across up to 10 indicators.

Example inputs

Life expectancy in Japan (2015--2023):

{
"indicator": "WHOSIS_000001",
"country": "JPN",
"yearFrom": 2015,
"yearTo": 2023,
"maxResults": 100
}

Search all mortality indicators globally:

{
"indicator": "mortality",
"maxResults": 500
}

Immunization coverage in India:

{
"indicator": "immunization",
"country": "IND",
"maxResults": 200
}

Tips

  • Use keywords for exploration. If you do not know the exact indicator code, search for broad terms like "mortality", "immunization", "malaria", "nutrition", or "tuberculosis" to discover available indicators.
  • Use exact codes for precision. Once you know which indicator you need, use the official code (e.g., WHOSIS_000001) for faster, more targeted results.
  • Country codes are ISO 3166-1 alpha-3. Common examples: USA (United States), GBR (United Kingdom), DEU (Germany), FRA (France), JPN (Japan), CHN (China), IND (India), BRA (Brazil), AUS (Australia), CAN (Canada), NGA (Nigeria), ZAF (South Africa).
  • Set year ranges for focused results. Many indicators have decades of historical data. Narrow to a specific period to reduce result size and focus on the data you need.
  • Increase maxResults for global datasets. The default of 100 is sufficient for single-country queries but may truncate multi-country, multi-year datasets.

Output

Each result in the dataset contains the following structure:

{
"indicatorCode": "WHOSIS_000001",
"indicatorName": "Life expectancy at birth (years)",
"country": "JPN",
"countryName": "Japan",
"year": 2021,
"value": "84.8",
"numericValue": 84.8,
"low": null,
"high": null,
"sex": "Both sexes",
"ageGroup": null,
"region": "Western Pacific",
"worldBankIncomeGroup": null
}

Example with sex breakdown and confidence intervals (infant mortality):

[
{
"indicatorCode": "MDG_0000000001",
"indicatorName": "Infant mortality rate (probability of dying between birth and age 1 per 1000 live births)",
"country": "BRA",
"countryName": "Brazil",
"year": 2021,
"value": "13.0 [10.8-15.6]",
"numericValue": 13.0,
"low": 10.8,
"high": 15.6,
"sex": "Both sexes",
"ageGroup": null,
"region": "Americas",
"worldBankIncomeGroup": null
},
{
"indicatorCode": "MDG_0000000001",
"indicatorName": "Infant mortality rate (probability of dying between birth and age 1 per 1000 live births)",
"country": "BRA",
"countryName": "Brazil",
"year": 2021,
"value": "14.2 [11.8-17.1]",
"numericValue": 14.2,
"low": 11.8,
"high": 17.1,
"sex": "Male",
"ageGroup": null,
"region": "Americas",
"worldBankIncomeGroup": null
},
{
"indicatorCode": "MDG_0000000001",
"indicatorName": "Infant mortality rate (probability of dying between birth and age 1 per 1000 live births)",
"country": "BRA",
"countryName": "Brazil",
"year": 2021,
"value": "11.7 [9.7-14.1]",
"numericValue": 11.7,
"low": 9.7,
"high": 14.1,
"sex": "Female",
"ageGroup": null,
"region": "Americas",
"worldBankIncomeGroup": null
}
]

Output fields

FieldTypeDescription
indicatorCodeStringOfficial WHO GHO indicator code (e.g., WHOSIS_000001, MDG_0000000001). Use this code in future runs for exact indicator lookup.
indicatorNameStringHuman-readable indicator name as defined in the WHO GHO indicator catalog.
countryStringISO 3166-1 alpha-3 country code (e.g., JPN, USA, BRA).
countryNameStringFull country name resolved from the WHO COUNTRY dimension endpoint.
yearNumber or nullYear of the data point (TimeDim from the GHO API). Sorted newest first.
valueStringThe reported value as a string, preserving original WHO formatting (may include ranges like "13.0 [10.8-15.6]").
numericValueNumber or nullNumeric representation of the value when available. Use this for calculations and charting.
lowNumber or nullLower bound of the confidence interval. Null if the WHO does not provide uncertainty estimates for this indicator.
highNumber or nullUpper bound of the confidence interval. Null if the WHO does not provide uncertainty estimates for this indicator.
sexString or nullSex dimension label: "Both sexes", "Male", or "Female". Mapped from WHO codes SEX_BTSX, SEX_MLE, SEX_FMLE. Null if the indicator is not sex-disaggregated.
ageGroupString or nullAge group dimension extracted from the record's Dim1, Dim2, or Dim3 fields when the dimension type is AGEGROUP. Null if the indicator is not age-stratified.
regionString or nullWHO regional classification (e.g., "Western Pacific", "Americas", "South-East Asia", "European", "African", "Eastern Mediterranean").
worldBankIncomeGroupString or nullWorld Bank income group classification. Reserved for future enrichment.

Use cases

  • Public health research -- Extract longitudinal health data for epidemiological studies, comparative health analyses, and evidence-based policy research across countries and time periods
  • Disease surveillance -- Monitor trends in disease incidence (HIV, TB, malaria, NTDs) and vaccination coverage rates to track progress toward global health targets
  • SDG monitoring -- Track Sustainable Development Goal health indicators (Goal 3: Good Health and Well-being) including maternal mortality, child mortality, infectious disease rates, and universal health coverage
  • Health equity analysis -- Compare health outcomes across countries, regions, and income groups to identify disparities and measure progress toward equity
  • Journalism and reporting -- Access authoritative WHO statistics for data-driven reporting on global health topics, pandemic impacts, and country comparisons
  • NGO program evaluation -- Benchmark health outcomes in target countries against regional and global averages to measure program effectiveness
  • Academic publications -- Source verified WHO data for use in peer-reviewed research papers, dissertations, and systematic reviews
  • Investment and development analysis -- Assess health system capacity and disease burden in countries for development finance, impact investing, and risk assessment
  • Data visualization -- Feed structured health data into dashboards, charts, and interactive visualizations using tools like Tableau, Power BI, or D3.js
  • Cross-dataset correlation -- Combine WHO health data with economic indicators (World Bank, IMF), environmental data, or demographic statistics for multidimensional analysis

API & Integration

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run_input = {
"indicator": "WHOSIS_000001",
"country": "JPN",
"yearFrom": 2015,
"yearTo": 2023,
"maxResults": 100,
}
run = client.actor("jgahofLKxi6FAycgA").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
sex = item.get("sex", "N/A")
value = item.get("numericValue", "N/A")
print(f"{item['countryName']} ({item['year']}) -- {item['indicatorName']}: {value} [{sex}]")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("jgahofLKxi6FAycgA").call({
indicator: "WHOSIS_000001",
country: "JPN",
yearFrom: 2015,
yearTo: 2023,
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
const sex = item.sex || "N/A";
const value = item.numericValue ?? "N/A";
console.log(`${item.countryName} (${item.year}) -- ${item.indicatorName}: ${value} [${sex}]`);
}

cURL

# Start a run
curl "https://api.apify.com/v2/acts/jgahofLKxi6FAycgA/runs" \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"indicator": "mortality", "country": "USA", "yearFrom": 2015, "maxResults": 200}'
# Fetch dataset results (use defaultDatasetId from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?format=json" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Integrations

Connect WHO Global Health Observatory Search to your existing tools and workflows:

  • Google Sheets -- Automatically export health statistics to a spreadsheet for team analysis and reporting
  • Slack / Email -- Get notified when new health data matching your criteria becomes available using Apify webhooks
  • Zapier / Make -- Route data to databases, dashboards, CRMs, or hundreds of other third-party apps
  • REST API -- Fetch results programmatically from any language or platform using the Apify dataset API
  • Scheduled runs -- Set up Apify schedules to run weekly or monthly data extractions automatically
  • Webhooks -- Trigger downstream actions (database writes, dashboard refreshes, alerts) whenever a run completes

How it works

The actor follows a multi-step pipeline to retrieve and enrich health data from the WHO GHO OData API:

  1. Indicator resolution -- Examines the input string. If it matches the pattern of an indicator code (uppercase letters, digits, and underscores), verifies it via an exact match query against the /Indicator endpoint. Otherwise, performs a keyword search using the OData contains(IndicatorName, ...) filter. Falls back from lowercase to original case if the first search yields no results.
  2. Multi-indicator handling -- If a keyword search matches more than 10 indicators, the actor limits to the first 10 and distributes the maxResults quota across them to provide a representative sample.
  3. Country dimension loading -- Fetches all values from the /DIMENSION/COUNTRY/DimensionValues endpoint with full pagination to build a code-to-name mapping (e.g., JPN to "Japan", BRA to "Brazil").
  4. Data query construction -- Builds an OData $filter string combining SpatialDimType eq 'COUNTRY' (to exclude regional aggregates), optional country filter (SpatialDim eq), and optional year range (TimeDim ge / TimeDim le). Applies $orderby=TimeDim desc and $top for pagination control.
  5. Paginated data fetching -- Fetches data records for each indicator, following @odata.nextLink URLs until the per-indicator allocation or maxResults cap is reached.
  6. Data transformation -- Maps raw GHO records to clean output format: resolves country codes to names, translates sex dimension codes (SEX_BTSX, SEX_MLE, SEX_FMLE) to labels, extracts age group from whichever dimension (Dim1, Dim2, Dim3) has type AGEGROUP, and preserves confidence intervals from Low and High fields.
  7. Dataset push -- Pushes transformed records to the Apify dataset for export and integration.
Input (indicator keyword/code + filters)
|
v
[Resolve Indicator] ---> Exact code match OR keyword search via OData contains()
|
v
[Load Country Map] ---> Paginated fetch of COUNTRY dimension values
|
v
[Build OData Filter] ---> SpatialDimType + country + year range
|
v
[Fetch Data per Indicator] ---> Paginated with $top and @odata.nextLink
|
v
[Transform Records] ---> Country names, sex labels, age groups, confidence intervals
|
v
[Push to Apify Dataset] ---> JSON, CSV, Excel export

Performance & cost

ScenarioResultsApprox. durationMemoryEstimated cost
Single indicator, single country10--505--15 seconds256 MB< $0.001
Single indicator, all countries10010--20 seconds256 MB~$0.002
Keyword search, single country100--20015--30 seconds256 MB~$0.003
Keyword search, all countries50030--60 seconds256 MB~$0.005
Large global dataset1,000--5,0001--3 minutes256 MB~$0.010
Maximum extraction10,0003--8 minutes256 MB~$0.020
  • The actor makes lightweight JSON API calls to the WHO GHO OData endpoint -- no browser rendering or web scraping overhead.
  • The WHO GHO API is free and does not require an API key, so there are no external API costs.
  • Apify's free tier includes $5/month of platform credits, which covers hundreds of typical runs.
  • Cost scales primarily with the number of paginated API requests and the volume of records processed.
  • Scheduled runs for weekly monitoring of specific indicators are very economical.

Limitations

  • Country-level data only -- The actor filters to SpatialDimType eq 'COUNTRY', excluding sub-national, regional aggregate, and global aggregate records. This ensures clean country-level data but means you cannot retrieve WHO regional or global summaries through this actor.
  • 10-indicator cap for keyword searches -- When a keyword matches more than 10 indicators, only the first 10 are fetched. Use a more specific keyword or exact indicator code if you need data from a specific indicator that falls outside the top 10 matches.
  • 10,000 result maximum -- Each run caps at 10,000 output records. For larger extractions, run multiple searches with different country or year filters.
  • WHO API availability -- Results depend on the WHO GHO OData API being accessible. The API occasionally experiences slowdowns, which may increase run duration. Sustained outages will cause the run to fail.
  • Data currency -- The WHO updates GHO data periodically, but most indicators lag 1--3 years behind the current date due to country reporting timelines. The most recent data point for many indicators may be from 2021 or 2022.
  • World Bank income group -- The worldBankIncomeGroup output field is reserved for future enrichment and currently returns null for all records.
  • Indicator name language -- Indicator names are returned in English only, as provided by the WHO GHO API.
  • OData case sensitivity -- Keyword searches use OData contains() which may be case-sensitive depending on the WHO API's current configuration. The actor tries lowercase first and falls back to original case.

Responsible use

The WHO Global Health Observatory provides authoritative health statistics compiled from national health ministries, surveillance systems, and international reporting mechanisms. When using this data:

  • Cite the source appropriately. Data originates from the World Health Organization Global Health Observatory. Use the indicatorCode and indicatorName fields to reference specific indicators in publications and reports.
  • Understand confidence intervals. When low and high fields are populated, they represent the WHO's uncertainty estimates. Report the full range rather than point estimates alone, especially for indicators with wide confidence intervals.
  • Account for data gaps. Not all countries report all indicators for all years. Missing data does not necessarily mean zero -- it may indicate a gap in national reporting. Check the WHO GHO metadata for indicator-specific notes on data quality and methodology.
  • Avoid over-interpretation. Comparisons between countries should account for differences in data collection methodology, reporting completeness, and health system definitions. The WHO provides methodological notes for each indicator that should be consulted for rigorous analysis.
  • Respect data update cycles. Health data is inherently lagged. Do not present data from prior years as current-year statistics without noting the reporting year.

FAQ

What indicators are available? The WHO GHO provides over 2,000 health indicators. Major categories include: life expectancy, mortality (infant, child, maternal, adult), disease incidence and prevalence (HIV, tuberculosis, malaria, neglected tropical diseases), immunization coverage, nutrition (stunting, wasting, overweight), environmental health (air quality, water and sanitation), health workforce, health expenditure, and universal health coverage. Search by keyword to explore the full catalog, or browse the WHO indicator list at https://ghoapi.azureedge.net/api/Indicator.

Do I need an API key? No. The WHO GHO OData API is free, open, and does not require authentication. The actor queries the API on your behalf without any credentials.

What country codes should I use? Use ISO 3166-1 alpha-3 codes (three letters): USA, GBR, FRA, DEU, JPN, CHN, IND, BRA, AUS, CAN, NGA, ZAF, KEN, MEX, RUS, etc. Leave the field empty to retrieve data for all 194 WHO member countries.

How current is the data? The WHO updates the GHO database periodically. Most indicators have data up to 1--3 years before the current year, depending on country reporting timelines and indicator methodology. Each run fetches live data from the API, so results reflect the latest available information.

What is the difference between value and numericValue? The value field preserves the original string from the WHO API, which may include formatted ranges like "13.0 [10.8-15.6]" or text values. The numericValue field contains only the numeric portion suitable for calculations, charting, and analysis. Use numericValue for data processing and value when you need the full WHO-formatted string.

What do the low and high fields represent? These are the lower and upper bounds of the confidence interval (uncertainty range) provided by the WHO for many statistical estimates. When both are null, the indicator does not include uncertainty estimates for that data point.

What happens if my keyword matches many indicators? The actor limits to the first 10 matching indicators and distributes the maxResults allocation across them. Use a more specific keyword or exact indicator code for focused results. The actor logs which indicators were matched and fetched.

Can I schedule automatic runs? Yes. Use Apify's built-in scheduler to run this actor daily, weekly, or monthly to track changes in health indicators over time. Combine with webhooks or integrations to trigger downstream processing when new data is available.

Why are some records missing the sex or ageGroup field? Not all indicators are disaggregated by sex or age. When an indicator reports aggregate data without demographic breakdowns, the sex and ageGroup fields will be null.

What does the region field contain? The WHO assigns each country to one of six regional groupings: African, Americas, Eastern Mediterranean, European, South-East Asia, and Western Pacific. This field reflects the ParentLocation value from the GHO API.


ActorDescriptionLink
Clinical Trial TrackerSearch ClinicalTrials.gov for clinical studies and trial data. Pair with WHO health statistics to connect population-level health data with clinical research activity.apify.com/ryanclinton/clinical-trial-tracker
World Bank Development IndicatorsAccess World Bank economic and development indicators. Cross-reference health outcomes with GDP, poverty rates, education spending, and other socioeconomic factors.apify.com/ryanclinton/world-bank-indicators
OpenAlex Research Paper SearchFind academic research papers on health topics. Combine population-level WHO data with the latest peer-reviewed research for evidence-based analysis.apify.com/ryanclinton/openalex-research-papers
PubMed Biomedical Literature SearchSearch the PubMed database for biomedical and life sciences literature. Source primary research to contextualize WHO health statistics.apify.com/ryanclinton/pubmed-research-search
Open Food FactsSearch the Open Food Facts database for nutritional information on food products. Complement WHO nutrition indicators with product-level dietary data.apify.com/ryanclinton/open-food-facts