Airbnb Listings Scraper avatar

Airbnb Listings Scraper

Pricing

$8.99/month + usage

Go to Apify Store
Airbnb Listings Scraper

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

Scrape Pilot

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share


Airbnb Listings Scraper



Table of Contents


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_results to 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

  1. The actor constructs an Airbnb search URL based on your input (location, guests, property type).
  2. It fetches the search results page, extracts listing previews, and follows each listing URL to gather full details.
  3. Pagination is handled automatically until the desired number of listings (max_results) is reached or no more pages exist.
  4. 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

FieldTypeRequiredDefaultDescription
locationstringYesThe place to search (e.g., "Miami Beach, FL", "Paris, France").
adultsintegerYesNumber of adult guests.
childrenintegerNo0Number of children.
petsintegerNo0Number of pets.
max_resultsintegerNo20Maximum number of listings to scrape.
property_typestringNo"any"Filter by property type. Allowed values: "any", "entire_home", "private_room", "hotel_room", "shared_room".
proxyConfigurationobjectNoApify proxy with residential groupsConfiguration 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

FieldTypeDescription
listing_idstringUnique Airbnb identifier for the listing.
urlstringDirect link to the listing page.
titlestringTitle of the listing.
property_typestringType of property (e.g., "entire_home", "private_room").
person_capacityintegerMaximum number of guests allowed.
citystringCity from the listing address.
statestring or nullState or region (if available).
countrystring or nullCountry (if available).
latitudenumberLatitude coordinate.
longitudenumberLongitude coordinate.
ratingnumber or nullAverage rating out of 5 (null if no reviews).
review_countintegerTotal number of reviews.
is_superhostbooleantrue if the host is a superhost.
bedsintegerNumber of beds.
bedroomsintegerNumber of bedrooms.
bathroomsnumberNumber of bathrooms (can be half, e.g., 1.5).
thumbnailstringURL of the main listing thumbnail image.
host_namestringHost’s display name.
host_idintegerHost’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

  1. Run on Apify

    • Go to the Airbnb Listings Scraper page.
    • Click “Try Actor” or “Run”.
    • Fill in the input fields (at least location and adults).
    • Click “Start” and wait for the run to finish.
    • Download the results as JSON, CSV, XML, or HTML.
  2. 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_results to 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_type field 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.