# NOAA Space Weather

> Read space weather from NOAA's Space Weather Prediction Center, the official US source: whether a geomagnetic storm, radio blackout or radiation storm is in progress, the three-day forecast and the four-week outlook, the alerts that go out to power grids and airlines, the solar wind arriving at Earth, the flares and sunspot regions on the Sun, and the forecasters' own write-up. Also answers the question most people come for: whether the aurora will be visible tonight from a given latitude and longitude. Every storm comes back on NOAA's plain 1-to-5 scale. No account or API key required.

App · Weather & Space · 10 actions. Web page: https://docs.lodol.com/docs/integrations/noaa-swpc

## Actions

### Get current space weather

Read what space weather is doing right now: whether a geomagnetic storm, a radio blackout or a radiation storm is in progress and how bad, the planetary K index, how fast the solar wind is blowing and which way its magnetic field points, and the Sun's radio output. Each storm comes back on NOAA's own 1-to-5 scale with the word that goes with it, and a one-line summary a workflow can send as it stands.

**Inputs**: None.

**Outputs**

- `auroraLikely` (true/false): Whether Kp has reached the level the aurora is seen at
- `geomagneticStorm` (object): A NOAA space weather scale reading: 'scale' ('G2'), 'level' (0-5), 'label' ('Moderate') and 'meaning' ('Geomagnetic storm')
- `kpIndex` (number): Planetary K index, 0-9. A storm begins at 5
- `kpLevel` (text): 'Quiet', 'Unsettled', 'Active' or the storm's word
- `magneticFieldBz` (number): North-south component in nT. Southward (negative) is what lets the solar wind drive a storm
- `magneticFieldStrength` (number): Total interplanetary magnetic field, in nT
- `observedAt` (text): When SWPC last revised these readings (UTC)
- `radiationStorm` (object): A NOAA space weather scale reading: 'scale' ('G2'), 'level' (0-5), 'label' ('Moderate') and 'meaning' ('Geomagnetic storm')
- `radioBlackout` (object): A NOAA space weather scale reading: 'scale' ('G2'), 'level' (0-5), 'label' ('Moderate') and 'meaning' ('Geomagnetic storm')
- `radioFlux` (number): 10.7 cm solar radio flux, in solar flux units
- `solarWindSpeed` (number): In km/s
- `summary` (text): One sentence a workflow can send as it stands

**Example output**

```json
{
  "auroraLikely": false,
  "geomagneticStorm": {
    "label": "None",
    "level": 0,
    "meaning": "Geomagnetic storm",
    "scale": "G0"
  },
  "kpIndex": 2,
  "kpLevel": "Quiet",
  "kpObservedAt": "2026-09-17T15:00:00Z",
  "magneticFieldBz": -3,
  "magneticFieldSouthward": false,
  "magneticFieldStrength": 4,
  "magneticFieldUnit": "nT",
  "observedAt": "2026-09-17T21:06:00Z",
  "radiationStorm": {
    "label": "None",
    "level": 0,
    "meaning": "Solar radiation storm",
    "scale": "S0"
  },
  "radioBlackout": {
    "label": "None",
    "level": 0,
    "meaning": "Radio blackout",
    "scale": "R0"
  },
  "radioFlux": 97,
  "radioFluxObservedAt": "2026-09-17T20:00:00Z",
  "radioFluxUnit": "sfu",
  "solarWindObservedAt": "2026-09-17T21:01:00Z",
  "solarWindSpeed": 471,
  "solarWindSpeedUnit": "km/s",
  "summary": "No geomagnetic storm, radio blackout or radiation storm in progress. The magnetic field is quiet (Kp 2)."
}
```

### Get geomagnetic activity

Read the planetary K index over a period: how disturbed the Earth's magnetic field has been, one reading every three hours. Each reading carries its NOAA storm level, so a step can act on 'G2' rather than working out what 6.33 means. Defaults to the last 24 hours; about a week is published.

**Inputs**

