Send us a map. We return daily heat metrics, automatically, forever, built on the same reanalysis data as the IPCC and WMO, at the resolution your community actually needs.
ERA5 reanalysis covers the globe at hourly resolution, fusing satellite, radiosonde, and station data with a climate model. Scientifically authoritative, but a 28 km grid, not a neighborhood.
Public health teams and city planners need heat exposure for their specific communities, not regional averages. Turning a raw climate grid into per-community metrics takes engineering most teams can't sustain.
Any set of polygons, anywhere on Earth. A standard GeoJSON file, the same format used by Google Maps, QGIS, and every modern GIS tool.
Projects start with 10 days of historical data. New days append automatically every morning. No further action required.
A scheduled process updates every active project each morning, blending near-real-time estimates with authoritative ERA5 data as it becomes available.
You don't need to know anything about AWS, databases, or reanalysis pipelines. You need a shape file and an API key.
A GeoJSON FeatureCollection, each feature a named polygon: city districts, census tracts, health zones, river catchments, anything with a boundary.
| project_id | a name for your study |
| json_obj | your GeoJSON polygons |
| credentials | username + API key |
| date_from / date_to | optional query filter |
curl -X POST https://api.heatrisk.io/v1/evaluate \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"project_id": "phoenix-cooling-centers",
"json_obj": { "type": "FeatureCollection", "features": [ ... ] }
}'
{
"project_id": "phoenix-cooling-centers",
"status": "ready",
"date": "2026-06-17",
"polygon": "Maricopa County",
"metrics": {
"t2m_c": { "max": 43.3, "mean": 36.1 },
"heat_index_f": { "max": 102.5 },
"utci_c": { "max": 62.3, "category": "beyond_extreme" },
"wbgt_c": { "max": 31.3 }
},
"vulnerability": { "rwi": 0.60, "healthsites_per_10k": 1.2 }
}
Endpoint and shape shown here are illustrative; real credentials come with the real endpoint and the
actual request/response contract in docs/api.md.
UTCI (ISO 15743) and WBGT (ISO 7243) are the physiological and occupational-safety standards, comparable across a dry desert and a humid tropic alike.
WBGT crosses its own hard line at 32°C (suspend moderate/heavy outdoor work) and 35°C (all outdoor work must stop). These are the thresholds occupational-health agencies and emergency managers act on directly.
Standard measurement, 2m above ground.
"Feels like" temperature. Misleading in dry climates.
Radiation + wind + humidity + temp. Comparable across climates.
Occupational threshold. >35°C: stop outdoor work.
All five projects are live in the API today — and were yesterday, and every morning before that.
Oaxaca Highlands and Andalusia both show the faint outline of their full state/region behind the colored sample: the Oaxaca Highlands' 50 municipios are a scattered set of specific farming communities in the Oaxaca state highlands (not Oaxaca de Juárez, the state capital), not one contiguous area, and Andalusia's 120 span Seville province plus neighboring slices of Huelva, Cádiz, and Córdoba — the gaps between them are real neighboring municipios that simply aren't part of this dataset, not missing data. The API works on any set of boundaries you send it, complete or not.
Color always reflects each area's real UTCI danger level. Switch metrics and watch bar height move, while the color, the actual physiological risk, doesn't. That gap is the whole reason this API reports four metrics, not one.
Switch to Heat Index: Arizona falls out of first place. Switch to UTCI: it's back on top. Same place, same day: dry air hides what solar radiation is actually doing.
Switch to WBGT: Bangladesh jumps past Arizona and Andalusia. 35.2°C is the ISO threshold where all outdoor work must stop.
Every area here changes rank depending on which lens you use. That's the case for reporting all four, every time, instead of picking just one.
Every project, every day, three sources: hollow provisional cells become solid when ERA5 confirms them, usually within 6 days, and violet forecast cells become provisional as each day arrives — the pipeline's reconciliation, visible.
Every polygon also carries an Open-Meteo forecast alongside its confirmed data — illustrative example below for Arizona; see the colonia specimen explorer further down for a live, per-polygon forecast you can search yourself.
Illustrative example, not live data — Open-Meteo forecast model, refreshed daily, superseded by ERA5-confirmed values as each day arrives.
Back to 1946 — any June since then, per polygon, through the same code that ran this morning. That's the archive's real reach: not a trend claim (nine single hottest-days a decade apart is too little to call a slope), just proof of depth.
Each bar is that June's single hottest day, by heat index, pulled directly from the CDS archive and run through the same computation code the live API uses — not sampled from the daily pipeline, which only holds a rolling recent window. Heat index and 2m air temperature only: these are ERA5-native variables with an unbroken historical record back to 1940. UTCI/WBGT are not shown here because they depend on wind and solar fields sourced from a separate near-real-time archive that doesn't extend this far back. Computed once; historical values don't change.
64 districts, initialized in under 15 minutes. Jun 23 peak conditions — and "typical" is exactly what the ten-year baseline in the Mexico City deep dive below is built to test.
| District | UTCI °C | WBGT °C | Population |
|---|---|---|---|
| Loading live districts… | |||
Top 8 of 64 districts by UTCI · real ERA5 data
Risk depends on who is exposed and their adaptive capacity. Each indicator is extracted per polygon at project initialization.
82.7M people live in Bangladeshi districts facing both extreme heat stress and below-average wealth — as of Jul 4.
Each dot is one of Bangladesh's 64 districts — position is heat exposure (UTCI) vs. relative wealth, color is the site's severity tier, size is population. Wealth data (Meta RWI) covers ~93 low- and middle-income countries; for high-income geographies the API substitutes healthcare-access and land-cover indicators.
| District | UTCI °C | RWI | Facilities/10k | Population |
|---|---|---|---|---|
| Sunamganj | 53.5 | −0.21 | 0.10 | 2.9M |
| Sylhet | 52.6 | 0.00 | 0.30 | 4.0M |
| Natore | 52.5 | −0.07 | 0.35 | 2.0M |
| Netrakona | 52.5 | −0.19 | 0.24 | 2.6M |
| Thakurgaon | 52.1 | −0.28 | 0.12 | 1.6M |
| Maulvibazar | 52.0 | −0.08 | 0.18 | 2.2M |
| Mymensingh | 52.0 | −0.08 | 0.26 | 5.9M |
| Lalmonirhat | 51.9 | −0.19 | 0.09 | 1.5M |
Top 8 of 37 qualifying districts, ranked by UTCI · real ERA5 data
Mexico City runs at colonia resolution — 1,182 neighborhoods, each measured against its own ten-year baseline (2016–2025) for this exact day of year. This is the API's full output, nothing summarized away.
On Jun 28, 1,179 of Mexico City's 1,182 colonias ran warmer than usual for the date — each measured against its own ten-year baseline. 3 crossed the 95th percentile.
Warmer than usual. Hotter than roughly three of every four readings this colonia has seen on this date since 2016 — but short of extreme.
The gauge reads from live data — on a normal day it says so. Baseline: 120 monthly reference distributions per colonia, 2016–2025 (WMO-standard decade), matched by day of year.
1,182 colonias make a solid choropleth unreadable at this scale (heat itself is grid-limited here — see the specimen explorer below). Instead, three that each tell part of today's story, located within the city:
A median composite of clear-sky Landsat 8/9 thermal readings across this city's three most recent warm seasons (Mar–May 2024–2026), each colonia measured against the city's own average — skin temperature, not air temperature. Unlike ERA5's ~28 km grid, Landsat's ~100 m thermal band resolves individual colonias, so this is the first per-colonia map this API has ever been able to draw honestly.
Search any of Mexico City's 1,182 colonias to see every field the API returns for it — 36 heat metrics, 16 ten-year baseline percentiles, 42 vulnerability indicators (including the Landsat persistent-heat composite above), and an Open-Meteo forecast outlook, from one API call.
Loading colonia detail…
These are live projects, not hypotheticals: 272 polygons across 5 countries, updating today.
Data is already flowing. No pilot required to see it work.
Serverless AWS infrastructure: no servers to maintain, scales automatically, costs near-zero when idle.
EventBridge replays this whole flow automatically, every morning at 06:00 UTC, for every active project. ERA5 (~5-day lag) and Open-Meteo (same-day) fill in for each other so today's date is never empty; LandScan sizes the population behind every polygon.
Responds immediately with a project ID and estimated ready time.
LandScan extraction, 10-day ERA5 backfill, heat-metric computation.
06:00 UTC, every morning: confirms yesterday's ERA5 data and refreshes a 7-day forecast, no further action needed.
10-year climatology, computed once per project.
Plain-language risk summary, any time window.
Four functions: API requests, daily updates, WMO computation, async jobs.
Serverless. Scales to zero when idle.
GeoJSON and raster storage, pre-loaded once.
Fires the daily 06:00 UTC trigger.
Async jobs, automatic retries.
Keys and credentials, never hardcoded.
The pipeline keeps growing — some of what's below has already shipped.
PM2.5, PM10, NO₂, O₃, SO₂, and CO alongside heat exposure — live for every demo project, with real ground-station readings (OpenAQ) taking precedence over modeled CAMS values wherever a station exists inside a polygon, and a hierarchical spatial-consistency QC pass to catch sensor faults before they reach an ambient estimate.
Thermal-band satellite imagery, composited into a warm-season baseline per polygon — the first per-colonia surface-temperature map this API has ever been able to draw honestly (ERA5's ~28 km grid never resolved colonias; Landsat's ~100 m thermal band does). In Mexico City this composite already surfaced a 26°C persistent surface-temperature range across colonias, explained mostly by tree canopy.
Beyond the existing experimental narrative summary, we're developing and validating a deeper AI interpretation layer that reasons over heat-specific context — physiological thresholds, occupational exposure standards, local vulnerability — rather than generic summarization. Being validated against real pilot data before it ships broadly.
Have a data source your work depends on? Tell us: new variables get evaluated against real pilot use cases, not added speculatively.
A GeoJSON map is all you need. The system initializes and updates every day without further action.
ERA5 is the global scientific standard for atmospheric reanalysis, the same data the world's leading climate agencies use.
Physical exposure alone doesn't predict risk. Vulnerability, the WMO baseline, and AI narrative turn metrics into decisions.
Contact us to request API credentials. We'll set up your account and walk through your first project.