Browsing through Airbnb to collect info can be a bit overwhelming.

You might be trying to find the perfect vacation spot or trying to scope your own neighborhood to understand how your own listing stacks up against the competition.

What if you could export all the data from Airbnb listings into a simple spreadsheet for you to easily navigate?

Web scraping is the answer to the problem.

Web Scraping and Airbnb

A web scraper will allow you to select the specific data you would want from any Airbnb listing and scrape them in scale to build a database of listings for you.

For our example, we will use ParseHub, a free and powerful web scraper that can easily scrape dynamic sites like Airbnb.

Scraping Airbnb data

Now, let’s assume that we are in the process of setting up our boutique Airbnb listing in New York City. As a result, we want to have a good grasp of what the listings in our neighborhood are offering.

So, we will set up a web scraping project of Airbnb locations in New York City.

Getting Started

Before we get started, you’ll need to download and open ParseHub. Also, we will grab the URL of the results page for stays in New York City in early October of next year (We want to capture as many available listings as possible).

Setting Up Your Scraping Project

It is now time to get scraping.

  1. First, open ParseHub and click on New Project
  2. Enter the Airbnb URL you’ve decided to scrape for this project.
  3. The page will now render in ParseHub and we’ll be ready to start selecting data to scrape.

Scraping Basic Listing Data

  1. First, click on the title of the first listing on the results page. The title will be highlighted in green to indicate that is has been selected.
  2. Now click on the second title listing on the page to make sure all listings on the page have been selected (highlighted in green).
  3. On the left sidebar, make sure to rename your selection to listing.
  1. ParseHub will now extract the title and listing URL of each listing on the results page.
  2. Next, click on the PLUS(+) next to the listing selection and select the Relative Select command.
  3. With the Relative Select command, click on the title of the first listing and then on the listing’s price. An arrow will appear to represent the Relative Select.
  1. You can now rename your selection to price. Repeat steps 5 to 7 to also extract the listing type, rating, review number and layout.
  2. Make sure to expand your new selections and delete the extraction of URLs. This way ParseHub will only extract the data you’ve selected and not the URLs they are linking to.

Scraping Listing Details

Now we’ll tell ParseHub to also click on every listing on the page and extract even more info from each listing page.

  1. Go back to the listing selection and click on the PLUS(+) sign and select the Click command.
  1. A pop-up will appear asking if this is a “Next” button. Click No and select Create New Template. Rename your template to listing_template.
  1. We can now select elements from this page to scrape as well. We will start by extracting the host’s name by clicking on it. Make sure to rename your new selection accordingly.
  2. Next, we’ll tell ParseHub to expand the listing details before scraping it. First, we will add a new select command and select the “Read more about the space” link. Rename your selection to read_more.
  1. Expand your new selection and remove the extraction command.
  1. Now, use the PLUS(+) command to add a click command.
  1. A pop-up will appear asking if this a “Next” button. Click No and select “Continue executing the Current Template”.
  1. You can now create a new Select command to extract the listing description.
  1. Repeat steps 4 to 7 to tell ParseHub to click on the “Show all amenities” link, this will allow us to scrape amenity information for each listing.
  2. Using the select command, click on the first amenity category. In this case, that’s the Basic category. Then click on the second amenity category to make sure all categories are selected. Rename your selection to amenities.
  1. Expand this new selection and delete the make new entry command.
  2. Now, use the PLUS(+) sign to add a Conditional command.
  3. Here, we will add an expression to make sure that ParseHub pulls every category it’s in own column.
  4. For our first expression, we will use:

$e.text.contains(“Basic”)

  1. We will then add a Relative Select command to our Conditional and connect the Basic Header to the content under it. Rename you Relative Selection to basic_ammenitites.
  1. You can now copy-paste this Conditional command to select every amenity category. Just make sure to update your expressions and selection names. You will also need to drag and drop your pasted commands so they are not all nested within each other. Your final project should look like this:
Pro Tip: If you’re interested in scraping each of the listing’s images, check out our guide on scraping and downloading images from any website.

Dealing with Search Pagination

So we’ve told ParseHub to scrape every listing on the first page of the search results page. Now we will tell it to scrape additional pages of results to make sure our database is as complete as possible.

  1. First, using the left sidebar navigation, we will head back to our main_template. You might also have to go back to the search results page on the ParseHub browser.
  2. Next, click on the PLUS(+) sign on the page command and pick the Select command.
  1. Using the Select command, click on the next page icon at the bottom of the Airbnb results page. Rename this selection to next.
  1. Expand the selection and delete the default extraction commands.
  1. Lastly, use the PLUS(+) button to add a Click command.
  2. A pop-up will appear asking you if this a “Next” button. Hit “YES” and enter the number of times you’d want to repeat this process. This time we will select do 5 times.

Run your Airbnb Scrape Job

Now it’s time to finally run the scrape job we’ve setup.

On the left sidebar, click on the Get Data button and select the Run button.

ProTip: For longer scrape jobs, we recommend to always do a Test Run and confirming your project is configured correctly before running the full job.

After the scrape is done, you will be able to download your data as an Excel spreadsheet.

Final Thoughts

With web scraping, all the data across Airbnb is now within your reach. So feel free to repeat this process over and over to find the best (and hidden) vacation spot or to strategize how to monetize your new listing.

If you have any questions on how to scrape Airbnb or any other website, write to us at hello(at)parsehub.com