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.
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¤t=wave_height,wave_period
curl 'https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0¤t=wave_height,wave_period'const res = await fetch("https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0¤t=wave_height,wave_period");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://marine-api.open-meteo.com/v1/marine?latitude=54.0&longitude=10.0¤t=wave_height,wave_period", timeout=20)
res.raise_for_status()
print(res.json()){
"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
| Parameter | Type | Required | Description |
|---|---|---|---|
latitude / longitude | float | Required | Marine coordinates. Inland points return nulls. 54.0 |
current | string | Optional | Current marine variables to return. wave_height,wave_period |
hourly | string | Optional | Hourly marine forecast variables. wave_height,swell_wave_height |
daily | string | Optional | Daily aggregates such as wave_height_max. wave_height_max |
timezone | string | Optional | IANA 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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
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.