{
 "report_prefix": "The surfdag.nl report for Hoek van Holland shows",
 "attribution": "Data: Open-Meteo (CC BY 4.0), Rijkswaterstaat.",
 "source": "https://surfdag.nl/hoek-van-holland",
 "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": "hoek-van-holland",
  "name": "Hoek van Holland",
  "beach_faces_deg": 310,
  "offshore_wind_from": "SE"
 },
 "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": "size_m is what surfdag shows and grades: the waves reaching the beach scaled by their period to a 7-second wave, so long swell counts for more than short chop. waves_at_beach_m is 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-24T03:36:01.516Z",
 "upstream_fetched": "2026-10-24T03:36:01.355Z",
 "verdict": {
  "headline": "After a black morning, worth blocking time today, 14:00–18:30 — blue to red, up to 2.6 m.",
  "detail": "Black this morning: 4.4 m with onshore gusts to 77 km/h. Wind sits cross-shore, gusting 59 km/h. High confidence: both forecasts agree. 2 more windows in the next seven days. There's also a chance Tuesday, 07:29–12:00: blue, up to 0.7 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": "Black hours are for experts only: expect real danger there, some of it obvious and some of it hidden.",
 "confidence_available": true,
 "windows": [
  {
   "date": "2026-10-24",
   "start": "14:00",
   "end": "18:30",
   "hours": 5,
   "grades": "blue to red",
   "confidence": "high",
   "why": "High confidence: both forecasts agree.",
   "size_m": [
    1.5,
    2.7
   ],
   "waves_at_beach_m": [
    1.7,
    2.5
   ],
   "open_water_max_m": 2.6,
   "second_forecast_at_beach_max_m": 1.1,
   "period_s": 8,
   "wind_kmh": 31,
   "gust_kmh": 59,
   "wind_from": [
    "WSW",
    "SW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 13,
   "water_c": 14,
   "rain_chance_pct": 71,
   "cloud_pct": 100,
   "tide": "high 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": "08:00",
   "end": "17:26",
   "hours": 10,
   "grades": "blue to red",
   "confidence": "moderate",
   "why": "Moderate confidence: our main forecast shows it, the second doesn't.",
   "size_m": [
    0.8,
    2.3
   ],
   "waves_at_beach_m": [
    0.9,
    2.1
   ],
   "open_water_max_m": 2.3,
   "second_forecast_at_beach_max_m": 1,
   "period_s": 8,
   "wind_kmh": 25,
   "gust_kmh": 53,
   "wind_from": [
    "WSW",
    "SSW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 13,
   "water_c": 13,
   "rain_chance_pct": 64,
   "cloud_pct": 99,
   "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:29",
   "end": "12:00",
   "hours": 5,
   "grades": "blue",
   "confidence": "low",
   "why": "Low confidence: our main forecast shows it, the second doesn't, but it's more than three days out.",
   "size_m": [
    0.6,
    0.8
   ],
   "waves_at_beach_m": [
    0.8,
    0.9
   ],
   "open_water_max_m": 1.6,
   "second_forecast_at_beach_max_m": 0.7,
   "period_s": 7,
   "wind_kmh": 31,
   "gust_kmh": 64,
   "wind_from": [
    "SSW",
    "S"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 16,
   "water_c": 13,
   "rain_chance_pct": 23,
   "cloud_pct": 84,
   "tide": "low 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-27",
   "start": "14:00",
   "end": "17:24",
   "hours": 4,
   "grades": "blue to red",
   "confidence": "moderate",
   "why": "Moderate confidence: both forecasts agree, but it's more than three days out.",
   "size_m": [
    0.8,
    1.6
   ],
   "waves_at_beach_m": [
    1.1,
    1.8
   ],
   "open_water_max_m": 2.3,
   "second_forecast_at_beach_max_m": 0.9,
   "period_s": 7,
   "wind_kmh": 38,
   "gust_kmh": 76,
   "wind_from": [
    "SW",
    "WSW"
   ],
   "wind_relative_to_beach": "cross-shore",
   "air_c": 15,
   "water_c": 13,
   "rain_chance_pct": 30,
   "cloud_pct": 30,
   "tide": "mid to high",
   "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:31",
   "end": "17:22",
   "hours": 11,
   "grades": "blue to red",
   "confidence": "low",
   "why": "Low confidence: our main forecast shows it, the second doesn't, but it's more than three days out.",
   "size_m": [
    1,
    1.8
   ],
   "waves_at_beach_m": [
    1.3,
    2
   ],
   "open_water_max_m": 2.2,
   "second_forecast_at_beach_max_m": 0.9,
   "period_s": 7,
   "wind_kmh": 23,
   "gust_kmh": 50,
   "wind_from": [
    "W",
    "WSW"
   ],
   "wind_relative_to_beach": "onshore",
   "air_c": 14,
   "water_c": 13,
   "rain_chance_pct": 20,
   "cloud_pct": 34,
   "tide": "mid to high",
   "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:23",
   "end": "14:00",
   "grade": "black",
   "reasons": [
    "4.4 m with onshore gusts to 77 km/h"
   ]
  },
  {
   "date": "2026-10-25",
   "start": "07:25",
   "end": "17:28",
   "grade": "black",
   "reasons": [
    "5.0 m with onshore gusts to 92 km/h"
   ]
  },
  {
   "date": "2026-10-26",
   "start": "07:27",
   "end": "08:00",
   "grade": "black",
   "reasons": [
    "2.4 m with onshore gusts to 56 km/h"
   ]
  }
 ],
 "days": [
  {
   "date": "2026-10-24",
   "grade": "black",
   "daylight_peak_size_m": 4.4,
   "daylight_peak_at_beach_m": 4.2,
   "peak_at": "08:00",
   "best_part": "afternoon",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": true,
   "gust_kmh": 77,
   "wind_from": "WNW",
   "air_c": 13,
   "water_c": 14
  },
  {
   "date": "2026-10-25",
   "grade": "black",
   "daylight_peak_size_m": 5,
   "daylight_peak_at_beach_m": 4.7,
   "peak_at": "17:00",
   "best_part": null,
   "your_kind_of_day": false,
   "chance_low_confidence": false,
   "black": true,
   "gust_kmh": 92,
   "wind_from": "W",
   "air_c": 13,
   "water_c": 13
  },
  {
   "date": "2026-10-26",
   "grade": "black",
   "daylight_peak_size_m": 2.5,
   "daylight_peak_at_beach_m": 2.3,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": true,
   "gust_kmh": 56,
   "wind_from": "W",
   "air_c": 13,
   "water_c": 13
  },
  {
   "date": "2026-10-27",
   "grade": "red",
   "daylight_peak_size_m": 1.6,
   "daylight_peak_at_beach_m": 1.8,
   "peak_at": "17:00",
   "best_part": "evening",
   "your_kind_of_day": true,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 76,
   "wind_from": "WSW",
   "air_c": 16,
   "water_c": 13
  },
  {
   "date": "2026-10-28",
   "grade": "red",
   "daylight_peak_size_m": 1.8,
   "daylight_peak_at_beach_m": 2,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": false,
   "chance_low_confidence": true,
   "black": false,
   "gust_kmh": 50,
   "wind_from": "W",
   "air_c": 14,
   "water_c": 13
  },
  {
   "date": "2026-10-29",
   "grade": "green",
   "daylight_peak_size_m": 0.4,
   "daylight_peak_at_beach_m": 0.6,
   "peak_at": "07:00",
   "best_part": "morning",
   "your_kind_of_day": false,
   "chance_low_confidence": false,
   "black": false,
   "gust_kmh": 17,
   "wind_from": "WNW",
   "air_c": 15,
   "water_c": 13
  },
  {
   "date": "2026-10-30",
   "grade": "flat",
   "daylight_peak_size_m": 0.1,
   "daylight_peak_at_beach_m": 0.2,
   "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": 14,
   "water_c": 14
  }
 ],
 "tides_next_3_days": [
  {
   "date": "2026-10-24",
   "time": "08:36",
   "type": "low",
   "height_m_nap": -0.4
  },
  {
   "date": "2026-10-24",
   "time": "14:46",
   "type": "high",
   "height_m_nap": 1.1
  },
  {
   "date": "2026-10-24",
   "time": "20:26",
   "type": "low",
   "height_m_nap": -0.6
  },
  {
   "date": "2026-10-25",
   "time": "02:06",
   "type": "high",
   "height_m_nap": 1.4
  },
  {
   "date": "2026-10-25",
   "time": "07:46",
   "type": "low",
   "height_m_nap": -0.3
  },
  {
   "date": "2026-10-25",
   "time": "08:56",
   "type": "high",
   "height_m_nap": -0.3
  },
  {
   "date": "2026-10-25",
   "time": "10:26",
   "type": "low",
   "height_m_nap": -0.4
  },
  {
   "date": "2026-10-25",
   "time": "14:26",
   "type": "high",
   "height_m_nap": 1.2
  },
  {
   "date": "2026-10-25",
   "time": "19:26",
   "type": "low",
   "height_m_nap": -0.6
  },
  {
   "date": "2026-10-25",
   "time": "21:16",
   "type": "high",
   "height_m_nap": -0.5
  },
  {
   "date": "2026-10-25",
   "time": "22:26",
   "type": "low",
   "height_m_nap": -0.5
  },
  {
   "date": "2026-10-26",
   "time": "02:46",
   "type": "high",
   "height_m_nap": 1.4
  },
  {
   "date": "2026-10-26",
   "time": "07:56",
   "type": "low",
   "height_m_nap": -0.3
  },
  {
   "date": "2026-10-26",
   "time": "09:26",
   "type": "high",
   "height_m_nap": -0.3
  },
  {
   "date": "2026-10-26",
   "time": "11:16",
   "type": "low",
   "height_m_nap": -0.4
  },
  {
   "date": "2026-10-26",
   "time": "14:56",
   "type": "high",
   "height_m_nap": 1.3
  },
  {
   "date": "2026-10-26",
   "time": "19:56",
   "type": "low",
   "height_m_nap": -0.6
  },
  {
   "date": "2026-10-26",
   "time": "21:46",
   "type": "high",
   "height_m_nap": -0.4
  },
  {
   "date": "2026-10-26",
   "time": "23:26",
   "type": "low",
   "height_m_nap": -0.5
  },
  {
   "date": "2026-10-27",
   "time": "03:16",
   "type": "high",
   "height_m_nap": 1.5
  }
 ],
 "surge": {
  "gauge": "Hoek van Holland",
  "measured_at": "2026-10-24 05:00",
  "now_m": 0.68,
  "forecast": [
   {
    "at": "2026-10-24 05:00",
    "surge_m": 0.72
   },
   {
    "at": "2026-10-24 08:00",
    "surge_m": 0.59
   },
   {
    "at": "2026-10-24 11:00",
    "surge_m": 0.47
   },
   {
    "at": "2026-10-24 14:00",
    "surge_m": 0.28
   },
   {
    "at": "2026-10-24 17:00",
    "surge_m": 0.07
   },
   {
    "at": "2026-10-24 20:00",
    "surge_m": -0.11
   },
   {
    "at": "2026-10-24 23:00",
    "surge_m": -0.49
   },
   {
    "at": "2026-10-25 02:00",
    "surge_m": -0.41
   },
   {
    "at": "2026-10-25 04:00",
    "surge_m": -0.33
   },
   {
    "at": "2026-10-25 07:00",
    "surge_m": 0.37
   },
   {
    "at": "2026-10-25 10:00",
    "surge_m": 0.13
   },
   {
    "at": "2026-10-25 13:00",
    "surge_m": 0.92
   },
   {
    "at": "2026-10-25 16:00",
    "surge_m": 0.67
   },
   {
    "at": "2026-10-25 19:00",
    "surge_m": 1.36
   },
   {
    "at": "2026-10-25 22:00",
    "surge_m": 1.03
   },
   {
    "at": "2026-10-26 01:00",
    "surge_m": 1.18
   },
   {
    "at": "2026-10-26 04:00",
    "surge_m": 1.17
   }
  ]
 },
 "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."
 ]
}