Marine and sailing weather via Open-Meteo. Waves, swell, sea temperature, wind, tides, ocean currents, and sailing assessments. Free, no API key, global coverage.
Marine and sailing weather using Open-Meteo Marine API + Weather API. Free, no API key required, works worldwide.
Two APIs are used together — replace LAT, LON, and TZ in all commands:
marine-api.open-meteo.com) — waves, swell, sea temp, currents, tidesapi.open-meteo.com) — wind, gusts, air temp, pressure, visibilityFind coordinates for any location using web search or the user's input. Use the nearest timezone (IANA format, e.g. Europe/London, America/New_York, Atlantic/Canary).
Sea state:
curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON¤t=wave_height,wave_direction,wave_period,swell_wave_height,swell_wave_direction,swell_wave_period,sea_surface_temperature&timezone=TZ"
Wind and atmosphere:
curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON¤t=temperature_2m,wind_speed_10m,wind_direction_10m,wind_gusts_10m,apparent_temperature,pressure_msl,cloud_cover,visibility&timezone=TZ"
Run both and combine the results into a single briefing.
Marine (up to 16 days, adjust forecast_days):
curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=wave_height,wave_direction,wave_period,swell_wave_height,swell_wave_direction,swell_wave_period,swell_wave_peak_period,wind_wave_height,wind_wave_direction,sea_surface_temperature,ocean_current_velocity,ocean_current_direction,sea_level_height_msl&forecast_days=3&timezone=TZ"
Wind (up to 16 days):
curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON&hourly=wind_speed_10m,wind_direction_10m,wind_gusts_10m,temperature_2m,pressure_msl,visibility,cloud_cover,precipitation_probability&forecast_days=3&timezone=TZ"
Marine:
curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&daily=wave_height_max,wave_direction_dominant,wave_period_max,swell_wave_height_max,swell_wave_direction_dominant,swell_wave_period_max&forecast_days=7&timezone=TZ"
Weather:
curl -s "https://api.open-meteo.com/v1/forecast?latitude=LAT&longitude=LON&daily=wind_speed_10m_max,wind_gusts_10m_max,wind_direction_10m_dominant,temperature_2m_max,temperature_2m_min,sunrise,sunset,uv_index_max,precipitation_probability_max&forecast_days=7&timezone=TZ"
curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=sea_level_height_msl&forecast_days=3&timezone=TZ"
High/low tide: find local maxima and minima in the sea_level_height_msl array. Sea level includes tidal signal + inverted barometer effect.
curl -s "https://marine-api.open-meteo.com/v1/marine?latitude=LAT&longitude=LON&hourly=ocean_current_velocity,ocean_current_direction&forecast_days=3&timezone=TZ"
Always present marine data as a structured sailing briefing:
Sea: [wave_height]m waves, [wave_period]s period, from [direction]
Swell: [swell_wave_height]m from [direction], [swell_wave_period]s period
Wind: [wind_speed] km/h [direction], gusts [wind_gusts] km/h
Temp: Air [temperature]C (feels [apparent_temperature]C), Sea [sea_surface_temperature]C
Sky: [cloud_cover]% cloud, [visibility/1000]km visibility
Rate conditions based on the data:
Flag warnings:
| Force | km/h | Description | Sea State |
|---|---|---|---|
| 0 | 0-1 | Calm | Flat |
| 1 | 2-5 | Light air | Ripples |
| 2 | 6-11 | Light breeze | Small wavelets |
| 3 | 12-19 | Gentle breeze | Large wavelets |
| 4 | 20-28 | Moderate breeze | Small waves |
| 5 | 29-38 | Fresh breeze | Moderate waves |
| 6 | 39-49 | Strong breeze | Large waves |
| 7 | 50-61 | Near gale | Breaking waves |
| 8 | 62-74 | Gale | High waves |
| 9 | 75-88 | Severe gale | Very high waves |
| 10 | 89-102 | Storm | Exceptionally high waves |
Convert degrees to compass: divide by 22.5, round, index into [N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW].
Quick reference: 0=N, 45=NE, 90=E, 135=SE, 180=S, 225=SW, 270=W, 315=NW.
| Measurement | Unit |
|---|---|
| Wave height | meters (m) |
| Wave period | seconds (s) |
| Wind speed | km/h |
| Temperature | Celsius (C) |
| Current velocity | km/h |
| Directions | degrees (0=N, 90=E, 180=S, 270=W) |
| Sea level | meters relative to MSL |
| Visibility | meters |
| Pressure | hPa |
Users may prefer knots for wind. Convert: knots = km/h * 0.539957. Add &wind_speed_unit=kn to the weather API URL to get knots directly.
| Region | Example | Lat | Lon |
|---|---|---|---|
| Canary Islands | Las Palmas | 28.1 | -15.4 |
| Balearics | Palma de Mallorca | 39.57 | 2.65 |
| Greek Islands | Piraeus | 37.94 | 23.65 |
| Croatia | Split | 43.51 | 16.44 |
| Caribbean | St. Maarten | 18.04 | -63.05 |
| South Pacific | Tahiti | -17.53 | -149.57 |
| Southeast Asia | Phuket | 7.88 | 98.39 |
| East Africa | Zanzibar | -6.16 | 39.19 |
| Australia | Sydney | -33.87 | 151.21 |
| US East Coast | Annapolis | 38.97 | -76.49 |
| UK | Solent | 50.77 | -1.30 |
| Scandinavia | Gothenburg | 57.71 | 11.97 |
forecast_days=16)jq if available, otherwise read raw JSON.current parameters. For planning, use daily. Use hourly only when the user needs detailed breakdowns.