Airbnb Scraper - Listings, Prices, Details & Reviews avatar

Airbnb Scraper - Listings, Prices, Details & Reviews

Pricing

Pay per event

Go to Apify Store
Airbnb Scraper - Listings, Prices, Details & Reviews

Airbnb Scraper - Listings, Prices, Details & Reviews

Scrape Airbnb stays without a browser: search any place or paste a search URL, filter by dates, guests, price, room type, bedrooms and amenities, go beyond the 270-result cap with map tiling. Optional full details (host, rating breakdown, rules, cancellation, photos) and reviews. Pay per result.

Pricing

Pay per event

Rating

0.0

(0)

Developer

AICORP Tools

AICORP Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 hours ago

Last modified

Categories

Share

Airbnb Scraper β€” Listings, Prices, Details & Reviews

Extract Airbnb stays for any destination: search by place name or paste an Airbnb search URL, set dates and guests, and get every stay with its price, rating, host badges, bedrooms and coordinates. Turn on listing details for the full description, amenities, house rules, rating breakdown, host, all photos and the cancellation policy, or add public guest reviews. Airbnb only shows 270 stays per search; deep search splits the map into tiles to reach every stay in a busy city.

Built for speed and low cost: it calls the same JSON endpoints the Airbnb website uses, over plain HTTP (no browser). Requests are paced, retried and moved to a fresh IP when blocked, so scheduled runs keep succeeding.

What you can do with it

  • Revenue and pricing research: nightly and total prices for the same dates across a whole city or neighbourhood
  • Competitor and market analysis: count listings by room type, bedrooms, Superhost status and rating in any market
  • Investment screening: find high-rated stays, review counts and amenities before buying or managing a property
  • Guest sentiment: collect public review text and ratings to see what guests praise or complain about
  • Travel apps and comparison sites: availability and total price for chosen dates in any currency and language

Features

  • πŸ”Ž Search by place or URL: type "Lisbon, Portugal" or paste any airbnb.com search URL; its dates, guests and filters are kept
  • πŸ“… Dates and guests: check-in and check-out (or nights), adults, children, infants, pets. With dates you get the total price for the stay and only available stays
  • πŸ’Ά 33 currencies and 15 languages for prices, titles and descriptions
  • 🧹 Filters: min and max nightly price, room type (entire home, private room, hotel room, shared room), min bedrooms, beds and bathrooms, 24 amenities (Wifi, Kitchen, Pool, Washer, Air conditioning...), Superhost, Guest favorite, Instant Book, free cancellation
  • πŸ—ΊοΈ Deep search beyond 270 results: when a search fills all 15 pages, its map area is split into four tiles, recursively, until each tile is read completely
  • 🧾 Listing details (optional): full description, amenities by group, house rules with check-in and check-out times, safety notes, sleeping arrangements, rating breakdown (cleanliness, accuracy, check-in, communication, location, value) and star distribution, host name, Superhost, host rating, years hosting and response rate, coordinates, all photos, cancellation policy timeline
  • ⭐ Reviews (optional): reviewer first name, rating, date, text, translation when the review is not in your language and the host's reply, newest first
  • πŸ“Œ Single listings by URL or ID
  • πŸ”’ No personal data: only what Airbnb shows publicly. No logins, no contact details, no reviewer profiles or photos.

Input example

{
"locations": ["Lisbon, Portugal", "Porto, Portugal"],
"checkIn": "2026-12-04",
"nights": 3,
"adults": 2,
"currency": "EUR",
"minPrice": 50,
"maxPrice": 200,
"roomTypes": ["entire_home"],
"amenities": ["wifi", "kitchen"],
"maxItemsPerSearch": 300,
"includeDetails": true,
"includeReviews": true,
"maxReviewsPerListing": 50,
"startUrls": ["https://www.airbnb.com/rooms/51797569"]
}

Output

Every record has a recordType: listing or review. A search result looks like this:

{
"recordType": "listing",
"id": "33460323",
"url": "https://www.airbnb.com/rooms/33460323",
"name": "2 Be Part 2 - Bairro Alto",
"propertyLabel": "Apartment in Bairro Alto",
"latitude": 38.71266,
"longitude": -9.14494,
"rating": 4.88,
"reviewCount": 212,
"isSuperhost": true,
"isGuestFavorite": false,
"bedrooms": 2,
"beds": 3,
"bathrooms": 1.0,
"currency": "EUR",
"totalPrice": 359.0,
"originalTotalPrice": null,
"pricePerNight": 119.67,
"nights": 3,
"freeCancellation": true,
"thumbnail": "https://a0.muscache.com/im/pictures/...",
"images": ["..."],
"checkIn": "2026-12-04",
"checkOut": "2026-12-07",
"adults": 2,
"searchQuery": "Lisbon, Portugal",
"page": 1,
"scrapedAt": "2026-09-28T19:19:42+00:00"
}

With includeDetails (and always for listing URLs and IDs) the record also has:

{
"detailsScraped": true,
"propertyType": "Entire condo in Paris, France",
"description": "Ideally located in the heart of Paris ...",
"maxGuests": 3,
"locationText": "Paris, Île-de-France, France",
"isExactLocation": true,
"ratingBreakdown": {"accuracy": 4.91, "cleanliness": 4.92, "checkIn": 4.91, "location": 4.95, "communication": 4.92, "value": 4.82},
"ratingDistributionPercent": {"5": 94.2, "4": 4.7, "3": 0.8, "2": 0.0, "1": 0.4},
"hostName": "Pascale",
"isSuperhost": true,
"hostRating": 4.92,
"hostYears": 5,
"hostResponseTime": "Responds within an hour",
"amenities": ["Kitchen", "Wifi", "Hair dryer"],
"amenityGroups": {"Bathroom": ["Bathtub", "Hair dryer"]},
"unavailableAmenities": ["Air conditioning"],
"houseRules": {"checkIn": "Check-in after 4:00 PM", "checkOut": "Checkout before 10:00 AM", "items": ["No pets", "No parties or events"]},
"sleepingArrangements": [{"room": "Bedroom", "beds": "2 single beds"}],
"photos": [{"url": "https://a0.muscache.com/im/pictures/...", "caption": null}],
"cancellationPolicy": "Free cancellation for 24 hours. After that, the reservation is non-refundable.",
"cancellationTimeline": [{"when": "Within 24 hours after booking", "refund": "Full refund", "terms": "Get back 100% of what you paid."}],
"totalPrice": 168.0,
"priceBreakdown": [{"label": "2 nights x €84.00", "amount": 168.0, "amountText": "€168.00"}],
"available": true
}

A review record:

{
"recordType": "review",
"reviewId": "1668043507155412133",
"listingId": "51797569",
"listingUrl": "https://www.airbnb.com/rooms/51797569",
"reviewerName": "Angela",
"rating": 5,
"text": "It was a nice stay",
"language": "en",
"translatedText": null,
"createdAt": "2026-04-20T11:04:41Z",
"dateText": "April 2026",
"hostResponse": "Dear Angela, ...",
"scrapedAt": "2026-09-28T19:19:42+00:00"
}

Export results as JSON, CSV, Excel or HTML, or pull them via the Apify API, webhooks, Make, Zapier, n8n or MCP.

Pricing

Pay only for what you get: a small fee per run start, a fee per listing, a higher fee per listing with details (each needs its own page requests) and a fee per review. Proxy costs are included.

FAQ

How many stays can I get per search? Airbnb shows at most 270 stays (15 pages of 18) for any search. Turn on deep search to split the map into tiles and read them one by one, or split the search yourself by price range, room type or neighbourhood.

Are prices per night or for the whole stay? With a check-in date, totalPrice is the total Airbnb shows for those dates and pricePerNight is that total divided by the nights. Without dates Airbnb shows a nightly price and only pricePerNight is filled. Prices are before taxes when Airbnb shows them that way.

Why is the location of a listing approximate? Airbnb blurs the pin of many listings until you book. isExactLocation tells you which ones are exact.

Do I get host contact details or guest profiles? No. The Actor returns only the public listing, the host's first name as shown on the listing, and reviewers' first names with their public review text.

Does it need a proxy? The default Apify datacenter proxy works for normal runs. Choose a residential proxy for very large deep searches.

Is this legal? The Actor collects only publicly visible data, without logins. You are responsible for handling the data in line with applicable laws (such as GDPR) and Airbnb's terms.

Something broke? Open an issue on the Issues tab. We monitor the Actor daily and usually respond within 24 hours.