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.

~103 Alps ~27 Pyrenees ~7 Massif Central ~5 Vosges ~5 Jura

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

GET /resorts All resorts with weather summary & season dates
GET /resorts/:slug Full current state for one resort
GET /health Service status & data coverage
GET /openapi.json OpenAPI 3.1 specification
Example
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.

DuckDB
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.