- From (`start`, date and time): Start of the period to read. Leave both this and 'To' empty for the most recent 24 hours.
- To (`end`, date and time): End of the period to read. Defaults to now.
- How many (`limit`, number): Most readings to return. If the period holds more, the most recent ones are kept. Defaults to 200. From 1 to 2000. Default: `200`.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "end": "2026-09-17T21:12:30Z",
  "entries": [
    {
      "aIndex": 15,
      "auroraLikely": false,
      "geomagneticStorm": {
        "label": "Unsettled",
        "level": 0,
        "meaning": "Geomagnetic storm",
        "scale": "G0"
      },
      "kp": 3,
      "stationCount": 8,
      "time": "2026-09-17T00:00:00Z"
    }
  ],
  "highestKp": 3,
  "start": "2026-09-16T21:12:30Z"
}
```

### Get solar wind conditions

Read the solar wind arriving at Earth: how fast it is blowing, how dense it is, how hot it is, and which way its magnetic field points. The north-south component is the one that matters - when it turns southward the solar wind couples to the Earth's field and a storm can start - so the answer says so in words as well as numbers. Measured a million miles upstream, so it is an hour of warning.

**Inputs**

- From (`start`, date and time): Start of the period to read. Leave both this and 'To' empty for the most recent 24 hours.
- To (`end`, date and time): End of the period to read. Defaults to now.
- How often (`sample`, text): How often to take a reading. SWPC measures once a minute, which is far more than most workflows want to read. Defaults to hourly. One of: `every_minute` (Every minute - as measured), `every_5_minutes` (Every 5 minutes), `every_15_minutes` (Every 15 minutes), `hourly`. Default: `hourly`.
- How many (`limit`, number): Most readings to return. If the period holds more, the most recent ones are kept. Defaults to 200. From 1 to 2000. Default: `200`.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "end": "2026-09-17T21:12:30Z",
  "entries": [
    {
      "density": 2.44,
      "densityUnit": "protons/cm3",
      "magneticFieldBy": 0.86,
      "magneticFieldBz": -2.57,
      "magneticFieldStrength": 4.58,
      "magneticFieldUnit": "nT",
      "reachesEarthAt": "2026-09-17T21:49:58Z",
      "speed": 459.4,
      "speedUnit": "km/s",
      "temperature": 118588,
      "temperatureUnit": "K",
      "time": "2026-09-17T21:00:00Z"
    }
  ],
  "latest": {
    "density": 2.44,
    "densityUnit": "protons/cm3",
    "magneticFieldBy": 0.86,
    "magneticFieldBz": -2.57,
    "magneticFieldStrength": 4.58,
    "magneticFieldUnit": "nT",
    "reachesEarthAt": "2026-09-17T21:49:58Z",
    "speed": 459.4,
    "speedUnit": "km/s",
    "temperature": 118588,
    "temperatureUnit": "K",
    "time": "2026-09-17T21:00:00Z"
  },
  "note": "Conditions are unremarkable: the magnetic field is not southward.",
  "sample": "hourly",
  "start": "2026-09-16T21:12:30Z"
}
```

### Get the 27-day outlook

Read SWPC's four-week outlook: for each of the next 27 days, the expected solar radio flux, the planetary A index and the highest K index, with the storm level each one implies. Issued once a week and covering one solar rotation - how long it takes an active region to come back around - so it is a tendency rather than a forecast for a date, and it is the right thing to read when planning weeks ahead.

**Inputs**: None.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "entries": [
    {
      "aIndex": 20,
      "auroraLikely": true,
      "date": "2026-09-16",
      "geomagneticStorm": {
        "label": "Minor",
        "level": 1,
        "meaning": "Geomagnetic storm",
        "scale": "G1"
      },
      "highestKp": 5,
      "radioFlux": 95,
      "radioFluxUnit": "sfu"
    }
  ],
  "issuedAt": "2026-09-14T01:17:00Z",
  "stormyDays": 5
}
```

### Get the 3-day forecast

Read SWPC's forecast for today and the next two days: the geomagnetic storm level expected each day, the highest K index and how it moves through the day in three-hour periods, the chance of a radio blackout and of a radiation storm, and the chance of a C, M or X class solar flare. Each day carries a one-line summary.

**Inputs**: None.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "entries": [
    {
      "auroraLikely": false,
      "date": "2026-09-17",
      "flareChance": {
        "cClass": 25,
        "mClass": 5,
        "xClass": 1
      },
      "geomagneticStorm": {
        "label": "Minor",
        "level": 1,
        "meaning": "Geomagnetic storm",
        "scale": "G1"
      },
      "highestKp": 4.67,
      "periods": [
        {
          "geomagneticStorm": {
            "label": "Active",
            "level": 0,
            "meaning": "Geomagnetic storm",
            "scale": "G0"
          },
          "kp": 4.67,
          "status": "predicted",
          "time": "2026-09-17T21:00:00Z"
        }
      ],
      "radiationStormChance": 1,
      "radioBlackoutChance": {
        "major": 1,
        "minor": 5
      },
      "summary": "Geomagnetic storm G1 (minor) expected, peaking at Kp 4.67. 5% chance of an M-class flare."
    }
  ],
  "issuedAt": "2026-09-17T21:06:00Z",
  "probabilitiesIssuedAt": "2026-09-17T00:00:00Z"
}
```

### Get the aurora forecast

Answer whether the aurora is likely to be visible from one place in the next hour. Give a latitude and longitude and you get the percentage chance of aurora directly overhead, and - when there is none overhead - how far away the nearest aurora is and which way to look. Works in both hemispheres, and comes with the power flowing into the aurora as a whole, which is the number that says whether tonight is ordinary or exceptional.

