Actowiz Metrics Real-time
logo
analytics dashboard for brands! Try Free Demo
How-to-Scrape-TripAdvisor-Hotels-Data-Using-Python-and-BeautifulSoup

How to extract a website and make a dataset?

TripAdvisor is the world’s biggest travel website and it is a very popular website to find restaurants, hotels, transportation, and spaces to visit. When somebody plans a trip to a city or country, they are expected to visit TripAdvisor to get the finest places for staying and visiting. TripAdvisor has more than 702 million reviews of the world’s top hotels, lists more than 8 million locations (restaurants, hotels, tourist charms), and ranks 1st in the Traveling and Tourism categories in the United States.

In this blog, we will provide a script, which will extract hotel data from the TripAdvisor webpage, scrape a few data elements and make a dataset. Here, are the steps that would be executed using Python & BeautifulSoup.

1. Import different libraries.

2. Review the HTML structure of a web page

3. Retrieve and change HTML Data

4. Find and scrape data elements

5. Make a data frame

6. Convert data frame into a CSV file

Import Different Libraries

# Import the libraries.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

Requests permit you to send different HTTP requests to the server, which returns the Response Object having all the reply data (i.e., HTML).

Beautifulsoup (bs4) is used for pulling data out of the HTML files and convert data into a BeautifulSoup object that represents HTML as the nested data structure.

Pandas is used to do data manipulation and analysis.

CSV module implements different classes in reading and writing tabular data within a CSV format.

Review a Webpage’s HTML Structure

We have to recognize the contents and structure of HTML tags in webpages. For that project, we would be using TripAdvisor Hawaii Hotels & Places of staying webpage (given below). You can get this webpage through choosing a link.

Review-a-Webpages-HTML-Structure

We can extract this webpage through parsing HTML of a page and scraping the data required for the dataset. To extract some data from the web page, just right-click anywhere on this webpage, choose inspect from a drop-down list and click an arrow icon given on the screen’s upper left-hand side with HTML and click on hotel name (Prince Waikiki) in review section of a webpage. It will result in the given screen shown.

Review-a-Webpages-HTML-Structure-2

On HTML screen, you would see highlighted an HTML line having the Hotel Name called Prince Waikiki.

If you are moving one line from the tag then you would find a div tag having the class of “listing_title”. It is a parent of tag. Therefore, if you want to find, scrape, and capture hotel names on a webpage you might follow these steps.

Get all HTML lines for any particular parent (div tag having class = listing_title) that might include their related children.

Scrape data elements and create a list having all the hotel names.

The code to find and extract hotel names might be the following:

hotels = []
for name in soup.findAll('div',{'class':'listing_title'}):
hotels.append(name.text.strip())

We will get, scrape and store other data elements on a webpage following similar procedures as given above.

Find and Scrape Data Elements

For all data elements we need to scrape, we will get all HTML lines, which are within any particular class and tag. Then, we will scrape data elements as well as store data in the list.

# Find and extract data elements.
hotels = []
for name in soup.findAll('div',{'class':'listing_title'}):
    hotels.append(name.text.strip())
ratings = []
for rating in soup.findAll('a',{'class':'ui_bubble_rating'}):
    ratings.append(rating['alt'])
reviews = []
for review in soup.findAll('a',{'class':'review_count'}):
    reviews.append(review.text.strip())
prices = []
for p in soup.findAll('div',{'class':'price-wrap'}):
    prices.append(p.text.replace('₹','').strip())

Creating a Data Frame

Creating-a-Data-Frame

We would create a dictionary, which will have data names and standards for all data elements which were scraped.

# Create the dictionary.
dict = {'Hotel Names':hotels,'Ratings':ratings,'Number of Reviews':reviews,'Prices':prices}

Create and show a data frame.

# Create the dataframe.
hawaii = pd.DataFrame.from_dict(dict)
hawaii.head(10)

