What's in the data
A complete snapshot of each resort's bulletin.
Lifts
- Name, sector, type
- Opening & closing times
- Status: open, scheduled, on hold, closed
Pistes
- Name, sector, difficulty
- Grooming status
- Opening & closing times
Weather
- Snow depth & quality
- Morning & afternoon temperature
- Wind speed & direction
- Avalanche risk (1-5)
Roads & Metadata
- Road surface condition
- Equipment requirements
- Season opening & closing dates
Coverage
148 stations across France, plus a few in Italy, Switzerland, and Andorra. Adding more as we go.
Including Val Thorens, La Plagne, Chamonix, Alpe d'Huez, Megeve, Les Arcs, Tignes, Courchevel, Les Deux Alpes, Serre-Chevalier, and many more.
Using the data
REST API
A JSON API serves current-state data. Base URL:
https://open-piste.raed.workers.dev
/resorts All resorts
with weather summary & season dates
/resorts/:slug
Full current state for one resort
/health
Service status & data coverage
/openapi.json
OpenAPI 3.1 specification
curl https://open-piste.raed.workers.dev/resorts/val-thorens | jq
Parquet files (free download)
Daily Parquet exports are publicly available. Each day produces 5 files, stored at:
https://pub-97642627f73e48d389691a5634ec1971.r2.dev/snapshots/{YYYY}/{MM}/{DD}/{table}.parquet
Tables: lifts, pistes,
weather, roads, resorts
A _SUCCESS marker confirms all files for a day are
complete. An
index.json
lists all available dates.
SELECT resort_slug, name, lift_type, status, opening_time, closing_time
FROM 'https://pub-97642627f73e48d389691a5634ec1971.r2.dev/snapshots/2026/03/24/lifts.parquet'
WHERE status = 'open'
ORDER BY resort_slug;
Python (Polars)
import polars as pl
url = "https://pub-97642627f73e48d389691a5634ec1971.r2.dev/snapshots/2026/03/24/pistes.parquet"
pistes = pl.read_parquet(url)
pistes.filter(pl.col("difficulty") == "black").group_by("resort_slug").len()
Schedule & freshness
Parquet exports run nightly at 20:00 UTC. A
_SUCCESS marker confirms completeness. All values are
normalized to English, timestamps are UTC.