Airbnb Scraper — Listings, Prices, Reviews & Calendars avatar

Airbnb Scraper — Listings, Prices, Reviews & Calendars

Pricing

from $3.00 / 1,000 listings

Go to Apify Store
Airbnb Scraper — Listings, Prices, Reviews & Calendars

Airbnb Scraper — Listings, Prices, Reviews & Calendars

Scrape Airbnb listings by location or search URL: prices for your dates, ratings, rooms, coordinates, hosts, amenities and house rules, plus guest reviews and availability calendars.

Pricing

from $3.00 / 1,000 listings

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Scrape Airbnb the way a guest sees it: search any location (or paste any Airbnb search URL) and get every listing with its price for your dates, rating, rooms, coordinates and badges. Turn on details for the full listing page (description, amenities, house rules, check-in/out times, host profile, sub-ratings, license number), or switch the mode to collect guest reviews or availability calendars. No login, no browser, no cookies needed.

What you can do with it

  • Compare prices of a city or neighborhood for specific dates (short-term rental market research, pricing tools).
  • Build lead lists of hosts and Superhosts, or track competitors' listings.
  • Analyse guest reviews (sentiment, host responses, languages) for any listing.
  • Track occupancy: day-by-day availability and minimum-night rules for up to 12 months.
  • Run it on a schedule and get only new or changed listings, reviews or calendars.

What data does it extract?

Listings (mode: listings) — one item per listing from your searches:

FieldExample
id, url32422325, https://www.airbnb.com/rooms/32422325
name, title, subtitleBrand new apartment right in the heart of Alfama., Apartment in Santa Maria Maior
propertyType, neighborhoodApartment, Santa Maria Maior
latitude, longitude38.71167, -9.12559 (approximate, as Airbnb shows it)
currency, checkIn, checkOut, nightsUSD, 2026-11-12, 2026-11-15, 3
pricePerNight, priceTotal, originalPriceTotal124.36, 374, 443 (struck-through price)
priceLabel, priceDetails$374 for 3 nights, originally $443, the price breakdown lines
rating, reviewCount, isNew4.82, 481, false
bedrooms, beds, bathrooms, roomInfo1, 2, 1, ["1 bedroom", "2 beds", "1 bath"]
isSuperhost, isGuestFavorite, badgesfalse, true, ["Guest favorite"]
freeCancellation, highlightstrue, ["Pay $0 today", "Free cancellation"]
thumbnail, photosphoto URLs
searchQuery, positionthe search the listing came from and its rank

With details (includeDetails: true, and always for listing URLs / ids) each listing also has: description, summary ("Entire rental unit in Lisbon, Portugal"), roomType ("Entire home/apt"), guests, amenities, amenityGroups, amenitiesNotIncluded, houseRules, checkInTime, checkOutTime, additionalRules, safetyAndProperty, sleepingArrangements, ratingDetails (cleanliness, accuracy, check-in, communication, location, value), listingHighlights, licenseNumber, hostId, hostName, host (Superhost, verified, rating, reviews, years hosting, response rate and time, about, profile URL), coHosts, all photos; with dates also available, instantBook and cancellationPolicy ("Free cancellation before November 15").

Reviews (mode: reviews): listingId, reviewId, rating, text, language, createdAt, localizedDate, stayDetails ("Stayed about a week"), reviewerName (first name as shown), reviewerLocation (or reviewerTenure such as "4 years on Airbnb" when no location is shown), reviewerProfileUrl, hostResponse, hostResponseDate, hostName, translatedText (Airbnb's English translation of reviews in other languages), photos.

Calendars (mode: calendar): id, name, from, to, availableDays, unavailableDays, firstAvailableDate, unavailableDates and days[] with date, available, availableForCheckin, availableForCheckout, minNights, maxNights.

How to scrape Airbnb listings

  1. Add one or more Locations ("Lisbon, Portugal", "Brooklyn, NY") or paste Airbnb URLs — search pages with any filters, map area or category, or listing pages.
  2. Set check-in / check-out dates and guests to get the exact price of that stay. Without dates Airbnb quotes a sample stay (see stayDates).
  3. Optional filters: price per night, type of place, bedrooms / beds / bathrooms, amenities, Superhost, Instant Book, Guest favorite, currency.
  4. Run. Export to JSON, CSV, Excel or use the API.
{
"mode": "listings",
"locations": ["Lisbon, Portugal"],
"checkIn": "2026-11-12",
"checkOut": "2026-11-15",
"adults": 2,
"roomType": "entire",
"priceMax": 200,
"maxItems": 500
}

Output (shortened):

{
"type": "listing",
"id": "32422325",
"url": "https://www.airbnb.com/rooms/32422325",
"name": "Brand new apartment right in the heart of Alfama.",
"title": "Apartment in Santa Maria Maior",
"latitude": 38.71167,
"longitude": -9.12559,
"currency": "USD",
"checkIn": "2026-11-12",
"checkOut": "2026-11-15",
"nights": 3,
"pricePerNight": 124.36,
"priceTotal": 374,
"originalPriceTotal": 443,
"priceLabel": "$374 for 3 nights, originally $443",
"rating": 4.82,
"reviewCount": 481,
"bedrooms": 1,
"beds": 2,
"bathrooms": 1,
"isSuperhost": false,
"isGuestFavorite": true,
"freeCancellation": true,
"position": 4
}

With "includeDetails": true (shortened):

{
"name": "Casa Priorado/Pistachio Green Apartment",
"available": true,
"instantBook": false,
"cancellationPolicy": "Free cancellation before November 15",
"guests": 2,
"roomType": "Entire home/apt",
"propertyType": "Entire rental unit",
"checkInTime": "3:00 PM - 12:00 AM",
"checkOutTime": "11:00 AM",
"licenseNumber": "159944/AL",
"hostName": "Casa Priorado",
"host": { "id": "595519769", "isSuperhost": true, "rating": 4.95, "reviewCount": 230, "yearsHosting": 1,
"responseRate": "100%", "responseTime": "Responds within an hour" },
"amenities": ["City skyline view", "Hair dryer", "Wifi", "Kitchen", "..."],
"houseRules": ["Check-in: 3:00 PM - 12:00 AM", "Checkout before 11:00 AM", "2 guests maximum", "..."],
"ratingDetails": { "cleanliness": 4.95, "accuracy": 4.94, "checkin": 4.97, "communication": 4.98,
"location": 4.79, "value": 4.89 }
}

Airbnb's result list for one search ends after roughly 300-360 listings, however many places the search has. When a search has more, the scraper automatically splits it into nightly price bands (Airbnb's own price filter) and reads each band, so one location returns thousands of listings: a test run collected 1,500 unique Lisbon listings for fixed dates in 2.5 minutes. Set maxItems to what you need; you only pay for listings saved.

