Andre Toujas
Posted on Sep 18, 2017

Web Scraping to Help Plan a Ski Vacation


If you are fortunate enough to be planning a ski trip (or snowboarding, which is actually better and more fun!), some of the first questions that need to be answered are "where" and "when."  Other factors such as skiing ability level, type of group/vacation (i.e. family vacation, bachelor party, spring break, etc) also impact the ski trip decision-making process. In order to facilitate the process, a popular skiing website (www.onthesnow.com) was "scraped" to help determine optimal destinations specific to a user's parameters.

Data Collection

Two "web spiders" were built via Scrapy, which is a Python framework used for data extraction.  The first spider extracted ski resort data.  The second spider extracted daily snowfall data for each resort (2009 - present).

Ski Resort Data

Data on a total of 621 ski resorts was collected.  The ski resort data was subdivided into 7 main regions:

West Coast Northeast Canada Southern Hemisphere
Rocky Mountains Midwest Europe


The following images for one specific ski resort are meant to illustrate the type of data collected for all 621 ski resorts:

Summit elevation/vertical drop


Ski runs (type/number), Terrain Parks, Skiable Terrain

 Ski Lift Data (type/number)

The ski resort data collected helps answer the "where" question.  For example, if you are going on a family trip with children, the optimal destination for your ski trip is going to be to be very different from a buddies trip where all skiers are of expert skiing ability.  For a family trip, a resort with more beginner type ski runs located in a more populated ski town might be most appropriate.  For a ski-focused, buddies trip, a resort with the most vertical drop and expert terrain might be most appropriate.

Snowfall Data

Of course, snow makes any ski trip better.  Onthesnow.com has conveniently recorded daily snowfall totals and cumulative base depth for all 621 resorts for every year since 2009.  Scraping and analyzing snowfall totals helps to answer both "where" and "when."  See screen shot from onthesnow.com for an example of how daily snowfall totals are recorded:

Making the Decision (Data Analysis)


There are lots of factors to consider when planning a ski vacation--time of year, budget, high chance for some snow vs a chance for lots of snow, children in your party, skiing ability, etc.  As mentioned earlier, a big factor in determining a destination for a ski trip is snowfall; the more snowfall the better.  In order to narrow our search for the optimal destination, a simple box plot of the 7 regions' average annual snowfall was constructed (see figure below):If you are not familiar with how to read a box plot, see figure below for an explanation:

As evidenced by the average snowfall box plot, the West Coast and Rocky Mountain regions in the USA receive the most cumulative annual snowfall on average.  There are observations (ski resorts) that receive comparable annual snowfall located in the Canada and Europe regions as the upper quartile and top line of the box plot indicate.  However, assuming that the user is located in the USA, the added cost of travel to get to Europe or Canada precludes them from consideration.

Another major factor to consider is lift ticket price. Lift ticket prices can cost upwards of $150 per person per day.  It is fairly easy to determine that skiing can get quite expensive quickly, so let's take a look at the density plot below for a comparison of average lift ticket prices by region:

This density plot contains some interesting information:

  • European ski resorts appear to be much more economical than North American ski resorts.
    • This could be because most European ski resorts are not maintained like typical North American resorts and do not have as many "groomed" runs as typical North American resorts.
  • The midwest ski resorts are the most economical North American ski resorts, but the midwest ski resorts also receive the least amount of annual snow on average (see above box plot).
  • The West Coast and Northeast ski resorts have the highest mean lift ticket prices.
  • Distributions of lift ticket prices for most regions are fairly wide and inconclusive.

Since the distributions for average lift ticket prices by region are fairly wide and inconclusive, a more granular look at the individual resort lift ticket prices is warranted (provided later in the blog post).

Variance of average annual snow totals for each ski resort is the final aspect of ski resort data to be analyzed in the scope of this project.  The variance in snow totals for all resorts was calculated and grouped by region to get an understanding of which regions get more consistent yearly snowfall on average.  See the box plot below for the snow total variance comparison by region:

The first thing one might notice in the variance of snow totals box plot is how much bigger the variance is for West Coast ski resorts.  If you think about it, this makes perfect sense.  California experienced one of the most significant droughts in recorded history that spanned from December 2011 - March 2017 (as well as another drought from 2006 - 2010).  The variance of snow totals in West Coast ski resorts can be explained through the Wikipedia quote below:

Increasingly dramatic fluctuations in California weather have been observed in the 21st century. In 2015, California experienced its lowest snowpack in at least 500 years; the 2012–15 period was the driest in at least 1200 years.  However, the winter of 2016–17 was the wettest ever recorded in Northern California, surpassing the previous record set in 1982–83.

Considering average annual snow totals, variance in snow totals and lift ticket prices, a ski resort in the Rocky Mountains might be the optimal choice since the Rocky Mountains have the best balance between average annual snow totals and snow totals variance.  European destinations might be also be a good choice for international users or users whose budget can allow for international travel.


Just as snow is important for skiing, base depth is also important since a higher base depth will cover tree stumps, fallen branches, rocks, etc.  The bar chart below illustrates the average monthly snowfall for Rocky Mountain resorts with the average base depth plotted in the orange line:

As indicated from the chart above, March may be the optimal month to go skiing since the base depth is near the peak base depth for the season and while still experiencing significant snowfall.  February is also a good second option since the snow totals in February are still good, but the base depth is not quite as high as in March.


In order to get a more granular look at the ski resorts located in the Rocky Mountain region, a scatter plot showing lift ticket price vs average annual snowfall was created with color indicating the percentage of beginner ski runs to other ski runs (purple = fewest beginner ski runs, yellow = most beginner ski runs).  Optimal choices are located in the lower right hand portion of the graph since the user has the best chance for the most snowfall while being the most economic.

In the graphic above, 3 resorts are highlighted for different types of ski vacations:

  • Wolf Creek: Wolf Creek is the most budget-friendly and has a good mixture of both advanced terrain and beginner ski runs.  It would be a good selection for a group with skiers of varying abilities.
  • Grand Targhee: Grand Targhee Resort is located very near Jackson Hole, which is a prominent ski town with lots of amenities and night life.  If you are taking a family vacation and are not concerned with very challenging terrain, Grand Targhee would be a good selection.
  • Arapahoe Basin: If budget and challenging terrain are the user's most important parameters, Arapahoe Basin is a great option.  Arapahoe Basin does not provide many beginner runs, but the ski resort is economical and receives a good bit of snow.  Arapahoe Basin is also one of the closest ski resorts to Denver, so the user could stay in Denver and commute to the mountain since staying in a big city is often more economical than staying in a ski town.

Once the user narrows in on a specific resort, graphs can be generated to see how that specific resort's snowfall and base depth develop over seasons to ensure the optimal month is selected for the ski trip.  The following graph shows the cumulative snowfall for every season since 2009:

This illustration affirms that February and March receive good snowfall.

To explore how the base depth develops at the user-selected resort, see the illustration below:

For this specific ski resort, the ski trip timing of February or March is maintained.  The user may want to consider taking the trip towards the beginning of March since the base depth has declined towards the end of March in seasons past, but the base depth should still be solid through all of March.


If I were the user planning a ski trip, I would book flights to Colorado and go skiing at Wolf Creek in late February or early March since Wolf Creek offers challenging terrain and receives the highest snow totals.  However, the decision about where to go skiing should take into account the goals and make-up of the group.

About Author

Andre Toujas

Andre Toujas

“Why?” The question “why” has always intrigued Andre. That simple question is what made Andre pursue his degree in mechanical engineering, and answering “why” is what drives him as a data scientist. Two of his four NYCDSA projects...
View all posts by Andre Toujas >

Related Articles

Leave a Comment

No comments found.

View Posts by Categories

Our Recent Popular Posts

View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp