surfline.com APIsurfline.com ↗
Access Surfline surf forecasts, wind, tide, current conditions, spot listings, and live camera feeds via a structured REST API. 6 endpoints, global coverage.
curl -X GET 'https://api.parse.bot/scraper/ee8dc746-3f62-4465-8b17-cc5d8c44a178/get_surf_forecast?days=1&spot_id=5842041f4e65fad6a7708ceb&interval=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve detailed surf forecast for a specific spot by spot ID. Returns wave height (min/max), swell components (height, period, direction, power), and other wave data for multiple timestamps.
| Param | Type | Description |
|---|---|---|
| days | integer | Number of forecast days |
| spot_idrequired | string | Surfline spot ID (e.g. 5842041f4e65fad6a7708ceb) |
| interval | integer | Interval in hours between data points |
{
"type": "object",
"fields": {
"wave": "array of wave forecast objects with timestamp, surf min/max, swells, power, probability"
},
"sample": {
"data": {
"wave": [
{
"surf": {
"max": 3,
"min": 2,
"raw": {
"max": 2.52327,
"min": 1.40582
},
"plus": false,
"optimalScore": 2,
"humanRelation": "Thigh to waist"
},
"power": 86.84694,
"swells": [
{
"power": 80.99011,
"height": 2.4373,
"impact": 0.6496,
"period": 11,
"direction": 175.56848,
"directionMin": 169.228455,
"optimalScore": 0
}
],
"timestamp": 1778122800,
"utcOffset": -3,
"probability": 100
}
]
},
"status": "success"
}
}About the surfline.com API
The Surfline API gives developers structured access to 6 endpoints covering wave forecasts, wind, tides, current conditions, regional spot listings, and live camera feeds. The get_surf_forecast endpoint returns per-timestamp swell data — height, period, direction, and power — for any spot identified by its Surfline spot ID. Real-time snapshots, multi-day forecasts, and camera stream URLs are all available in a single consistent JSON interface.
Forecasts: Waves, Wind, and Tides
get_surf_forecast accepts a spot_id, optional days count, and an optional interval (in hours) to control forecast resolution. Each object in the returned wave array includes surf.min, surf.max, a swells array with individual swell height, period, direction, and power, plus a probability field. get_wind_forecast returns matching timestamp-aligned objects with speed, direction, gust, a directionType field that distinguishes Offshore, Onshore, and Cross-shore conditions, and an optimalScore. get_tide_forecast returns height and a discrete type — HIGH, LOW, or NORMAL — for each prediction window.
Current Conditions and Spot Metadata
get_current_conditions returns a real-time snapshot for a single spot. The response includes the spot name, a rating object with both a human-readable key (e.g. POOR_TO_FAIR, GOOD) and a numeric value, current surf min/max, wind state, weather temperature and condition, waterTemp range, and a cameras array listing any live feeds attached to that spot.
Spot Discovery and Camera Listings
get_spots_by_region accepts a region_id from Surfline's taxonomy tree and returns an array of spot objects — each with id, name, lat, and lon — plus a total count. Example region IDs for Hawaii and Europe are documented. list_cams returns camera objects with streamUrl and stillUrl for each feed. Called without a region_id it returns popular US cameras; filtered by region it returns cameras for up to the first 100 spots in that region, and includes lat/lon coordinates. Some regions return no cameras.
Spot IDs and Data Alignment
All forecast and conditions endpoints require a Surfline spot_id string (e.g. 5842041f4e65fad6a7708ceb). These IDs are stable identifiers that appear in both get_spots_by_region results and list_cams responses, so you can chain discovery and forecast calls. Forecast timestamps are Unix epoch values and align across wave, wind, and tide responses for the same spot.
- Build a surf session planner that displays swell height, period, and direction for a chosen spot over the next 5 days.
- Alert surfers when
directionTypeflips to Offshore andoptimalScoreexceeds a threshold at their saved spots. - Embed live camera stills using
stillUrlfromlist_camson a regional surf conditions dashboard. - Create a tide chart by pulling
heightandtype(HIGH/LOW/NORMAL) fromget_tide_forecastfor any spot. - Map all surf spots in a region using
lat/lonfromget_spots_by_regionto build a geo-filtered spot finder. - Display a spot's current
ratingkey and water temperature range alongside wind gust data for quick go/no-go decisions. - Aggregate historical rating patterns by logging
get_current_conditionsresponses at regular intervals across multiple spot IDs.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Surfline have an official developer API?+
What does `get_surf_forecast` return beyond wave height?+
wave array includes surf.min and surf.max (the human-scaled height range), a swells array where every swell entry carries height, period, direction, and power, a top-level power value for the composite swell, and a probability field. You can control how many timestamps appear by passing an interval parameter (in hours) and a days count.Does `list_cams` return cameras for all regions worldwide?+
region_id, the endpoint returns popular US cameras. When you pass a region_id, it covers cameras tied to up to the first 100 spots in that region. Some regions have no cameras at all. The API currently covers discovery and stream/still URLs; it does not return archived footage or historical camera snapshots. You can fork it on Parse and revise to add an endpoint targeting archived content if that becomes available.Is surf rating history or past forecast data accessible?+
get_current_conditions and forward-looking forecasts via the wave, wind, and tide endpoints. Historical forecast archives and past conditions records are not exposed. You can fork it on Parse and revise to add the missing endpoint if Surfline surfaces a historical data route.