How to scrape Airbnb reviews

Set mode to reviews and add listing URLs / ids (or locations: the top maxListingsPerSearch listings of each search are used). Reviews come 50 per request, newest first by default (or most relevant / highest / lowest rated). reviewsNewerThan ("7 days", "2026-09-01") stops paging once a whole page is older.

{ "mode": "reviews", "startUrls": [{ "url": "https://www.airbnb.com/rooms/31820112" }], "maxReviewsPerListing": 200 }
{
"type": "review",
"listingId": "3777540",
"reviewId": "1778101155240201234",
"rating": 1,
"text": "Escadas muito sujas lugar muito sujo porta da entrada não trava qualquer um\nPode entrar",
"translatedText": "Very dirty stairs, very dirty place, entrance door doesn't lock, anyone can get in.\nYou can come in.",
"language": "pt",
"createdAt": "2026-09-19T07:29:35Z",
"stayDetails": "Stayed one night",
"reviewerName": "Ryan",
"reviewerTenure": "4 years on Airbnb",
"hostName": "Tin",
"hostResponse": "This is a residential building located in a safe residential area, ...",
"hostResponseDate": "2 weeks ago"
}

How to get Airbnb availability calendars

Set mode to calendar. Each listing gives one item with up to 12 months of days (from today): available or not, whether check-in / check-out is allowed that day, and the minimum / maximum nights. Airbnb no longer shows nightly prices in the calendar; for prices of specific dates use listings mode with check-in / check-out.

Monitor changes on a schedule

Turn on Only new or changed items and save the input as a task with a Schedule (Apify Console → Schedules). Each run remembers what earlier runs returned and outputs only listings that are new or whose total price for your dates, struck-through price or availability changed (changeType: "new" or "changed", with the old values in previousValues); in reviews mode only reviews not seen before; in calendar mode only listings whose availability changed on a day both runs cover (newlyUnavailableDates, newlyAvailableDates). Unchanged items are not saved and not charged. Use fixed dates, and a search whose results fit in maxItems (narrow it with filters or a map area): Airbnb reorders large result lists between visits, so on a broad search listings at the edge of the window can show up as new. Use monitoringKey to keep several schedules on the same search apart.

Does it work without login?

Yes. It reads the same public data a logged-out visitor sees, through Airbnb's own web API. No account, cookies or browser are needed, and nothing behind a login is collected.

Pricing

Pay per result, platform usage included in your Apify plan:

ItemPrice
Listing from search results$0.003
Listing with details (details on, or listing URL / id input)$0.0045
Review$0.0035
Availability calendar (one listing, up to 12 months)$0.002

Platform usage is small: about $0.007 per 1,000 search listings (1,500 listings: $0.0097, 67 requests).

Proxy note: the default Apify datacenter proxy works for Airbnb; no residential or Unblocker proxy is needed. Prices follow the currency you set (default USD); amounts converted from the host's currency can move by a few cents from day to day.

This actor collects publicly visible data only (listing pages, public reviews with the first name Airbnb shows, public host profile summaries) and nothing behind a login. Respect Airbnb's terms, privacy law (GDPR, CCPA) and the rights of hosts and guests when you store or use the data; do not use it to contact or profile private individuals.