Data Scraping TripAdvisor for Airlines' Customer Reviews

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

Contributed by Mustafa Koroglu. He is currently enrolled in the NYC Data Science Academy remote bootcamp program taking place from June-September 2017. This post is based on his third class project, web scraping, focusing on the use of web scraping techniques to acquire, process, and analyze raw data from the web. 


This blog post will try to shed some light on the airline rankings, especially for airline companies from North America. Questioning independent organizations' ranking results comes to me interesting as the customer reviews should matter at this point. A recent news at is also asking the same question referring to the data from another survey result conducted by an independent market research firm (the news can be reached from here). Besides these facts, my main aim is to expose any available marketing strategies for the airline companies from the customer reviews.

This project is about scraping customer reviews for eight major airlines from These companies include Air Canada, American Airlines, British Airways, Delta Airlines, KLM Royal Dutch Airlines, Lufthansa, Turkish Airlines, and United Airlines.


I used scrapy spider to collect the dataset.  The reviews are spanning the period from January 2016 to the current day, August 4, 2017. The following image below is a sample review, where I scraped the title, rating ,content, date, destination, cabin class, and route. The dataset has in total 70015 reviews. The rating variable ranges from 1 to 5, where 1 is for the worst and 5 is for the best.

Data Scraping TripAdvisor for Airlines' Customer Reviews


Data Visualization

The first graph will introduce the comparison of proportions of ratings across airline companies.

Data Scraping TripAdvisor for Airlines' Customer Reviews This barplot shows that Delta Airlines, KLM Royal Dutch Airlines, Lufthansa, and Turkish Airlines have almost 75% of the ratings belong to rating level  4 and 5. If we look at the graph from the lowest rating levels, we see that KLM, Delta Airlines, Lufthansa and Turkish Airlines are the ones having the lowest sharing of rating 1 and 2, respectively.



Data Scraping TripAdvisor for Airlines' Customer Reviews



The next barplot provides us the total number of ratings for each cabin class across different airlines. This is the general picture of the dataset in terms of ratings and airlines.







Customer reviews and associated ratings are expected to be fluctuated across seasons. As an illustration, the following the line plot shows an increase on the number of ratings for Summer season for Air Canada customer reviews. It is surprising that the number of ratings for each rating level on June 2017 is much higher than its corresponding value last year. Number of  average rating and rating level 4 are almost double other ratings on August 2016.

Word Frequencies

In this section, I will examine the most frequently used words from the content column for Air Canada customer reviews. The total reviews as well as subset of reviews for lowest and highest rating reviews will be analyzed to get more insights from the text mining. I used the "wordcloud" and "tm" packages in R for this section.

The word cloud (left figure) and the barplot of first twenty most frequently used words show that flight, air, and canada are the words used at most by the customers. In order to better understand customer actions reflected on the reviews, I did the same work for a subset of ratings 1, 2 and ratings 4, 5 as a group of reviews. I also dropped the first three most frequently used words, the same as in the figures above for total reviews. The figures are as follows:

       Positive and negative reviews can be seen from these figures. The most frequent words from high ratings reviews are time, good, service, and seat.  The negative reviews include hour, seat, time, service, toronto, and delay as the most frequent words, among others.


The above analysis can be done for other airlines and compared at one figure with using function from the same package in R. However,  doing the same analysis for all airline reviews at once might cause a memory allocation problem. To sum up, from this project, we see that analyzing customer reviews from different travel websites will enable the data scientist/analyst to see much better picture of the ratings and reflection of customers' reviews.

Further steps in this project could be:

  • scraping detail ratings from the reviews.
  • Travel tips, which are available on the website for scraping, might be useful to find more direct reflection of customer feelings.
  • Sentiment analysis can be used to get more insightful results.

For my GitHub repository, please visit here. For additional readings about scraping the TripAdvisor, see Peter Johnson's page here.

About Author

Mustafa Koroglu

Mustafa Koroglu is a post-doctoral fellow in Global Health Policy Lab focusing on survey data analysis to explain global health shocks to health care utilization. He believes in data-driven decisions and policy implications. He is an active learner...
View all posts by Mustafa Koroglu >

Related Articles

Leave a Comment

Undangan Pernikahan Unik February 7, 2019
I just couldn't leave your site prior to suggesting that I extremelly enjoyed tthe standard info an individual provide in your visitors? Is gonna be again regularly in order to investigate cross-check new posts
bijoux bulgari replique December 15, 2017
Really excellent article Cat! As a newbie to the world of blogging, it helped me structure a plan to get onto the Huffington Post site (I like to dream BIG!) thank you again xx bijoux bulgari replique

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