x

The MSW forecast API provides access to core weather and ocean data purposed specifically for surfers and surfing. It drives our website and can be used to add information to yours. You’ll need to sign up for a valid API key for each application here and ensure you stick to the terms and conditions here.

Our API follows RESTful convention. Querying for information for a location is as simple as calling:

http://magicseaweed.com/api/YOURAPIKEY/forecast/?spot_id=10

In this instance we’re querying for MSW Spot 10 - Bantham, England.

To query data for a different location locate the beach on our website and note it’s unique ID in the URL (in bold in the example below). eg:

http://magicseaweed.com/Pipeline-Backdoor-Surf-Report/616/

If you fail to pass the required spot_id or pass an invalid ID you’ll receive an error code:

{
  error_response: {
    code: 501,
    error_msg: "Invalid parameters were supplied and did not pass our validation, please double check your request."
  }
}

If you don’t need all the information available in your response you can specify only specific fields or groups of fields like this:

http://magicseaweed.com/api/YOURAPIKEY/forecast/?spot_id=10&fields=timestamp,wind.*,condition.temperature

This will (depending on your selection) reduce the turn around time for your request and keep data transfer to a minimum. It’s always good practise to only request for what you actually require rather than filtering the full response, unless you need every field.

There’s a full reference to the response fields at the bottom of this guide.

You’ll receive a JSON array consisting of a series of data representing the forecast for specific timeframes, looking like this:

[{
timestamp: 1366902000,
localTimestamp: 1366902000,
issueTimestamp: 1366848000,
fadedRating: 0,
solidRating: 0,
swell: {
    minBreakingHeight: 1,
    absMinBreakingHeight: 1.06,
    maxBreakingHeight: 2,
    absMaxBreakingHeight: 1.66,
    unit: "ft",
    components: {
         combined: {
         height: 1.1,
         period: 14,
         direction: 93.25,
         compassDirection: "W"
    },
    primary: {
         height: 1,
         period: 7,
         direction: 83.37,
         compassDirection: "W"
    },
    secondary: {
         height: 0.4,
         period: 9,
         direction: 92.32,
         compassDirection: "W"
    },
    tertiary: {
         height: 0.3,
         period: 13,
         direction: 94.47,
         compassDirection: "W"
     }
     }
},
wind: {
     speed: 10,
     direction: 85,
     compassDirection: "W",
     chill: 15,
     gusts: 13,
     unit: "mph"
},
condition: {
     pressure: 1020,
     temperature: 18,
     unitPressure: "mb",
     unit: "c"
},
charts: {
    swell: "http://cdn.magicseaweed.com/wave/750/1-1366902000-1.gif",
    period: "http://cdn.magicseaweed.com/wave/750/1-1366902000-2.gif",
    wind: "http://cdn.magicseaweed.com/gfs/750/1-1366902000-4.gif",
    pressure: "http://cdn.magicseaweed.com/gfs/750/1-1366902000-3.gif",
    sst: "http://cdn.magicseaweed.com/sst/750/1-1366902000-10.gif"
}
}]

We define three unit localisation groups. These groups are:

UK (ft, mph, c)
US (ft, mph, f)
EU (m, kph, c)

The groupings define the set of units for the measurements we provide that our commonly used by that area. Unfortunately it’s not as clear cut as metric or imperial, because wave height and tidal height don’t conform to this across these three areas and they don’t all use just metric or just imperial, it’s can be a mixture. By default the API will return UK units, unless you specify otherwise and you need to specify with every request. In the places where units are used the API will return the unit for the given measurement.

Units can be set by appending:

units=eu

To the request. For example:

http://magicseaweed.com/api/YOURAPIKEY/forecast/?spot_id=10&units=eu

Will returns heights in Meters, wind speeds in Kilometers per hour and temperatures on degrees centigrade.

There are four attributes which describe the date/time of the forecast row; timestamp, localTimestamp, en_threeHourTimeText and threeHourTimeText.