**Inputs**

- Latitude (`latitude`, number, required): Latitude of the place you want to watch from, in degrees. Positive north of the equator. From -90 to 90.
- Longitude (`longitude`, number, required): Longitude of the place you want to watch from, in degrees. Negative in the Americas. If you only have an address, right-click it in Google Maps and the first item on the menu is its coordinates. From -180 to 180.

**Outputs**

- `auroraOverhead` (true/false): Whether the aurora is forecast overhead at all
- `chanceOverhead` (number): Percentage chance of aurora directly overhead
- `forecastFor` (text): The time this forecast is for, about an hour ahead (UTC)
- `hemisphericPower` (number): Power flowing into this hemisphere's aurora, in gigawatts. Around 20 is an ordinary night; past 100 the aurora is being seen a long way from the pole
- `location` (object): The latitude and longitude asked about
- `nearestAurora` (object): The closest forecast aurora at this longitude: 'latitude', 'chance', 'direction' ('north' or 'south') and 'distanceKm'. Null when there is none anywhere near
- `summary` (text): One sentence a workflow can send as it stands

**Example output**

```json
{
  "auroraOverhead": false,
  "chanceOverhead": 0,
  "forecastFor": "2026-09-17T21:58:00Z",
  "hemisphere": "northern",
  "hemisphericPower": 21,
  "hemisphericPowerUnit": "GW",
  "location": {
    "latitude": 64.8378,
    "longitude": -147.7164
  },
  "nearestAurora": {
    "chance": 6,
    "direction": "north",
    "distanceKm": 890,
    "latitude": 73
  },
  "observedAt": "2026-09-17T21:01:00Z",
  "summary": "No aurora forecast overhead. The nearest is about 890 km to the north, so look towards the northern horizon."
}
```

### List solar flares

List the solar flares SWPC has recorded, with when each one started, peaked and ended, its class, the sunspot region it came from, and the radio blackout it caused on NOAA's scale. Two GOES satellites watch the Sun and report the same flare twice, so each flare appears once here, at the larger of the two readings. Defaults to C-class and above over the last week; about 30 days are published.

**Inputs**

- Smallest flare to include (`minimum_class`, text): Flares are graded A, B, C, M and X, each ten times the one before. C and below go unnoticed on Earth; M causes brief radio blackouts on the daylit side; X is the kind that makes the news. Defaults to C. One of: `A` (A - the quiet Sun's background), `B` (B - too small to have any effect), `C` (C - common, no effect on Earth), `M` (M - brief radio blackouts (R1-R2)), `X` (X - major, wide radio blackouts (R3-R5)). Default: `C`.
- Sunspot region (`region`, number): Narrow to flares from one sunspot region. The list is every region SWPC has reported in the last 30 days, newest first. Leave empty for flares from anywhere on the Sun, including the ones SWPC could not attribute to a region.
- From (`start`, date and time): Start of the period to read. Leave both this and 'To' empty for the last 7 days. SWPC keeps about 30 days of events.
- To (`end`, date and time): End of the period to read. Defaults to now.
- How many (`limit`, number): Most flares to return, newest first. Defaults to 100. From 1 to 2000. Default: `100`.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "end": "2026-09-17T21:12:30Z",
  "entries": [
    {
      "beganAt": "2026-09-04T07:46:00Z",
      "class": "M1.2",
      "classLetter": "M",
      "endedAt": "2026-09-04T08:00:00Z",
      "observedBy": [
        "GOES-18",
        "GOES-19"
      ],
      "peakFlux": 1.2e-05,
      "peakFluxUnit": "W/m2",
      "peakedAt": "2026-09-04T07:53:00Z",
      "radioBlackout": {
        "label": "Minor",
        "level": 1,
        "meaning": "Radio blackout",
        "scale": "R1"
      },
      "region": 4524
    }
  ],
  "minimumClass": "C",
  "start": "2026-09-10T21:12:30Z",
  "strongest": {
    "beganAt": "2026-09-04T07:46:00Z",
    "class": "M1.2",
    "classLetter": "M",
    "endedAt": "2026-09-04T08:00:00Z",
    "observedBy": [
      "GOES-18",
      "GOES-19"
    ],
    "peakFlux": 1.2e-05,
    "peakFluxUnit": "W/m2",
    "peakedAt": "2026-09-04T07:53:00Z",
    "radioBlackout": {
      "label": "Minor",
      "level": 1,
      "meaning": "Radio blackout",
      "scale": "R1"
    },
    "region": 4524
  }
}
```

### List space weather alerts

List the watches, warnings, alerts and summaries SWPC has issued - the notices that go out to power grid operators, airlines and satellite teams. Each one comes back as fields rather than a block of teleprinter text: what it is about, how urgent it is, when it starts and ends, its NOAA scale and its potential impacts. Filter by kind and by subject. About the last 30 days are published, and a quiet spell returns nothing rather than failing.

**Inputs**

- Notice types (`kinds`, list): Which kinds of notice to include. Choose none to include them all. A watch is days out, a warning is hours out, an alert means it is happening, and a summary is written after it has finished. One or more of: `alert` (Alert - it is happening now), `warning` (Warning - it is expected), `watch` (Watch - it is possible in the next few days), `summary` (Summary - it has finished).
- What it is about (`topics`, list): Which kinds of space weather to include. Choose none to include them all. One or more of: `geomagnetic_storm` (Geomagnetic storm (aurora, power grids, GPS)), `radiation_storm` (Solar radiation storm (satellites, polar flights)), `radio_blackout` (Radio blackout from a solar flare (HF radio)), `radio_burst` (Solar radio burst (radar, GPS, satellite links)), `electron_flux` (High electron flux (satellite charging)).
- From (`start`, date and time): Start of the period to read. Leave both this and 'To' empty for the most recent 24 hours.
- To (`end`, date and time): End of the period to read. Defaults to now.
- How many (`limit`, number): Most notices to return, newest first. Defaults to 50. From 1 to 2000. Default: `50`.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "entries": [
    {
      "beganAt": "2026-08-25T09:32:00Z",
      "comment": null,
      "endedAt": "2026-08-25T10:13:00Z",
      "flareClass": "M6.9",
      "headline": "X-ray Event exceeded M5",
      "issuedAt": "2026-08-25T10:27:00Z",
      "kind": "summary",
      "location": "N04E04",
      "message": "Space Weather Message Code: SUMXM5\nSerial Number: 326\n...",
      "messageCode": "SUMXM5",
      "noaaScale": "R2 - Moderate",
      "peakedAt": "2026-08-25T10:02:00Z",
      "potentialImpacts": "Area of impact centered primarily on sub-solar point on the sunlit side of Earth. Radio - Limited blackout of HF (high frequency) radio communication for tens of minutes.",
      "productId": "XM5S",
      "relatedSerialNumber": null,
      "serialNumber": 326,
      "status": "issued",
      "topic": "radio_blackout",
      "validFrom": null,
      "validUntil": null
    }
  ],
  "matched": 79
}
```

