africaAPI

Reference

Signals

Use country signals for a compact current snapshot across indicators, FX, local prices, transport, grid conditions, climate, humanitarian displacement, disaster alerts, markets, trade, and government context.

Country Signals

GET/v1/countries/{country_code}/signals

Returns a compact current snapshot for one country.

This endpoint is the simplest way to combine:

  • latest selected macro and infrastructure indicators
  • latest local fuel and food price notices where official country sources exist
  • latest power-system condition signals where official operators publish current status
  • latest airport and port operations where official operators publish monthly traffic
  • latest weather and rainfall signals where trusted current climate sources exist
  • latest humanitarian displacement signals where UNHCR publishes country-of-asylum totals
  • latest disaster alerts where GDACS flags an active country-linked event
  • latest FX rates tied to the country
  • latest commodity benchmark prices used as global reference signals
  • latest exchange-level market snapshots when country-linked market coverage is available
  • compact trade context
  • compact government context

Signals can now mix:

  • slower annual backbone metrics
  • fresher monthly operational metrics
  • central-bank published current rates where a country source is wired in
  • central-bank published current bill or money-market rates where a country source is wired in
  • central-bank published current rates where a country or currency-union source is wired in
  • official local price notices where a regulator publishes current retail prices
  • official local food price notices where a country source publishes current wholesale staples
  • official grid and outage status signals where a national operator publishes current system conditions
  • official airport and port traffic signals where operators publish monthly throughput or movement totals
  • daily weather and rolling rainfall signals where a current climate source is wired in
  • latest UNHCR displacement counts where official annual country totals are available
  • current disaster alerts where GDACS publishes an active country-linked event

Monthly/latest observations include as_of_period so clients can tell which month the signal actually represents. Location-specific signals also include location_name.

Use it when you want a fresh operational summary without composing several endpoint families yourself.

Requires an API key.

country_codestringrequired
ISO alpha-2 code such as ng, ke, za
Request
curl "https://api.africa-api.com/v1/countries/ke/signals" \
  -H "Authorization: Bearer $AFRICA_API_KEY"
Response
{
  "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",
        "year": 2025,
        "frequency": "monthly",
        "source": "cbk_ke_signals",
        "freshness": "current",
        "as_of_period": "2026-01",
        "retrieved_at": "2026-03-09T18:00:00Z"
      },
      {
        "metric_key": "policy_rate_pct",
        "name": "Policy Rate (Latest)",
        "value": 8.75,
        "unit": "percent",
        "year": 2026,
        "frequency": "ad_hoc",
        "source": "cbk_ke_signals",
        "freshness": "recent",
        "as_of_period": "2026-02-10",
        "retrieved_at": "2026-03-09T18:00:00Z"
      },
      {
        "metric_key": "petrol_price_local_per_liter",
        "name": "Petrol Price (Latest)",
        "value": 186.31,
        "unit": "local_currency_per_liter",
        "year": 2026,
        "frequency": "monthly",
        "source": "epra_ke_fuel_signals",
        "freshness": "current",
        "as_of_period": "2026-03",
        "location_name": "Nairobi",
        "retrieved_at": "2026-03-15T09:00:00Z"
      },
      {
        "metric_key": "maize_wholesale_price_local_per_kg",
        "name": "Maize Wholesale Price (Latest)",
        "value": 70.74,
        "unit": "local_currency_per_kg",
        "year": 2026,
        "frequency": "monthly",
        "source": "world_bank_ke_food_signals",
        "freshness": "current",
        "as_of_period": "2026-03",
        "location_name": "Market Average",
        "retrieved_at": "2026-03-21T09:00:00Z"
      },
      {
        "metric_key": "precipitation_7d_mm",
        "name": "Precipitation (7 Day Total)",
        "value": 16.0,
        "unit": "millimeters",
        "year": 2026,
        "frequency": "ad_hoc",
        "source": "nasa_power_climate_signals",
        "freshness": "current",
        "as_of_period": "2026-03-05 to 2026-03-11",
        "retrieved_at": "2026-03-16T09:00:00Z"
      },
      {
        "metric_key": "refugees_hosted_total",
        "name": "Refugees Hosted",
        "value": 626546,
        "unit": "persons",
        "year": 2025,
        "frequency": "annual",
        "source": "unhcr_displacement_signals",
        "freshness": "recent",
        "retrieved_at": "2026-03-16T09:00:00Z"
      },
      {
        "metric_key": "load_shedding_stage",
        "name": "Load Shedding Stage (Latest)",
        "value": 0,
        "unit": "stage",
        "year": 2026,
        "frequency": "ad_hoc",
        "source": "eskom_za_grid_signals",
        "freshness": "current",
        "as_of_period": "2026-03-12",
        "retrieved_at": "2026-03-12T18:00:00Z"
      },
      {
        "metric_key": "mobile_subscriptions_per_100",
        "name": "Mobile Cellular Subscriptions",
        "value": 118.6,
        "unit": "subscriptions_per_100_people",
        "year": 2024,
        "frequency": "annual",
        "source": "world_bank_wdi",
        "freshness": "recent",
        "retrieved_at": "2026-03-09T11:39:09Z"
      }
    ],
    "disaster_alerts": [
      {
        "event_key": "1102919:1:fl:ke",
        "event_type": "FL",
        "name": "Flooding in Kenya",
        "description": "Heavy rain and flooding conditions",
        "alert_level": "orange",
        "alert_score": 2.4,
        "severity_value": 120.0,
        "severity_text": "Heavy rain",
        "severity_unit": "mm/24h",
        "event_from_at": "2026-03-13T09:00:00Z",
        "event_to_at": "2026-03-16T09:00:00Z",
        "source_modified_at": "2026-03-13T10:30:00Z",
        "report_url": "https://www.gdacs.org/report.aspx?eventid=1102919",
        "details_url": "https://www.gdacs.org/report.aspx?eventid=1102919&episodeid=1",
        "source_system": "GDACS",
        "source": "gdacs_disaster_alerts",
        "freshness": "current"
      }
    ],
    "commodity_benchmarks": [
      {
        "commodity_key": "crude_oil_benchmark_usd_per_bbl",
        "commodity_name": "Crude Oil Benchmark",
        "unit": "usd_per_bbl",
        "currency_code": "USD",
        "price_date": "2026-01-01",
        "price_value": 74.8,
        "source": "world_bank_pink_sheet_signals",
        "freshness": "recent"
      },
      {
        "commodity_key": "maize_benchmark_usd_per_mt",
        "commodity_name": "Maize Benchmark",
        "unit": "usd_per_mt",
        "currency_code": "USD",
        "price_date": "2026-01-01",
        "price_value": 215.0,
        "source": "world_bank_pink_sheet_signals",
        "freshness": "recent"
      }
    ],
    "fx_rates": [
      {
        "base_currency": "USD",
        "quote_currency": "KES",
        "rate": 129.44,
        "date": "2026-03-08",
        "source": "fx_usd_daily",
        "freshness": "current"
      }
    ],
    "market_snapshots": [],
    "trade": {
      "latest_year": 2024,
      "granular_latest_year": 2024,
      "granular_years": [2023, 2024]
    },
    "government": {
      "current_head_of_state": {
        "leader_name": "William Ruto",
        "role_type": "head_of_state"
      }
    },
    "generated_at": "2026-03-09T18:00:00Z"
  }
}

