WHO Global Health Observatory API
ghoapi.azureedge.net · Health
World Health Organization global health data — mortality, disease burden, health system capacity, and risk factors across 194 countries. OData API. Free, no key.
Authentication
Sample Requests
Find WHO health indicators related to obesity.
Hover any highlighted part to learn what it does
curl -X GET "https://ghoapi.azureedge.net/api/Indicator?$filter=contains(IndicatorName%2C'obesity')&$select=IndicatorCode%2CIndicatorName"
import requests
params = {
"$filter": "contains(IndicatorName,'obesity')",
"$select": "IndicatorCode,IndicatorName"
}
response = requests.get(
"https://ghoapi.azureedge.net/api/Indicator",
params=params,
)
print(response.json())const url = new URL('https://ghoapi.azureedge.net/api/Indicator');
url.searchParams.set('$filter', 'contains(IndicatorName,'obesity')');
url.searchParams.set('$select', 'IndicatorCode,IndicatorName');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://ghoapi.azureedge.net/api/Indicator")
q := baseURL.Query()
q.Set("$filter", "contains(IndicatorName,'obesity')")
q.Set("$select", "IndicatorCode,IndicatorName")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://ghoapi.azureedge.net/api/Indicator")
uri.query = URI.encode_www_form({
"$filter" => "contains(IndicatorName,'obesity')",
"$select" => "IndicatorCode,IndicatorName"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://ghoapi.azureedge.net/api/Indicator?" . http_build_query([
"$filter" => "contains(IndicatorName,'obesity')",
"$select" => "IndicatorCode,IndicatorName"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Get life expectancy data for the USA.
Hover any highlighted part to learn what it does
curl -X GET "https://ghoapi.azureedge.net/api/WHOSIS_000001?$top=5&$filter=SpatialDim%20eq%20'USA'"
import requests
params = {
"$top": "5",
"$filter": "SpatialDim eq 'USA'"
}
response = requests.get(
"https://ghoapi.azureedge.net/api/WHOSIS_000001",
params=params,
)
print(response.json())const url = new URL('https://ghoapi.azureedge.net/api/WHOSIS_000001');
url.searchParams.set('$top', '5');
url.searchParams.set('$filter', 'SpatialDim eq 'USA'');
const response = await fetch(url);
const data = await response.json();
console.log(data);package main
import (
"fmt"
"io"
"net/http"
"net/url"
)
func main() {
baseURL, _ := url.Parse("https://ghoapi.azureedge.net/api/WHOSIS_000001")
q := baseURL.Query()
q.Set("$top", "5")
q.Set("$filter", "SpatialDim eq 'USA'")
baseURL.RawQuery = q.Encode()
targetURL := baseURL.String()
req, _ := http.NewRequest("GET", targetURL, nil)
client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}require "net/http"
require "json"
uri = URI("https://ghoapi.azureedge.net/api/WHOSIS_000001")
uri.query = URI.encode_www_form({
"$top" => "5",
"$filter" => "SpatialDim eq 'USA'"
})
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"
req = Net::HTTP::Get.new(uri)
res = http.request(req)
puts JSON.parse(res.body)<?php
$url = "https://ghoapi.azureedge.net/api/WHOSIS_000001?" . http_build_query([
"$top" => "5",
"$filter" => "SpatialDim eq 'USA'"
]);
$opts = ["http" => [
"method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));Postman Setup Guide
- No API key needed
- OData-based API — uses $filter, $select, $top, $skip params
- List all indicators: GET /api/Indicator
- Get data for indicator code: GET /api/{CODE}
- Filter by country: ?$filter=SpatialDim eq 'GBR'
- Indicator codes found in the Indicator endpoint
What can you build with WHO Global Health Observatory API?
WHO Global Health Observatory API is a Health API. Developers commonly use health APIs for:
- accessing medical reference data and drug information
- building patient-facing health tracking apps
- integrating with EHR and telemedicine platforms
- looking up ICD codes and clinical terminology
- powering wellness and fitness applications
No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. WHO Global Health Observatory API is free to use, making it a low-risk choice to experiment with.
New to APIs? Read our beginner's guide