Converting Data Frames into a CSV file

Converting-Data-Frames-into-a-CSV-file
# Convert dataframe to CSV file.
hawaii.to_csv('hotels.csv', index=False, header=True)

Making it all together…

# Import the libraries.
import requests
from bs4 import BeautifulSoup
import pandas as pd
import csv

# Extract the HTML and create a BeautifulSoup object.
url = ('https://www.tripadvisor.in/Hotels-g28932-Hawaii-Hotels.html')

user_agent = ({'User-Agent':
			'Mozilla/5.0 (Windows NT 10.0; Win64; x64) \
			AppleWebKit/537.36 (KHTML, like Gecko) \
			Chrome/90.0.4430.212 Safari/537.36',
			'Accept-Language': 'en-US, en;q=0.5'})

def get_page_contents(url):
    page = requests.get(url, headers = user_agent)
    return BeautifulSoup(page.text, 'html.parser')

soup = get_page_contents(url)

# Find and extract the data elements.
hotels = []
for name in soup.findAll('div',{'class':'listing_title'}):
    hotels.append(name.text.strip())

ratings = []
for rating in soup.findAll('a',{'class':'ui_bubble_rating'}):
    ratings.append(rating['alt'])  

reviews = []
for review in soup.findAll('a',{'class':'review_count'}):
    reviews.append(review.text.strip())

prices = []
for p in soup.findAll('div',{'class':'price-wrap'}):
    prices.append(p.text.replace('₹','').strip())  

# Create the dictionary.
dict = {'Hotel Names':hotels,'Ratings':ratings,'Number of Reviews':reviews,'Prices':prices}

# Create the dataframe.
hawaii = pd.DataFrame.from_dict(dict)
hawaii.head(10)

# Convert dataframe to CSV file.
hawaii.to_csv('hotels.csv', index=False, header=True)

Thank you so much to read this blog. Please give your valuable comments or feedback. For the best mobile app scraping and web scraping services, contact Actowiz Solutions now!

Social Proof That Converts

Trusted by Global Leaders Across Q-Commerce, Travel, Retail, and FoodTech

Our web scraping expertise is relied on by 4,000+ global enterprises including Zomato, Tata Consumer, Subway, and Expedia — helping them turn web data into growth.

4,000+ Enterprises Worldwide
50+ Countries Served
20+ Industries
Join 4,000+ companies growing with Actowiz →
Real Results from Real Clients

Hear It Directly from Our Clients

Watch how businesses like yours are using Actowiz data to drive growth.

1 min
★★★★★
"Actowiz Solutions offered exceptional support with transparency and guidance throughout. Anna and Saga made the process easy for a non-technical user like me. Great service, fair pricing!"
TG
Thomas Galido
Co-Founder / Head of Product at Upright Data Inc.
2 min
★★★★★
"Actowiz delivered impeccable results for our company. Their team ensured data accuracy and on-time delivery. The competitive intelligence completely transformed our pricing strategy."
II
Iulen Ibanez
CEO / Datacy.es
1:30
★★★★★
"What impressed me most was the speed — we went from requirement to production data in under 48 hours. The API integration was seamless and the support team is always responsive."
FC
Febbin Chacko
-Fin, Small Business Owner
icons 4.8/5 Average Rating
icons 50+ Video Testimonials
icons 92% Client Retention
icons 50+ Countries Served

Join 4,000+ Companies Growing with Actowiz

From Zomato to Expedia — see why global leaders trust us with their data.

Why Global Leaders Trust Actowiz

Backed by automation, data volume, and enterprise-grade scale — we help businesses from startups to Fortune 500s extract competitive insights across the USA, UK, UAE, and beyond.