Current Coverage Today

Use this table as the live coverage map for the signals layer:

Country or scopeLive signal families
Kenyacentral bank, fuel prices, food prices, climate
Moroccocentral bank
Namibiacentral bank
Nigeriacentral bank, grid, climate
South Africacentral bank, grid, fuel prices, airport traffic, airport on-time performance, port operations, climate
Tanzaniacentral bank, climate
Tunisiacentral bank, climate
Countries with active GDACS alertsdisaster alerts
Countries with UNHCR totalsdisplacement context
All 54 countrieshistorical highlight observations in the same payload

For a broader product view, see Coverage.

Service Coverage Matrix

Country or scopeMacroPricesPowerAirportsPortsClimateRisk context
KenyaYesFuel and maize--YesYesGDACS and UNHCR when present
MoroccoYes----Historical backboneGDACS and UNHCR when present
NamibiaYes----Historical backboneGDACS and UNHCR when present
NigeriaYes-Yes--YesGDACS and UNHCR when present
South AfricaYesFuelYesYesYesYesGDACS and UNHCR when present
TanzaniaYes----YesGDACS and UNHCR when present
TunisiaYes----YesGDACS and UNHCR when present
WAEMU countriesBCEAO policy rates----Historical backboneGDACS and UNHCR when present
CEMAC countriesBEAC policy rates----Historical backboneGDACS and UNHCR when present

South Africa Full Example

South Africa Signals
curl "https://api.africa-api.com/v1/countries/za/signals" \
  -H "Authorization: Bearer $AFRICA_API_KEY"
Representative Mixed Response
{
  "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"
    }
  }
}

When To Use Signals

Use /v1/countries/{country_code}/signals when you need:

  • a dashboard card payload
  • an agent-friendly current snapshot
  • a compact country summary for operational use
  • benchmark commodity context without querying another endpoint family

Use /v1/data when you need:

  • full time series
  • multi-country comparisons
  • explicit metric/frequency filtering
  • direct source pinning

Transport operations now include South Africa airport and port signals plus Kenya port signals, so /v1/countries/za/signals and /v1/countries/ke/signals both carry official live logistics context.

Example for a latest monthly signal through the canonical observation endpoint:

Latest Monthly Signal Via /v1/data
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:

  • current
  • recent
  • historical

That label is derived from frequency, year, retrieved timestamp, or market/FX trade date.

Signals do not replace the historical observation layer. They are a convenience view over the platform's latest useful country-level state.

Where a central-bank source is available, /signals will prefer that country-specific source over a broader monthly feed for the same latest-signal metric. Today that includes Kenya, South Africa, and Nigeria.

Some current price signals are local or market-specific rather than national. Kenya fuel prices currently 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.

Some current operational signals are national system statements rather than economic statistics. 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. These are best treated as operational context rather than long-run structural indicators.

Some current climate signals are daily point-based estimates rather than annual national indicators. NASA POWER temperature, humidity, and rolling rainfall values are included as current operational context and are best interpreted as recent geospatial climate signals.

Some current risk signals are event-driven rather than periodic statistics. GDACS disaster alerts indicate active country-linked floods, cyclones, earthquakes, wildfires, volcanic events, and related emergencies when GDACS currently reports them.

Commodity benchmarks are global reference series. They are included in /signals as current context, not as country-specific observations.

On this page