# Surfline API: Get surf forecast

> Gets current surf conditions and the five free forecast days for a Surfline spot found by name. A region narrows spots that share a name. Daily values are taken at 9 a.m. and 3 p.m. local time (morning and afternoon surf heights) and 9 a.m. for the rest.

Unofficial. Not affiliated with or endorsed by Surfline.

- Page: https://fous.com/methods/surfline.com/get-surf-forecast
- Method: `surfline.com/get_surf_forecast`, version 1
- Website: surfline.com
- Returns: spot name and region, current conditions, five forecast days, Surfline link and spot id
- Effect: read (it gets data and changes nothing)
- Sign-in: none needed
- Cost: 1 credit per completed run (1¢ with pay as you go); failed runs are free
- Verified: Nov 2, 2026

## Inputs

| Field | Type | Required | In the run below | Description |
|---|---|---|---|---|
| `region` | string | no | `"California"` | Location to distinguish spots with the same name, such as Hawaii or California. Default "". |
| `spot_name` | string | yes | `"Huntington Beach Pier"` | Surf spot name, such as Pipeline or Huntington Beach Pier. |

## Output

From a run on Oct 23, 2026, shortened. Its input:

```json
{
  "region": "California",
  "spot_name": "Huntington Beach Pier"
}
```

Its output:

```json
{
  "region": "United States, California, Orange County, Huntington Beach",
  "spot_name": "Huntington Beach Pier Northside",
  "forecast_days": [
    {
      "date": "2026-10-23",
      "rating": "Fair",
      "wind_direction": "E",
      "wind_speed_mph": 1.9,
      "main_swell_direction": "S",
      "main_swell_height_ft": 1.9,
      "main_swell_period_seconds": 17,
      "morning_surf_height_max_ft": 5,
      "morning_surf_height_min_ft": 4,
      "afternoon_surf_height_max_ft": 5,
      "afternoon_surf_height_min_ft": 4
    },
    {
      "date": "2026-10-24",
      "rating": "Fair to Good",
      "wind_direction": "ENE",
      "wind_speed_mph": 2.4,
      "main_swell_direction": "S",
      "main_swell_height_ft": 2.4,
      "main_swell_period_seconds": 15,
      "morning_surf_height_max_ft": 5,
      "morning_surf_height_min_ft": 4,
      "afternoon_surf_height_max_ft": 5,
      "afternoon_surf_height_min_ft": 4
    },
    {
      "date": "2026-10-25",
      "rating": "Fair",
      "wind_direction": "ENE",
      "wind_speed_mph": 2.1,
      "main_swell_direction": "S",
      "main_swell_height_ft": 2.2,
      "main_swell_period_seconds": 14,
      "morning_surf_height_max_ft": 4,
      "morning_surf_height_min_ft": 3,
      "afternoon_surf_height_max_ft": 4,
      "afternoon_surf_height_min_ft": 3
    }
  ],
  "surfline_link": "https://www.surfline.com/surf-report/huntington-beach-pier-northside/5842041f4e65fad6a7708827",
  "surfline_spot_id": "5842041f4e65fad6a7708827",
  "current_conditions": {
    "rating": "Fair",
    "tide_state": "Rising",
    "wind_direction": "ESE",
    "wind_speed_mph": 3.5,
    "surf_height_max_ft": 5,
    "surf_height_min_ft": 4,
    "water_temperature_f": 73
  }
}
```

## Run it

From code, with a Fous API key in `FOUS_API_KEY`; the answer's `data` holds the output:

```bash
curl https://api.fous.com/v1/runs \
  -H "Authorization: Bearer $FOUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method":"surfline.com/get_surf_forecast","input":{"region":"California","spot_name":"Huntington Beach Pier"}}'
```

From an AI agent connected to the Fous MCP server: its `run` with the same method and input. To connect one, give it `set up https://fous.com/SKILL.md`.

## Ask your agent

- What are the surf conditions right now at Pipeline on the North Shore of Oahu, and what's the forecast for the next five days?
- Can you check the surf forecast for Huntington Beach Pier in California this week?
- I'm planning a trip to Mavericks in Half Moon Bay; how big will the waves be over the next few days, morning and afternoon?
- Give me the current swell and five-day outlook for Trestles in Southern California before I head out tomorrow.
- Look up the surf report for Jaws in Maui, including the spot ID and a link to the full Surfline page.

## Input schema

```json
{
  "type": "object",
  "required": [
    "spot_name"
  ],
  "properties": {
    "region": {
      "type": "string",
      "default": "",
      "description": "Location to distinguish spots with the same name, such as Hawaii or California."
    },
    "spot_name": {
      "type": "string",
      "description": "Surf spot name, such as Pipeline or Huntington Beach Pier."
    }
  }
}
```

## Output schema

