Next free-source hunt
We check for new free data every weekday.
Datasets / Transport & Shipping
api.tidesandcurrents.noaa.gov/

NOAA CO-OPS Data API

Freeauth: noneCustom#transport-shipping#geospatial#real-time#historical-data#time-series✓ verified Nov 1, 2026

NOAA CO-OPS Data API

NOAA's CO-OPS API serves observations and predictions for water levels, tides, currents, air gap and coastal meteorological or oceanographic conditions. Keyless requests return XML, JSON or CSV with station metadata, timestamps, measurements, units and quality flags.

Required Attribution:

Requested: "NOS requests that attribution be given whenever NOS material is reproduced and re-disseminated."

Coverage

Stations cover coastal areas of the United States and its territories, while history varies by station and product. Per-request spans are limited by interval: four days for 1-minute data, one month for 6-minute data, one year for hourly and high/low data, 10 years for daily series and 200 years for monthly means; verified water-level data are processed monthly.

Verdict

A coastal operating-condition signal for ports, vessel clearance, tides, currents, weather and water-level anomalies. Preliminary observations can be revised during monthly verification, and station or sensor outages can create gaps. Predictions and model guidance are not observations, so retain the product, datum, units, time zone and quality flags with every value. Query windows must be split at the documented interval-specific caps, and throttling can occur under heavy load without a published numeric threshold.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load recent NOAA CO-OPS water levels into Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/noaa-coops-data-api.md)Also in our MCP server: call get_ingestion_skill with {"slug": "noaa-coops-data-api"}.

Access

  • No account or key. The data-retrieval endpoint accepts public query parameters.
  • Specify an application identifier, station, product, time range, units, time zone and output format; water-level products also need a datum.

Request

bash
curl 'https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?date=recent&station=9414290&product=water_level&datum=MLLW&time_zone=gmt&units=metric&application=SignalLab&format=json'

Format

JSON object with station metadata and observation rows containing time, water-level value, standard deviation, quality flags and preliminary or verified status.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""NOAA CO-OPS recent San Francisco water levels -> pandas -> Parquet."""
import requests
import pandas as pd

URL = "https://api.tidesandcurrents.noaa.gov/api/prod/datagetter"
PARAMS = {"date": "recent", "station": "9414290", "product": "water_level",
          "datum": "MLLW", "time_zone": "gmt", "units": "metric",
          "application": "SignalLab", "format": "json"}
r = requests.get(URL, params=PARAMS, timeout=60)
r.raise_for_status()
payload = r.json()
df = pd.DataFrame(payload["data"])
df["time"] = pd.to_datetime(df["t"], utc=True)
df["water_level_m"] = pd.to_numeric(df["v"])
df.to_parquet("noaa_coops_water_levels.parquet", index=False)
print(len(df), "observations at", payload["metadata"]["name"],
      df["time"].min().isoformat(), "to", df["time"].max().isoformat())

Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 719 observations at San Francisco 2026-10-30T02:24:00+00:00 to 2026-11-02T02:12:00+00:00

Limits

  • The recent selector returns the last 72 hours.
  • One-minute requests are limited to four days and six-minute requests to one month; longer-interval products allow larger spans.
  • The API throttles heavy query volume, but no numeric request rate is stated.

Quirks

  • Set time_zone=gmt and parse timestamps as UTC; local station modes can include daylight-saving behavior.
  • Store datum and units with water-level values because identical numbers are not comparable across reference datums or unit systems.
  • The q field distinguishes preliminary from verified values, and monthly verification can revise earlier observations.
  • Some products require additional parameters such as datum, bin, interval or velocity type.

Terms and attribution

  • CO-OPS says government-server information is public domain unless specifically annotated otherwise.
  • NOS asks for attribution when its material is reproduced and redistributed.
  • Do not modify data and present the result as official government material; preliminary data require appropriate caution.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer