{
    "ok": true,
    "feed_type": "compact_surf_forecast_summary",
    "spot": {
        "key": "hash-point",
        "name": "Hash Point",
        "area": "Taghazout",
        "route": "/weather/hash-point/",
        "guide_route": "/surf-spots/hash-point/"
    },
    "updated_at": "2026-10-15T04:00",
    "tz_offset": 0,
    "source_status": "live",
    "source_note": "Open weather and marine model data. Swell height and period are the decomposed swell components, separate from the total sea state. Tide times and heights are harmonic predictions from the EOT20 tide model (DGFI-TUM, CC BY 4.0), heights above lowest astronomical tide (LAT): a model, not a harbour-gauge measurement. Use local judgement before entering the water.",
    "air_temp_c": 21,
    "water_temp_c": 20,
    "wind_kmh": 7,
    "gust_kmh": 12.1,
    "swell_m": 0.54,
    "period_s": 13.5,
    "swell_direction_deg": 316,
    "sea_state_m": 0.68,
    "wind_wave_ratio": 0,
    "sunrise": "2026-10-15T06:41",
    "sunset": "2026-10-15T18:07",
    "uv_index_max": 6.4,
    "moon": {
        "age_days": 3.78,
        "illumination": 0.153,
        "phase": "waxing_crescent",
        "tide_range": "mid"
    },
    "air_quality": {
        "available": true,
        "pm2_5": 16.5,
        "pm10": 50.6,
        "dust": 61,
        "dust_peak_24h": 83,
        "dust_level": "high",
        "pm_level": "fair",
        "chergui": true,
        "updated": "2026-10-15T00:00",
        "stale": false,
        "source": "Open-Meteo Air Quality (CAMS)"
    },
    "tide": {
        "label": "Falling tide",
        "trend": "falling",
        "height_m": 2.77,
        "time": "04:00",
        "datum": "height above lowest astronomical tide (LAT), EOT20 tide model"
    },
    "surf_potential_percent": 94,
    "best_window": {
        "label": "Thu 11:00",
        "score_percent": 94,
        "reason": "lighter wind · softer size · more push"
    },
    "beginner_verdict": "Check coaching zone and tide first; conditions may be useful if size is manageable.",
    "advanced_verdict": "Worth checking if wind, period, tide and crowd fit the spot.",
    "routes": {
        "weather": "/weather/hash-point/",
        "surf_spot": "/surf-spots/hash-point/",
        "book": "/build/#intent=surf&spot=hash-point"
    }
}