Data Study on the Return to In-Person Dining with OpenTable

Posted on Aug 2, 2021
The skills I demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
GitHub | LinkedIn


With vaccinations being rolled out and gathering restrictions eased in 2021, consumers are returning to their favorite eateries. Pent-up demand has remained high and OpenTable’s State of the Industry data report recently announced that global dining reservations are approaching pre-pandemic levels. Technological integration remains an important part of the restaurant industry in 2021, and websites and online reviews are an essential source of customers.


Business objectives

As the return to in-person dining continues, how can restaurants maximize customer intake through online reservation platforms?


To answer this question, I scraped data from OpenTable, a leading online reservation system. Information from every restaurant in New York City currently active on the platform (~1100 restaurants) was scraped, along with the daily number of bookings at each restaurant over 5 days in July 2021.

My analysis focuses on 3 main groups of factors and their effects on bookings gained through the OpenTable platform:

  • Types of food served
  • Management of COVID-19 safety concerns
  • User reviews and promoted status

This analysis might provide useful insights for:

  • Restaurants looking to pull in more customers through online platforms
  • Entrepreneurs interested in opening a restaurant in NYC
  • Consumers planning their next dinner out on an online platform


Scraping and Data cleaning

The web scraper was written in Python using Selenium and BeautifulSoup. 25 features were scraped from each restaurant's profile page (ex. here). Reservation counts are not published publicly and were extracted from "This restaurant was booked x times today" html elements on the OpenTable search page, pictured below.

Return to In-Person Dining with Data Scraped from OpenTable

These elements were scraped daily at 11:30pm. I worked under the assumption that no more reservations for the current day would be made after 11:30pm, and this approach allowed enough time for the scraper to run before the elements reset at midnight. Briefly, data cleaning was done using Pandas and encompassed handling missing values, string processing, outlier removal, and normality testing.


Data on Different Cuisine Styles

As a restaurant, the type of food you offer is one of the most important factors in how customers will find you on websites like OpenTable or Yelp. Let's get an overview of the New Yorker's palette by looking at the top 20 most-booked cuisines.

Return to In-Person Dining with Data Scraped from OpenTable

Few surprises here, with American and Italian foods boasting the highest total bookings per day. A closer look at per-restaurant average bookings shows that steak/steakhouse and Chinese rank highly in both total bookings and per-restaurant bookings. Though their total booking volume is large, the average American or Italian restaurant does not get a particularly high number of bookings.

Return to In-Person Dining with Data Scraped from OpenTable

Further, this analysis shows that targeting niche audiences (ex. lovers of Beijing-style Chinese, Laotian, or Sardinian food) is a very successful strategy for some businesses. OpenTable allows 4 cuisine tags, but less than 5% of restaurants use all 4. Be specific when labeling your cuisine, especially if you offer specialized or lesser-known dishes. High-volume tags will get you to appear in more searches, but specific tags can make you a big fish in a smaller pond.

There is a general positive relationship between the number of bookings a restaurant gets and the popularity of the cuisines that it tags. I estimated aggregate cuisine popularity for a given restaurant using the geometric mean of bookings/day for all cuisines tagged by that restaurant. This method of estimating cuisine popularity showed the best correlation with bookings/day compared to other methods I explored. Still, this distribution has a large spread and other important factors need to be considered.


Customer Ratings Data

In the age of e-commerce, user reviews have become critically important in any business’s online presence. Who wants to eat at a place where others have had terrible experiences?

An OpenTable review consists of 5 rating criteria, each on a scale from 1 to 5, and an option to recommend the restaurant:

  • Overall
  • Food
  • Service
  • Ambience
  • Value
  • Would you recommend it to a friend?

Surprisingly, I found that nearly 100% of NYC restaurants on OpenTable have 4-star ratings or better in every category, with the distribution of value ratings being slightly lower than other categories.

Recommendations follow a very similar distribution, clustered heavily from 80-100% recommended.

Possible explanations:

  • Bad to mediocre restaurants do not get enough customers to justify investment in an online reservation system.
  • Only restaurants with high-quality products survived the industry’s decline in 2020.
  • All restaurants in NYC are just really good?
  • Reviews are curated and some portion of negative reviews are removed. All levels of OpenTable membership plans offer ‘Review Management’.

Due to the closely clustered nature of the ratings and recommendations data, I was unable to find any meaningful correlation between the ratings a restaurant receives and how many bookings it gets. Incorporation of any of the ratings criteria weakened any model I tried to include them in.


What factors are predictive of bookings if not customer ratings?

