{
 "report_prefix": "The surfdag.nl report for Westkapelle shows",
 "attribution": "Data: Open-Meteo (CC BY 4.0), Rijkswaterstaat.",
 "source": "https://surfdag.nl/westkapelle",
 "instructions": "Open your report with report_prefix, then the verdict, and end it with the attribution line exactly as given. Link to source.",
 "break": {
  "slug": "westkapelle",
  "name": "Westkapelle",
  "beach_faces_deg": 276,
  "offshore_wind_from": "E"
 },
 "kind_of_day": [
  "blue",
  "red"
 ],
 "kind_of_day_options": [
  "green",
  "blue",
  "red",
  "black"
 ],
 "kind_of_day_note": "Any combination of grades via ?grades=, e.g. ?grades=blue,red. Default blue,red. Black is included only when asked for.",
 "timezone": "Europe/Amsterdam",
 "grades": {
  "scale": "like ski pistes: flat, green, blue, red, black",
  "lines_m": {
   "green": 0.3,
   "blue": 0.6,
   "red": 1.5
  },
  "size": "waves reaching the beach weighted by period (7-second-equivalent height); the heights in this feed are plain height at the beach",
  "black_when": {
   "sizeM": 3,
   "onshoreGustKmh": 55,
   "onshoreSurfM": 1.5,
   "offshoreKmh": 35,
   "surgeM": 1
  },
  "calibrated": "2026-10-23 against three years of public, dated surf-condition posts and comments"
 },
 "generated": "2026-10-23T23:19:04.607Z",
 "upstream_fetched": "2026-10-23T23:15:56.055Z",
 "verdict": {
  "headline": "After a black morning, worth blocking time today, 12:00–18:34 — blue to red, up to 2.3 m.",
  "detail": "Black this morning: 4.0 m with onshore gusts to 72 km/h. Experts only. Wind sits cross-shore, gusting 72 km/h. High confidence: both forecasts agree. 2 more windows in the next seven days. There's also a chance Tuesday, 07:30–14:00: blue, up to 1.3 m (low confidence: our main forecast shows it, the second doesn't, but it's more than three days out).",
  "confidence": "high",
  "caution": true
 },
 "safety": "Grades can't see foam, rip currents or conditions at the pier and harbour mouths. The lifeguards' flags beat any forecast.",
 "confidence_available": true,
 "windows": [
  {
   "date": "2026-10-24",
   "start": "12:00",
   "end": "18:34",
   "hours": 7,
   "grades": "blue to red",
   "confidence": "high",
   "why": "High confidence: both forecasts agree.",
   "waves_at_beach_m": [
    1.7,
    2.3
   ],
   "open_water_max_m": 2.4,
   "second_forecast_at_beach_max_m": 1.2,
   "period_s": 7,
   "wind_kmh": 37,
   "gust_kmh": 72,
   "wind_from": [
    "WSW",
    "SW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 12,
   "water_c": 14,
   "rain_chance_pct": 100,
   "cloud_pct": 89,
   "tide": "mid to low",
   "wetsuit": "4/3 mm full suit with booties, 3 mm gloves and a hood — stepped up a notch for the wind"
  },
  {
   "date": "2026-10-26",
   "start": "07:29",
   "end": "17:30",
   "hours": 11,
   "grades": "blue",
   "confidence": "moderate",
   "why": "Moderate confidence: our main forecast shows it, the second doesn't.",
   "waves_at_beach_m": [
    1,
    1.7
   ],
   "open_water_max_m": 1.7,
   "second_forecast_at_beach_max_m": 1,
   "period_s": 7,
   "wind_kmh": 24,
   "gust_kmh": 56,
   "wind_from": [
    "W",
    "WSW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 12,
   "water_c": 13,
   "rain_chance_pct": 77,
   "cloud_pct": 93,
   "tide": "low to mid",
   "wetsuit": "4/3 mm full suit with booties, 3 mm gloves and a hood — stepped up a notch for the wind"
  },
  {
   "date": "2026-10-27",
   "start": "07:30",
   "end": "14:00",
   "hours": 7,
   "grades": "blue",
   "confidence": "low",
   "why": "Low confidence: our main forecast shows it, the second doesn't, but it's more than three days out.",
   "waves_at_beach_m": [
    1.1,
    1.3
   ],
   "open_water_max_m": 1.7,
   "second_forecast_at_beach_max_m": 0.7,
   "period_s": 6,
   "wind_kmh": 27,
   "gust_kmh": 64,
   "wind_from": [
    "SSW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 18,
   "water_c": 13,
   "rain_chance_pct": 27,
   "cloud_pct": 63,
   "tide": "low to mid",
   "wetsuit": "4/3 mm full suit with booties, 3 mm gloves and a hood — stepped up a notch for the wind"
  },
  {
   "date": "2026-10-28",
   "start": "07:32",
   "end": "17:26",
   "hours": 11,
   "grades": "blue",
   "confidence": "moderate",
   "why": "Moderate confidence: both forecasts agree, but it's more than three days out.",
   "waves_at_beach_m": [
    1.1,
    1.7
   ],
   "open_water_max_m": 1.9,
   "second_forecast_at_beach_max_m": 1,
   "period_s": 6,
   "wind_kmh": 21,
   "gust_kmh": 46,
   "wind_from": [
    "W",
    "WSW"
   ],
   "wind_relative_to_beach": "onshore",
   "air_c": 14,
   "water_c": 13,
   "rain_chance_pct": 14,
   "cloud_pct": 25,
   "tide": "low to mid",
   "wetsuit": "4/3 mm full suit with booties, 3 mm gloves and a hood — stepped up a notch for the wind"
  }
 ],
 "cautions": [
  {
   "date": "2026-10-24",
   "start": "08:25",
   "end": "12:00",
   "grade": "black",
   "reasons": [
    "4.0 m with onshore gusts to 72 km/h"
   ]
  },
  {
   "date": "2026-10-25",
   "start": "07:27",
   "end": "17:32",
   "grade": "black",
   "reasons": [
    "4.2 m with onshore gusts to 83 km/h"
   ]
  },
  {
   "date": "2026-10-27",
   "start": "14:00",
   "end": "17:28",
   "grade": "black",
   "reasons": [
    "2.3 m with onshore gusts to 57 km/h"
   ]
  }
 ],
 "days": [
  {
   "date": "2026-10-24",
   "grade": "black",
   "daylight_peak_at_beach_m": 4,
   "peak_at": "08:00",
   "best_part": "afternoon",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": true,
   "gust_kmh": 72,
   "wind_from": "WNW",
   "air_c": 12,
   "water_c": 14
  },
  {
   "date": "2026-10-25",
   "grade": "black",
   "daylight_peak_at_beach_m": 4.2,
   "peak_at": "16:00",
   "best_part": null,
   "your_kind_of_day": false,
   "chance_low_confidence": false,
   "black": true,
   "gust_kmh": 86,
   "wind_from": "W",
   "air_c": 13,
   "water_c": 14
  },
  {
   "date": "2026-10-26",
   "grade": "blue",
   "daylight_peak_at_beach_m": 1.7,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 56,
   "wind_from": "W",
   "air_c": 12,
   "water_c": 13
  },
  {
   "date": "2026-10-27",
   "grade": "black",
   "daylight_peak_at_beach_m": 2.3,
   "peak_at": "17:00",
   "best_part": "afternoon",
   "your_kind_of_day": false,
   "chance_low_confidence": true,
   "black": true,
   "gust_kmh": 64,
   "wind_from": "WSW",
   "air_c": 18,
   "water_c": 13
  },
  {
   "date": "2026-10-28",
   "grade": "blue",
   "daylight_peak_at_beach_m": 1.7,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 46,
   "wind_from": "W",
   "air_c": 14,
   "water_c": 13
  },
  {
   "date": "2026-10-29",
   "grade": "flat",
   "daylight_peak_at_beach_m": 0.5,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": false,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 18,
   "wind_from": "SSW",
   "air_c": 14,
   "water_c": 13
  },
  {
   "date": "2026-10-30",
   "grade": "flat",
   "daylight_peak_at_beach_m": 0,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": false,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 25,
   "wind_from": "ESE",
   "air_c": 13,
   "water_c": 13
  }
 ],
 "tides_next_3_days": [
  {
   "date": "2026-10-24",
   "time": "07:29",
   "type": "low",
   "height_m_nap": -1.4
  },
  {
   "date": "2026-10-24",
   "time": "13:39",
   "type": "high",
   "height_m_nap": 1.9
  },
  {
   "date": "2026-10-24",
   "time": "19:49",
   "type": "low",
   "height_m_nap": -1.7
  },
  {
   "date": "2026-10-25",
   "time": "01:59",
   "type": "high",
   "height_m_nap": 2.2
  },
  {
   "date": "2026-10-25",
   "time": "06:59",
   "type": "low",
   "height_m_nap": -1.5
  },
  {
   "date": "2026-10-25",
   "time": "13:09",
   "type": "high",
   "height_m_nap": 2.1
  },
  {
   "date": "2026-10-25",
   "time": "19:19",
   "type": "low",
   "height_m_nap": -1.8
  },
  {
   "date": "2026-10-26",
   "time": "01:39",
   "type": "high",
   "height_m_nap": 2.4
  },
  {
   "date": "2026-10-26",
   "time": "07:39",
   "type": "low",
   "height_m_nap": -1.6
  },
  {
   "date": "2026-10-26",
   "time": "13:49",
   "type": "high",
   "height_m_nap": 2.3
  },
  {
   "date": "2026-10-26",
   "time": "19:59",
   "type": "low",
   "height_m_nap": -1.9
  }
 ],
 "surge": {
  "gauge": "Westkapelle",
  "measured_at": "2026-10-24 01:00",
  "now_m": 0.68,
  "forecast": [
   {
    "at": "2026-10-24 02:00",
    "surge_m": 0.76
   },
   {
    "at": "2026-10-24 05:00",
    "surge_m": 0.67
   },
   {
    "at": "2026-10-24 08:00",
    "surge_m": 0.88
   },
   {
    "at": "2026-10-24 11:00",
    "surge_m": 0.54
   },
   {
    "at": "2026-10-24 14:00",
    "surge_m": 0.13
   },
   {
    "at": "2026-10-24 17:00",
    "surge_m": 0.03
   },
   {
    "at": "2026-10-24 20:00",
    "surge_m": -0.15
   },
   {
    "at": "2026-10-24 23:00",
    "surge_m": -0.34
   },
   {
    "at": "2026-10-25 02:00",
    "surge_m": -0.73
   },
   {
    "at": "2026-10-25 04:00",
    "surge_m": -0.22
   },
   {
    "at": "2026-10-25 07:00",
    "surge_m": 0.23
   },
   {
    "at": "2026-10-25 10:00",
    "surge_m": 0.35
   },
   {
    "at": "2026-10-25 13:00",
    "surge_m": 0.3
   },
   {
    "at": "2026-10-25 16:00",
    "surge_m": 0.7
   },
   {
    "at": "2026-10-25 19:00",
    "surge_m": 1.11
   }
  ]
 },
 "notes": [
  "Heights are the waves reaching the beach: the DWD open-sea forecast 6–11 km out, counting swell and wind sea only by how directly they head at this beach. Open-water height is given separately.",
  "Grades describe the sea, not the weather; rain and cold are the reader's call. Black means one of the fixed hazards (3 m or more; 1.5 m or more with onshore gusts of 55 km/h or more; offshore wind of 35 km/h or more; surge of +1.0 m or more with onshore wind) and is never a recommendation.",
  "Confidence: for the next three days, high when two independent forecasts (DWD and Météo-France) both clear the threshold, moderate when only DWD does, low when only Météo-France does. From day four each level drops one step (DWD hands over from its regional to its coarser global model). Low-confidence windows are a chance, not a plan.",
  "Tide is astronomical, from harmonic constants fitted to Rijkswaterstaat gauges; surge is measured and forecast water level minus that tide."
 ]
}