How Where to Ski works

    Most ski directories scrape a price once and leave it there for five years. We don't. Every snow depth, lift status and pass price on this site is timestamped, sourced, and re-verified on a schedule. Here's exactly how.

    The hybrid data pipeline

    Different regions publish different feeds. Instead of forcing a single mediocre API onto every resort in the world, we route each country to the best source available and fall back to AI search when no live feed exists. Every page tells you which source it used.

    Region / countryPrimary sourceRefresh cadenceWhat we pull
    United States & CanadaRapidAPI Ski ResortsEvery 48 hoursBase depth, 24h snowfall, open lifts & trails
    Norwayfnugg.no official feedEvery 48 hoursSnow depth, lift status, run count, conditions text
    FranceANMSM (Assoc. Nationale des Maires des Stations)Every 48 hoursSnow depth top & base, open lifts, fresh snow
    Sweden (Skistar)Skistar public price APIDailyLift pass prices (SEK × 4.9 day-of-week formula)
    Rest of world (AT, IT, CH, JP, AR, etc.)Perplexity Sonar / Sonar ProEvery 96 hoursSnow depth, open lifts, status, 7-day forecast
    Weather (all resorts)OpenWeather One CallLive on page load, server-cached 30 minTemperature, conditions, wind, forecast

    Snow depth & conditions

    Pulled from the official regional feed where one exists (RapidAPI in North America, fnugg in Norway, ANMSM in France). For the rest of the world we use Perplexity Sonar Pro to search resort websites in real time and extract the numbers.

    Cache TTLs: 48h for regional feeds, 96h for AI fallback. If we can't pull a non-numerical answer, the resort is marked “expired” rather than served with stale data.

    Lift pass prices

    Verified by Perplexity Sonar against the resort's official 2026/27 pricing page. We require seven consecutive identical results before a price update goes live — this filters out hallucinated or one-off numbers.

    Skistar resorts (Sweden, Norway) are computed from their public API using day-of-week multipliers. Every price card on the site shows the exact verification date.

    Weather forecasts

    OpenWeather One Call API, requested live on every page load and server-cached for 30 minutes to keep things fast without going stale. Wind, temperature, conditions and 7-day forecasts all come from the same source.

    AI search expert

    Google Gemini 3 Flash powers the “Ask Where to Ski” assistant — it searches our verified resort database (not the open web) and returns ranked shortlists with reasoning. Results are cached for 24 hours via SHA-256 exact-match lookup to keep responses instant.

    How we keep the data honest

    Visible timestamps

    Every resort page shows a “Last updated” date so you can tell at a glance whether you're looking at yesterday's snow or last month's.

    Scheduled refresh

    Cron jobs run twice daily for snow data and daily for prices. Powder alerts fire whenever ≥20 cm/24h or ≥30 cm/7d is detected, with a 5-day cooldown.

    Source attribution

    Snow numbers carry a tag identifying which feed produced them (RapidAPI, fnugg, ANMSM, or Perplexity) plus a confidence score for AI-sourced data.

    The request pipeline, step by step

    When you load a resort page, here's the exact path your request takes — from your browser down to the source feed and back, with cache layers at every hop.

    1. 1
      Browser request

      User opens a resort page

    2. 2
      Edge cache

      30-min weather cache hit?

    3. 3
      Region router

      Pick best source for the country

    4. 4
      Source feed

      RapidAPI / fnugg / ANMSM / Perplexity

    5. 5
      Verify + cache

      TTL stamp + return to user

    Per-country source map

    Every country we cover, the live feed we use, and how often it refreshes. If a country isn't listed it falls back to the global Perplexity Sonar lane.

    CountrySourceSnow TTLPrice source
    🇺🇸 United StatesRapidAPI Ski Resorts48 hPerplexity Sonar (7-result rule)
    🇨🇦 CanadaRapidAPI Ski Resorts48 hPerplexity Sonar (7-result rule)
    🇫🇷 FranceANMSM official feed48 hPerplexity Sonar (7-result rule)
    🇳🇴 Norwayfnugg.no48 hSkistar API + Perplexity
    🇸🇪 SwedenPerplexity + Skistar96 hSkistar API (SEK × 4.9, daily)
    🇫🇮 FinlandPerplexity Sonar96 hPerplexity Sonar
    🇦🇹 AustriaPerplexity Sonar Pro96 hPerplexity Sonar
    🇨🇭 SwitzerlandPerplexity Sonar Pro96 hPerplexity Sonar
    🇮🇹 ItalyPerplexity Sonar Pro96 hPerplexity Sonar
    🇪🇸 Spain & 🇦🇩 AndorraPerplexity Sonar96 hPerplexity Sonar
    🇩🇪 GermanyPerplexity Sonar96 hPerplexity Sonar
    🇸🇰 Slovakia & 🇵🇱 PolandPerplexity Sonar96 hPerplexity Sonar
    🇧🇬 Bulgaria & 🇷🇴 RomaniaPerplexity Sonar96 hPerplexity Sonar
    🇯🇵 JapanPerplexity Sonar Pro96 hPerplexity Sonar
    🇨🇱 Chile & 🇦🇷 ArgentinaPerplexity Sonar96 hPerplexity Sonar
    🇳🇿 New Zealand & 🇦🇺 AustraliaPerplexity Sonar96 hPerplexity Sonar

    Exact refresh schedule

    Data typeCache TTLCron scheduleNotes
    Weather (live)30 minOn-demandFetched on every page load, edge-cached
    Snow depth (regional APIs)48 hTwice daily (06:00 & 18:00 UTC)RapidAPI, fnugg, ANMSM
    Snow depth (Perplexity fallback)96 hThursdays + on-demandLower-priority lane to manage API spend
    Lift pass pricesPer seasonDaily verification cronRequires 7 consecutive matching results
    Skistar prices24 hDailyComputed live from Skistar public API
    Powder alerts2× dailyTriggers on ≥20 cm/24h or ≥30 cm/7d (5-day cooldown)
    Season opening datesPer seasonWeeklyAuto-updates only if current season end date has passed
    AI search responses24 hOn-demandSHA-256 exact-match cache lookup

    Why we built it this way

    Look at any other ski directory and try to find a 2026/27 lift price for a mid-tier resort in Bulgaria, Romania or the Japanese Alps. You'll find a 2019 number scraped once and never touched again — or no number at all. We built the hybrid pipeline because nobody else was treating ski data like a live product.

    The result: 675+ resorts across 41 countries, with timestamps and sources you can actually trust. If a number on this site is wrong, the “Updated” date will tell you when we last checked — and our cron will fix it within 48–96 hours.

    Explore the live data

    Frequently asked questions

    Where does Where to Ski get its snow and lift data?

    We combine four sources: the RapidAPI Ski Resorts feed for North American mountains, fnugg.no for Norwegian resorts, ANMSM's official feed for French resorts, and Perplexity Sonar Pro (an AI search engine) as a global fallback. Each source is refreshed on its own schedule and tagged so you can see which one fed the page.

    How often are lift pass prices updated?

    Lift pass prices are re-verified twice per season against the resort's official website using Perplexity Sonar with a 7-day consecutive-result requirement. Skistar resorts are recomputed daily from their public API (SEK price × 4.9, SEK/EUR=11). Every price page shows the date it was last verified.

    Are weather and snow depth real-time?

    Weather is fetched live from OpenWeather every time you load a resort page (cached server-side for 30 minutes). Snow depths come from the regional feed for the resort's country and refresh every 48 hours; the global AI fallback refreshes every 96 hours. Every reading carries a visible 'Updated' timestamp.

    How is Where to Ski different from other ski resort sites?

    Most ski directories publish a price once and forget it. We re-verify prices and snow conditions on a schedule, expose the source and timestamp on every page, and run a hybrid hybrid pipeline (regional API → AI fallback) so even small resorts in Bulgaria or Japan get up-to-date numbers — not a 2019 brochure scrape.