NASA API: List natural events
List EONET natural events with latest observations in the past number of days, most recent first. A country or region filter matches reported event locations against mapped boundaries; locations and ongoing status are approximate, and not all events have a reported size or strength.
Unofficial. Not affiliated with or endorsed by NASA.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Days Back optional
days_back Include observations from this many days including today, for example 30.
30
Whole number from 1 to 365. Default
30.- Open Only optional
open_only Include only ongoing events, for example true.
false
True or false. Default
true.- Event Type optional
event_type Event category, for example wildfires.
severe_storms
One of
any,wildfires,volcanoes,severe_storms,sea_and_lake_ice,floods,dust_and_haze. Defaultany.- Max Results optional
max_results Maximum number of events to return, for example 50.
15
Whole number from 1 to 200. Default
50.- Country or Region optional
country_or_region Country or region name to restrict results, for example California or Australia. Leave blank for anywhere.
(default)
Input as JSON
{ "days_back": 30, "open_only": false, "event_type": "severe_storms", "max_results": 15}Output
{ "events": [ { "ongoing": "yes", "latitude": 13.9, "longitude": -101.5, "page_link": "https://eonet.gsfc.nasa.gov/api/v3/events/EONET_24875" , "event_name": "Tropical Storm Rachel", "event_type": "Severe Storms", "source_links": [ "https://www.metoc.navy.mil/jtwc/products/ep1826.tcw" , "https://www.nhc.noaa.gov/archive/2026/RACHEL.shtml" ], "eonet_event_id": "EONET_24875", "size_or_strength": "45 kts", "latest_observation_date": "2026-09-28" }, { "ongoing": "yes", "latitude": 17.3, "longitude": -162.7, "page_link": "https://eonet.gsfc.nasa.gov/api/v3/events/EONET_24786" , "event_name": "Hurricane Nolo", "event_type": "Severe Storms", "source_links": [ "https://www.metoc.navy.mil/jtwc/products/ep1526.tcw" ], "eonet_event_id": "EONET_24786", "size_or_strength": "130 kts", "latest_observation_date": "2026-09-28" }, { "ongoing": "yes", "latitude": 28.1, "longitude": 133.2, "page_link": "https://eonet.gsfc.nasa.gov/api/v3/events/EONET_24787" , "event_name": "Super Typhoon Surigae", "event_type": "Severe Storms", "source_links": [ "https://www.metoc.navy.mil/jtwc/products/wp2526.tcw" ], "eonet_event_id": "EONET_24787", "size_or_strength": "70 kts", "latest_observation_date": "2026-09-28" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nasa.gov/list_natural_events","input":{"days_back":30,"open_only":false,"event_type":"severe_storms","max_results":15}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "nasa.gov/list_natural_events" , "input": { "days_back": 30, "open_only": False, "event_type": "severe_storms", "max_results": 15 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "nasa.gov/list_natural_events" , "input": { "days_back": 30, "open_only": false, "event_type": "severe_storms", "max_results": 15 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run nasa.gov/list_natural_events# with {"days_back":30,"open_only":false,"event_type":"severe_storms","max_results":15}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "days_back": { "type": "integer", "default": 30, "maximum": 365, "minimum": 1, "description": "Include observations from this many days including today, for example 30." }, "open_only": { "type": "boolean", "default": true, "description": "Include only ongoing events, for example true." }, "event_type": { "enum": [ "any", "wildfires", "volcanoes", "severe_storms", "sea_and_lake_ice", "floods", "dust_and_haze" ], "type": "string", "default": "any", "description": "Event category, for example wildfires." }, "max_results": { "type": "integer", "default": 50, "maximum": 200, "minimum": 1, "description": "Maximum number of events to return, for example 50." }, "country_or_region": { "type": "string", "default": "", "description": "Country or region name to restrict results, for example California or Australia. Leave blank for anywhere." } }}Output schema
{ "type": "object", "required": [ "events" ], "properties": { "events": { "type": "array", "items": { "type": "object", "required": [ "event_name", "event_type", "latest_observation_date", "ongoing", "size_or_strength", "source_links", "page_link", "latitude", "longitude", "eonet_event_id" ], "properties": { "ongoing": { "enum": [ "yes", "no" ], "type": "string", "description": "Whether EONET still considers the event open." }, "latitude": { "type": [ "number", "null" ], "description": "Latest reported latitude." }, "longitude": { "type": [ "number", "null" ], "description": "Latest reported longitude." }, "page_link": { "type": "string", "description": "Page for this event at EONET." }, "event_name": { "type": "string", "description": "Natural event name." }, "event_type": { "type": "string", "description": "EONET event category." }, "source_links": { "type": "array", "items": { "type": "string" }, "description": "Links supplied by event sources." }, "eonet_event_id": { "type": "string", "description": "EONET event identifier." }, "size_or_strength": { "type": [ "string", "null" ], "description": "Latest reported magnitude and unit, when available." }, "latest_observation_date": { "type": "string", "format": "date", "description": "Date of the latest reported observation." } }, "additionalProperties": false }, "description": "Matching natural events, most recent observation first." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nasa.gov/list_natural_events- Returns
- event name, type, latest observation date, ongoing, size or strength, source links, page link, coordinates, EONET id
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method nasa.gov/list_natural_events with the inputs above.
Ask your agent
- What wildfires are currently burning in California? Show me anything observed in the last 10 days.
- Pull NASA's EONET feed for active volcanoes worldwide reported over the past 60 days, up to 25 results.
- Any severe storms tracked near the Philippines in the last two weeks, including ones that have already ended?
- List ongoing floods in Bangladesh from the past month with their coordinates and source links.
- Using nasa.gov event data, give me the 100 most recent natural hazards of any type observed anywhere in the last 7 days.
See more
All NASA methodsLists near-Earth asteroids that pass Earth between two UTC dates within a chosen distance, with approach times, size ranges, speed and hazard status.
nasa.gov/list_near_earth_asteroidsFinds upcoming International Space Station sightings for a city in NASA's city list, with local start times, visibility and sky directions. Cities without scheduled passes return an empty list.
nasa.gov/get_iss_sightingsReturns NASA's Astronomy Picture of the Day for a date: title, explanation, featured media link, optional high-resolution link, and credit.
nasa.gov/get_astronomy_picture_of_the_daySearches NASA public photos, videos or audio by words and creation year, returning matches in relevance order with thumbnails and full-size file links.
nasa.gov/search_imagesLists NOAA space weather alerts, warnings, watches and summaries issued in the last 1 to 7 days, newest first, with validity times and NOAA scale levels when the message gives them.
swpc.noaa.gov/list_space_weather_alertsLists significant worldwide earthquakes for the past day, week, or month, newest first, with USGS PAGER alert levels and impact summaries when USGS provides them.
earthquake.usgs.gov/list_significant_earthquakesLists active InciWeb fire incidents in a US state, newest table updates first, with size, containment, location, cause, dates and any evacuation or closure note. Prescribed fires and other fire-related incidents can appear.
inciweb.wildfire.gov/list_active_wildfiresFinds recent USGS earthquakes near a city, address, or region, with distances and times in the searched place's time zone.
earthquake.usgs.gov/search_earthquakes