Timestamp is the GMT/UTC time at which the forecast row is scheduled to occur. DO NOT USE this attribute if you want to render the date, since without the spot you don’t know which timezone the time should be adjusted for. localTimestamp has this adjustment factored in including daylight savings time, thus use localTimestamp in any date function that accepts a UNIX timestamp when you want to render a formatted date and you won’t need to worry about the spots timezone.

The MSW rating is calculated for you by our own algorithm. There are two components that make up the rating fadedRating and solidRating.

  • solidRating This is the solid stars for the rating, which signifies swell quality/power.
  • fadedRating This signifies the number of stars you should show for the portion of the overall rating that has been effected by the wind.
  • The two components together make up the overall rating. A solid 5 star rating (with zero faded dtars) is the best possible. A rating of 2 solid stars and 2 faded stars means the there is significant swell (4 stars worth) but a medium onshore wind reducing the wave quality. The solid stars must always be rendered first followed by the faded stars.

From a technical point of view you just need to render the solidRating first and then the fadedRating as the below JavaScript example shows.

var rating = [];
 
// Loop the solid rating on a single forecast object.
for (var i = 0; i < forecast.solidRating; i++) {
    rating.push('<img src="http://cdnimages.magicseaweed.com/star_filled.png" />');
}
 
// Loop the faded rating on a single forecast object.
for (var i = 0; i < forecast.fadedRating; i++) {
    rating.push('<img src="http://cdnimages.magicseaweed.com/star_empty.png" />');
}
 
document.getElementById("ratingContainer").innerHTML = rating.join(" ");

minBreakingHeight, maxBreakingHeight are the lower and upper range for estimated face heights of the breaking waves in the surf zone. This estimate is derived from the offshore swell data and is intended as a guideline. More information is here.

Our forecast model offers two representations of the state of the ocean. One is an average of the whole sea surface comprising all swells and waves regardless of origin or direction. This are available as the combined swell component in the response.

While this can offer useful information about the sea state in deep water they are rarely applicable to the surf zone, for example a swell heading away from the beach will show in combination with a swell heading towards when only one can be making surf. For this reason we DON’T USE these parameters ourselves on MSW in our public forecast. We suggest you consider your application carefully and follow our example if applicable.

The second representation is a partitioned system that separates waves into swells likely to originate from the same storm, sharing similar sizes, periods and directions. These are available as primary, secondary and tertiary

The order as particularly important and be aware that not every component may have data depending on the location and conditions.

The charts object contains absolute URLs to swell and other charts we have available. Some charts may not be available for some time frames and locations. The default URL is for a 750px wide chart. Swapping the /750/ with /190/ will access alternately sized versions. Charts aren’t square (sadly geography rarely allows for that) so the width is the maximum horizontal width. Vertical widths will vary.

condition.weather is a number matching a weather icon, in our weather icon set. You can access the weather icon set at the following url http://cdnimages.magicseaweed.com/30x30/[ICON NUMBER].png replacing the [ICON NUMBER] with the condition.weather key.

Full weather icon sprite sheet can be found here.

The accompanying CSS is here:

.msw-sw
{
    display:            inline-block;
    width:              30px;
    height:             30px;
    background:         url("http://im-1.msw.ms/md/static/we-sprite.png") no-repeat top left;
}
.msw-sw-1{ background-position: 0 0; width: 30px; height: 30px; } 
.msw-sw-10{ background-position: 0 -60px; width: 30px; height: 30px; } 
.msw-sw-11{ background-position: 0 -120px; width: 30px; height: 30px; } 
.msw-sw-12{ background-position: 0 -180px; width: 30px; height: 30px; } 
.msw-sw-13{ background-position: 0 -240px; width: 30px; height: 30px; } 
.msw-sw-14{ background-position: 0 -300px; width: 30px; height: 30px; } 
.msw-sw-15{ background-position: 0 -360px; width: 30px; height: 30px; } 
.msw-sw-16{ background-position: 0 -420px; width: 30px; height: 30px; } 
.msw-sw-17{ background-position: 0 -480px; width: 30px; height: 30px; } 
.msw-sw-18{ background-position: 0 -540px; width: 30px; height: 30px; } 
.msw-sw-19{ background-position: 0 -600px; width: 30px; height: 30px; } 
.msw-sw-2{ background-position: 0 -660px; width: 30px; height: 30px; } 
.msw-sw-20{ background-position: 0 -720px; width: 30px; height: 30px; } 
.msw-sw-21{ background-position: 0 -780px; width: 30px; height: 30px; } 
.msw-sw-22{ background-position: 0 -840px; width: 30px; height: 30px; } 
.msw-sw-23{ background-position: 0 -900px; width: 30px; height: 30px; } 
.msw-sw-24{ background-position: 0 -960px; width: 30px; height: 30px; } 
.msw-sw-25{ background-position: 0 -1020px; width: 30px; height: 30px; } 
.msw-sw-26{ background-position: 0 -1080px; width: 30px; height: 30px; } 
.msw-sw-27{ background-position: 0 -1140px; width: 30px; height: 30px; } 
.msw-sw-28{ background-position: 0 -1200px; width: 30px; height: 30px; } 
.msw-sw-29{ background-position: 0 -1260px; width: 30px; height: 30px; } 
.msw-sw-3{ background-position: 0 -1320px; width: 30px; height: 30px; } 
.msw-sw-30{ background-position: 0 -1380px; width: 30px; height: 30px; } 
.msw-sw-31{ background-position: 0 -1440px; width: 30px; height: 30px; } 
.msw-sw-32{ background-position: 0 -1500px; width: 30px; height: 30px; } 
.msw-sw-33{ background-position: 0 -1560px; width: 30px; height: 30px; } 
.msw-sw-34{ background-position: 0 -1620px; width: 30px; height: 30px; } 
.msw-sw-35{ background-position: 0 -1680px; width: 30px; height: 30px; } 
.msw-sw-36{ background-position: 0 -1740px; width: 30px; height: 30px; } 
.msw-sw-37{ background-position: 0 -1800px; width: 30px; height: 30px; } 
.msw-sw-38{ background-position: 0 -1860px; width: 30px; height: 30px; } 
.msw-sw-4{ background-position: 0 -1920px; width: 30px; height: 30px; } 
.msw-sw-5{ background-position: -60px 0; width: 30px; height: 30px; } 
.msw-sw-6{ background-position: -60px -60px; width: 30px; height: 30px; } 
.msw-sw-7{ background-position: -60px -120px; width: 30px; height: 30px; } 
.msw-sw-8{ background-position: -60px -180px; width: 30px; height: 30px; } 
.msw-sw-9{ background-position: -60px -240px; width: 30px; height: 30px; }

Swell and wind arrows use a similiar sprite sheet technique. However, there isn’t a sprite for each degree, angles are rounded to the nearest 5 degrees. Full sprite sheet for wind arrows and for swell arrows.

Swell Arrow

