Skip to content

Airbnb Scraper

Try for free

Scrape public Airbnb listings from a city search or a listing URL. Prices, ratings, hosts, amenities, photos, and house rules.

🏡 Airbnb Scraper

Scrape public Airbnb listings by city, search URL or listing URL. Each result is one stay with its title, total price for your dates, rating, host, amenities, photos, house rules and location, all without logging in.

It talks to Airbnb's own JSON API, so a 10-listing run is quick, and you pay just $2.20 per 1,000 listings.

✨ Why use Airbnb Scraper?

  • 🔓 No login, no booking — it reads public listing data only.
  • 🏙️ Search three ways — type a city, paste a search URL with all its filters, or paste a single listing URL.
  • 📅 Price for your dates — set check-in and check-out and the total comes back as Airbnb shows it, with a breakdown when available.
  • 🧾 Deep listing detail — host info, amenities, up to dozens of captioned photos, highlights, house rules and location text.
  • 🎛️ Real filters — price range, currency, locale, guests, pets, minimum beds, bedrooms and bathrooms.
  • 💸 Cheap and simple — one flat price per saved listing.

🎯 Use cases

  • 🧭 Destination comparison — compare stays, prices and ratings across cities.
  • 📈 Price monitoring — watch totals for a fixed set of dates over time.
  • 🏢 Market reports — collect listing details, capacity and amenities for a neighborhood.
  • 🕵️ Competitor tracking — follow hosts and rating scores in your area.
  • 🏨 Investment research — study room types, capacity and review counts before buying.

🚀 How to use

  1. Enter one or more Location queries (for example London), or paste Airbnb Start URLs.
  2. Set Maximum listings (10 by default).
  3. Optionally add dates, guests, price range, currency and locale.
  4. Click Start.
  5. Export the dataset to JSON, CSV or Excel, or pull it through the API.

📥 Input

FieldTypeDescription
locationQueriesarrayCities or destinations, typed as in Airbnb search.
startUrlsarrayAirbnb search URLs or listing URLs such as https://www.airbnb.com/rooms/15152603.
maxResultsintegerMaximum listings. Default 10.
checkIn, checkOutstringDates as YYYY-MM-DD.
priceMin, priceMaxintegerNightly price range in the selected currency.
currency, localestringPrice currency (default USD) and text language (default en-US).
minBeds, minBedrooms, minBathroomsintegerMinimum sizes.
adults, children, infants, petsintegerGuest counts.
proxyConfigurationobjectDatacenter proxies by default.
{
  "locationQueries": ["London"],
  "maxResults": 10,
  "checkIn": "2026-12-01",
  "checkOut": "2026-12-06",
  "adults": 2,
  "currency": "USD",
  "locale": "en-US"
}

A listing URL returns that stay, and a search URL keeps its filters:

{
  "startUrls": [{ "url": "https://www.airbnb.com/rooms/15152603" }],
  "maxResults": 10
}

📤 Output

One dataset row per listing.

FieldDescription
id, title, urlListing id, name and link.
location, locationSubtitle, coordinatesPlace name and latitude/longitude.
roomType, propertyType, personCapacityType and guest capacity.
priceTotal label for the dates, qualifier, and a breakdown when Airbnb returns one.
ratingOverall score, review count and category scores.
host, coHostsPublic host name, photo, ratings and response details.
amenities, highlights, houseRulesListing page details.
imagesPhotos with captions and orientation.
description, thumbnailText and cover image.

Example item (trimmed):

{
  "id": "1775321230409460111",
  "title": "CC F63, 2BR, 2 Bathroom /Hyde Park & Oxford st.",
  "url": "https://www.airbnb.com/rooms/1775321230409460111?locale=en-US&currency=USD&check_in=2026-11-02&check_out=2026-11-07",
  "location": "London",
  "locationSubtitle": "Greater London, England, United Kingdom",
  "coordinates": { "latitude": 51.51701, "longitude": -0.16854 },
  "propertyType": "Entire rental unit",
  "roomType": "Entire home/apt",
  "personCapacity": 6,
  "rating": { "cleanliness": 5, "location": 5, "value": 5, "guestSatisfaction": 5, "reviewsCount": 1 },
  "host": { "name": "Jane Doe", "isSuperHost": false, "isVerified": true, "ratingCount": 13, "ratingAverage": 4.77 },
  "price": { "label": "$1,757 for 5 nights", "qualifier": "for 5 nights", "price": "$1,757" },
  "images": [
    { "caption": "Living room image 1", "imageUrl": "https://a0.muscache.com/im/pictures/hosting/...", "orientation": "LANDSCAPE" }
  ]
}

💰 Pricing

Each saved listing costs $0.0022, which is $2.20 per 1,000 listings. Platform usage (compute and proxy) is charged separately.

Worked example: a 10-listing run costs $0.022 in listing fees plus a small amount of compute and datacenter proxy traffic.

❓ FAQ

Is it legal to scrape Airbnb? The actor only reads public listing data. You are responsible for using it in line with applicable law and Airbnb's terms.

Do I need a login or my own proxy? No. Proxies are included, and datacenter works for the public listing API.

Can I scrape a single listing? Yes. Paste https://www.airbnb.com/rooms/<id>.

Why do some prices lack a tax line? Airbnb only returns the lines it shows for that stay and those dates. price.label is the figure from the search result.

What does a run of zero rows mean? The destination or filters matched nothing, or the URL was not an Airbnb search or listing link. The run still finishes.

Can I schedule it or use the API? Yes, on a schedule or through the API.

⚠️ Limits

  • One Airbnb search shows at most about 200 to 270 listings. The run says so in its status when a search runs out; add nearby places or filters to get more.
  • Results depend on what Airbnb shows for that search.
  • Dates in the past, malformed dates and reversed ranges are fixed or ignored, and the status message says which.
  • Private or removed listings are skipped.
  • Filters (dates, price, guests, rooms) apply to city searches and search URLs.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.