surfreport/{beachId}
Returns information about surfing conditions at a specific beach ID, including the surf height, water temperature, wind, and tide. Also provides an overall recommendation about whether to go surfing.
{beachId}
refers to the ID for the beach you want to look up. All Beach ID codes are available from our site.
Endpoint definition
surfreport/{beachId}
HTTP method
GET
Parameters
Parameter | Description | Data Type |
---|---|---|
days | Optional. The number of days to include in the response. Default is 3. | integer |
time | Optional. If you include the time, then only the current hour will be returned in the response. | integer. Unix format (ms since 1970) in UTC. |
Sample request
curl -I -X GET
"https://api.openweathermap.org/data/2.5/surfreport?zip=95050&appid=fd4698c940c6d1da602a70ac34f0b147&units=imperial&days=2"
Sample response
{
"surfreport": [
{
"beach": "Santa Cruz",
"monday": {
"1pm": {
"tide": 5,
"wind": 15,
"watertemp": 80,
"surfheight": 5,
"recommendation": "Go surfing!"
},
"2pm": {
"tide": -1,
"wind": 1,
"watertemp": 50,
"surfheight": 3,
"recommendation": "Surfing conditions are okay, not great."
},
"3pm": {
"tide": -1,
"wind": 10,
"watertemp": 65,
"surfheight": 1,
"recommendation": "Not a good day for surfing."
}
}
}
]
}
The following table describes each item in the response.
Response item | Description |
---|---|
beach | The beach you selected based on the beach ID in the request. The beach name is the official name as described in the National Park Service Geodatabase. |
{day} | The day of the week selected. A maximum of 3 days gets returned in the response. |
{time} | The time for the conditions. This item is included only if you include a time parameter in the request. |
{day}/{time}/tide | The level of tide at the beach for a specific day and time. Tide is the distance inland that the water rises to, and can be a positive or negative number. When the tide is out, the number is negative. When the tide is in, the number is positive. The 0 point reflects the line when the tide is neither going in nor out but is in transition between the two states. |
{day}/{time}/wind | The wind speed at the beach, measured in knots per hour or kilometers per hour depending on the units you specify. Wind affects the surf height and general wave conditions. Wind speeds of more than 15 knots per hour make surf conditions undesirable because the wind creates white caps and choppy waters. |
{day}/{time}/watertemp | The temperature of the water, returned in Fahrenheit or Celsius depending upon the units you specify. Water temperatures below 70 F usually require you to wear a wetsuit. With temperatures below 60, you will need at least a 3mm wetsuit and preferably booties to stay warm. |
{day}/{time}/surfheight | The height of the waves, returned in either feet or centimeters depending on the units you specify. A surf height of 3 feet is the minimum size needed for surfing. If the surf height exceeds 10 feet, it is not safe to surf. |
{day}/{time}/recommendation | An overall recommendation based on a combination of the various factors (wind, watertemp, surfheight). Three responses are possible: (1) “Go surfing!”, (2) “Surfing conditions are okay, not great,” and (3) “Not a good day for surfing.” Each of the three factors is scored with a maximum of 33.33 points, depending on the ideal for each element. The three elements are combined to form a percentage. 0% to 59% yields response 3, 60% - 80% and below yields response 2, and 81% to 100% yields response 1. |
Error and status codes
The following table lists the status and error codes related to this request.
Status code | Meaning |
---|---|
200 | Successful response |
400 | Bad request – one or more of the parameters was rejected. |
4112 | The beach ID was not found in the lookup. |
Code example
The following code samples shows how to use the surfreport endpoint to get the surf height for a specific beach.
<!DOCTYPE html>
<head>
<script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
<script>
var settings = {
"async": true,
"crossDomain": true,
"url": "https://api.openweathermap.org/surfreport/25&days=1",
"method": "GET"
}
$.ajax(settings).done(function (response) {
console.log(response);
$("#surfheight").append(response.surfreport.conditions);
});
</script>
</head>
<body>
<h2>Surf Height</h2>
<div id="surfheight"></div>
</body>
</html>
In this example, the ajax
method from jQuery is used because it allows us to load a remote resource asynchronously.
In the request, you submit the authorization through a query string URL. The endpoint limits the days returned to 1 in order to increase the download speed.
For demonstration purposes, the response is assigned to the response
argument of the done
method, and then written out to the surfheight
tag on the page.
We’re just getting the surf height, but there’s a lot of other data you could choose to display.