Airbnb Scraper is designed to extract most of the publicly available Airbnb data for home listings. You can get all of the basic data about the listing, all reviews, prices, host/guest details, etc.
This scraper will extract all listings for a particular location. Typically, Airbnb will provide only the first 300 results on their website and limit the API to 1000 results. But with our Unofficial Airbnb API, you can access all of them. Now you can:
- get all Airbnb listings from one location: rating, price, number of guests, location details, indicated address, URL, reviews.
- specify the price range, check-in, and check-out dates.
- scrape Airbnb prices in various currencies.
- extract all Airbnb reviews from one listing: initial comments, responses, name, rating, language, author ID, posting time, etc.
- scrape by input schema parameters or by using an external link with a list of URLs to scrape (CSV, Google Sheets).
Following our basic plan, one Airbnb Scraper run will get you 1,000 results for less than 1 USD credits. For more details about the plans we offer, platform credits, and usage, see the platform pricing page.
If you're not sure how much credit you've got on your plan and whether you might need to upgrade, you can always check your limits in the Settings -> Usage and Billing tab in your Console. The easiest way to know how many credits your actor will need is to perform a test run.
For a step-by-step guide on how to scrape Airbnb, just follow our Airbnb Scraper tutorial. Once you're done with scraping, see how the extracted data is used in traveling and tourism industries.
How to use the scraped data for Airbnb data analysis:
- Monitor amount of Airbnb listings in a chosen location and get the newest prices updates.
- Predict prices for the given location for the upcoming tourist season.
- Find emerging trends within the travel industry and adapt your offering.
- Analyze customer expectations and preferences in terms of price range, housing size, features, available infrastructure etc.
- Analyze reviews using sentiment analysis to identify the most successful locations in town.
- Narrow down to the emerging popular locations to target with the new touring or lodging offers.
- Support your decisions with data when deciding to open/visit a new spot away from most popular destinations.
There are two ways you can scrape Airbnb:
- by
locationQuery
parameter - will get you all available listings for a given location (city, town). - or by
startUrls
parameter - will get you all details from a single listing URL. Can be used only for
It is super easy to get all Airbnb listings for a location. Just use locationQuery
parameter - enter the city name as you would enter it on a search bar on a website.
If you are looking for more specific results, then you can also add optional parameters:
checkIn
-checkOut
dates.includeCalendar
will include the data on available range of days.currency
will scrape the results in the currency of choice.minPrice
-maxPrice
- use this pair to specify the price range.includeReviews
andmaxReviews
will set the necessity and amount of reviews to scrape.simple
- will get only the main Airbnb listing data and skip the details.addMoreHostInfo
will add details for the primary host such as host URL and number of listings. Will only work if thesimple
parameter is not enabled.proxyConfiguration
will set Apify Proxy or your custom Proxy.
{
"simple": true,
"includeReviews": true,
"includeCalendar": false,
"addMoreHostInfo": false,
"currency": "USD",
"proxyConfiguration": {
"useApifyProxy": true
},
"maxListings": 50,
"maxConcurrency": 50,
"limitPoints": 100,
"timeoutMs": 60000,
"debugLog": false,
"maxReviews": 15,
"checkIn": "2022-05-06",
"checkOut": "2022-05-16",
"maxPrice": 100,
"locationQuery": "New York",
"minPrice": 0
}
It is also easy to get all details for a specific listing. Just use startUrls
parameter - enter the URL of the home listing you want to scrape. Note that this parameter only accepts direct listing URLs. Using startUrls
input parameter, you can:
- scrape just one URL (one Airbnb listing).
- scrape multiple URLs in parallel by adding more URL fields.
- for convenience, instead of adding multiple URL fields, you can also paste a link to Google Sheets or a CSV containing the list of your URLs.
- paste original or shortened abnb.me URLs.
You can include any parameters listed in the previous section as well. For the full list of optional parameters, their default values, and how to set the values of your own, see the Input Schema tab.
{
"simple": true,
"includeReviews": true,
"includeCalendar": true,
"addMoreHostInfo": true,
"currency": "USD",
"proxyConfiguration": {
"useApifyProxy": true
},
"maxListings": 50,
"maxConcurrency": 50,
"limitPoints": 100,
"timeoutMs": 60000,
"debugLog": false,
"maxReviews": 20,
"checkIn": "2022-05-06",
"checkOut": "2022-05-16",
"maxPrice": 150,
"startUrls": [
{
"url": "https://www.airbnb.com/rooms/44799007?check_in=2022-05-06&check_out=2022-05-16&federated_search_id=515c24ee-36ef-4c91-bcc2-27d3378cf8ad&source_impression_id=p3_1644398714_7dT9%2FkKgLeA913DZ"
}
],
"locationQuery": "Sacramento",
"minPrice": 0
}
The output from Airbnb Scraper is stored in the dataset. After the run is finished, you can download the contents of the dataset in various data formats (JSON, CSV, XML, RSS, HTML Table).
[{
"url": "https://www.airbnb.com/rooms/28763257",
"name": "Jersey city home near NYC",
"stars": 5,
"numberOfGuests": 1,
"address": "Jersey City, New Jersey, United States",
"roomType": "Private room in residential home",
"location": {
"lat": 40.75413,
"lng": -74.0459
},
"reviews": [
{
"author": {
"firstName": "Vincent",
"hasProfilePic": true,
"id": 134711443,
"pictureUrl": "https://a0.muscache.com/im/pictures/user/3a5275dd-a2be-4ef5-ac80-27701457c15d.jpg?aki_policy=profile_x_medium",
"smartName": "Vincent",
"thumbnailUrl": "https://a0.muscache.com/im/pictures/user/3a5275dd-a2be-4ef5-ac80-27701457c15d.jpg?aki_policy=profile_small"
},
"authorId": 134711443,
"canBeEdited": false,
"comments": "Great place to stay with lots of unexpected bonuses: the rainforest shower head in the bathroom; huge kitchen; lovely size room with its own key; tons of closet space with an iron and ironing board if needed; a TV with a playstation; it's all there. There's three different bus lines within five blocks of the place that will take you to NYC if you need, and there's lots of nice restaurants nearby as well. Andre's brother Ryan kept in touch with me every step of the way, and I'd gladly stay there again.",
"createdAt": "2021-12-22T21:15:32Z",
"id": 523205305261485500,
"idStr": "523205305261485506",
"listingId": 28763257,
"recipientId": 216962688,
"collectionTag": null,
"listing": {
"id": 28763257,
"listingIdStr": "28763257",
"name": "Jersey city home near NYC"
},
"rating": 5,
"recipient": {
"firstName": "Andre",
"hasProfilePic": true,
"id": 216962688,
"pictureUrl": "https://a0.muscache.com/im/pictures/user/03e6a979-1d2d-4de4-a45f-62ec8a21dcee.jpg?aki_policy=profile_x_medium",
"smartName": "Andre",
"thumbnailUrl": "https://a0.muscache.com/im/pictures/user/03e6a979-1d2d-4de4-a45f-62ec8a21dcee.jpg?aki_policy=profile_small"
},
"response": "",
"role": "guest",
"language": "en",
"userFlag": null
},
{
"author": {
"firstName": "Gc",
"hasProfilePic": true,
"id": 364784396,
"pictureUrl": "https://a0.muscache.com/im/pictures/user/fde71470-659d-4e97-b731-b9b9851061e3.jpg?aki_policy=profile_x_medium",
"smartName": "Gc",
"thumbnailUrl": "https://a0.muscache.com/im/pictures/user/fde71470-659d-4e97-b731-b9b9851061e3.jpg?aki_policy=profile_small"
},
"authorId": 364784396,
"canBeEdited": false,
"comments": "Honestly, best Airbnb place I’ve ever stayed at. Andre and intan and Andre’s brother were very welcoming and provided the best service but also it was very nice to come back to the house after a long day getting to know New York and just having a chat with Andre. He helped me find restaurants to try out and gave me direction on how to get to certain places. Loved their 3 dogs and cat, very friendly. Can’t thank you guys enough for making my first trip to New York/ New Jersey even better.",
"createdAt": "2021-12-13T20:18:25Z",
"id": 516653570169077060,
"idStr": "516653570169077058",
"listingId": 28763257,
"recipientId": 216962688,
"collectionTag": null,
"listing": {
"id": 28763257,
"listingIdStr": "28763257",
"name": "Jersey city home near NYC"
},
"rating": 5,
"recipient": {
"firstName": "Andre",
"hasProfilePic": true,
"id": 216962688,
"pictureUrl": "https://a0.muscache.com/im/pictures/user/03e6a979-1d2d-4de4-a45f-62ec8a21dcee.jpg?aki_policy=profile_x_medium",
"smartName": "Andre",
"thumbnailUrl": "https://a0.muscache.com/im/pictures/user/03e6a979-1d2d-4de4-a45f-62ec8a21dcee.jpg?aki_policy=profile_small"
},
"response": "Whenever you plan to come again to the east coast please come by and visit!. You are always welcomed here bro. Thank you for your good vibes! Really hope to see you again!",
"role": "guest",
"language": "en",
"userFlag": null
},
- In order to accomplish the run, the scraper mainly splits the location into smaller areas and divides the price range into smaller ranges. Because of this approach, you might see more crawling pages compared to the results you get, and the run of this actor might take longer to complete.
startUrls
will only scrape from a URL of a specific listing. This parameter cannot be used for other URLs, such as search result URL, for instance.
We have other tourism-related scrapers in stock for you, for instance, Booking Scraper and Tripadvisor Scraper. If you are interested in those, head over to browse through the Travel Category in Apify Store.
We’re always striving to improve the performance of our actors. For any technical feedback about the work of our Airbnb Scraper or reporting a bug, please create an issue on the Github page or email us at support@apify.com
and we’ll get to it.