Data Web Scraping to Help Plan a Ski Vacation

Posted on Sep 18, 2017
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.


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, data from a popular skiing website ( 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.  Data of the ski resort 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:

Data Web Scraping to Help Plan a Ski Vacation

Summit elevation/vertical drop


Data Web Scraping to Help Plan a Ski Vacation

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

Data Web Scraping to Help Plan a Ski Vacation

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

Lift Ticket Price

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 Snow

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.

Cumulative Snowfall

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.

Base Depth

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

“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 2020 Revenue 3-points agriculture air quality airbnb airline alcohol Alex Baransky algorithm alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus ames dataset ames housing dataset apartment rent API Application artist aws bank loans 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 boston safety Bundles cake recipe California Cancer Research capstone car price Career Career Day citibike classic cars classpass clustering Coding Course Demo Course Report covid 19 credit credit card crime frequency crops D3.js data data analysis Data Analyst data analytics data for tripadvisor reviews data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization database Deep Learning Demo Day Discount disney dplyr drug data e-commerce economy employee employee burnout employer networking environment feature engineering Finance Financial Data Science fitness studio Flask flight delay gbm Get Hired ggplot2 googleVis H20 Hadoop hallmark holiday movie happiness healthcare frauds higgs boson Hiring hiring partner events Hiring Partners hotels housing housing data housing predictions housing price hy-vee Income Industry Experts Injuries Instructor Blog Instructor Interview insurance italki Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter las vegas airport lasso regression Lead Data Scienctist Lead Data Scientist leaflet league linear regression Logistic Regression machine learning Maps market matplotlib Medical Research Meet the team meetup methal health miami beach movie music Napoli NBA netflix Networking neural network Neural networks New Courses NHL nlp NYC NYC Data Science nyc data science academy NYC Open Data nyc property NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time performance phoenix pollutants Portfolio Development precision measurement prediction Prework Programming public safety PwC python Python Data Analysis python machine learning python scrapy python web scraping python webscraping Python Workshop R R Data Analysis 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 seafood type Selenium sentiment analysis sentiment classification Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau teachers team team performance TensorFlow Testimonial tf-idf Top Data Science Bootcamp Top manufacturing companies Transfers tweets twitter videos visualization wallstreet wallstreetbets web scraping Weekend Course What to expect whiskey whiskeyadvocate wildfire word cloud word2vec XGBoost yelp youtube trending ZORI