### List sunspot regions

List the numbered sunspot regions on the Sun's visible face: where each one is, how big it is, how many spots it has, how magnetically complex it is in plain words, how likely it is to fire off a flare, and how many it already has. Defaults to the most recent day. Choose a region instead and you get every day it has been reported, so you can watch it grow or decay as it crosses the disk.

**Inputs**

- Date (`date`, date): The day to report on. Defaults to the most recent day SWPC has published, which is what you want almost every time. About the last 30 days are available.
- Sunspot region (`region`, number): Follow one region instead of listing them all: choosing a region returns every day it has been reported, oldest first, so you can watch it grow or decay. Leave empty to list every region on the visible face on one day.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "date": "2026-09-17",
  "entries": [
    {
      "area": 120,
      "areaUnit": "millionths of the solar hemisphere",
      "firstSeen": "2026-09-06T07:09:22Z",
      "flareChance": {
        "cClass": 10,
        "mClass": 1,
        "xClass": 1
      },
      "flareRisk": "Low",
      "flaresObserved": {
        "cClass": 0,
        "mClass": 0,
        "xClass": 0
      },
      "latitude": -11,
      "location": "S11W83",
      "longitude": -83,
      "magneticClass": "A",
      "magneticClassName": "Alpha - one magnetic polarity, simple and usually quiet",
      "observedDate": "2026-09-17",
      "region": 4528,
      "spotClass": "Hsx",
      "spotCount": 1
    }
  ]
}
```

### Read the forecast discussion

Read the write-up SWPC's forecasters publish three times a day explaining what the Sun has done in the last 24 hours and what they expect next - the reasoning behind the numbers, naming the regions, the coronal holes and the coronal mass ejections involved. It comes back split into its four sections (solar activity, energetic particles, solar wind and geospace), each with its summary and its forecast, plus the original text.

**Inputs**: None.

**Outputs**

- `count` (number): Number of rows in 'entries'
- `entries` (list): The results, or an empty list when there are none

**Example output**

```json
{
  "count": 1,
  "entries": [
    {
      "forecast": "Geomagnetic activity is likely to reach active to G1 (Minor) storm levels on 17 Sep due to combined CH and CME influences.",
      "last24Hours": "The geomagnetic field was quiet with a single unsettled period in the middle of the reporting period under CH HSS influences.",
      "title": "Geospace"
    }
  ],
  "issuedAt": "2026-09-17T12:30:00Z",
  "text": ":Product: Forecast Discussion\n..."
}
```