.msw-swa /* Inherits from swell arrows */
{
    background:         url("http://im-1.msw.ms/md/static/sa-sprite.png") no-repeat top left;
}
.msw-swa-10{ background-position: 0 0; width: 26px; height: 26px; } 
.msw-swa-100{ background-position: 0 -52px; width: 26px; height: 26px; } 
.msw-swa-105{ background-position: 0 -104px; width: 26px; height: 26px; } 
.msw-swa-110{ background-position: 0 -156px; width: 26px; height: 26px; } 
.msw-swa-115{ background-position: 0 -208px; width: 26px; height: 26px; } 
.msw-swa-120{ background-position: 0 -260px; width: 26px; height: 26px; } 
.msw-swa-125{ background-position: 0 -312px; width: 26px; height: 26px; } 
.msw-swa-130{ background-position: 0 -364px; width: 26px; height: 26px; } 
.msw-swa-135{ background-position: 0 -416px; width: 26px; height: 26px; } 
.msw-swa-140{ background-position: 0 -468px; width: 26px; height: 26px; } 
.msw-swa-145{ background-position: 0 -520px; width: 26px; height: 26px; } 
.msw-swa-15{ background-position: 0 -572px; width: 26px; height: 26px; } 
.msw-swa-150{ background-position: 0 -624px; width: 26px; height: 26px; } 
.msw-swa-155{ background-position: 0 -676px; width: 26px; height: 26px; } 
.msw-swa-160{ background-position: 0 -728px; width: 26px; height: 26px; } 
.msw-swa-165{ background-position: 0 -780px; width: 26px; height: 26px; } 
.msw-swa-170{ background-position: 0 -832px; width: 26px; height: 26px; } 
.msw-swa-175{ background-position: 0 -884px; width: 26px; height: 26px; } 
.msw-swa-180{ background-position: 0 -936px; width: 26px; height: 26px; } 
.msw-swa-185{ background-position: 0 -988px; width: 26px; height: 26px; } 
.msw-swa-190{ background-position: 0 -1040px; width: 26px; height: 26px; } 
.msw-swa-195{ background-position: 0 -1092px; width: 26px; height: 26px; } 
.msw-swa-20{ background-position: 0 -1144px; width: 26px; height: 26px; } 
.msw-swa-200{ background-position: 0 -1196px; width: 26px; height: 26px; } 
.msw-swa-205{ background-position: 0 -1248px; width: 26px; height: 26px; } 
.msw-swa-210{ background-position: 0 -1300px; width: 26px; height: 26px; } 
.msw-swa-215{ background-position: 0 -1352px; width: 26px; height: 26px; } 
.msw-swa-220{ background-position: 0 -1404px; width: 26px; height: 26px; } 
.msw-swa-225{ background-position: 0 -1456px; width: 26px; height: 26px; } 
.msw-swa-230{ background-position: 0 -1508px; width: 26px; height: 26px; } 
.msw-swa-235{ background-position: 0 -1560px; width: 26px; height: 26px; } 
.msw-swa-240{ background-position: 0 -1612px; width: 26px; height: 26px; } 
.msw-swa-245{ background-position: 0 -1664px; width: 26px; height: 26px; } 
.msw-swa-25{ background-position: 0 -1716px; width: 26px; height: 26px; } 
.msw-swa-250{ background-position: 0 -1768px; width: 26px; height: 26px; } 
.msw-swa-255{ background-position: 0 -1820px; width: 26px; height: 26px; } 
.msw-swa-260{ background-position: 0 -1872px; width: 26px; height: 26px; } 
.msw-swa-265{ background-position: 0 -1924px; width: 26px; height: 26px; } 
.msw-swa-270{ background-position: -52px 0; width: 26px; height: 26px; } 
.msw-swa-275{ background-position: -52px -52px; width: 26px; height: 26px; } 
.msw-swa-280{ background-position: -52px -104px; width: 26px; height: 26px; } 
.msw-swa-285{ background-position: -52px -156px; width: 26px; height: 26px; } 
.msw-swa-290{ background-position: -52px -208px; width: 26px; height: 26px; } 
.msw-swa-295{ background-position: -52px -260px; width: 26px; height: 26px; } 
.msw-swa-30{ background-position: -52px -312px; width: 26px; height: 26px; } 
.msw-swa-300{ background-position: -52px -364px; width: 26px; height: 26px; } 
.msw-swa-305{ background-position: -52px -416px; width: 26px; height: 26px; } 
.msw-swa-310{ background-position: -52px -468px; width: 26px; height: 26px; } 
.msw-swa-315{ background-position: -52px -520px; width: 26px; height: 26px; } 
.msw-swa-320{ background-position: -52px -572px; width: 26px; height: 26px; } 
.msw-swa-325{ background-position: -52px -624px; width: 26px; height: 26px; } 
.msw-swa-330{ background-position: -52px -676px; width: 26px; height: 26px; } 
.msw-swa-335{ background-position: -52px -728px; width: 26px; height: 26px; } 
.msw-swa-340{ background-position: -52px -780px; width: 26px; height: 26px; } 
.msw-swa-345{ background-position: -52px -832px; width: 26px; height: 26px; } 
.msw-swa-35{ background-position: -52px -884px; width: 26px; height: 26px; } 
.msw-swa-350{ background-position: -52px -936px; width: 26px; height: 26px; } 
.msw-swa-355{ background-position: -52px -988px; width: 26px; height: 26px; } 
.msw-swa-360{ background-position: -52px -1040px; width: 26px; height: 26px; } 
.msw-swa-40{ background-position: -52px -1092px; width: 26px; height: 26px; } 
.msw-swa-45{ background-position: -52px -1144px; width: 26px; height: 26px; } 
.msw-swa-5{ background-position: -52px -1196px; width: 26px; height: 26px; } 
.msw-swa-50{ background-position: -52px -1248px; width: 26px; height: 26px; } 
.msw-swa-55{ background-position: -52px -1300px; width: 26px; height: 26px; } 
.msw-swa-60{ background-position: -52px -1352px; width: 26px; height: 26px; } 
.msw-swa-65{ background-position: -52px -1404px; width: 26px; height: 26px; } 
.msw-swa-70{ background-position: -52px -1456px; width: 26px; height: 26px; } 
.msw-swa-75{ background-position: -52px -1508px; width: 26px; height: 26px; } 
.msw-swa-80{ background-position: -52px -1560px; width: 26px; height: 26px; } 
.msw-swa-85{ background-position: -52px -1612px; width: 26px; height: 26px; } 
.msw-swa-90{ background-position: -52px -1664px; width: 26px; height: 26px; } 
.msw-swa-95{ background-position: -52px -1716px; width: 26px; height: 26px; }

