Marine Weather API

Hourly wave forecasts at 5 km resolution

Location and Time

Hourly Marine Variables

Note: Ocean currents consider Eulerian, Waves and Tides at 0.08° (~8 km) resolution. This is not suitable for small scale currents and does not replace your nautical almanac.

Daily Marine Variables

Current Conditions

Settings

API Response

Loading...
(Open in new tab or copy this URL into your application).

Data Sources

The Marine API combines wave models from different sources.

You can find the update timings in the model updates documentation.
Data SetRegionSpatial ResolutionTemporal ResolutionData AvailabilityUpdate frequency
MeteoFrance MFWAMGlobalMap0.08° (~8 km)3-HourlyOctober 2021 with 10 day forecastEvery 12 hours
MeteoFrance SMOC CurrentsGlobalMap0.08° (~8 km)HourlyJanuary 2022 with 10 day forecastEvery 24 hours
ECMWF WAMGlobal0.25° (~25 km)3-HourlyMarch 2024 with 10 day forecastEvery 6 hours
NCEP GFS WaveGlobal0.25° (~25 km)HourlyJune 2024 with 16 day forecastEvery 6 hours
NCEP GFS WaveLatitude 52.5°N - 15°S0.16° (~16 km)HourlyOctober 2024 with 16 day forecastEvery 6 hours
DWD GWAMEurope0.05° (~5 km)HourlyAugust 2022 with 8 day forecastTwice daily
DWD EWAMGlobal0.25° (~25 km)HourlyAugust 2022 with 4 day forecastTwice daily
ERA5-OceanGlobal0.5° (~50 km)Hourly1940 to presentDaily with 5 days delay

API Documentation

The API endpoint /v1/marine accepts a geographical coordinate, a list of marine variables and responds with a JSON hourly marine weather forecast for 7 days. Time always starts at 0:00 today. All URL parameters are listed below:

ParameterFormatRequiredDefaultDescription
latitude, longitudeFloating pointYesGeographical WGS84 coordinates of the location. Multiple coordinates can be comma separated. E.g. &latitude=52.52,48.85&longitude=13.41,2.35. To return data for multiple locations the JSON output changes to a list of structures. CSV and XLSX formats add a column location_id.
hourlyString arrayNoA list of weather variables which should be returned. Values can be comma separated, or multiple &hourly= parameter in the URL can be used.
dailyString arrayNoA list of daily weather variable aggregations which should be returned. Values can be comma separated, or multiple &daily= parameter in the URL can be used. If daily weather variables are specified, parameter timezone is required.
currentString arrayNoA list of variables to get current conditions.
timeformatStringNoiso8601If format unixtime is selected, all time values are returned in UNIX epoch time in seconds. Please note that all timestamp are in GMT+0! For daily values with unix timestamps, please apply utc_offset_seconds again to get the correct date.
timezoneStringNoGMTIf timezone is set, all timestamps are returned as local-time and data is returned starting at 00:00 local-time. Any time zone name from the time zone database is supported. If auto is set as a time zone, the coordinates will be automatically resolved to the local time zone. For multiple coordinates, a comma separated list of timezones can be specified.
past_daysInteger (0-92)No0If past_days is set, yesterday or the day before yesterday data are also returned.
forecast_daysInteger (0-8)No5Per default, 7 days are returned. Up to 8 days of forecast are possible.
forecast_hours
past_hours
Integer (>0)NoSimilar to forecast_days, the number of timesteps of hourly data can controlled. Instead of using the current day as a reference, the current hour is used.
start_date
end_date
String (yyyy-mm-dd)NoThe time interval to get weather data. A day must be specified as an ISO8601 date (e.g. 2022-06-30).
start_hour
end_hour
String (yyyy-mm-ddThh:mm)NoThe time interval to get weather data for hourly data. Time must be specified as an ISO8601 date (e.g. 2022-06-30T12:00).
length_unitStringNometricOptions metric and imperial
cell_selectionStringNoseaSet a preference how grid-cells are selected. The default land finds a suitable grid-cell on land with similar elevation to the requested coordinates using a 90-meter digital elevation model. sea prefers grid-cells on sea. nearest selects the nearest possible grid-cell.
apikeyStringNoOnly required to commercial use to access reserved API resources for customers. The server URL requires the prefix customer-. See pricing for more information.

