Find an API

Search public APIs with auth details & Postman guides

← All APIs

WHO Global Health Observatory API

ghoapi.azureedge.net · Health

Health No Auth Free & Open Healthcare Public Health Global 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

No authentication requiredFree to use with no key needed.

Sample Requests

GET List indicators

Find WHO health indicators related to obesity.

https://ghoapi.azureedge.net/api/Indicator?$filter=contains(IndicatorName,'obesity')&$select=IndicatorCode,IndicatorName

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 Get indicator data

Get life expectancy data for the USA.

https://ghoapi.azureedge.net/api/WHOSIS_000001?$top=5&$filter=SpatialDim eq '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

Get Postman ↗
  1. No API key needed
  2. OData-based API — uses $filter, $select, $top, $skip params
  3. List all indicators: GET /api/Indicator
  4. Get data for indicator code: GET /api/{CODE}
  5. Filter by country: ?$filter=SpatialDim eq 'GBR'
  6. Indicator codes found in the Indicator endpoint

Open documentation ↗