Wind Arrow

.msw-ssa,
.msw-swa /* Wind arrows */
{
    display:            inline-block;
    width:              26px;
    height:             26px;
    background:         url("http://im-1.msw.ms/md/static/wa-sprite.png") no-repeat top left;
}
.msw-ssa-10{ background-position: 0 0; width: 26px; height: 26px; } 
.msw-ssa-100{ background-position: 0 -52px; width: 26px; height: 26px; } 
.msw-ssa-105{ background-position: 0 -104px; width: 26px; height: 26px; } 
.msw-ssa-110{ background-position: 0 -156px; width: 26px; height: 26px; } 
.msw-ssa-115{ background-position: 0 -208px; width: 26px; height: 26px; } 
.msw-ssa-120{ background-position: 0 -260px; width: 26px; height: 26px; } 
.msw-ssa-125{ background-position: 0 -312px; width: 26px; height: 26px; } 
.msw-ssa-130{ background-position: 0 -364px; width: 26px; height: 26px; } 
.msw-ssa-135{ background-position: 0 -416px; width: 26px; height: 26px; } 
.msw-ssa-140{ background-position: 0 -468px; width: 26px; height: 26px; } 
.msw-ssa-145{ background-position: 0 -520px; width: 26px; height: 26px; } 
.msw-ssa-15{ background-position: 0 -572px; width: 26px; height: 26px; } 
.msw-ssa-150{ background-position: 0 -624px; width: 26px; height: 26px; } 
.msw-ssa-155{ background-position: 0 -676px; width: 26px; height: 26px; } 
.msw-ssa-160{ background-position: 0 -728px; width: 26px; height: 26px; } 
.msw-ssa-165{ background-position: 0 -780px; width: 26px; height: 26px; } 
.msw-ssa-170{ background-position: 0 -832px; width: 26px; height: 26px; } 
.msw-ssa-175{ background-position: 0 -884px; width: 26px; height: 26px; } 
.msw-ssa-180{ background-position: 0 -936px; width: 26px; height: 26px; } 
.msw-ssa-185{ background-position: 0 -988px; width: 26px; height: 26px; } 
.msw-ssa-190{ background-position: 0 -1040px; width: 26px; height: 26px; } 
.msw-ssa-195{ background-position: 0 -1092px; width: 26px; height: 26px; } 
.msw-ssa-20{ background-position: 0 -1144px; width: 26px; height: 26px; } 
.msw-ssa-200{ background-position: 0 -1196px; width: 26px; height: 26px; } 
.msw-ssa-205{ background-position: 0 -1248px; width: 26px; height: 26px; } 
.msw-ssa-210{ background-position: 0 -1300px; width: 26px; height: 26px; } 
.msw-ssa-215{ background-position: 0 -1352px; width: 26px; height: 26px; } 
.msw-ssa-220{ background-position: 0 -1404px; width: 26px; height: 26px; } 
.msw-ssa-225{ background-position: 0 -1456px; width: 26px; height: 26px; } 
.msw-ssa-230{ background-position: 0 -1508px; width: 26px; height: 26px; } 
.msw-ssa-235{ background-position: 0 -1560px; width: 26px; height: 26px; } 
.msw-ssa-240{ background-position: 0 -1612px; width: 26px; height: 26px; } 
.msw-ssa-245{ background-position: 0 -1664px; width: 26px; height: 26px; } 
.msw-ssa-25{ background-position: 0 -1716px; width: 26px; height: 26px; } 
.msw-ssa-250{ background-position: 0 -1768px; width: 26px; height: 26px; } 
.msw-ssa-255{ background-position: 0 -1820px; width: 26px; height: 26px; } 
.msw-ssa-260{ background-position: 0 -1872px; width: 26px; height: 26px; } 
.msw-ssa-265{ background-position: 0 -1924px; width: 26px; height: 26px; } 
.msw-ssa-270{ background-position: -52px 0; width: 26px; height: 26px; } 
.msw-ssa-275{ background-position: -52px -52px; width: 26px; height: 26px; } 
.msw-ssa-280{ background-position: -52px -104px; width: 26px; height: 26px; } 
.msw-ssa-285{ background-position: -52px -156px; width: 26px; height: 26px; } 
.msw-ssa-290{ background-position: -52px -208px; width: 26px; height: 26px; } 
.msw-ssa-295{ background-position: -52px -260px; width: 26px; height: 26px; } 
.msw-ssa-30{ background-position: -52px -312px; width: 26px; height: 26px; } 
.msw-ssa-300{ background-position: -52px -364px; width: 26px; height: 26px; } 
.msw-ssa-305{ background-position: -52px -416px; width: 26px; height: 26px; } 
.msw-ssa-310{ background-position: -52px -468px; width: 26px; height: 26px; } 
.msw-ssa-315{ background-position: -52px -520px; width: 26px; height: 26px; } 
.msw-ssa-320{ background-position: -52px -572px; width: 26px; height: 26px; } 
.msw-ssa-325{ background-position: -52px -624px; width: 26px; height: 26px; } 
.msw-ssa-330{ background-position: -52px -676px; width: 26px; height: 26px; } 
.msw-ssa-335{ background-position: -52px -728px; width: 26px; height: 26px; } 
.msw-ssa-340{ background-position: -52px -780px; width: 26px; height: 26px; } 
.msw-ssa-345{ background-position: -52px -832px; width: 26px; height: 26px; } 
.msw-ssa-35{ background-position: -52px -884px; width: 26px; height: 26px; } 
.msw-ssa-350{ background-position: -52px -936px; width: 26px; height: 26px; } 
.msw-ssa-355{ background-position: -52px -988px; width: 26px; height: 26px; } 
.msw-ssa-40{ background-position: -52px -1040px; width: 26px; height: 26px; } 
.msw-ssa-45{ background-position: -52px -1092px; width: 26px; height: 26px; } 
.msw-ssa-5{ background-position: -52px -1144px; width: 26px; height: 26px; } 
.msw-ssa-50{ background-position: -52px -1196px; width: 26px; height: 26px; } 
.msw-ssa-55{ background-position: -52px -1248px; width: 26px; height: 26px; } 
.msw-ssa-60{ background-position: -52px -1300px; width: 26px; height: 26px; } 
.msw-ssa-65{ background-position: -52px -1352px; width: 26px; height: 26px; } 
.msw-ssa-70{ background-position: -52px -1404px; width: 26px; height: 26px; } 
.msw-ssa-75{ background-position: -52px -1456px; width: 26px; height: 26px; } 
.msw-ssa-80{ background-position: -52px -1508px; width: 26px; height: 26px; } 
.msw-ssa-85{ background-position: -52px -1560px; width: 26px; height: 26px; } 
.msw-ssa-90{ background-position: -52px -1612px; width: 26px; height: 26px; } 
.msw-ssa-95{ background-position: -52px -1664px; width: 26px; height: 26px; }
FieldTypeDescription

