NOAA API: List active storms
Lists active tropical cyclones in the selected basin, strongest first, with current conditions, advisory and forecast cone.
Unofficial. Not affiliated with or endorsed by NOAA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Basin optional
basin Select a hurricane basin, for example eastern_pacific. Default: all.
all (default)
One of
all,atlantic,eastern_pacific,central_pacific.
Input as JSON
{}Output
{ "storms": [ { "name": "Vance", "type": "hurricane", "basin": "eastern Pacific", "latitude": 10.9, "location": "440 mi Ssw of Acapulco Mexico", "storm_id": "ep222026", "longitude": -102.1, "advisory_url": "https://www.nhc.noaa.gov/text/MIATCPEP2.shtml" , "forecast_cone_url": "https://www.nhc.noaa.gov/graphics_ep2.shtml" , "hurricane_category": 1, "movement_direction": "NNW", "movement_speed_mph": 6, "minimum_pressure_mb": 982, "latest_advisory_time": "2026-10-23T09:00:00+00:00", "maximum_sustained_winds_kmh": 140, "maximum_sustained_winds_mph": 85 } ], "summary": "1 active storm."}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nhc.noaa.gov/list_active_storms","input":{}}' # 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": "nhc.noaa.gov/list_active_storms" , "input": {}})# 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": "nhc.noaa.gov/list_active_storms" , "input": {} }), 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 nhc.noaa.gov/list_active_storms# with {}"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": { "basin": { "enum": [ "all", "atlantic", "eastern_pacific", "central_pacific" ], "type": "string", "default": "all", "description": "Select a hurricane basin, for example eastern_pacific. Default: all." } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "summary", "storms" ], "properties": { "storms": { "type": "array", "items": { "type": "object", "required": [ "name", "type", "hurricane_category", "basin", "location", "latitude", "longitude", "maximum_sustained_winds_mph", "maximum_sustained_winds_kmh", "movement_direction", "movement_speed_mph", "minimum_pressure_mb", "latest_advisory_time", "advisory_url", "forecast_cone_url", "storm_id" ], "properties": { "name": { "type": [ "string", "null" ], "description": "Storm name." }, "type": { "type": "string", "description": "Cyclone type in words." }, "basin": { "type": "string", "description": "Atlantic, eastern Pacific, or central Pacific." }, "latitude": { "type": [ "number", "null" ], "description": "Latitude in decimal degrees." }, "location": { "type": [ "string", "null" ], "description": "Location relative to a landmark in the advisory." }, "storm_id": { "type": [ "string", "null" ], "description": "NHC storm identifier.", "x-fous-developer": true }, "longitude": { "type": [ "number", "null" ], "description": "Longitude in decimal degrees." }, "advisory_url": { "type": [ "string", "null" ], "description": "Page for the current public advisory." }, "forecast_cone_url": { "type": [ "string", "null" ], "description": "Page with the current forecast cone." }, "hurricane_category": { "type": [ "integer", "null" ], "description": "Saffir-Simpson category from 1 to 5, or null for non-hurricanes." }, "movement_direction": { "type": [ "string", "null" ], "description": "Direction of storm motion." }, "movement_speed_mph": { "type": [ "integer", "null" ], "description": "Movement speed in miles per hour." }, "minimum_pressure_mb": { "type": [ "integer", "null" ], "description": "Minimum central pressure in millibars." }, "latest_advisory_time": { "type": [ "string", "null" ], "description": "Latest advisory issue time in ISO 8601 with UTC offset." }, "maximum_sustained_winds_kmh": { "type": [ "integer", "null" ], "description": "Maximum sustained winds in kilometers per hour." }, "maximum_sustained_winds_mph": { "type": [ "integer", "null" ], "description": "Maximum sustained winds in miles per hour." } }, "additionalProperties": false }, "description": "Active storms, strongest first." }, "summary": { "type": "string", "description": "Plain-language count of active storms." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nhc.noaa.gov/list_active_storms- Returns
- name, type, category, basin, location, coordinates, winds, movement, pressure, advisory and cone URLs
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 nhc.noaa.gov/list_active_storms with the inputs above.
Ask your agent
- Which tropical storms are currently active in the Atlantic basin, ranked from strongest to weakest?
- Show me the active hurricanes in the eastern Pacific right now, including their wind speeds and movement.
- Are there any active cyclones in the central Pacific at the moment? I need their locations and pressure readings.
- On noaa.gov, list every active tropical system across all basins with its category and forecast cone link.
- What storms are churning anywhere in the world's hurricane basins today, and where are they heading?
See more
All NOAA methodsLists 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_alertsGets the latest NOAA coastal water level, the matching tide prediction, the direction of change, and water temperature for the station nearest a US coastal place (within 50 miles).
tidesandcurrents.noaa.gov/get_water_levelFinds the nearest NOAA tide prediction station to a US coastal place (within 30 miles) and returns its high and low tide times in local time with predicted heights above MLLW.
tidesandcurrents.noaa.gov/get_tide_timesGets the 30-minute chance of aurora overhead near a place, current geomagnetic activity, and the three-day Kp outlook. Visibility also depends on darkness and local conditions; tonight uses approximate local solar hours 18:00-06:00.
swpc.noaa.gov/get_aurora_forecastLists active US weather watches, warnings and advisories for a city, address, ZIP code or state, most severe first, then newest.
weather.gov/list_weather_alertsLists 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_wildfiresLists active severe weather alerts for a city, address, ZIP or postcode on The Weather Channel, most severe first. An empty list means no active alerts.
weather.com/list_weather_alertsGets the latest observed weather from a nearby National Weather Service station for a US city, address, or ZIP code. Measurements the station does not report are null.
weather.gov/get_current_conditions