Additional optional URL parameters will be added. For API stability, no required parameters will be added in the future!

Hourly Parameter Definition

The parameter &hourly= accepts the following values. Most weather variables are given as an instantaneous value for the indicated hour. Some variables like precipitation are calculated from the preceding hour as an average or sum.

VariableValid timeUnitDescription
wave_height
wind_wave_height
swell_wave_height
InstantMeterWave height of significant mean, wind and swell waves. Wave directions are always reported as the direction the waves come from. 0° = From north towards south; 90° = From east
wave_direction
wind_wave_direction
swell_wave_direction
Instant°Mean direction of mean, wind and swell waves
wave_period
wind_wave_period
swell_wave_period
InstantSecondsPeriod between mean, wind and swell waves.
wind_wave_peak_period
swell_wave_peak_period
InstantSecondsPeak period between wind and swell waves.
ocean_current_velocityInstantkm/h (mph, m/s, knots)Velocity of ocean current considering Eulerian, Waves and Tides.
ocean_current_directionInstant°Direction following the flow of the current. E.g. where the current is heading towards. 0° = Going north; 90° = Towards east.

Daily Parameter Definition

Aggregations are a simple 24 hour aggregation from hourly values. The parameter &daily= accepts the following values:

VariableUnitDescription
wave_height_max
wind_wave_height_max
swell_wave_height_max
MeterMaximum wave height on a given day for mean, wind and swell waves
wave_direction_dominant
wind_wave_direction_dominant
swell_wave_direction_dominant
°Dominant wave direction of mean, wind and swell waves
wave_period_max
wind_wave_period_max
swell_wave_period_max
SecondsMaximum wave period of mean, wind and swell
wind_wave_peak_period_max
swell_wave_peak_period_max
SecondsMaximum peak period between wind and swell waves.

JSON Return Object

On success a JSON object will be returned.

      

  "latitude": 52.52,
  "longitude": 13.419,
  "elevation": 44.812,
  "generationtime_ms": 2.2119,
  "utc_offset_seconds": 0,
  "timezone": "Europe/Berlin",
  "timezone_abbreviation": "CEST",
  "hourly": {
    "time": ["2022-07-01T00:00", "2022-07-01T01:00", "2022-07-01T02:00", ...],
    "wave_height": [1, 1.7, 1.7, 1.5, 1.5, 1.8, 2.0, 1.9, 1.3, ...]
  },
  "hourly_units": {
    "wave_height": "m"
  },

      
    
ParameterFormatDescription
latitude, longitudeFloating pointWGS84 of the center of the weather grid-cell which was used to generate this forecast. This coordinate might be a few kilometers away from the requested coordinate.
generationtime_msFloating pointGeneration time of the weather forecast in milliseconds. This is mainly used for performance monitoring and improvements.
utc_offset_secondsIntegerApplied timezone offset from the &timezone= parameter.
timezone
timezone_abbreviation
StringTimezone identifier (e.g. Europe/Berlin) and abbreviation (e.g. CEST)
hourlyObjectFor each selected weather variable, data will be returned as a floating point array. Additionally a time array will be returned with ISO8601 timestamps.
hourly_unitsObjectFor each selected weather variable, the unit will be listed here.
dailyObjectFor each selected daily weather variable, data will be returned as a floating point array. Additionally a time array will be returned with ISO8601 timestamps.
daily_unitsObjectFor each selected daily weather variable, the unit will be listed here.

Errors

In case an error occurs, for example a URL parameter is not correctly specified, a JSON error object is returned with a HTTP 400 status code.

      

  "error": true,
  "reason": "Cannot initialize WeatherVariable from invalid String value tempeture_2m for key hourly"

      
    

Citation & Acknowledgement

Generated using ICON Wave forecast from the German Weather Service DWD.

All users of Open-Meteo data must provide a clear attribution to DWD as well as a reference to Open-Meteo.