BYTETOOLS

Open-Meteo Marine API

Free marine weather API with no key: wave height, wave period and direction, swell and sea surface temperature forecasts worldwide. Tested curl example.

No API key requiredHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

What is the Open-Meteo Marine API?

The Open-Meteo Marine API is a free, key-free API providing ocean and coastal forecasts — significant wave height, wave period and direction, wind waves, swell components and sea surface temperature — for any marine location worldwide.

Marine forecast data is normally expensive and locked behind commercial maritime providers. This endpoint exposes wave models through the same key-free interface as Open-Meteo's weather API, which makes it uniquely accessible for surfing, sailing and coastal applications.

Understanding the wave decomposition matters: `wave_height` is the combined sea state, while `wind_wave_height` and `swell_wave_height` separate locally generated chop from long-period swell arriving from distant storms. Surfers care about swell; sailors care about the combined figure.

Quick facts

Base URL
https://marine-api.open-meteo.com/v1/marine
Authentication
No API key required.
Rate limit
Shares the Open-Meteo fair-use policy — roughly 10,000 requests per day.
Pricing
Free including commercial use below the daily limit.
CORS
Not enabled — call it from your server
Official docs
Read the docs

How to use the Open-Meteo Marine API

Every request below was executed against the live API on 2026-08-20, and the response shown is the real body it returned — not an illustration.

1. Fetch current wave conditions

GET https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0&current=wave_height,wave_period

curl
curl 'https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0&current=wave_height,wave_period'
JavaScript (fetch)
const res = await fetch("https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0&current=wave_height,wave_period");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0&current=wave_height,wave_period", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "latitude": 54.041664,
  "longitude": 9.9583435,
  "generationtime_ms": 0.15854835510253906,
  "utc_offset_seconds": 0,
  "timezone": "GMT",
  "timezone_abbreviation": "GMT",
  "elevation": 24.0,
  "current_units": {
    "time": "iso8601",
    "interval": "seconds",
    "wave_height": "m",
    "wave_period": "s"
  },
  "current": {
    "time": "2026-08-19T21:00",
    "interval": 900,
    "wave_height": null,
    "wave_period": null
  }
}

Parameters

ParameterTypeRequiredDescription
latitude / longitudefloatRequiredMarine coordinates. Inland points return nulls. 54.0
currentstringOptionalCurrent marine variables to return. wave_height,wave_period
hourlystringOptionalHourly marine forecast variables. wave_height,swell_wave_height
dailystringOptionalDaily aggregates such as wave_height_max. wave_height_max
timezonestringOptionalIANA timezone or auto. auto

Response fields

current.wave_heightnumber
Significant combined wave height in metres.
current.wave_periodnumber
Wave period in seconds — longer means more powerful swell.
current.wave_directionnumber
Direction waves are coming from, in degrees.
hourly.swell_wave_heightarray
Swell component only, excluding local wind chop.
hourly.wind_wave_heightarray
Locally generated wind waves.
current_unitsobject
Units for each returned variable.

What you can build with the Open-Meteo Marine API

  • Build a surf forecast showing swell height and period
  • Plan sailing passages around sea state
  • Warn coastal operations about high waves
  • Add marine conditions to a fishing or diving app

Common errors and how to fix them

All values null

The coordinates are inland.

Fix: Marine models only cover water; move the point offshore or to a coastal grid cell.

400

Unknown marine variable name.

Fix: Variable names are specific — wave_height, swell_wave_period and so on. Check the docs list.

Confusing wave heights

Three different wave measures are returned.

Fix: wave_height is combined sea state; wind_wave and swell_wave separate local chop from distant swell.

Open-Meteo Marine API — frequently asked questions

Is there a free marine weather API?

Yes. The Open-Meteo Marine API provides wave height, period, direction and sea surface temperature with no API key, which is rare — marine data is usually commercial.

What is the difference between wave height and swell height?

wave_height is the combined sea state. swell_wave_height is long-period energy from distant storms, and wind_wave_height is local chop. Surf forecasting cares about swell specifically.

Why are all the values null?

Your coordinates are inland. Marine models only produce output over water — move the point offshore.

Can I use it for a surf forecast commercially?

Yes, Open-Meteo permits commercial use below its fair-use daily limit.

Tools that pair with this API

Open-Meteo Marine is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-20; always check the official documentation before relying on this API in production, as terms and limits can change.