# National Hurricane Center API

> National Hurricane Center provides active storm listings and advisories as a workflow and API.

National Hurricane Center, also called NHC, lists active tropical cyclones by basin, with current conditions, advisories, and forecast cone pages. List active storms accepts an optional basin; Get storm advisory returns the latest public advisory for an active storm by name.

- Page: https://fous.com/tools/national-hurricane-center
- Handle: `@national-hurricane-center`
- Category: [Weather](https://fous.com/tools/category/weather)
- Source website: https://nhc.noaa.gov
- Last verified: Sep 30, 2026

## Methods

### Get storm advisory

Operation `get_storm_advisory`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get the latest public advisory for an active NHC storm by name, including its position, intensity, watches, hazards, and next advisory time. Only active storms are available; hazard topics not mentioned in the advisory are null.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `storm_name` | string | yes | `"Hurricane Polo"` | Active storm name, for example "Polo" or "Hurricane Polo". |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "storm_name"
  ],
  "properties": {
    "storm_name": {
      "type": "string",
      "description": "Active storm name, for example \"Polo\" or \"Hurricane Polo\".",
      "examples": [
        "Hurricane Polo",
        "Fay",
        "Hurricane Nolo"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "storm_name": "Hurricane Polo"
    },
    {
      "storm_name": "Fay"
    },
    {
      "storm_name": "Hurricane Nolo"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `hazards` | object |  | Land hazards mentioned in this advisory; missing hazard topics are null. |
| `hazards.wind` | string or null | `"Hurricane conditions are expected in the Hurricane Warning area in the Papahanaumokuakea Marine National Monument by We` | Wind hazards. |
| `hazards.rainfall` | string or null | `"Outer bands east of Nolo’s track will produce 3 to 6 inches of rain across Kauai and Niihau between Tuesday and Thursda` | Rainfall hazards. |
| `hazards.tornadoes` | string or null |  | Tornado hazards. |
| `hazards.storm_surge` | string or null | `"A storm surge is expected to produce significant coastal flooding in areas of onshore winds. Near the coast, the surge ` | Storm surge hazards. |
| `latitude` | number or null | `25.5` | Latitude in degrees north (negative for south). |
| `location` | string or null | `"25.5°N 112.8°W; ABOUT 60 MI...95 KM NNW OF CABO SAN LAZARO MEXICO; ABOUT 130 MI...205 KM SSW OF SANTA ROSALIA MEXICO"` | Current coordinates and geographical position stated in the advisory. |
| `longitude` | number or null | `-112.8` | Longitude in degrees east (negative for west). |
| `storm_name` | string | `"Polo"` | Name of the active storm. |
| `storm_type` | string or null | `"Hurricane"` | Storm classification stated in the advisory. |
| `issued_time` | string or null | `"2026-09-28T17:00-07:00"` | Time the advisory was issued, ISO 8601 with offset. |
| `nhc_storm_id` | string or null | `"ep172026"` | NHC storm ID. |
| `advisory_link` | string | `"https://www.nhc.noaa.gov/text/MIATCPEP2.shtml"` | Page for the current public advisory. |
| `advisory_text` | string |  | Complete official public advisory text. |
| `advisory_number` | string or null | `"33A"` | Number of the latest public advisory, including an intermediate advisory suffix. |
| `hurricane_category` | integer or null | `3` | Saffir-Simpson category, if the storm is a hurricane. |
| `movement_direction` | string or null | `"Northeast"` | Current movement direction. |
| `movement_speed_mph` | integer or null | `12` | Movement speed in miles per hour. |
| `next_advisory_time` | string or null | `"2026-09-28T20:00-07:00"` | Next scheduled advisory time, ISO 8601 with offset, if stated. |
| `minimum_pressure_mb` | integer or null | `963` | Minimum central pressure in millibars. |
| `watches_and_warnings` | array |  | Watches and warnings now in effect, with their affected areas. |
| `maximum_sustained_winds_kmh` | integer or null | `185` | Maximum sustained winds in kilometers per hour. |
| `maximum_sustained_winds_mph` | integer or null | `115` | Maximum sustained winds in miles per hour. |

**Example input**

```json
{
  "storm_name": "Hurricane Polo"
}
```

**Example output**

```json
{
  "hazards": {
    "wind": "Hurricane conditions will spread across Baja California Sur within the warning area during the next few hours, and these conditions are possible in the watch area later this evening. In mainland Mexic…",
    "rainfall": "Polo is expected to produce rainfall totals of 6 to 12 inches across portions of Baja California Sur. Rainfall totals of 4 to 6 inches with maximum totals of 8 inches are expected across southern and …",
    "tornadoes": null,
    "storm_surge": "A storm surge is expected to produce significant coastal flooding in areas of onshore winds. Near the coast, the surge will be accompanied by large and destructive waves."
  },
  "latitude": 25.5,
  "location": "25.5°N 112.8°W; ABOUT 60 MI...95 KM NNW OF CABO SAN LAZARO MEXICO; ABOUT 130 MI...205 KM SSW OF SANTA ROSALIA MEXICO",
  "longitude": -112.8,
  "storm_name": "Polo",
  "storm_type": "Hurricane",
  "issued_time": "2026-09-28T17:00-07:00",
  "nhc_storm_id": "ep172026",
  "advisory_link": "https://www.nhc.noaa.gov/text/MIATCPEP2.shtml",
  "advisory_text": "000\nWTPZ32 KNHC 282336\nTCPEP2\n \nBULLETIN\nHurricane Polo Intermediate Advisory Number 33A\nNWS National Hurricane Center Miami FL       EP172026\n500 PM MST Mon Sep 28 2026\n \n...POLO NEARING LANDFALL IN …",
  "advisory_number": "33A",
  "hurricane_category": 3,
  "movement_direction": "Northeast",
  "movement_speed_mph": 12,
  "next_advisory_time": "2026-09-28T20:00-07:00",
  "minimum_pressure_mb": 963,
  "watches_and_warnings": [
    "Hurricane Warning: West coast of Baja California Sur, from Punta Abreojos to Santa Fe",
    "Hurricane Warning: East coast of Baja California Sur, from Loreto to Bahia San Juan Bautista",
    "Hurricane Warning: Mainland Mexico from Bahia Kino to Huatabampito"
  ],
  "maximum_sustained_winds_kmh": 185,
  "maximum_sustained_winds_mph": 115
}
```

### List active storms

Operation `list_active_storms`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List active tropical cyclones in the selected basin, strongest first, with their current conditions, advisory, and forecast cone. Location and rounded wind values follow the latest public advisory when available.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `basin` | string | no | `"central_pacific"` | Select a hurricane basin, for example eastern_pacific. Default: all. |

**Input schema**

```json
{
  "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.",
      "examples": [
        "central_pacific",
        "atlantic",
        "eastern_pacific"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "basin": "central_pacific"
    },
    {},
    {
      "basin": "atlantic"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `storms` | array |  | Active storms, strongest first. |
| `storms[].name` | string or null | `"Nolo"` | Storm name. |
| `storms[].type` | string | `"hurricane"` | Cyclone type in words. |
| `storms[].basin` | string | `"central Pacific"` | Atlantic, eastern Pacific, or central Pacific. |
| `storms[].latitude` | number or null | `18.2` | Latitude in decimal degrees. |
| `storms[].location` | string or null | `"435 mi Sse of French Frigate Shoals"` | Location relative to a landmark in the advisory. |
| `storms[].storm_id` | string or null | `"ep152026"` | NHC storm identifier. |
| `storms[].longitude` | number or null | `-163.4` | Longitude in decimal degrees. |
| `storms[].advisory_url` | string or null | `"https://www.nhc.noaa.gov/text/HFOTCPCP2.shtml"` | Page for the current public advisory. |
| `storms[].forecast_cone_url` | string or null | `"https://www.nhc.noaa.gov/graphics_cp2.shtml"` | Page with the current forecast cone. |
| `storms[].hurricane_category` | integer or null | `4` | Saffir-Simpson category from 1 to 5, or null for non-hurricanes. |
| `storms[].movement_direction` | string or null | `"NW"` | Direction of storm motion. |
| `storms[].movement_speed_mph` | integer or null | `12` | Movement speed in miles per hour. |
| `storms[].minimum_pressure_mb` | integer or null | `933` | Minimum central pressure in millibars. |
| `storms[].latest_advisory_time` | string or null | `"2026-09-29T00:00:00+00:00"` | Latest advisory issue time in ISO 8601 with UTC offset. |
| `storms[].maximum_sustained_winds_kmh` | integer or null | `230` | Maximum sustained winds in kilometers per hour. |
| `storms[].maximum_sustained_winds_mph` | integer or null | `145` | Maximum sustained winds in miles per hour. |
| `summary` | string | `"1 active storm in the central Pacific."` | Plain-language count of active storms. |

**Example input**

```json
{
  "basin": "central_pacific"
}
```

**Example output**

```json
{
  "storms": [
    {
      "name": "Nolo",
      "type": "hurricane",
      "basin": "central Pacific",
      "latitude": 18.2,
      "location": "435 mi Sse of French Frigate Shoals",
      "storm_id": "ep152026",
      "longitude": -163.4,
      "advisory_url": "https://www.nhc.noaa.gov/text/HFOTCPCP2.shtml",
      "forecast_cone_url": "https://www.nhc.noaa.gov/graphics_cp2.shtml",
      "hurricane_category": 4,
      "movement_direction": "NW",
      "movement_speed_mph": 12,
      "minimum_pressure_mb": 933,
      "latest_advisory_time": "2026-09-29T00:00:00+00:00",
      "maximum_sustained_winds_kmh": 230,
      "maximum_sustained_winds_mph": 145
    }
  ],
  "summary": "1 active storm in the central Pacific."
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@national-hurricane-center",
  "visibility": "public",
  "operation": "get_storm_advisory",
  "version": 1,
  "input": {
    "storm_name": "Hurricane Polo"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@national-hurricane-center\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_storm_advisory\",\n  \"version\": 1,\n  \"input\": {\n    \"storm_name\": \"Hurricane Polo\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@national-hurricane-center",
  "visibility": "public",
  "operation": "get_storm_advisory",
  "version": 1,
  "input": {
    "storm_name": "Hurricane Polo"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/national-hurricane-center`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_storm_advisory`: Get storm advisory. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_active_storms`: List active storms. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-national-hurricane-center https://api.fous.com/mcp/tools/national-hurricane-center --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Track active storms by basin
- Review current storm positions and movement
- Check storm intensity and hurricane category
- Find watches, warnings, and land hazards
- Share current advisory and forecast cone pages

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this National Hurricane Center tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a National Hurricane Center account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from nhc.noaa.gov when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 30, 2026.

### Which storms are active in a basin?

List active storms returns active tropical cyclones for a selected basin, or all basins by default.

### What is a storm's current position and intensity?

Get storm advisory returns the latest public advisory for an active storm, including its position and intensity.

### What watches and hazards are in effect?

Get storm advisory returns watches and warnings, plus wind, rainfall, tornado, and storm surge hazards mentioned in the advisory.

## Related

- [National Weather Service API](https://fous.com/tools/national-weather-service.md): National Weather Service provides U.S. day-and-night forecasts for seven days, hourly forecasts for up to 156 hours where available, active alerts, and latest nearby station observations.
- [The Weather Channel API](https://fous.com/tools/the-weather-channel.md): The Weather Channel returns current conditions, today’s high/low, up to 15 daily forecasts (sometimes fewer), 1–48 local hourly forecasts, and active severe weather alerts.
- [NOAA Tides and Currents API](https://fous.com/tools/noaa-tides-and-currents.md): NOAA Tides and Currents provides coastal observations and predictions: tide times within 30 miles of prediction stations, latest levels within 50 miles of reporting stations.
- [NOAA Space Weather API](https://fous.com/tools/noaa-space-weather.md): NOAA Space Weather provides near-term aurora chances, current geomagnetic activity, a three-day Kp outlook, and NOAA alerts from the past 1–7 days.
- [Surfline API](https://fous.com/tools/surfline.md): Surf conditions and forecasts for surf spots.
- [US State Department API](https://fous.com/tools/us-state-department.md): US State Department provides current travel advisories, entry rules, embassy and consulate contacts, and published monthly visa bulletin dates; guidance may be incomplete; consular agencies are excluded.
- [AccuWeather API](https://fous.com/tools/accuweather.md): AccuWeather provides current conditions and RealFeel, plus up to 15 available daily forecasts; shorter public forecasts may return fewer days.
- [InciWeb API](https://fous.com/tools/inciweb.md): InciWeb provides US interagency information on active wildfires and related incidents, with latest dated updates and evacuation or closure notices; past notices may no longer apply.
- [All Weather tools](https://fous.com/tools/category/weather)
