Navigating the Return to In-Person Dining by Scraping OpenTable

Posted on Aug 2, 2021



The COVID-19 pandemic has had huge impacts on the economy of the U.S., and the restaurant industry has been among the hardest hit. To adapt to the pandemic, restaurants turned to technology. 2020 brought about contactless ordering on tablets, QR code menus, and an explosion in the usage of online ordering and delivery services.

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


Research question and 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 with 25 features) 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 scraper was written in Python using Selenium and BeautifulSoup. Briefly, data cleaning was done in Pandas and encompassed handling missing values, string processing, outlier removal, and normality testing.


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.

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.

Further, this EDA shows that targeting niche audiences (like 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. Popular 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 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 tried. Still, this distribution has a large spread and other important factors need to be considered.


Customer Ratings

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 has 5 criteria:

  • 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 and overall. Recommendations follow a very similar distribution, clustered heavily from 80-100% recommended.

Possible explanations:

  • Bad to mediocre restaurants do not get enough customers to make an online reservation system a good investment
  • 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 ratings are removed
  • All levels of OpenTable membership plans offer ‘Review Management’, see

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 actually 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 positive effects on bookings/day.

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

Restaurants that implemented COVID 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.

More expensive restaurants also receive more bookings, significant at p<0.05 level in a one-way ANOVA test. 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 analysis and 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, reviews/day rate was 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. The model found that each review/day averages ~64 bookings/day, with r-squared = 0.47 and p = 1e-113.

There are confounding factors, most prominently physical seating capacity of a restaurant, that affect both my dependent and independent variables. 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. 

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, the restaurant could determine whether increasing its reviews/day rate also increases the number of bookings generated through the OpenTable platform.

Despite its shortcomings, this model provided interesting insights when layered on top of categorical analyses. 

Promoted restaurants receive almost 100% more bookings/review/day than non-promoted restaurants. 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 (profit/booking) x (projected bookings gain via promotion) versus the cost of being promoted.

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

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

While COVID-19 precautions themselves 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

Finally, a multiple linear regression model was generated incorporating:

  • Reviews/day
  • Cuisine popularity
  • Price range
  • Promoted status
  • Outdoor seating

With r-squared = 0.52 and p = 5e-121, the model performed marginally better than the simple linear model on reviews/day only. Important factors such as location are still unaccounted for in this analysis and may explain some of the remaining variance in the data.


Conclusions and future directions

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

  • Popularity of tagged cuisines is 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 per review per day by almost 100%
  • Consumers in the post-pandemic NYC environment value outdoor seating

With more time, I would like 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 a more controlled model
  • 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!

About Author

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