Seasonal rainfall anomaly by county for Kenya and sub-Saharan Africa

Seasonal rainfall departure from the long-term normal by administrative unit and season, for the whole of sub-Saharan Africa, stamped at the current pentad and accumulating forward from June 2026.

Catalogue entry: Rainfall anomaly. Seasonal rainfall anomaly versus the long-term normal, by admin unit — the weather side of a demand call. Covers all of sub-Saharan Africa.

Questions this data answers

  • Did the 2026 long rains fail in Bungoma and Kakamega, and by how much against normal, for triggering insurance or relief?
  • Which Kenyan counties had the wettest and the driest season this year, for planning input demand at planting?
  • How far behind normal are the short rains so far in Baringo, dekad by dekad?
  • Is a below-normal vegetation reading in a district explained by rainfall, or is something else wrong?
  • Where across sub-Saharan Africa is the current season running below normal, for sourcing and pricing?

What the rainfall anomaly data holds

Season rainfall stated as a percentage departure from the long-term normal, for every administrative unit and season across sub-Saharan Africa, with the mean over the unit plus the driest and wettest pixel found inside it. 0 means normal, −93 means almost no rain at all against that normal, +300 means 4 times the normal. Seasons carry their own name per country; Kenya’s long rains are marmay, its short rains octdec. Country codes throughout this layer run 3 letters.

Forward only

The published product only ever carries the current state of a season, so history on the platform starts with the first stamp in June 2026 and simply lengthens by a week at a time from there. A season’s final value is whatever the last stamp read right before that season closed.

The 47 counties on 26 August

The chart ranks the long-rains departure across every Kenyan county. The coast reads well below normal: Mombasa −136, Kwale −93, Kilifi −64, Lamu −56. The western breadbasket sits below to near normal: Bungoma 26, Kakamega 39, Busia 41, Trans Nzoia 82. The central highlands, by contrast, run far above: Murang’a 837, Kiambu 762, Nairobi 546, Machakos 476, large mostly because the rain fell against a genuinely low normal there. The western figures line up exactly with the July hotspot bulletin, which had already named Bungoma, Kakamega, Uasin Gishu, Elgeyo Marakwet and Trans Nzoia for moisture stress.

Reading with the vegetation series

A below-normal vegetation anomaly in a unit whose rainfall also reads below normal is simply a rainfall story. The same anomaly under normal rainfall points somewhere else entirely: planting date, pest pressure, input availability. Both datasets key to the same unit, and rainfall tends to lead vegetation by 2 to 4 weeks, roughly the time cropland takes to respond.

Sample data

Long-rains anomaly, all 47 counties, stamp of 26 August 2026

Coastal counties below normal, central highlands far above. Values are percent departure from the long-term seasonal total, so 0 is normal and −93 (Kwale) is almost no rain against the normal.

Sample rows, Kenya

StampCountyP-codeSeasonMean %Min %Max %
2026-09-11BaringoKE030marmay187.478.5437.3
2026-09-11BaringoKE030octdec37.7-19.2177.4
2026-09-11BometKE036marmay91.5-9.4176.3
2026-09-11BometKE036octdec193.999.7294.2
2026-09-11BungomaKE039marmay25.8-25.7102.8
2026-09-11BungomaKE039octdec23.9-45.4124.8
2026-09-11BusiaKE040marmay41.1-30.6115.7
2026-09-11BusiaKE040octdec183.565.4243.5
2026-09-11Elgeyo MarakwetKE028marmay214.2135.9344.4
2026-09-11Elgeyo MarakwetKE028octdec39.9-4.1111.9

Percent of normal inside the unit: mean, driest pixel, wettest pixel. Country codes on this layer are ISO3.

Dataset idmarket.rainfall_anomaly
Cadenceper season/dekad
EndpointGET /market/rainfall-anomaly
Key scopemarket:read
Declared fields3
History2026-06 to today
Coverageall of sub-Saharan Africa, admin level 1 and 2
StatusServed over the API

Global reference data — the same rows for every caller.

Source: CHIRPS (UCSB Climate Hazards Center).

Fields

FieldUnitNote
anomaly_mean%vs long-term normal
anomaly_min%
anomaly_max%

Filters

sourcecountryadm1adm2adm_leveladm_pcodeseason

At least one filter is required (country or admin area). This layer covers a continent, so an unfiltered read is refused with a 400 that names the filters instead of scanning the whole store.

The same call, three ways

curl -G https://api.nuasense.com/api/nuasense/v1/market/rainfall-anomaly \
  -H "Authorization: Bearer nua_live_…" \
  -d start=-30d -d country=ken -d season=marmay

Through the MCP connector the same read is the platform_dataset tool with dataset=market.rainfall_anomaly. Through a scheduled export it is one job with the same filters, delivered as a file. Every dataset takes the same arguments: start and end, every with agg, fields, limit up to 5,000, order, and the tags it declares.