The ExposureAPI takes a GeoJSON polygon and returns satellite-derived environmental exposure for the area inside it: annual PM2.5, monthly vegetation greenness (NDVI), monthly land surface temperature, monthly near-surface air temperature, and a twelve-month drought index (SPEI-12), from 2000 through 2024, with a citable methods paragraph attached. This post runs it over twelve places, seven cities and five rural or remote polygons, and asks a narrower question than "what are the numbers." The question is whether four instruments measuring four unrelated physical quantities (aerosol optical depth, red and near-infrared reflectance, thermal emission, and a modeled water balance) will all agree that a real event happened, and whether that agreement still means anything where there is no ground network to validate it against.
That last part is the reason to care. In a place with dense monitors, satellite estimates are a convenience. In a place with none, they are the only measurement there is, and there is nothing to check them against. Agreement among physically independent sensors is one of the few checks available. If four instruments that share no failure mode all move together, the event is more likely real than an artifact of any single one.
Nairobi, wet to dry
Start where there is at least partial ground truth. Nairobi's 2020 was a wet year and its 2022 was a dry one, and every metric records the swing in the same direction. NDVI ran 0.535 in 2020, the highest in the series, and 0.426 in 2022, the lowest. Land surface temperature ran the other way, 30.1°C in 2020 (series low) against 33.0°C in 2022 (series high). SPEI-12 went from +1.00 to -0.99, wet to moderately dry. Population-weighted PM2.5 sat around 20 and 16 µg/m³, both roughly three to four times the WHO annual guideline of 5.
None of those four sensors knows what the others are doing. The greenness comes from reflectance, the temperature from thermal emission, the drought from a precipitation-and-evaporation balance, the PM2.5 from an aerosol-model assimilation. They agree anyway. I'd caution against reading the magnitudes as matched: SPEI-12 calls 2022 moderately dry, not extreme, and its actual driest Nairobi year is 2017. What converges is the direction, and the direction is clean.
Hover or tap any point on a chart for that month's values.
The metrics keep different clocks
Rotterdam in summer 2018 is worth slowing down on, because it shows the instruments do not all respond on the same timescale. The heat arrived and left fast. July 2018 surface temperature hit 32.5°C, the highest single month in Rotterdam's record, and July NDVI fell to 0.507 against a July norm near 0.564 as the vegetation dried out. Both of those are instantaneous readings; they spike in July and relax by autumn.
SPEI-12 does not. Because it integrates twelve months of water balance, the rainfall deficit that opened in summer 2018 keeps accumulating in the index through the back half of the year and does not reach bottom until March 2019, at -1.99. Reading the drought index alone, the worst month is nine months after the worst heat. That is not the instruments disagreeing. It is a thermometer and a rain gauge answering two different questions, one about today and one about the year behind it. When you overlay them, the lag is the information.
Hover or tap any point on a chart for that month's values.
The same test, in farmland, in 2022
Move the test to a polygon of Po Valley cropland in northern Italy, where the water balance actually decides the harvest, and 2022 lines up almost too well. Surface temperature peaked at 38.1°C in July, air temperature at 27.7°C. SPEI-12 fell through the whole second half of the year, reaching -2.05 by December, extreme by the index's own scale. NDVI held through the irrigated summer and then broke in autumn, down to 0.423 in October from a spring near 0.60. On the annual figures, 2022 is the worst year in the Po series on greenness (0.490), heat (23.7°C), and drought (annual mean SPEI-12 of -0.90, itself the lowest of any year 2010-2022) at once. This was the summer the Po River ran low enough to expose wartime wrecks in its bed.
Hover or tap any point on a chart for that month's values.
The surprise that breaks the pattern
Convergence is only interesting if the method can also be surprised, so here is a case where the obvious expectation was wrong. Los Angeles in spring 2020 was under lockdown, traffic collapsed, and the reasonable guess was that PM2.5 would fall. It rose. Population-weighted PM2.5 went from 10.7 µg/m³ in 2019 to 13.5 in 2020, a 25 percent increase in the year traffic emissions dropped. The reason shows up 200 miles north, in a polygon over the Sierra Burn Scar site, where the 2020 fires actually burned: PM2.5 there jumped to 39.8 µg/m³ against a baseline that normally sits between 5 and 11. The smoke that offset Los Angeles's traffic reductions is measurable at the source, several times over.
The fire also leaves a delayed mark. Burned slopes don't fail immediately in the greenness record; they fail the next spring, when they don't grow back. Los Angeles NDVI reached its series low in 2021 (0.338), not 2020, and the Sierra Burn Scar site's own greenness stepped down from 0.426 in 2020 to 0.390 in 2021. The event is in 2020. The vegetation consequence is in 2021. Both are visible in the record.
Hover or tap a year for exact values.
A place where nothing should converge, and nothing does
A pattern-finding method that lights up everywhere is worthless, so the sample includes a deliberate null. São Paulo is nearly flat across the whole record: NDVI around 0.55, surface temperature around 27.5°C, PM2.5 essentially unchanged from 2010 (15.7 µg/m³) to 2022 (15.7 µg/m³). Even its one genuinely dry year does not produce convergence. In 2019 SPEI-12 fell to -1.14, a real deficit, and the vegetation did not care, holding at a series-high 0.573. One metric moved, the others didn't, so there is nothing to report. Non-detection is the result, and it is the point: the instruments are not agreeing out of habit.
Same axes as the Nairobi panels above — flat here is flat, not a smaller version of Nairobi's swing.
Hover or tap any point on a chart for that month's values.
Where there is nothing to check against
Which brings the test to the place it was built for. The Marsabit rangeland in northern Kenya holds somewhere between 64,000 and 114,000 people across the record, sits near the epicenter of the 2020 to 2022 Horn of Africa drought, and has almost no ground instrumentation. There is no monitor network here to confirm or deny anything the satellites say.
Seven sites sit near dense monitor networks, where the satellite estimates can be graded against ground truth. Five don't — that's where multi-sensor agreement is doing real work, not just confirming what's already known.
What the satellites say is unambiguous. SPEI-12 reached -2.19 in April 2022, extreme drought, and stayed below -2 from March through June, four straight months. NDVI fell to a series-low annual 0.179, against 0.287 as recently as 2018, and its worst months dropped near 0.15. Two products that share no physics, one built from rainfall and evaporation and one from reflected light, describe the same deteriorating conditions in the same months. Surface temperature adds nothing here, because Marsabit runs above 42°C in wet years and dry ones alike, so this is a two-instrument agreement, not a four. But it is agreement, and it is the only validation available. When there is no ground truth, agreement between independent sensors is the best confirmation there is.
Hover or tap any point on a chart for that month's values.
What the instruments cannot do
A few limits are worth stating rather than burying. The Amazon polygon in Rondônia is the clearest one: its 2022 optical record is mostly missing, NDVI reading zero from May onward and surface temperature absent all year, because the arc of deforestation is also under near-permanent cloud. The one signal that survives is PM2.5, which roughly doubled over the record to 36.7 µg/m³ in 2022, tracking deforestation fires through a product that doesn't depend on a clear sky. That a place can be too cloudy to see in the optical bands and still legible in the aerosol record is itself the argument for using more than one instrument.
Hover or tap any point on a chart for that month's values.
The others are ordinary but real. PM2.5 here is annual, so it cannot resolve the autumn crop-residue burning that ties the Punjab cropland polygon (annual PM around 63 to 86 µg/m³) to Delhi downwind; the source-region story shows up only in Punjab's double-crop greenness cycle, not in a monthly smoke curve. Land surface temperature is a daytime, single-overpass measurement, and its annual means are sensitive to missing winter months, so I use it for event peaks (Phoenix touched 54.2°C in June 2018, the hottest single month in the sample) and not for decadal per-city trends. And the PM2.5 product itself is model-assimilated, most trustworthy where monitors are dense and least so exactly where this method matters most. Convergence raises confidence. It is not proof.
How this works
This post's numbers come from a specific pipeline, and I'd rather name it exactly than leave it implicit. PM2.5 is ACAG SatPM2.5 V6.GL.02.04 (van Donkelaar et al., CC-BY 4.0), a global 0.01° satellite-derived product, population-weighted with LandScan Global 30 arc-second population grids. NDVI and land surface temperature for this post came from MODIS MOD13A1 (500m, 16-day composite) and MOD11A2 (1km, 8-day composite) via Microsoft's Planetary Computer; the production API defaults to the coarser monthly MOD13C3 (0.05°) for NDVI unless a finer product is requested, which matters if your study polygons are small. Air temperature is ERA5-Land monthly means (Copernicus CDS, 0.1°), and SPEI-12 is computed from ERA5-Land precipitation and temperature via Thornthwaite PET, at the same 0.1° resolution. All of it runs through the same zonal-statistics engine, area- and population-weighted per polygon.
Two honest gaps, stated rather than buried: the API does not yet return an uncertainty or confidence interval alongside each estimate, only the point value and its source citation, so treat every number here the way I do in this post, with the caveats spelled out in prose rather than baked into a machine-readable error field. And the underlying mirrors currently run through 2024; there's no live, continuously updating feed yet.
A representative response for one polygon, one month, trimmed for length:
{
"project_id": "example-polygon",
"year_start": 2022,
"year_end": 2022,
"skus": [
"lst",
"ndvi",
"pm25",
"spei",
"t2m"
],
"metrics": [
{
"name": "example-polygon",
"year": 2022,
"pm25_mean": 18.4,
"pm25_pop_mean": 19.1,
"population": 708316
}
],
"metrics_monthly": [
{
"name": "example-polygon",
"year": 2022,
"month": 4,
"ndvi_mean": 0.42,
"lst_mean": 24.6,
"t2m_mean": 15.2,
"spei": -1.1
}
],
"provenance": {
"pm25_source": "ACAG SatPM2.5 V6.GL.02.04",
"ndvi_source": "MODIS MOD13A1.061 (NASA LP DAAC)",
"lst_source": "MODIS MOD11A2.061 (NASA LP DAAC)",
"t2m_source": "ERA5-Land monthly means, 2m temperature (Copernicus CDS)",
"spei_source": "Computed from ERA5-Land via Thornthwaite PET",
"population_source": "LandScan Global 30 arc-sec"
}
} If you're an academic researcher and want to run this against your own study polygons, or you have questions about coverage, resolution, or licensing for a specific use case, email me directly — I'm prioritizing academic use cases first, precisely because that's where I can be most useful fastest.
Why this is the interesting part
The tidy cases here are the ones with monitors: Los Angeles, Rotterdam, places where the satellites can be graded. The reason to build any of this is the other cases. A rangeland in northern Kenya, a stretch of the arc of deforestation, a cropland polygon nobody instruments, are where exposure estimates are most needed for health work and least checkable. Multi-sensor agreement is one honest way to work in those places: not a claim of certainty, but a test that a real event leaves the same fingerprint in instruments that cannot all be fooled the same way. The next step is to turn that agreement into a number, an explicit convergence score, calibrated against the monitor-rich sites and then carried into the deserts.
The problems worth doing are usually the ones where you can't look up the answer. If you have an exposure question sitting in a place with no ground truth, that is exactly the kind of problem this was built for, and the kind I like being handed.
If you use this tool in a paper, please cite: Kishore, N. (2026). ExposureAPI v2.0.0. Zenodo. https://doi.org/10.5281/zenodo.21093862