NOAA API: List space weather alerts
Lists 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.
Unofficial. Not affiliated with or endorsed by NOAA.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Days optional
days How many days back to look, from 1 to 7. Example: 3.
7
Whole number from 1 to 7. Default
3.
Input as JSON
{ "days": 7}Output
{ "messages": [ { "kind": "warning", "title": "Geomagnetic K-index of 4 expected", "valid_to": "2026-10-23T03:00:00+00:00", "page_link": "https://www.swpc.noaa.gov/products/alerts-watches-and-warnings" , "issue_time": "2026-10-22T20:21:43.920+00:00", "valid_from": "2026-10-21T16:16:00+00:00", "message_text": "Space Weather Message Code: WARK04\r\nSerial Number: 5442\r\nIssue Time: 2026 Oct 22 2021 UTC\r\n\r\nEXTENDED WARNING: Geomagnetic K-index of 4 expected\nExtension to Serial Number: 5441\nValid From: 2026 Oct 21 1616 UTC\nNow Valid Until: 2026 Oct 23 0300 UTC\nWarning Condition: Persistence\n\r\n\r\nNOAA Space Weath…", "product_code": "WARK04", "serial_number": "5442", "noaa_scale_level": null }, { "kind": "warning", "title": "Geomagnetic K-index of 4 expected", "valid_to": "2026-10-22T21:00:00+00:00", "page_link": "https://www.swpc.noaa.gov/products/alerts-watches-and-warnings" , "issue_time": "2026-10-22T16:48:36.817+00:00", "valid_from": "2026-10-21T16:16:00+00:00", "message_text": "Space Weather Message Code: WARK04\r\nSerial Number: 5441\r\nIssue Time: 2026 Oct 22 1648 UTC\r\n\r\nEXTENDED WARNING: Geomagnetic K-index of 4 expected\nExtension to Serial Number: 5440\nValid From: 2026 Oct 21 1616 UTC\nNow Valid Until: 2026 Oct 22 2100 UTC\nWarning Condition: Persistence\n\r\n\r\nNOAA Space Weath…", "product_code": "WARK04", "serial_number": "5441", "noaa_scale_level": null }, { "kind": "warning", "title": "Geomagnetic K-index of 4 expected", "valid_to": "2026-10-22T18:00:00+00:00", "page_link": "https://www.swpc.noaa.gov/products/alerts-watches-and-warnings" , "issue_time": "2026-10-22T14:24:34.303+00:00", "valid_from": "2026-10-21T16:16:00+00:00", "message_text": "Space Weather Message Code: WARK04\r\nSerial Number: 5440\r\nIssue Time: 2026 Oct 22 1424 UTC\r\n\r\nEXTENDED WARNING: Geomagnetic K-index of 4 expected\nExtension to Serial Number: 5439\nValid From: 2026 Oct 21 1616 UTC\nNow Valid Until: 2026 Oct 22 1800 UTC\nWarning Condition: Persistence\n\r\n\r\nNOAA Space Weath…", "product_code": "WARK04", "serial_number": "5440", "noaa_scale_level": null } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"swpc.noaa.gov/list_space_weather_alerts","input":{"days":7}}' # 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": "swpc.noaa.gov/list_space_weather_alerts" , "input": { "days": 7 }})# 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": "swpc.noaa.gov/list_space_weather_alerts" , "input": { "days": 7 } }), 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 swpc.noaa.gov/list_space_weather_alerts# with {"days":7}"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", "required": [], "properties": { "days": { "type": "integer", "default": 3, "maximum": 7, "minimum": 1, "description": "How many days back to look, from 1 to 7. Example: 3." } }}Output schema
{ "type": "object", "required": [ "messages" ], "properties": { "messages": { "type": "array", "items": { "type": "object", "required": [ "issue_time", "kind", "title", "noaa_scale_level", "valid_from", "valid_to", "message_text", "product_code", "serial_number", "page_link" ], "properties": { "kind": { "enum": [ "alert", "warning", "watch", "summary" ], "type": "string", "description": "Type of space weather message." }, "title": { "type": "string", "description": "Message headline without its alert, watch, warning or summary prefix." }, "valid_to": { "type": [ "string", "null" ], "description": "UTC end time if supplied in the message, ISO 8601 with offset." }, "page_link": { "type": "string", "description": "NOAA page listing space weather alerts, watches, and warnings." }, "issue_time": { "type": "string", "description": "UTC issue time in ISO 8601 with offset." }, "valid_from": { "type": [ "string", "null" ], "description": "UTC start time if supplied in the message, ISO 8601 with offset." }, "message_text": { "type": "string", "description": "Full message as published by NOAA." }, "product_code": { "type": [ "string", "null" ], "description": "NOAA product identifier.", "x-fous-developer": true }, "serial_number": { "type": [ "string", "null" ], "description": "NOAA message serial number.", "x-fous-developer": true }, "noaa_scale_level": { "type": [ "string", "null" ], "description": "NOAA scale code and level in words, when given." } }, "additionalProperties": false }, "description": "Messages issued during the selected period, newest first." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
swpc.noaa.gov/list_space_weather_alerts- Returns
- kind, title, issue time, validity window, NOAA scale level, message text, product code, serial number
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 swpc.noaa.gov/list_space_weather_alerts with the inputs above.
Ask your agent
- Show me all space weather alerts NOAA issued in the last 2 days, newest first, with their validity windows and scale levels.
- What geomagnetic storm watches or warnings were issued in the past week? Include the NOAA G-scale level and the message text.
- Any solar radiation storm alerts from the last 5 days? I need the issue time, product code, and serial number for each.
- Pull up recent space weather warnings and summaries from noaa.gov covering the past 3 days.
- Has anything been issued for radio blackout or aurora conditions in the last day? List each alert with its title and validity time.
See more
All NOAA methodsFinds 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 tropical cyclones in the selected basin, strongest first, with current conditions, advisory and forecast cone.
nhc.noaa.gov/list_active_stormsGets 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_levelList 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.
nasa.gov/list_natural_eventsLists 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 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_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_earthquakes