icons
7+
Years of Experience
Proven track record delivering enterprise-grade web scraping and data intelligence solutions.
icons
4,000+
Projects Delivered
Serving startups to Fortune 500 companies across 50+ countries worldwide.
icons
200+
In-House Experts
Dedicated engineers across scrapers, AI/ML models, APIs, and data quality assurance.
icons
9.2M
Automated Workflows
Running weekly across eCommerce, Quick Commerce, Travel, Real Estate, and Food industries.
icons
270+ TB
Data Transferred
Real-time and batch data scraping at massive scale, across industries globally.
icons
380M+
Pages Crawled Weekly
Scaled infrastructure for comprehensive global data coverage with 99% accuracy.

AI Solutions Engineered
for Your Needs

LLM-Powered Attribute Extraction: High-precision product matching using large language models for accurate data classification.
Advanced Computer Vision: Fine-grained object detection for precise product classification using text and image embeddings.
GPT-Based Analytics Layer: Natural language query-based reporting and visualization for business intelligence.
Human-in-the-Loop AI: Continuous feedback loop to improve AI model accuracy over time.
icons Product Matching icons Attribute Tagging icons Content Optimization icons Sentiment Analysis icons Prompt-Based Reporting

Connect the Dots Across
Your Retail Ecosystem

We partner with agencies, system integrators, and technology platforms to deliver end-to-end solutions across the retail and digital shelf ecosystem.

icons
Analytics Services
icons
Ad Tech
icons
Price Optimization
icons
Business Consulting
icons
System Integration
icons
Market Research
Become a Partner →

Popular Datasets — Ready to Download

Browse All Datasets →
icons
Amazon
eCommerce
Free 100 rows
icons
Zillow
Real Estate
Free 100 rows
icons
DoorDash
Food Delivery
Free 100 rows
icons
Walmart
Retail
Free 100 rows
icons
Booking.com
Travel
Free 100 rows
icons
Indeed
Jobs
Free 100 rows

Latest Insights & Resources

View All Resources →
thumb
Blog

Top Cruise Data Challengesand How to Extract Weekly Marella Cruise Itinerary and Pricing Data Effectively

Extract weekly Marella cruise itinerary and pricing data to track trends, compare fares, and optimize travel analytics with real-time insights.

thumb
Case Study

How We Helped a Brand Optimize Costs with Airline and Hotel Price Benchmarking for Corporate Travel Using Real-Time Pricing Intelligence

Optimize business travel costs with Airline and Hotel Price Benchmarking for Corporate Travel using real-time data, pricing insights, and analytics.

thumb
Report

Scrape In-N-Out Burger locations data in the USA in 2026 – Expansion Trends, Market Coverage & Insights

Scrape In-N-Out Burger locations data in the USA in 2026 to analyze store expansion, regional coverage, and market trends.

Start Where It Makes Sense for You

Whether you're a startup or a Fortune 500 — we have the right plan for your data needs.

icons
Enterprise
Book a Strategy Call
Custom solutions, dedicated support, volume pricing for large-scale needs.
icons
Growing Brand
Get Free Sample Data
Try before you buy — 500 rows of real data, delivered in 2 hours. No strings.
icons
Just Exploring
View Plans & Pricing
Transparent plans from $500/mo. Find the right fit for your budget and scale.
Get in Touch
Let's Talk About
Your Data Needs
Tell us what data you need — we'll scope it for free and share a sample within hours.
  • icons
    Free Sample in 2 HoursShare your requirement, get 500 rows of real data — no commitment.
  • icons
    Plans from $500/monthFlexible pricing for startups, growing brands, and enterprises.
  • icons
    US-Based SupportOffices in New York & California. Aligned with your timezone.
  • icons
    ISO 9001 & 27001 CertifiedEnterprise-grade security and quality standards.
Request Free Sample Data
Fill the form below — our team will reach out within 2 hours.
+1
Free 500-row sample · No credit card · Response within 2 hours

Request Free Sample Data

Our team will reach out within 2 hours with 500 rows of real data — no credit card required.

+1
Free 500-row sample · No credit card · Response within 2 hours