Skip to main content
GET /api/live-data/slow Returns contextual and enrichment data that refreshes every 5 minutes. Supports optional bounding-box filtering for geospatial datasets.
Rate limit: 60 requests per minute per IP.

Query parameters

s
number
South bound of the bounding box (latitude, −90 to 90). All four bbox parameters must be provided together for filtering to apply.
w
number
West bound of the bounding box (longitude, −180 to 180).
n
number
North bound of the bounding box (latitude, −90 to 90).
e
number
East bound of the bounding box (longitude, −180 to 180).

Response

last_updated
string
ISO 8601 UTC timestamp of the last full data update.
news
object[]
Clustered RSS news items with risk scores and coordinates. Always returned in full.
stocks
object
Defense sector stock prices keyed by ticker symbol.
oil
object
Current Brent and WTI crude oil prices.
weather
object
Global weather radar data from RainViewer.
traffic
object[]
Traffic incident data.
earthquakes
object[]
Recent earthquake events from USGS. Filtered by bbox when provided.
frontlines
object
GeoJSON polygon data for active conflict frontlines. Always returned in full (not bbox-filterable).
gdelt
object[]
GDELT geopolitical event features. Always returned in full — filtered client-side.
airports
object[]
Global airport reference data. Always returned in full.
kiwisdr
object[]
KiwiSDR receiver locations. Filtered by bbox (uses lat/lon keys).
space_weather
object
Solar wind and geomagnetic storm indices.
internet_outages
object[]
Active internet outage reports. Filtered by bbox.
firms_fires
object[]
NASA FIRMS active fire detections. Filtered by bbox.
datacenters
object[]
Known data center locations. Filtered by bbox.
military_bases
object[]
Known military base locations. Filtered by bbox.
power_plants
object[]
Power plant locations and types. Filtered by bbox.
freshness
object
ISO 8601 timestamp for each data source indicating when it was last successfully fetched.

ETag caching

This endpoint returns an ETag header. The ETag incorporates the payload hash and bbox parameters. Send If-None-Match: <etag> on subsequent requests to receive HTTP 304 Not Modified when data is unchanged.

Examples

curl http://localhost:8000/api/live-data/slow
{
  "last_updated": "2024-01-15T12:05:00",
  "news": [
    {
      "title": "Example headline",
      "url": "https://example.com/article",
      "lat": 35.6,
      "lng": 139.7,
      "risk_score": 3
    }
  ],
  "stocks": {
    "LMT": { "price": 450.12, "change": 1.5 }
  },
  "oil": {
    "brent": 82.45,
    "wti": 78.30
  },
  "earthquakes": [],
  "firms_fires": [],
  "freshness": {
    "news": "2024-01-15T12:05:00",
    "earthquakes": "2024-01-15T12:05:01"
  }
}

Build docs developers (and LLMs) love