API reference
Neptun is a REST API for tides, tidal currents and European coastal data. All responses are JSON, all endpoints are read-only via GET.
Base URL & authentication
Base URL: https://neptun.marine-api.com/v1
Every request needs an API key (mapi_…) in the Authorization header (recommended) or as a ?key= parameter:
curl -H "Authorization: Bearer mapi_YOUR_KEY" \
"https://neptun.marine-api.com/v1/tides?lat=54.32&lon=13.10"Quotas
Quotas apply per calendar month (UTC). Every response carries a quota object. When the quota is used up the API answers 429; a short-term per-minute limit applies as well (120/min by default) and returns 429 with a Retry-After header.
Attribution (required)
Every response carries an attribution field. Under the data providers' licences this credit must be carried through whenever you display or process the data. Model values — not for navigation.
Which networks and countries are covered?
Example clients (Python, Node)
Endpoints
GET /v1/tides— Tides
Water level, high and low water for any point in the world's oceans.GET /v1/currents— Tidal currents
Set & drift — direction and rate of the tidal stream at a point.GET /v1/currents-field— Current field
Vector field across an area — for chart overlays.GET /v1/levels— Gauges & measuring stations
Measured water levels, waves and sea temperature from official networks.GET /v1/warnings— Navigational warnings
Official notices to mariners from 36 sources.GET /v1/locks— Locks
3,396 locks with dimensions and operating data.GET /v1/shelter— Harbour shelter
Wind shelter for 22,669 marinas — which direction a harbour is protected from.GET /v1/me— Check your key
Plan, scopes and quota status of your own key.
Status
GET /v1/status | Public module status, available without a key. |
GET /v1/levels/status | Gauge networks: coverage and freshness per network. |
GET /v1/warnings/status | Notice sources: yield and freshness per source. |
GET /v1/locks/status | Locks per country. |
GET /v1/shelter/status | Harbour shelter: coverage. |