Airbnb Listings Scraper
Pricing
$8.99/month + usage
Airbnb Listings Scraper
A powerful and efficient **Airbnb scraper** that extracts detailed property listings based on location, guest count, and filters. Perfect for market research, competitive analysis, travel trends, or personal projects. Built for reliability with built‑in residential proxy support.
Pricing
$8.99/month + usage
Rating
0.0
(0)
Developer
Scrape Pilot
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Airbnb Listings Scraper
A powerful and efficient Airbnb scraper that extracts detailed property listings based on location, guest count, and filters. Perfect for market research, competitive analysis, travel trends, or personal projects. Built for reliability with built‑in residential proxy support.
Table of Contents
- Overview
- Key Features
- How It Works
- Input Configuration
- Output Format
- Quick Start
- Advanced Options
- Proxy & Anti‑Blocking
- Limitations & Disclaimer
- Frequently Asked Questions (FAQ)
- Changelog
- Support
Overview
The Airbnb Listings Scraper is an Apify actor that lets you collect detailed information from Airbnb search results. Simply provide a location and the number of guests, and the scraper returns structured data including pricing, host details, ratings, amenities, and more. It handles pagination automatically and uses residential proxies to avoid IP blocks.
Key Features
- Location‑based search – Any city, region, or address (e.g., “Miami Beach, FL”).
- Flexible guest filters – Adults, children, and pets.
- Property type filter – Entire home, private room, hotel room, or any.
- Rich output – Listing ID, URL, title, coordinates, rating, review count, superhost status, bed/bath count, thumbnail, host name, and host ID.
- Pagination control – Set
max_resultsto limit the number of listings (default 20). - Proxy rotation – Built‑in Apify proxy with residential groups to mimic real users and reduce blocking.
- Fast & scalable – Optimised for performance, can be run on a schedule or integrated via API.
How It Works
- The actor constructs an Airbnb search URL based on your input (location, guests, property type).
- It fetches the search results page, extracts listing previews, and follows each listing URL to gather full details.
- Pagination is handled automatically until the desired number of listings (
max_results) is reached or no more pages exist. - All data is cleaned and returned as a JSON array of listing objects.
Input Configuration
The actor accepts a JSON object with the following fields. All fields except location and adults are optional.
Input Fields
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
location | string | Yes | – | The place to search (e.g., "Miami Beach, FL", "Paris, France"). |
adults | integer | Yes | – | Number of adult guests. |
children | integer | No | 0 | Number of children. |
pets | integer | No | 0 | Number of pets. |
max_results | integer | No | 20 | Maximum number of listings to scrape. |
property_type | string | No | "any" | Filter by property type. Allowed values: "any", "entire_home", "private_room", "hotel_room", "shared_room". |
proxyConfiguration | object | No | Apify proxy with residential groups | Configuration for Apify proxy (see Proxy section). |
Example Input
{"adults": 2,"location": "Miami Beach, FL","max_results": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]},"children": 0,"pets": 0,"property_type": "any"}
Output Format
The actor outputs an array of objects. Each object represents a single Airbnb listing with the fields described below.
Output Fields
| Field | Type | Description |
|---|---|---|
listing_id | string | Unique Airbnb identifier for the listing. |
url | string | Direct link to the listing page. |
title | string | Title of the listing. |
property_type | string | Type of property (e.g., "entire_home", "private_room"). |
person_capacity | integer | Maximum number of guests allowed. |
city | string | City from the listing address. |
state | string or null | State or region (if available). |
country | string or null | Country (if available). |
latitude | number | Latitude coordinate. |
longitude | number | Longitude coordinate. |
rating | number or null | Average rating out of 5 (null if no reviews). |
review_count | integer | Total number of reviews. |
is_superhost | boolean | true if the host is a superhost. |
beds | integer | Number of beds. |
bedrooms | integer | Number of bedrooms. |
bathrooms | number | Number of bathrooms (can be half, e.g., 1.5). |
thumbnail | string | URL of the main listing thumbnail image. |
host_name | string | Host’s display name. |
host_id | integer | Host’s unique Airbnb ID. |
Example Output
[{"listing_id": "1638731687015215642","url": "https://www.airbnb.com/rooms/1638731687015215642","title": "Lincoln Rd • Beach & Convention Gem + Parking","property_type": "entire_home","person_capacity": 4,"city": "Miami Beach","state": null,"country": null,"latitude": 25.79335,"longitude": -80.13803,"rating": null,"review_count": 2,"is_superhost": false,"beds": 2,"bedrooms": 1,"bathrooms": 1,"thumbnail": "https://a0.muscache.com/im/pictures/hosting/Hosting-1638731687015215642/original/7c31e260-6e3f-4529-a523-779c06757648.jpeg?im_w=720","host_name": "Edson","host_id": 750677623},{"listing_id": "702227390486471128","url": "https://www.airbnb.com/rooms/702227390486471128","title": "Fontainebleau Miami Sorrento Ocean View Jr suite","property_type": "private_room","person_capacity": 4,"city": "Miami Beach","state": null,"country": null,"latitude": 25.81736548404659,"longitude": -80.1228315423747,"rating": 4.79,"review_count": 107,"is_superhost": false,"beds": 2,"bedrooms": 1,"bathrooms": 1,"thumbnail": "https://a0.muscache.com/im/pictures/miso/Hosting-603817087797158818/original/f98c33c6-f9b4-49ec-b106-c4fc743ea330.jpeg?im_w=720","host_name": "Helen","host_id": 452104393}]
Quick Start
-
Run on Apify
- Go to the Airbnb Listings Scraper page.
- Click “Try Actor” or “Run”.
- Fill in the input fields (at least
locationandadults). - Click “Start” and wait for the run to finish.
- Download the results as JSON, CSV, XML, or HTML.
-
Use the API
- Obtain your Apify API token.
- Send a POST request to the Apify API with your input.
- Example using cURL:
curl -X POST "https://api.apify.com/v2/acts/your-username~airbnb-scraper/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"adults": 2,"location": "Miami Beach, FL","max_results": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Advanced Options
- Pagination control – Set
max_resultsto any number (e.g., 50, 100). Be aware that larger values take more time and may require more proxy capacity. - Property type filter – Use the
property_typefield to narrow results:"entire_home"– Entire places"private_room"– Private rooms"hotel_room"– Hotel rooms"shared_room"– Shared rooms"any"– All types (default)
- Custom proxy – If you have your own proxy list, you can provide it via the Apify proxy configuration object (see below).
Proxy & Anti‑Blocking
Airbnb employs anti‑scraping measures. To ensure high success rates, this actor uses Apify Proxy with residential groups by default. Residential IPs appear as real users and drastically reduce the chance of being blocked.
Default Proxy Configuration
"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}
You can also use other proxy groups (e.g., "DATACENTER") or provide your own proxy URLs. Refer to the Apify Proxy documentation for details.
Limitations & Disclaimer
- Terms of Service – Scraping Airbnb may violate their Terms of Service. Use this actor responsibly and consider contacting Airbnb for official data access.
- Website changes – Airbnb frequently updates its HTML/CSS. If you encounter missing fields or errors, please report them so we can update the scraper.
- Incomplete data – Some listings may not display all fields (e.g., state/country may be omitted). Such fields will be
null. - Rate limits – Excessive requests can lead to temporary IP blocks. The built‑in proxy with residential IPs mitigates this, but always respect the target website.
- Review scraping – This version only scrapes listing details, not individual reviews.
Frequently Asked Questions (FAQ)
Q: Is this Airbnb scraper free to use?
A: The actor itself is free to run, but you pay for Apify platform usage (compute units and proxy traffic). Check Apify pricing for details.
Q: Can I scrape listings from a specific price range?
A: Currently the scraper does not support price filters. This feature may be added in a future version.
Q: Why are some listings missing coordinates or host details?
A: Airbnb does not always display these fields on the search result page. The actor falls back to the listing page, but if the host has hidden certain information, it may not be available.
Q: How many listings can I scrape at once?
A: You can set max_results up to several hundred. For larger volumes, it’s better to run multiple searches with different locations or use a scheduler to spread requests over time.
Q: What should I do if the scraper stops working?
A: First, check if Airbnb changed their website. Then, open an issue on our GitHub repository or contact support. We regularly update the actor to adapt to changes.
