# WHO Global Health Observatory Data Scraper (`wakey7dev/who-health-data-scraper`) Actor

Search and download 3,000+ WHO health indicators across 196 countries. Cleaned, categorized data with normalized country names and WHO regions. No API key required.

- **URL**: https://apify.com/wakey7dev/who-health-data-scraper.md
- **Developed by:** [Chris Wakefield](https://apify.com/wakey7dev) (community)
- **Categories:** Business, AI
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![Chris The Dev](https://raw.githubusercontent.com/chriswakefield87/appstore-screenshot-translator/main/assets/actor-banner.png)

## WHO Global Health Observatory Data Scraper

Search and download **3,000+ health indicators** from the World Health Organization's Global Health Observatory (GHO) — covering **196 countries** across mortality, disease burden, nutrition, immunization, health financing, and more.

Data is **cleaned, categorized, and normalized** with proper country names, WHO regions, indicator categories, and readable value formatting.

### Features

- 🔍 **Search by keyword** — find indicators by disease, topic, or category
- 🌍 **196 countries** — filter by specific countries or get global data
- 📊 **3,070 indicators** — life expectancy, mortality, HIV/AIDS, TB, malaria, diabetes, cancer, nutrition, immunization, WASH, health financing, and more
- 🧹 **Normalized output** — proper country names, WHO regions, categorized indicators, cleaned values
- 📅 **Time series** — multi-year data with confidence intervals where available
- 🔄 **Wide or long format** — choose your preferred output structure
- 🆓 **Free data** — WHO GHO is publicly available, no API key required

### Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `indicatorCodes` | `string[]` | No* | Life expectancy, mortality, etc. | Specific WHO indicator codes |
| `searchQuery` | `string` | No | — | Search indicators by keyword |
| `category` | `string` | No | — | Filter by category code |
| `countries` | `string[]` | No | All | ISO 3-letter country codes |
| `yearStart` | `integer` | No | Earliest | Start year for data |
| `yearEnd` | `integer` | No | Latest | End year for data |
| `maxResults` | `integer` | No | 1000 | Max data points per indicator |
| `includeMetadata` | `boolean` | No | true | Include indicator names & categories |
| `includeTimeline` | `boolean` | No | true | All years vs latest only |
| `outputFormat` | `select` | No | long | `long` (one row per point) or `wide` (one row per country) |

*\*Either `indicatorCodes` or `searchQuery` must be provided.*

### Example Input

```json
{
  "searchQuery": "diabetes",
  "countries": ["GBR", "USA", "DEU", "FRA", "JPN"],
  "maxResults": 500,
  "includeMetadata": true,
  "includeTimeline": true,
  "outputFormat": "long"
}
````

### Example Output

```json
{
  "indicatorCode": "NCD_DIABETES_TREATMENT_CRUDE",
  "indicatorName": "Diabetes treatment coverage, crude",
  "indicatorCategory": "Diabetes",
  "indicatorCategoryCode": "DIABETES",
  "countryCode": "GBR",
  "countryName": "United Kingdom",
  "whoRegion": "Europe",
  "year": 2022,
  "value": 85.3,
  "valueDisplay": "85.30",
  "sex": "Both sexes",
  "ageGroup": "All ages"
}
```

### Use Cases

- **Public health research** — disease prevalence, mortality trends, healthcare access
- **NGO program planning** — identify countries with greatest health needs
- **Pharma market intelligence** — disease burden by country for market sizing
- **Academic research** — reproducible health data for papers and studies
- **Government policy** — benchmark against WHO health targets and SDGs
- **Data journalism** — fact-checking and data-driven health reporting

### Indicator Categories

| Category | Examples |
|---|---|
| Mortality | Under-5 mortality, maternal deaths, infant mortality |
| HIV/AIDS | Prevalence, treatment coverage, deaths |
| TB | Detection rate, treatment success |
| Malaria | Incidence, mortality |
| Diabetes | Prevalence, treatment coverage |
| Cancer | Survival rates, screening |
| Nutrition | Wasting, stunting, overweight |
| Immunization | DTP3, MCV2 coverage |
| Mental Health | Depression, suicide rates |
| Health Financing | Expenditure, out-of-pocket costs |
| WASH | Sanitation, drinking water |
| Environmental | Air pollution |

### Data Source

This actor uses the **WHO Global Health Observatory API** (ghoapi.azureedge.net). The GHO is the World Health Organization's gateway to health-related statistics for its 194 member states. Data is publicly available and regularly updated.

- WHO GHO Portal: https://www.who.int/data/gho
- API Reference: https://www.who.int/data/gho/info/gho-odata-api
- License: WHO GHO data is publicly available — see WHO data policy

# Actor input Schema

## `indicatorCodes` (type: `array`):

WHO indicator codes to fetch (e.g. WHOSIS\_000001, MORT\_200). Enter one per line. Leave empty to search by keyword/category.

## `searchQuery` (type: `string`):

Search for indicators by keyword (e.g. 'diabetes', 'mortality', 'vaccination', 'HIV'). Fetches matching indicator codes then retrieves their data. Overrides indicatorCodes if provided.

## `category` (type: `string`):

Available: HEALTH\_FINANCING, MORTALITY, NUTRITION, IMMUNIZATION, HIV\_AIDS, TB, MALARIA, DIABETES, CANCER, MENTAL\_HEALTH, MATERNAL\_CHILD, WASH, ENVIRONMENT. When set with searchQuery, filters results to this category only.

## `countries` (type: `array`):

ISO 3-letter country codes (e.g. GBR, USA, FRA). Leave empty for all countries.

## `yearStart` (type: `integer`):

Minimum year for data (e.g. 2010). Leave empty for earliest available.

## `yearEnd` (type: `integer`):

Maximum year for data (e.g. 2025). Leave empty for latest available.

## `maxResults` (type: `integer`):

Maximum data points to return per indicator (0 = unlimited). Default: 1000.

## `includeMetadata` (type: `boolean`):

Include indicator name, category, and description in output. Default: true.

## `includeTimeline` (type: `boolean`):

Include all available years for each country-indicator pair. When false, returns only latest value per country. Default: true.

## `outputFormat` (type: `string`):

Choose output format. Wide: one row per country with indicator values as columns. Long: one row per data point (country-year-indicator). Default: long.

## Actor input object example

```json
{
  "indicatorCodes": [
    "WHOSIS_000001"
  ],
  "countries": [],
  "maxResults": 1000,
  "includeMetadata": true,
  "includeTimeline": true,
  "outputFormat": "long"
}
```

# Actor output Schema

## `results` (type: `string`):

Complete normalized WHO health data in JSON format, one record per data point. Available in long or wide format.

## `summary` (type: `string`):

Human-readable summary table showing indicator overview, countries covered, year ranges, and value distributions.

## `stats` (type: `string`):

Machine-readable run statistics: indicators fetched, countries covered, total data points, searches performed.

## `indicators` (type: `string`):

Full list of all searchable WHO indicator codes with names and categories, for discovery purposes.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "indicatorCodes": [
        "WHOSIS_000001"
    ],
    "countries": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("wakey7dev/who-health-data-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "indicatorCodes": ["WHOSIS_000001"],
    "countries": [],
}

# Run the Actor and wait for it to finish
run = client.actor("wakey7dev/who-health-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "indicatorCodes": [
    "WHOSIS_000001"
  ],
  "countries": []
}' |
apify call wakey7dev/who-health-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=wakey7dev/who-health-data-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WHO Global Health Observatory Data Scraper",
        "description": "Search and download 3,000+ WHO health indicators across 196 countries. Cleaned, categorized data with normalized country names and WHO regions. No API key required.",
        "version": "1.0",
        "x-build-id": "PzoFAcpiPbBe38sxn"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/wakey7dev~who-health-data-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-wakey7dev-who-health-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/wakey7dev~who-health-data-scraper/runs": {
            "post": {
                "operationId": "runs-sync-wakey7dev-who-health-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/wakey7dev~who-health-data-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-wakey7dev-who-health-data-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "indicatorCodes": {
                        "title": "Indicator Codes",
                        "type": "array",
                        "description": "WHO indicator codes to fetch (e.g. WHOSIS_000001, MORT_200). Enter one per line. Leave empty to search by keyword/category.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "searchQuery": {
                        "title": "Search Indicators by Keyword",
                        "type": "string",
                        "description": "Search for indicators by keyword (e.g. 'diabetes', 'mortality', 'vaccination', 'HIV'). Fetches matching indicator codes then retrieves their data. Overrides indicatorCodes if provided."
                    },
                    "category": {
                        "title": "Filter by Category",
                        "type": "string",
                        "description": "Available: HEALTH_FINANCING, MORTALITY, NUTRITION, IMMUNIZATION, HIV_AIDS, TB, MALARIA, DIABETES, CANCER, MENTAL_HEALTH, MATERNAL_CHILD, WASH, ENVIRONMENT. When set with searchQuery, filters results to this category only."
                    },
                    "countries": {
                        "title": "Filter by Countries",
                        "type": "array",
                        "description": "ISO 3-letter country codes (e.g. GBR, USA, FRA). Leave empty for all countries.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "yearStart": {
                        "title": "Start Year",
                        "type": "integer",
                        "description": "Minimum year for data (e.g. 2010). Leave empty for earliest available."
                    },
                    "yearEnd": {
                        "title": "End Year",
                        "type": "integer",
                        "description": "Maximum year for data (e.g. 2025). Leave empty for latest available."
                    },
                    "maxResults": {
                        "title": "Max Results per Indicator",
                        "type": "integer",
                        "description": "Maximum data points to return per indicator (0 = unlimited). Default: 1000.",
                        "default": 1000
                    },
                    "includeMetadata": {
                        "title": "Include Indicator Metadata",
                        "type": "boolean",
                        "description": "Include indicator name, category, and description in output. Default: true.",
                        "default": true
                    },
                    "includeTimeline": {
                        "title": "Include Full Timeline",
                        "type": "boolean",
                        "description": "Include all available years for each country-indicator pair. When false, returns only latest value per country. Default: true.",
                        "default": true
                    },
                    "outputFormat": {
                        "title": "Output Format",
                        "enum": [
                            "wide",
                            "long"
                        ],
                        "type": "string",
                        "description": "Choose output format. Wide: one row per country with indicator values as columns. Long: one row per data point (country-year-indicator). Default: long.",
                        "default": "long"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
