Reference
Signals
Query selected latest observations, exchange rates, commodity benchmarks, alerts, trade summaries, and government records for one country. Coverage and reporting periods vary by source.
Country Signals
/v1/countries/{country_code}/signalsReturns selected latest observations and records for one country. Available fields depend on country and source coverage.
| Field | Contents when available |
|---|---|
observations | Selected indicators, local prices, grid conditions, airport and port statistics, weather estimates, and displacement totals |
disaster_alerts | Country-linked events reported by GDACS |
fx_rates | Exchange rates tied to the country |
commodity_benchmarks | Global reference prices |
market_snapshots | Exchange-level market observations |
trade | Trade summaries |
government | Selected government records |
Records can describe different reporting periods, from daily weather estimates to annual indicators. Check frequency, as_of_period, and freshness before comparing them. An as_of_period can identify a month, date, or date range. Location-specific observations include location_name.
Requires an API key.
country_codestringrequiredng, ke, zacurl "https://api.africa-api.com/v1/countries/ke/signals" \
-H "Authorization: Bearer $AFRICA_API_KEY"The following excerpt illustrates selected response fields. Its values and freshness labels are examples, not a current country snapshot.
{
"data": {
"country": {
"code": "ke",
"name": "Kenya",
"capital": "Nairobi",
"region": "East Africa"
},
"observations": [
{
"metric_key": "inflation_cpi_latest_yoy_pct",
"name": "Inflation (Latest YoY)",
"value": 4.8,
"unit": "percent",
"frequency": "monthly",
"source": "cbk_ke_signals",
"freshness": "current",
"as_of_period": "2026-01",
"retrieved_at": "2026-03-09T18:00:00Z"
}
],
"fx_rates": [
{
"base_currency": "USD",
"quote_currency": "KES",
"rate": 129.44,
"date": "2026-03-08",
"source": "fx_usd_daily",
"freshness": "current"
}
],
"generated_at": "2026-03-09T18:00:00Z"
}
}Country and source coverage
This table summarizes the documented source families. It does not report source health or the age of returned observations. Check the source metadata and reporting period for the data you use. See Coverage for the broader catalog.
| Country or scope | Macro | Prices | Power | Airports | Ports | Climate | Risk context |
|---|---|---|---|---|---|---|---|
| Kenya | Yes | Fuel and maize | - | - | Yes | Yes | GDACS and UNHCR when present |
| Morocco | Yes | - | - | - | - | Annual indicators where available | GDACS and UNHCR when present |
| Namibia | Yes | - | - | - | - | Annual indicators where available | GDACS and UNHCR when present |
| Nigeria | Yes | - | Yes | - | - | Yes | GDACS and UNHCR when present |
| South Africa | Yes | Fuel | Yes | Yes | Yes | Yes | GDACS and UNHCR when present |
| Tanzania | Yes | - | - | - | - | Yes | GDACS and UNHCR when present |
| Tunisia | Yes | - | - | - | - | Yes | GDACS and UNHCR when present |
| WAEMU countries | BCEAO policy rates | - | - | - | - | Annual indicators where available | GDACS and UNHCR when present |
| CEMAC countries | BEAC policy rates | - | - | - | - | Annual indicators where available | GDACS and UNHCR when present |
South Africa example
curl "https://api.africa-api.com/v1/countries/za/signals" \
-H "Authorization: Bearer $AFRICA_API_KEY"The following example shows selected fields inside the response's data object. Its values are illustrative and describe different reporting periods.
{
"country": {
"code": "za",
"name": "South Africa",
"capital": "Pretoria",
"region": "Southern Africa"
},
"observations": [
{
"metric_key": "policy_rate_pct",
"value": 7.5,
"unit": "percent",
"frequency": "ad_hoc",
"source": "sarb_za_signals",
"as_of_period": "2026-01-30"
},
{
"metric_key": "petrol_price_local_per_liter",
"value": 20.3,
"unit": "local_currency_per_liter",
"frequency": "monthly",
"source": "dmre_za_fuel_signals",
"as_of_period": "2026-03",
"location_name": "Gauteng Zone 9C"
},
{
"metric_key": "load_shedding_stage",
"value": 0,
"unit": "stage",
"frequency": "ad_hoc",
"source": "eskom_za_grid_signals",
"as_of_period": "2026-03-12"
},
{
"metric_key": "airport_passengers_ytd_total",
"value": 34282784,
"unit": "passengers",
"frequency": "monthly",
"source": "acsa_za_airport_signals",
"as_of_period": "2026-01"
},
{
"metric_key": "airport_on_time_performance_latest_month_pct",
"value": 90.66,
"unit": "percent",
"frequency": "monthly",
"source": "acsa_za_on_time_performance_signals",
"as_of_period": "2026-02"
},
{
"metric_key": "port_container_throughput_latest_teu",
"value": 373644,
"unit": "teu",
"frequency": "monthly",
"source": "tnpa_za_port_signals",
"as_of_period": "2025-06"
},
{
"metric_key": "precipitation_7d_mm",
"value": 9.1,
"unit": "millimeters",
"frequency": "ad_hoc",
"source": "nasa_power_climate_signals",
"as_of_period": "2026-03-05 to 2026-03-11"
}
],
"fx_rates": [
{
"base_currency": "USD",
"quote_currency": "ZAR",
"rate": 15.58,
"date": "2026-03-14",
"source": "fx_usd_daily"
}
],
"market_snapshots": [
{
"exchange_code": "JSE",
"latest_trade_date": "2026-03-14",
"source": "jse_yahoo_eod"
}
],
"trade": {
"latest_year": 2024,
"granular_latest_year": 2024
},
"government": {
"current_head_of_state": {
"leader_name": "Cyril Ramaphosa",
"role_type": "head_of_state"
}
}
}Choose between signals and data
Use /v1/countries/{country_code}/signals for selected observations and records in one request. Use /v1/data for time series, multi-country comparisons, specific metric queries, and source filtering.
Example for a latest monthly signal through the canonical observation endpoint:
curl "https://api.africa-api.com/v1/data?country_code=ke&metric_key=inflation_cpi_latest_yoy_pct&latest=true" \
-H "Authorization: Bearer $AFRICA_API_KEY"Freshness Model
Each signal carries a simple freshness label:
currentrecenthistorical
The label is derived from frequency, year, retrieval time, or the market/FX trade date. It does not mean every value describes the same reporting period.
Use the date and source fields alongside the freshness label. Retrieval time records when data was collected; it is not necessarily the source publication date.
For selected latest-signal metrics, /signals prefers an available country-specific central-bank source over a broader monthly feed. Check the returned source field to identify the dataset used.
Some price observations are local or market-specific rather than national. Kenya fuel prices reflect the official EPRA Nairobi notice, South Africa fuel prices reflect the official DMRE Gauteng reference zone and national paraffin retail cap, and Kenya food prices reflect the latest World Bank Kenya market estimates. These carry location_name and other source context so clients can label them accurately.
Grid and transport observations have source-specific geographic scopes and publication cadences. South Africa power-system signals come from Eskom’s power status updates, Nigeria power-system signals come from NISO’s daily grid statement, South Africa airport traffic and on-time performance come from ACSA’s monthly operational statistics, and South Africa port operations come from TNPA’s monthly national port statistics. Kenya port observations come from KPA annual Port of Mombasa performance totals. See Transport for reporting-period and geographic details.
NASA POWER temperature, humidity, and rolling rainfall values are point-based estimates. They should not be presented as annual national climate indicators. Check as_of_period for the dates represented.
GDACS disaster alerts describe country-linked events, including floods, cyclones, earthquakes, wildfires, and volcanic events. Check each alert's event dates and source links. UNHCR displacement observations are annual totals and may describe an earlier year.
Commodity benchmarks are global reference prices, not local retail or domestic producer prices.