# NOAA Tides and Currents API

> NOAA Tides and Currents provides tide times, coastal water levels, and water temperature as a workflow and API.

NOAA Tides and Currents returns high and low tide times, heights, and station details for a US coastal place; choose days, units, and a start date. Get water level returns observed and predicted levels, water direction, temperature, and station details for a US coastal place; choose units.

- Page: https://fous.com/tools/noaa-tides-and-currents
- Handle: `@noaa-tides-and-currents`
- Category: [Weather](https://fous.com/tools/category/weather)
- Source website: https://tidesandcurrents.noaa.gov
- Last verified: Sep 29, 2026

## Methods

### Get tide times

Operation `get_tide_times`, 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 high and low tide times at the nearest NOAA prediction station to a US coastal place, with local times and heights above mean lower low water. Locations farther than 30 miles from a prediction station are not covered.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `days` | integer | no | `3` | Number of local days to include, 1 to 31, for example 3. |
| `units` | string | no | `"metres"` | Height units, feet or metres, for example feet. |
| `location` | string | yes | `"Santa Monica"` | US coastal town, beach or harbor, for example Santa Monica or Boston Harbor. |
| `start_date` | string | no | `"2026-11-01"` | First local date to include (YYYY-MM-DD), for example 2026-10-03. Defaults to today at the station. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "days": {
      "type": "integer",
      "default": 3,
      "maximum": 31,
      "minimum": 1,
      "description": "Number of local days to include, 1 to 31, for example 3.",
      "examples": [
        3,
        2
      ]
    },
    "units": {
      "enum": [
        "feet",
        "metres"
      ],
      "type": "string",
      "default": "feet",
      "description": "Height units, feet or metres, for example feet.",
      "examples": [
        "metres"
      ]
    },
    "location": {
      "type": "string",
      "description": "US coastal town, beach or harbor, for example Santa Monica or Boston Harbor.",
      "examples": [
        "Santa Monica",
        "Boston Harbor",
        "Honolulu"
      ]
    },
    "start_date": {
      "type": "string",
      "format": "date",
      "description": "First local date to include (YYYY-MM-DD), for example 2026-10-03. Defaults to today at the station.",
      "examples": [
        "2026-11-01",
        "2026-10-02"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "location": "Santa Monica"
    },
    {
      "days": 3,
      "units": "metres",
      "location": "Boston Harbor",
      "start_date": "2026-11-01"
    },
    {
      "days": 2,
      "location": "Honolulu",
      "start_date": "2026-10-02"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `tides` | array |  | High and low tides in local time order. |
| `tides[].type` | string | `"low"` | High or low tide. |
| `tides[].unit` | string | `"feet"` | Height unit. |
| `tides[].height` | number | `1.643` | Predicted height above mean lower low water. |
| `tides[].page_link` | string | `"https://tidesandcurrents.noaa.gov/noaatidepredictions.html?id=9410840"` | NOAA station tide-prediction page. |
| `tides[].tide_time` | string | `"2026-09-29T04:41:00-07:00"` | Local date and time with UTC offset, RFC 3339. |
| `latitude` | number | `34.0083` | Station latitude. |
| `longitude` | number | `-118.5` | Station longitude. |
| `station_id` | string | `"9410840"` | NOAA station ID. |
| `station_name` | string | `"Santa Monica, Municipal Pier"` | Nearest NOAA tide prediction station. |
| `distance_miles` | number | `0.92` | Straight-line distance from the requested place to the station in miles. |
| `height_reference` | string | `"Mean lower low water (MLLW)"` | Reference for predicted heights: mean lower low water (MLLW). |

**Example input**

```json
{
  "location": "Santa Monica"
}
```

**Example output**

```json
{
  "tides": [
    {
      "type": "low",
      "unit": "feet",
      "height": 1.643,
      "page_link": "https://tidesandcurrents.noaa.gov/noaatidepredictions.html?id=9410840",
      "tide_time": "2026-09-29T04:41:00-07:00"
    },
    {
      "type": "high",
      "unit": "feet",
      "height": 6.16,
      "page_link": "https://tidesandcurrents.noaa.gov/noaatidepredictions.html?id=9410840",
      "tide_time": "2026-09-29T11:01:00-07:00"
    },
    {
      "type": "low",
      "unit": "feet",
      "height": 0.046,
      "page_link": "https://tidesandcurrents.noaa.gov/noaatidepredictions.html?id=9410840",
      "tide_time": "2026-09-29T18:05:00-07:00"
    }
  ],
  "latitude": 34.0083,
  "longitude": -118.5,
  "station_id": "9410840",
  "station_name": "Santa Monica, Municipal Pier",
  "distance_miles": 0.92,
  "height_reference": "Mean lower low water (MLLW)"
}
```

### Get water level

Operation `get_water_level`, 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 NOAA coastal water level, matching tide prediction, direction, and water temperature near a US coastal place. Levels are above mean lower low water in feet by default, or meters when metric is selected. Places more than 50 miles from a reporting coastal station are not supported.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `units` | string | no | `"metric"` | Water-level units, for example imperial (feet) or metric (meters). |
| `location` | string | yes | `"San Francisco, CA"` | US coastal town, beach, or harbor, for example Charleston, SC. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "location"
  ],
  "properties": {
    "units": {
      "enum": [
        "imperial",
        "metric"
      ],
      "type": "string",
      "default": "imperial",
      "description": "Water-level units, for example imperial (feet) or metric (meters).",
      "examples": [
        "metric"
      ]
    },
    "location": {
      "type": "string",
      "description": "US coastal town, beach, or harbor, for example Charleston, SC.",
      "examples": [
        "San Francisco, CA",
        "Charleston, SC",
        "Miami Beach, Florida"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "units": "metric",
      "location": "San Francisco, CA"
    },
    {
      "location": "Charleston, SC"
    },
    {
      "location": "Miami Beach, Florida"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `difference` | number | `0.187` | Observed minus predicted water level, in level_unit. |
| `level_unit` | string | `"meters"` | Unit for water-level values. |
| `station_id` | string | `"9414290"` | NOAA station identifier. |
| `station_name` | string | `"San Francisco"` | Name of the NOAA water level station. |
| `station_page` | string | `"https://tidesandcurrents.noaa.gov/stationhome.html?id=9414290"` | NOAA station page link. |
| `distance_miles` | number | `3.4` | Distance from the searched place to the station in miles. |
| `water_direction` | string | `"falling"` | Change in recent observations. |
| `observation_time` | string | `"2026-09-29T05:00:00-07:00"` | Observation time at the station in local ISO 8601 with UTC offset. |
| `observed_water_level` | number | `1.17` | Observed height above mean lower low water, in level_unit. |
| `predicted_water_level` | number | `0.983` | Predicted height at observation time above mean lower low water, in level_unit. |
| `water_temperature_celsius` | number or null | `25.2` | Most recent water temperature in degrees Celsius, or null if unavailable. |
| `water_temperature_fahrenheit` | number or null | `77.4` | Most recent water temperature in degrees Fahrenheit, or null if unavailable. |

**Example input**

```json
{
  "units": "metric",
  "location": "San Francisco, CA"
}
```

**Example output**

```json
{
  "difference": 0.187,
  "level_unit": "meters",
  "station_id": "9414290",
  "station_name": "San Francisco",
  "station_page": "https://tidesandcurrents.noaa.gov/stationhome.html?id=9414290",
  "distance_miles": 3.4,
  "water_direction": "falling",
  "observation_time": "2026-09-29T05:00:00-07:00",
  "observed_water_level": 1.17,
  "predicted_water_level": 0.983,
  "water_temperature_celsius": null,
  "water_temperature_fahrenheit": null
}
```

## 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": "@noaa-tides-and-currents",
  "visibility": "public",
  "operation": "get_tide_times",
  "version": 1,
  "input": {
    "location": "Santa Monica"
  },
  "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\": \"@noaa-tides-and-currents\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_tide_times\",\n  \"version\": 1,\n  \"input\": {\n    \"location\": \"Santa Monica\"\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": "@noaa-tides-and-currents",
  "visibility": "public",
  "operation": "get_tide_times",
  "version": 1,
  "input": {
    "location": "Santa Monica"
  },
  "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/noaa-tides-and-currents`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_tide_times`: Get tide times. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_water_level`: Get water level. 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-noaa-tides-and-currents https://api.fous.com/mcp/tools/noaa-tides-and-currents --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

- Plan beach visits around local high and low tides
- Compare observed coastal water levels with predictions
- Check recent water-level direction near a harbor
- Review coastal water temperature before fieldwork
- Identify a nearby tide prediction or reporting station

## 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 NOAA Tides and Currents 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 NOAA Tides and Currents account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from tidesandcurrents.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 29, 2026.

### When are the next high and low tides?

Get tide times returns local high and low tide times for a US coastal place. Choose days and optionally a start date.

### What is the water level near a coastal place?

Get water level returns observed and predicted levels, observation time, and recent direction for a US coastal place.

### What is the water temperature near a coastal place?

Get water level returns the latest water temperature in Celsius and Fahrenheit when available.

## Related

- [All Weather tools](https://fous.com/tools/category/weather)
