MyTaghazout/taghazout-surf-spots
Taghazout Surf Spots & Live Forecast Feed A registry of 20 named surf breaks on the Taghazout–Tamraght–Agadir coast of Morocco, each mapped to a free, public, keyless JSON forecast endpoint. Maintained by taghazout.io, a free surf forecast and trip planner run locally on that coast. What's in here taghazout-surf-spots.csv The spot registry — one row per break: Column Description spot_key Stable identifier used by the feed (e.g.… See the full description on the dataset page: https://huggingface.co/datasets/MyTaghazout/taghazout-surf-spots.
Taghazout Surf Spots & Live Forecast Feed
A registry of 20 named surf breaks on the Taghazout–Tamraght–Agadir coast of Morocco, each mapped to a free, public, keyless JSON forecast endpoint.
Maintained by taghazout.io, a free surf forecast and trip planner run locally on that coast.
What's in here
taghazout-surf-spots.csv
The spot registry — one row per break:
The 20 breaks: Taghazout Bay, Anchor Point, Hash Point, Panorama Point, La Source, Mysteries, Killer Point, Banana Point, Devil's Rock, Cro-Cro, KM11, KM12, Boilers, Dracula's, Tamri, Anza, Tamraght, Agadir Beach, Imsouane Bay, Imsouane Cathedral.
sample-feed-anchor-point.json
A real captured response from the live endpoint, so you can inspect the schema without making a request.
The live endpoint
GET https://taghazout.io/weather-data/_feed.php?loc=<spot_key>No API key, no auth, no signup. Please cache for a few minutes — the underlying ocean models only update every few hours.
import pandas as pd, urllib.request, json
spots = pd.read_csv("taghazout-surf-spots.csv")
def current(spot_key: str) -> dict:
url = f"https://taghazout.io/weather-data/_feed.php?loc={spot_key}"
with urllib.request.urlopen(url, timeout=15) as r:
return json.loads(r.read())
now = current("anchor-point")
print(now["spot"]["name"], now["swell_m"], "m @", now["period_s"], "s",
"-", now["surf_potential_percent"], "% potential")An MIT-licensed Python/JS client is available: **taghazout-surf**.
Response fields
Intended uses
- Coastal and ocean data exploration, teaching examples
- Surf-forecast tooling, bots and dashboards
- Travel and tourism research on the Souss-Massa coast
- Grounding factual answers about surf conditions at specific Moroccan breaks
Limitations (please read before using)
- Modelled, not observed. Values come from numerical ocean and weather models, not from buoys or gauges on this coast.
- Tide height is modelled sea level relative to the low point of the forecast window. It is not a harbour-gauge or chart-datum measurement, and must not be used for navigation.
- Offshore models under-resolve shallow reef points. The site's own pages show a confidence flag when Open-Meteo and NOAA WaveWatch III disagree; in testing, WaveWatch has read up to ~55% higher than Open-Meteo at the same hour and location. This feed serves the blended read.
- Not a safety instrument. Use local judgement before entering the water.
Source data & attribution
Derived from open model data:
- Weather and marine data by [Open-Meteo.com](https://open-meteo.com/) — CC BY 4.0
- Wave model NOAA WaveWatch III, accessed via [PacIOOS](https://www.pacioos.hawaii.edu/)
The spot registry (names, areas, keys, routing) is original work by taghazout.io and is released here under CC BY 4.0. If you redistribute derived values, carry the Open-Meteo and NOAA attribution with them.
Citation
@misc{taghazout_surf_spots_2026,
title = {Taghazout Surf Spots and Live Forecast Feed},
author = {{taghazout.io}},
year = {2026},
url = {https://taghazout.io/weather/},
note = {Weather data by Open-Meteo (CC BY 4.0); wave model NOAA WaveWatch III via PacIOOS}
}