WHO Global Health Observatory Scraper
Pricing
from $1.50 / 1,000 results
WHO Global Health Observatory Scraper
Scrape WHO GHO by indicator code or list all 3000+ indicators. Extract country, year, value, low/high CI, sex dimension for health analytics, research, and dashboards. No API key, no login.
WHO Global Health Observatory Scraper — Indicators, Countries, Years & Confidence Intervals
Extract any of the 3,000+ WHO health indicators across all countries and years with zero API key or login required.
What does WHO GHO Scraper do?
This actor connects directly to the World Health Organization's official Global Health Observatory (GHO) OData REST API at https://ghoapi.azureedge.net/api/. It supports two modes: List all indicators (returning all 3,000+ indicator codes and names in one run) and Indicator data (fetching every country/year data row for one or more indicator codes). Pagination is handled automatically with page size 1,000 rows, so a single run on a high-coverage indicator like Life Expectancy (WHOSIS_000001) returns 12,000+ rows spanning 180+ countries and 30+ years. Each row includes the numeric value, lower/upper confidence interval bounds, the sex or age dimension, ISO3 country code, WHO region, and the original formatted value string. No authentication, API key, or browser is needed — the WHO GHO API is fully public.
Who is it for?
- Global health researchers analyzing mortality, disease burden, and health equity trends across countries.
- Data journalists and NGOs building reports on WHO targets, SDG progress, and pandemic impact.
- Public health consultants who need structured, machine-readable WHO data for client dashboards.
- Data engineers feeding WHO indicators into warehouses (BigQuery, Snowflake, Postgres) or BI tools (Tableau, Power BI, Looker).
- Academics and students doing quantitative analysis on global health datasets without manual CSV downloads.
Use cases
- Track life expectancy trends by country and sex from 2000 to present for SDG-3 reporting.
- Compare maternal mortality ratios across WHO regions to identify where interventions are needed.
- Build a COVID-19 excess mortality dashboard by pulling multiple indicator codes in one run.
- Export WHO child malnutrition data into Google Sheets for NGO grant proposals.
- Power an AI agent that answers health questions by retrieving the latest WHO data programmatically.
Why use WHO GHO Scraper?
- Completely keyless — no WHO account, no API registration, no cookies required.
- 10 output fields per row: indicatorCode, indicatorName, country, year, value, low CI, high CI, dimension, region, rawValue.
- Bulk extraction — a single run can return hundreds of thousands of rows across multiple indicators.
- Country and result-count filters — limit to specific ISO3 countries or cap total rows for quick previews.
- Export to CSV, JSON, or Excel in one click from the Apify dataset viewer.
- Pay-per-result pricing — you only pay for what you extract.
What data can you extract?
Every data row from the WHO GHO API is returned with the following fields:
| Field | Type | Description |
|---|---|---|
indicatorCode | string | WHO GHO indicator code, e.g. WHOSIS_000001 |
indicatorName | string | Human-readable indicator name, e.g. "Life expectancy at birth (years)" |
country | string | ISO3 country code, e.g. USA, GBR, DEU |
year | string | Year of the observation, e.g. 2019 |
value | number | Numeric value of the indicator for that country/year/dimension |
low | number | Lower bound of the 95% confidence interval |
high | number | Upper bound of the 95% confidence interval |
dimension | string | Primary dimension (e.g. SEX_BTSX = both sexes, SEX_MLE = male, SEX_FMLE = female) |
parentLocation | string | WHO region name (e.g. "Europe", "South-East Asia") |
rawValue | string | Original formatted string from WHO (e.g. "73.2 [72.8-73.6]") |
JSON output example:
{"indicatorCode": "WHOSIS_000001","indicatorName": "Life expectancy at birth (years)","country": "USA","year": "2019","value": 78.53,"low": 78.11,"high": 78.95,"dimension": "SEX_BTSX","parentLocation": "Americas","rawValue": "78.5 [78.1-79.0]"}
How to use
Option A — Fetch data for specific indicators
Provide a list of WHO GHO indicator codes (find codes using the indicators mode below). The actor fetches all country/year rows for each code.
Step-by-step:
- Open the actor and go to Input.
- Set Mode to
Indicator Data. - Enter one or more codes in Indicator Codes, e.g.
WHOSIS_000001. - Optionally add ISO3 country codes in Country Filter to limit scope.
- Set Max Results to
0for all data, or a number for a quick preview. - Click Start.
{"mode": "indicatorData","indicatorCodes": ["WHOSIS_000001", "WHOSIS_000002"],"countryFilter": ["USA", "GBR", "DEU", "FRA"],"maxResults": 0,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["DATACENTER"] }}
Option B — List all available indicators
Use this mode to discover all 3,000+ indicator codes and their names before deciding which to fetch.
Step-by-step:
- Set Mode to
List All Indicators. - Leave all other fields at default.
- Click Start — you'll get ~3,000 rows with
indicatorCodeandindicatorNamefilled.
{"mode": "indicators","maxResults": 0}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | indicatorData | indicatorData or indicators |
indicatorCodes | array | ["WHOSIS_000001"] | WHO GHO indicator codes to fetch (indicatorData mode only) |
countryFilter | array | [] | ISO3 country codes to filter (empty = all countries) |
maxResults | integer | 0 | Max rows to output; 0 = no limit |
proxyConfiguration | object | Apify DATACENTER | Proxy settings |
Full input JSON:
{"mode": "indicatorData","indicatorCodes": ["WHOSIS_000001"],"countryFilter": [],"maxResults": 0,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["DATACENTER"]}}
Output example
{"indicatorCode": "WHOSIS_000001","indicatorName": "Life expectancy at birth (years)","country": "JPN","year": "2021","value": 84.26,"low": 83.91,"high": 84.61,"dimension": "SEX_BTSX","parentLocation": "Western Pacific","rawValue": "84.3 [83.9-84.6]"}
Tips for best results
- Find indicator codes first: Run in
indicatorsmode to get the full list, then search for keywords like "mortality", "tuberculosis", or "obesity" to find the right codes. - Use country filter for focused analysis: Pass ISO3 codes (e.g.
["USA", "GBR", "CAN"]) to avoid fetching global data when you only need a few countries. - Multiple indicators in one run: Add all your codes to
indicatorCodes— the actor processes them sequentially and pushes all rows to one dataset. - Check the
dimensionfield: Many indicators have multiple rows per country/year split by sex (SEX_MLE,SEX_FMLE,SEX_BTSX) or age group. Filter in post-processing if needed. rawValuefor display: UserawValuefor human-readable strings like"73.2 [72.8-73.6]"; usevalue,low,highfor numeric analysis.- Set
maxResultsto 500 for a quick preview before a full run on a large indicator. - Schedule monthly runs: WHO updates data periodically; set up an Apify schedule to keep your dataset fresh.
- Export to Google Sheets: Use the Apify→Google Sheets integration in the Actors section to automatically write results to a spreadsheet after each run.
Integrations
- Google Sheets: Use the built-in Apify integration to export dataset rows to a spreadsheet automatically after each run.
- Slack: Set up Apify webhooks to notify a Slack channel when a scheduled run completes.
- Zapier / Make (Integromat): Trigger downstream workflows when new WHO data is available — push to databases, send emails, or update dashboards.
- Webhooks: Configure a webhook URL in Actor settings to POST run metadata to your own API on completion.
- Schedule: Set up a recurring schedule (weekly/monthly) in Apify Console to keep your WHO data fresh without manual runs.
API usage
cURL:
curl -X POST \"https://api.apify.com/v2/acts/logiover~who-gho-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"mode": "indicatorData","indicatorCodes": ["WHOSIS_000001"],"countryFilter": [],"maxResults": 0}'
Node.js (Apify Client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('logiover/who-gho-scraper').call({mode: 'indicatorData',indicatorCodes: ['WHOSIS_000001', 'WHOSIS_000002'],countryFilter: ['USA', 'GBR'],maxResults: 0,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("logiover/who-gho-scraper").call(run_input={"mode": "indicatorData","indicatorCodes": ["WHOSIS_000001"],"countryFilter": [],"maxResults": 0,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
Use with AI agents (MCP)
This actor is compatible with Apify's Model Context Protocol (MCP) integration, allowing AI agents to call it directly. An agent can discover available WHO indicators and then fetch structured health data for downstream reasoning — for example: "Fetch life expectancy and maternal mortality for all Sub-Saharan African countries from 2010 to 2023 and identify the three countries with the greatest improvement." Connect the actor via the Apify MCP server and pass structured inputs; the agent receives paginated JSON rows ready for analysis.
FAQ
Does this actor require an API key or WHO account?
No. The WHO Global Health Observatory OData API (ghoapi.azureedge.net) is fully public. No registration, API key, or login is needed.
How many indicators does WHO GHO cover?
As of 2026, the GHO contains 3,068+ indicator codes spanning mortality, disease burden, nutrition, mental health, tobacco, alcohol, and health system performance.
How many rows does one indicator return?
It varies. High-coverage indicators like Life Expectancy (WHOSIS_000001) return ~12,000 rows (all countries × years × sex breakdowns). Niche indicators may return a few hundred. Use the $count field in the raw API to estimate before running.
What if I get zero results?
Check that the indicator code exists by running in indicators mode first. Some codes are aliases (e.g. Adult_curr_cig_smoking redirects to TOBACCO_INDICATOR). Also verify your country filter uses valid ISO3 codes.
Why are some value, low, or high fields null?
WHO data is not always complete. Some country/year combinations have aggregate text values but no numeric breakdown — in those cases value will be null and you should check rawValue for the formatted string.
Can I export to Excel or CSV?
Yes. In the Apify dataset viewer, click the download button and select CSV, XLSX, or JSON. You can also use the Apify API to download programmatically.
How fast does the actor run?
A single indicator with ~12,000 rows fetches in under 2 minutes on DATACENTER proxy. Fetching all 3,068 indicators in indicators mode takes about 3-4 minutes.
Is this legal to use?
WHO data is published under the Creative Commons Attribution 4.0 International license (CC BY 4.0), which permits free use, redistribution, and adaptation with attribution. Always cite WHO as your data source in publications.
How often does WHO update the data?
WHO typically updates GHO data annually or when new country estimates are published. The last data date is included in the rawValue timestamp fields of the raw API.
What other health data actors are available?
- Apify OSM Lead Scraper — B2B leads from OpenStreetMap by sector and country.
- IMDb Scraper — Entertainment data for media analytics.
- News Multi-Source Scraper — Multi-source news aggregation via public APIs.
Can I filter by WHO region instead of country?
Not directly in the input. The parentLocation field in the output contains the WHO region name. Fetch all countries and filter by parentLocation in post-processing (e.g. using pandas or Google Sheets).
Does the actor handle rate limits?
Yes. The actor retries failed requests up to 3 times with exponential backoff. The WHO GHO API is generally permissive, but if you run many indicator codes in parallel, consider adding a small delay between runs.
Is it legal?
This actor queries the official WHO Global Health Observatory public API. All data is openly published by the World Health Organization and licensed under CC BY 4.0. No authentication bypass, scraping of protected content, or terms-of-service violation occurs. Users are responsible for citing WHO as the data source in any derivative work or publication and for complying with the WHO data use policy. This actor does not collect, store, or redistribute any personal data.
Related scrapers
- B2B Lead Scraper — Generate business leads from OpenStreetMap by industry and country.
- CVE Advisory Scraper — Monitor NVD/OSV for new CVEs by keyword or product.
- CT Monitor (Certificate Transparency) — Track new SSL certificates for domain monitoring.