Skip to content

Method

Everything here is derived from three public datasets with one small script. This page exists so you can decide how much to trust each number without taking my word for it.

What is behind each page

PageSourceYearsPeriod
Teide summitERA5 reanalysis via Open-Meteo Historical Weather API102016-01-01 → 2025-12-31
CalimaCAMS atmospheric composition reanalysis/forecast via Open-Meteo Air Quality API32023-01-01 → 2025-12-31
SeaWave model via Open-Meteo Marine Weather API42022-01-01 → 2025-12-31

The five rules

1. Complete calendar years only

The current year is excluded entirely. If it were included, a month that has already happened this year would carry one extra sample and a month that has not would carry none — which quietly tilts every month-to-month comparison. The cost is up to twelve months of freshness. It is worth it.

2. Probabilities are counted, not modelled

Every percentage on this site is a plain frequency: the number of hours or days that crossed a threshold, divided by the number observed. No distribution is fitted, nothing is smoothed or extrapolated. The denominator is printed next to the figure so you can judge it.

3. Coverage is measured, not assumed

This is the rule that caught a real mistake, so it gets the longest entry. All three APIs return a normal, successful response for dates before their archive begins — the values are simply null. Nothing errors and nothing warns you. The first version of this site requested 2016–2025 from all three and would have published dust statistics built from three years of data under a heading that said ten.

The fix: the script now counts the distinct years that actually contribute data to each month, and that count — not the range requested — is what appears on the page. Any dataset with fewer than five years gets a warning at the top of its page, in colour, above the tables. The general lesson is one worth keeping: a successful HTTP response is not evidence that you received data.

4. Local time, always

Every hour and every daily average is computed in Canary local time, because that is the clock a visitor is planning against. The conversion is done by the data provider, not by this site, which avoids a whole family of daylight-saving bugs.

5. Say what the numbers cannot do

These are reanalysis and model products, not instrument readings from the spot you are standing on. A reanalysis reproduces the weather on a grid; it is very good at the typical and it flattens the extreme. Where that matters — summit gusts, wave height at a specific cove — the relevant page says so next to the table rather than in the small print.

Known limitations

  • Dust has only 3 years. The convenience API used here begins in late 2022. Going back to 2003 is possible through the Copernicus CAMS reanalysis directly, which needs an account and a different access pattern. Until then, treat the ranking of months as meaningful and the precise percentages as provisional.
  • No cable car status. The operator publishes no wind threshold and no machine-readable status history, so this site does not claim to predict closures — only the frequency of the conditions associated with them.
  • Wave heights are offshore. Local bathymetry, breakwaters and shore break are not resolved. Good for comparing coasts and months; useless for judging one swim.
  • No trend analysis. Ten years is enough to describe a typical year and far too short to say anything about climate trends. This site does not try.

Reproducing it

The aggregation is a single Node script with no dependencies that calls three public endpoints and writes three JSON files. If you want to check a figure, the fastest route is to query the same endpoint for the same coordinates and count it yourself — the definitions on each page are precise enough to make that possible, which is the point.

Corrections

If a number here contradicts something you have measured, that is worth knowing and I would rather hear it. Corrections get applied to the script, not patched into the text, so the page and the data cannot drift apart.