TL;DR
NOAA's Tides & Currents API provides real-time water level measurements, tide predictions, current data, and station datums for thousands of coastal stations across the United States and its territories. Operated by NOAA's Center for Operational Oceanographic Products and Services (CO-OPS), this is the authoritative source for US tide data. You can query water levels (6-minute intervals), daily highs/lows, predicted tides months in advance, and historical data going back decades.
Quick start: https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=water_level&datum=MLLW&units=english&time_zone=gmt&format=json
No API key needed — just make a request!
How to Use This API
1. Real-Time Water Levels
Station 9414290 is in San Diego, CA:
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=water_level&datum=MLLW&units=english&time_zone=gmt&format=json
2. Tide Predictions
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=predictions&datum=MLLW&units=english&time_zone=gmt&format=json&interval=hilo
3. Station Info
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=datums&format=json
4. JavaScript — Check Tide
fetch('https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=predictions&datum=MLLW&units=english&time_zone=gmt&format=json')
.then(r => r.json())
.then(d => {
d.predictions.forEach(p => {
console.log(p.t, '—', p.v, 'ft');
});
});
5. Python — Water Level Graph Data
import requests
from datetime import datetime, timedelta
today = datetime.now().strftime('%Y%m%d')
params = {
'station': '9414290',
'product': 'water_level',
'datum': 'MLLW',
'units': 'english',
'time_zone': 'gmt',
'format': 'json',
'date': today
}
resp = requests.get('https://api.tidesandcurrents.noaa.gov/api/prod/datagetter', params=params)
data = resp.json()
for reading in data['data'][:10]:
print(f"{reading['t']}: {reading['v']} ft")
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter?station=9414290&product=predictions&datum=MLLW&interval=hilo&units=english&format=json
API Details
- API URL
https://api.tidesandcurrents.noaa.gov/api/prod/datagetter- Documentation
- tidesandcurrents.noaa.gov/api/
- Category
- Science
- Authentication
- Not Required
- Geographic Coverage
- USA — all coastal states and territories
Frequently Asked Questions
- What products does the API support?
water_level,predictions,datums,currents,wind,air_pressure,air_temperature,water_temperature, andconductivity.- How do I find a station ID?
- Browse the station map at tidesandcurrents.noaa.gov or use the
product=stationsquery with latitude/longitude range. - What datums are available?
- MLLW (Mean Lower Low Water), MLW, MHW, MHHW, NAVD88, NGVD29, and STND (Station Datum). MLLW is standard for tide predictions.
- What units are supported?
units=english(feet) orunits=metric(meters). Wind uses knots in english, m/s in metric.- Can I get historical water level data?
- Yes, specify a date range with
date=20240101andrange=30(for 30 days), or usebegin_dateandend_dateparameters. - How often are water levels measured?
- NOAA stations report water levels every 6 minutes. The API returns the most recent measurements and can provide data up to 31 days in the past.
What You Can Build
- Coastal tide chart app for boaters and fishermen
- Storm surge monitoring dashboard
- Beach planning tool showing low/high tide times
- Coastal engineering data analysis platform
- Marine navigation assistant with current predictions