Public Name

Public Description
timestampUnix TimestampGMT unix time for the start of this forecast period. This forecast will cover the period until the start of the next available forecast. This is typically three hours for much of our data.
localTimestampUnix TimestampUnix timestamp adjusted to represent local time for this location. Convert this to a date and time for display purposes unless you specifically want GMT/ZULU time.
issueTimestampUnix TimestampGMT unix time for the start of this forecast. Although we call it the ‘issue’ time it’ll always actually become available after this time because we need to create or obtain the model data and prepare it for delivery.
fadedRatingNumberThe total number of faded stars for our surf rating.
solidRatingNumberThe total number of solid stars for our surf rating. MUST always be combined with fadedRating to give an overall rating.
threeHourTimeTextStringLocalised version of the forecast time.
swell.minBreakingHeightNumberLower end of the likely range for breaking wave size on this beach. Intelligently rounded. Use this for text display.
swell.absMinBreakingHeightNumberLower end of the likely range for breaking wave size on this beach. Absolute value. Use this for smooth graphing.

swell.maxBreakingHeight

NumberUpper end of the likely range for breaking wave size on this beach. Intelligently rounded. Use this for text display.
swell.absMaxBreakingHeightNumberUpper end of the likely range for breaking wave size on this beach. Absolute Value. Use this for smooth graphing.
swell.probabilityNumber% chance of the swell being in the forecast range.
swell.unitStringUnit string that can be appended to heights for display.
swell.components[].heightNumberSignificant Wave Height. The average of the largest third of all waves in this swell. Comparable to normal readings of height from another computer forecast, wave buoy or trained human observer. Intelligently rounded for display dependent on units.
swell.components[].absHeightNumberAs above with no rounding.
swell .components[].periodNumberPeak Period of this swell component. NB. Average period is used by some systems in some context (eg. UKMO Wave buoys) and isn’t directly comparable. Peak period is the period at which the swell spectra has the most energy and is commonly abbreviated to ‘period’ when used by surfers.
swell.components[].directionNumberAverage direction of waves in this swell.
swell.components[].compassDirectionStringCardinal point for the average direction of waves in this swell.
swell.components[].isIncomingBooleanIs this swell heading towards the beach? If false it will likely have no impact on surf size.
wind.speedNumberWind speed
wind.directionNumberWind direction
wind.compassDirectionStringCardinal point for wind direction

wind.chill

NumberEstimated ‘feels like’ temperature based on air temperature and wind speed.
wind.gustsNumberWind Gust Speed
wind.unitStringUnit string that can be appended to heights for display.
condition.temperatureNumberAir Temperature
condition.weatherNumberWeather icon number. Absolute URL to weather icons. http://cdnimages.magicseaweed.com/30×30/{{ICON NUMBER}}.png.
condition.pressureNumberMean Sea Level Pressure
condition.unitPressureStringDisplay unit for pressure
condition.unitStringDisplay unit for Temperature
charts.swellStringAbsolute URL to a 750px wide swell chart for this forecast
charts.periodStringAbsolute URL to a 750px wide period chart for this forecast
charts.windStringAbsolute URL to a 750px wide wind chart for this forecast
charts.pressureStringAbsolute URL to a 750px wide pressure chart for this forecast
charts.sstStringAbsolute URL to a 750px wide sst chart for this forecast