Geospatial Data

GeoJSON endpoints for map overlays and spatial analysis. All responses use the standard GeoJSON FeatureCollection format, compatible with MapLibre, Mapbox, Leaflet, deck.gl, and other mapping libraries.

Available datasets

Storm trackscache: ~60s

Active radar-tracked storm cells with projected paths, speeds, and hail/rotation attributes.

Storm reportscache: ~60s

Recent severe weather reports including tornadoes, hail, and damaging wind events from SPC.

Observationscache: ~60s

METAR surface observations from automated weather stations across the US.

Climate reportscache: ~120s

Daily climate reports comparing observed conditions to historical normals and records.

Record eventscache: ~60s

Temperature and precipitation records that have been set or tied recently.

Response shape

Every dataset returns a GeoJSON FeatureCollection whose features carry dataset-specific properties. The full per-dataset property schema lands in the embedded reference below as the Phase 2 spec is published.

Caching

All GeoJSON datasets use server-side in-memory caching with TTLs matching the upstream data refresh rate. This means responses are always within one refresh cycle of the latest data. Client-side caching is controlled via Cache-Control response headers.

Map integration

Because every response is plain GeoJSON, integration with any web mapping library is a one-liner: fetch the dataset, hand the result to your map library's GeoJSON source. The example below uses MapLibre GL JS; the same pattern works with Mapbox GL JS, Leaflet, or deck.gl.

// Pseudocode -- see the embedded reference below for the
// canonical endpoint paths and authentication scheme.
const geojson = await swClient.stormTracks();

map.addSource("storm-tracks", { type: "geojson", data: geojson });
map.addLayer({
  id: "storm-tracks-layer",
  type: "circle",
  source: "storm-tracks",
  paint: {
    "circle-color": "#ef4444",
    "circle-radius": 6,
    "circle-opacity": 0.8,
  },
});

Geospatial data reference

Coming with Phase 2. The geospatial data operations land in the canonical OpenAPI document during the Phase 2 implementation (issue #7258). Until then, see the REST API introduction for the resources already published.