Price range, promoted status, and presence of COVID-19 precautions were all found to have small but significant effects on bookings/day.

Promoted restaurants receive more bookings than non-promoted ones do, statistically significant at the p<0.05 level in a right-tailed 2-sample t-test.

Restaurants that implemented COVID-19 precautions receive more bookings than ones that do not, significant in a right-tailed 2-sample t-test at the p<0.05 level. Data were aggregated by whether or not any of the 4 types of safety measures listed (sanitizing, screening, PPE, and distancing) were used. The small effect size may be due to most consumers who are returning to dining in-person either being vaccinated or not weighing the risk of COVID-19 very highly.

Restaurants in different price ranges receive different numbers of bookings, significant at p<0.05 level in a one-way ANOVA test. More expensive restaurants actually received more bookings/day than cheaper ones did. I believe this is likely due to selection bias: cheaper or more casual restaurants tend to get more of their business from walk-ins and less from reservations. I would not recommend that a restaurant artificially overprices its product in order to gain more reservations online.


Regression modeling

Rather than the quality of reviews, I found the quantity of reviews to be by far the best predictor of bookings within the dataset. To control for different restaurants having membership on the platform for different lengths of time, the date of the earliest review at each resturant was scraped. Reviews/day rate, calculated as (total reviews)/(number of days since first review) was then used as an independent variable instead of absolute number of reviews. Bookings/day was plotted against reviews/day and an ordinary least-squares regression model was fitted to the data. 

slope = 64, R-squared = 0.47, p = 1e-113

The model found that for every review/day that a restaurant receives, it receives ~64 bookings/day on average. This relationship is strongly statistically significant, but as the model explains only 47% of variance in bookings/day, there are important factors that are still unaccounted for.

There are confounding factors, most prominently physical seating capacity of a restaurant, that affect both the dependent and independent variables in this analysis. A bigger space means more potential customers who can leave reviews and also allows more bookings/day to be taken. If data were available, I would model (bookings/day) vs (reviews/day/seat) to better control for this.

Promoted Status Data

While this analysis cannot determine whether the relationship between bookings/day and reviews/day is causative, the causality could be tested in a business setting. For example, a restaurant could offer customers an incentive (discount off their next meal, etc) to leave reviews. Then, it could determine whether increasing its reviews/day rate also increases the number of bookings generated through the OpenTable platform.

Despite the model's shortcomings, this analysis provided interesting insights when stratified by categorical features. 

Promoted restaurants receive almost 100% more bookings/review/day than non-promoted restaurants

Promoted: slope = 120, R-squared = 0.78, p = 6e-8

Non-promoted: slope = 64, R-squared = 0.44, p = 1e-107

The cost of purchasing promoted status is not publicly available, but this model could help businesses inform themselves on the value of being promoted on OpenTable. The profitability of promoted status would depend on:

(mean profit/booking) x (projected bookings gain via promotion) vs (cost of being promoted)

While the COVID-19 precautions discussed earlier (sanitizing, screening, PPE, distancing) had little to no effect when layered on the linear model, restaurants with outdoor seating options receive about 65% more bookings/review/day than restaurants with indoor seating only.

Outdoor seating: slope = 74, R-squared = 0.52, p = 8e-82

Indoor only: slope = 45, R-squared = 0.44, p = 1e-37


Conclusions and future directions

Several factors associated with increased OpenTable bookings were identified in this analysis. Major takeaways include:

  • Popularity of tagged cuisines is loosely correlated with more bookings
  • Specific labeling of cuisine can be a successful strategy, especially for businesses offering specialized or regional dishes
  • The rate at which customers leave reviews, not the quality of the reviews, is the best predictor of bookings/day
  • Promoted status increases bookings/review/day by almost 100%
  • Consumers in the post-pandemic NYC environment value outdoor seating

With more time, I would like to:

  • Incorporate geospatial data to investigate the effects of location on a restaurant’s online reservation numbers
  • Gather bookings data over a longer period for better confidence in my results
  • Obtain data on the seating capacity of each restaurant for more controlled models
  • Compare to pre-pandemic data for a better idea of how the pandemic changed consumer preferences

Thanks for taking the time to read about my work! Please take a look at my author page if you would like to see my other projects.

About Author

Matthew Fay

Matthew is a Data Science Fellow with a BS in chemistry from UNC-Chapel Hill. After 3 years studying towards a dual MD-PhD and researching antibody engineering, he pivoted to pursue data science and analytics. He has a passion...
View all posts by Matthew Fay >

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