```json
{
  "type": "object",
  "required": [
    "spot_name",
    "region",
    "current_conditions",
    "forecast_days",
    "surfline_link",
    "surfline_spot_id"
  ],
  "properties": {
    "region": {
      "type": "string"
    },
    "spot_name": {
      "type": "string"
    },
    "forecast_days": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "date",
          "morning_surf_height_min_ft",
          "morning_surf_height_max_ft",
          "afternoon_surf_height_min_ft",
          "afternoon_surf_height_max_ft",
          "rating",
          "main_swell_height_ft",
          "main_swell_period_seconds",
          "main_swell_direction",
          "wind_speed_mph",
          "wind_direction"
        ],
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "rating": {
            "type": [
              "string",
              "null"
            ]
          },
          "wind_direction": {
            "type": [
              "string",
              "null"
            ]
          },
          "wind_speed_mph": {
            "type": [
              "number",
              "null"
            ]
          },
          "main_swell_direction": {
            "type": [
              "string",
              "null"
            ]
          },
          "main_swell_height_ft": {
            "type": [
              "number",
              "null"
            ]
          },
          "main_swell_period_seconds": {
            "type": [
              "number",
              "null"
            ]
          },
          "morning_surf_height_max_ft": {
            "type": [
              "number",
              "null"
            ]
          },
          "morning_surf_height_min_ft": {
            "type": [
              "number",
              "null"
            ]
          },
          "afternoon_surf_height_max_ft": {
            "type": [
              "number",
              "null"
            ]
          },
          "afternoon_surf_height_min_ft": {
            "type": [
              "number",
              "null"
            ]
          }
        }
      }
    },
    "surfline_link": {
      "type": "string"
    },
    "surfline_spot_id": {
      "type": "string",
      "x-fous-developer": true
    },
    "current_conditions": {
      "type": "object",
      "required": [
        "surf_height_min_ft",
        "surf_height_max_ft",
        "rating",
        "wind_speed_mph",
        "wind_direction",
        "tide_state",
        "water_temperature_f"
      ],
      "properties": {
        "rating": {
          "type": [
            "string",
            "null"
          ]
        },
        "tide_state": {
          "type": [
            "string",
            "null"
          ]
        },
        "wind_direction": {
          "type": [
            "string",
            "null"
          ]
        },
        "wind_speed_mph": {
          "type": [
            "number",
            "null"
          ]
        },
        "surf_height_max_ft": {
          "type": [
            "number",
            "null"
          ]
        },
        "surf_height_min_ft": {
          "type": [
            "number",
            "null"
          ]
        },
        "water_temperature_f": {
          "type": [
            "number",
            "null"
          ]
        }
      }
    }
  }
}
```

## See more

- [OnTheSnow API: Get ski report](https://fous.com/methods/onthesnow.com/get-ski-report.md): Gets the latest published OnTheSnow snow report for a ski resort by name, optionally narrowed by region or country. Off-season measurements may be unavailable; surface conditions are returned only when stated in words on the report.
- [The Weather Channel API: Get daily forecast](https://fous.com/methods/weather.com/get-daily-forecast.md): Gets The Weather Channel's daily forecast for a city, address, ZIP code or postcode: up to 15 upcoming days with highs, lows, conditions, rain chance, wind, humidity, UV and sun times.
- [NWS API: Get National Weather Service forecast](https://fous.com/methods/weather.gov/get-forecast.md): Looks up the National Weather Service seven-day day and night forecast for a U.S. city, address, or ZIP code. Forecast availability depends on NWS land-grid coverage.
- [The Weather Channel API: Get current weather](https://fous.com/methods/weather.com/get-current-weather.md): Gets current conditions and today's high and low from The Weather Channel for a city, postcode, ZIP code or street address worldwide. Street addresses are geocoded exactly first; some observations omit gusts or other measurements.
- [NWS API: Get current conditions](https://fous.com/methods/weather.gov/get-current-conditions.md): Gets the latest observed weather from a nearby National Weather Service station for a US city, address, or ZIP code. Measurements the station does not report are null.
- [MSN API: Get forecast](https://fous.com/methods/msn.com/get-forecast.md): Gets up to 10 days of MSN Weather forecasts for a city, address, or ZIP code, with optional hourly forecasts for the next 24 hours.
- [NOAA API: Get tide times](https://fous.com/methods/tidesandcurrents.noaa.gov/get-tide-times.md): Finds the nearest NOAA tide prediction station to a US coastal place (within 30 miles) and returns its high and low tide times in local time with predicted heights above MLLW.
- [CNBC API: Get market snapshot](https://fous.com/methods/cnbc.com/get-market-snapshot.md): Returns CNBC levels and changes for major stock indexes and U.S. futures, optionally by region. Quote times and market-status labels are null when CNBC does not show them; quotes may be delayed.
