curl --request GET \
--url https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ageStructure": {
"available": true,
"medianAgeYears": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"oldAgeDependencyRatioPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"totalDependencyRatioPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"workingAgePopulationPeople": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
}
},
"available": true,
"countryCode": "US",
"education": {
"available": true,
"researchersPerMillion": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"stemGraduatesSharePercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"tertiaryEnrollmentGrossPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
}
},
"fetchedAt": "2026-01-15T12:00:00Z"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"requiredTier": 123
}{
"message": "<string>"
}GetDemographicsCapability
GetDemographicsCapability returns age, education and industrial-workforce observations for one country. PRO-gated. Requires entitlement tier >= 1.
curl --request GET \
--url https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability \
--header 'X-WorldMonitor-Key: <api-key>'import requests
url = "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability"
headers = {"X-WorldMonitor-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-WorldMonitor-Key': '<api-key>'}};
fetch('https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-WorldMonitor-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-WorldMonitor-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability")
.header("X-WorldMonitor-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.worldmonitor.app/api/resilience/v1/get-demographics-capability")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-WorldMonitor-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"ageStructure": {
"available": true,
"medianAgeYears": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"oldAgeDependencyRatioPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"totalDependencyRatioPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"workingAgePopulationPeople": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
}
},
"available": true,
"countryCode": "US",
"education": {
"available": true,
"researchersPerMillion": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"stemGraduatesSharePercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
},
"tertiaryEnrollmentGrossPercent": {
"available": true,
"source": "example",
"unit": "example",
"value": 1.5,
"year": 1
}
},
"fetchedAt": "2026-01-15T12:00:00Z"
}{
"violations": [
{
"field": "<string>",
"description": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>",
"code": "subscription_lapsed",
"requiredTier": 123,
"currentTier": 123,
"planKey": "<string>"
}{
"message": "<string>"
}{
"error": "<string>",
"requiredTier": 123
}{
"message": "<string>"
}Authorizations
User-issued WorldMonitor API key.
Query Parameters
Required ISO 3166-1 alpha-2 country code.
Optional JMESPath expression applied server-side to project or reduce the JSON response before it is returned (mirrors the MCP jmespath argument). Invalid expressions, expressions larger than 1024 UTF-8 bytes, or projections that exceed the 256 KB output cap return HTTP 400 with a {_jmespath_error, original_keys} envelope. Grammar and worked examples: https://www.worldmonitor.app/docs/mcp-jmespath.
Response
Successful response
True when at least one validated observation exists for the country.
ISO-8601 time the canonical snapshot was generated.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?
