API Documentation

Access marine data programmatically through free and open source APIs.

AIS API

Live vessel traffic streamed by bounding box over WebSocket, with a GeoJSON snapshot of current positions and an aisstream.io-compatible endpoint. Documented separately, including the native stream protocol and access tokens.

Getting Started

Authentication

The tides and bathymetry APIs are open and do not require authentication. The AIS API is free to read without a token; its aisstream.io-compatible stream, publishing, and higher limits use access tokens described in its own reference.

Rate Limits

The tides and bathymetry APIs apply the following limits; the AIS API has its own, listed on its reference page:

  • 100 requests per minute per IP address
  • 10,000 requests per day per IP address

If you need higher limits for a production application, please contact us.

Error Handling

Errors are returned with appropriate HTTP status codes and a JSON body:

{
  "message": "Invalid parameters",
  "errors": [
    {
      "path": "/latitude",
      "message": "must be between -90 and 90",
      "errorCode": "INVALID_NUMBER"
    }
  ]
}

Tides

GEThttps://api.openwaters.io/tides

API information

GEThttps://api.openwaters.io/tides/extremes

Get extremes prediction for a location

Returns high and low tide predictions for the nearest station to the given coordinates

Parameters

NameLocationTypeRequiredDescription
latitudequerynumberLatitude
longitudequerynumberLongitude
startquerystringStart date/time (ISO 8601 format, defaults to now)
endquerystringEnd date/time (ISO 8601 format, defaults to 7 days from start)
datumquerystringVertical datum (defaults to station's chart datum)
unitsquerystringUnits for water levels (defaults to meters)
GEThttps://api.openwaters.io/tides/timeline

Get timeline prediction for a location

Returns water level predictions at regular intervals for the nearest station

Parameters

NameLocationTypeRequiredDescription
latitudequerynumberLatitude
longitudequerynumberLongitude
startquerystringStart date/time (ISO 8601 format, defaults to now)
endquerystringEnd date/time (ISO 8601 format, defaults to 7 days from start)
datumquerystringVertical datum (defaults to station's chart datum)
unitsquerystringUnits for water levels (defaults to meters)
GEThttps://api.openwaters.io/tides/stations/{source}/{id}

Get station by ID

Find a station by its ID

Parameters

NameLocationTypeRequiredDescription
sourcepathstringStation source (e.g., 'noaa', 'ticon')
idpathstringStation ID within the source (e.g., '8722588', 'some-dash-string')
GEThttps://api.openwaters.io/tides/stations

Find stations

Search stations by name/ID, find stations near the given coordinates, or list all stations when no filters are provided

Parameters

NameLocationTypeRequiredDescription
queryquerystringFull-text search query (name, ID, or location)
latitudequerynumberLatitude for proximity search
longitudequerynumberLongitude for proximity search
maxResultsqueryintegerMaximum number of stations to return
maxDistancequerynumberMaximum search radius for proximity search
bboxquerystringBounding box as comma-separated values: minLon,minLat,maxLon,maxLat
GEThttps://api.openwaters.io/tides/stations/{source}/{id}/extremes

Get extremes prediction for a specific station

Parameters

NameLocationTypeRequiredDescription
sourcepathstringStation source (e.g., 'noaa', 'ticon')
idpathstringStation ID within the source (e.g., '8722588', 'some-dash-string')
startquerystringStart date/time (ISO 8601 format, defaults to now)
endquerystringEnd date/time (ISO 8601 format, defaults to 7 days from start)
datumquerystringVertical datum (defaults to station's chart datum)
unitsquerystringUnits for water levels (defaults to meters)
GEThttps://api.openwaters.io/tides/stations/{source}/{id}/timeline

Get timeline prediction for a specific station

Parameters

NameLocationTypeRequiredDescription
sourcepathstringStation source (e.g., 'noaa', 'ticon')
idpathstringStation ID within the source (e.g., '8722588', 'some-dash-string')
startquerystringStart date/time (ISO 8601 format, defaults to now)
endquerystringEnd date/time (ISO 8601 format, defaults to 7 days from start)
datumquerystringVertical datum (defaults to station's chart datum)
unitsquerystringUnits for water levels (defaults to meters)
GEThttps://api.openwaters.io/tides/openapi.json

Get OpenAPI specification

Need Help?

Have questions about our APIs or need support?