# 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/workflows/noaa-tides-and-currents
- Handle: `@noaa-tides-and-currents`
- Category: [Weather](https://fous.com/workflows/category/weather)
- Source website: https://tidesandcurrents.noaa.gov
- Last verified: Sep 29, 2026
- Fous is not affiliated with NOAA Tides and Currents.

## Methods

### Get tide times

Operation `get_tide_times`, version 1. 1 credit per call.

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 call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@noaa-tides-and-currents","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with NOAA Tides and Currents?

No. Fous is not affiliated with NOAA Tides and Currents. This workflow reads the public tidesandcurrents.noaa.gov website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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

- [USGS Water Data API](https://fous.com/workflows/usgs-water-data.md): Public USGS river gauge readings and monitoring locations.
- [National Weather Service API](https://fous.com/workflows/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/workflows/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.
- [Time and Date API](https://fous.com/workflows/time-and-date.md): Time and Date provides current city times, zones, daylight-saving changes; meeting conversions (1970–2030); daily solar times and twilight; and business-day counts based on published holiday calendars.
- [NOAA Space Weather API](https://fous.com/workflows/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.
- [AccuWeather API](https://fous.com/workflows/accuweather.md): AccuWeather provides current conditions and RealFeel, plus up to 15 available daily forecasts; shorter public forecasts may return fewer days.
- [Surfline API](https://fous.com/workflows/surfline.md): Surf conditions and forecasts for surf spots.
- [Weather Underground API](https://fous.com/workflows/weather-underground.md): Historical and current weather conditions from stations worldwide.
- [All Weather workflows](https://fous.com/workflows/category/weather)
