Airbnb Scraper: Listings, Prices, Calendar and Reviews
Airbnb Scraper is an Apify actor (API) by CheapAPI Labs. Listings inside a city boundary with prices for your dates, amenities, host details, a 12 month calendar and reviews. It costs $2.79 per 1,000 listings on the Apify Free plan and $0.275 on Gold, billed through your Apify account with no API key.
Compared with the most used Airbnb actor on Apify Store (about 17,500 users): 1,000 listings with details costs $2.80 on Free and $0.35 on Gold, all in here and $4.00 and $1.00, also all in there (Apify Store listing prices, checked October 2026). Both prices include Apify platform usage and proxies.
Our prices updated 30 October 2026; competitor prices as checked in the comparison. 2 Apify users have run this actor (Apify Store count, 30 October 2026).
What does Airbnb Scraper return?
Scrape Airbnb listings for any city with no 240-result cap: every home with its name, link, type, bedrooms, beds, baths, rating, review count, location and the price for your dates. Turn on add ons for full listing details (amenities, house rules, highlights, rating categories, host stats and languages, all photos with captions, and with your dates the full price breakdown, availability and cancellation terms), an availability calendar (up to 12 months) with an occupancy estimate, and reviews. Built for short term rental investors, property managers and market researchers. No Airbnb account, cookies or browser needed.
| Quick facts | |
|---|---|
| Price | $2.80 per 1,000 listings with full details on the Free plan, $0.35 on Gold+, all in: Apify platform usage and proxies included; no start fee |
| Depth | up to 10,000 listings per location, dense areas are split into smaller map areas automatically |
| Speed | about 1,800 listings per minute on the Apify platform (search only; 3,000 New York listings in 97 s, October 2026) |
| Add ons | details (with your dates: price breakdown, availability, cancellation terms), prices with taxes, host profile, availability calendar + occupancy estimate, reviews |
| Languages | 28 display languages for names, descriptions, amenities, rules and reviews, numbers and facts are read the same in every language |
| Input | city or area names, Airbnb search URLs (with all their filters) or listing URLs |
Pricing in one line: you pay a few tenths of a cent per listing (from $0.000275 on Gold+ to $0.0028 on the Free plan), plus optional add ons, platform usage and proxies are included, nothing is charged for failed or skipped listings, and never more than the maximum cost you set for a run.
Why this Actor
- Working links and stable ids: every row has the listing's real Airbnb id and a working
https://www.airbnb.com/rooms/<id>link, the same ids the details, calendar and reviews add ons load successfully. - Tested on the Apify platform before release: 22 of 22 test runs succeeded (up to 3,000 listings and 3,659 reviews per run), with zero lost map areas and rows delivered always equal to rows charged.
- Support that answers: open an issue with your run ID and we aim to reply within one working day.
- No 240-result limit: Airbnb shows at most ~280 homes per search; this Actor splits the map until every area shows all of its homes, in our platform tests 3,000 New York listings took 97 seconds with zero failed requests.
- Listing fees at least 30% below the most used Airbnb Actor on every plan: $2.80 / $0.35 per 1,000 listings with full details (Free / Gold+) against $4.00 / $1.00 for its listings (its Diamond price is $0.50).
- Investor data in one run: prices for your dates, up to 12 months of availability, the share of unavailable days in the next 30/90 days and over the whole calendar (occupancy estimate), next available date and typical minimum stay, no separate calendar Actor.
- Search filters included: dates, guests, price range, type of place, bedrooms, beds, bathrooms, or paste any Airbnb search URL and all of its filters (amenities, property types…) are used.
- Fair, transparent billing: you pay per delivered listing, add on and review; add ons that are not available are free; your maximum cost per run is always respected (rows delivered always equal rows charged).
- Privacy by default: host and reviewer names, photos and locations are left out unless you turn them on (only cohosts' first names, as shown on the listing page, are always included).
One example row from a real run, shortened:
{
"type": "listing",
"id": "7743405",
"url": "https://www.airbnb.com/rooms/7743405",
"name": "Chiado Luxury Apartment",
"propertyType": "Entire rental unit",
"area": "Lisbon",
"bedrooms": 3,
"beds": 4,
"bathrooms": 2,
"rating": 4.99,
"reviewsCount": 502,
"isGuestFavorite": true,
"latitude": 38.7107,
"longitude": -9.1442,
"priceTotal": 2040,
"nights": 5,
"pricePerNight": 408,
"priceLines": [
{
"label": "5 nights x $407.95",
"amount": 2039.74
}
],
"currency": "USD",
"checkIn": "2026-12-07",
"checkOut": "2026-12-12",
"datesChosenByAirbnb": true,
"roomType": "Entire home/apt",
"personCapacity": 6,
"ratingCleanliness": 5,
"ratingValue": 4.9,
"amenities": [
"Bathtub",
"Hair dryer",
"Shampoo"
],
"houseRules": [
…
}Which fields do you get?
Every row has type (listing or review). Listing rows:
| Field | Example | Notes |
|---|---|---|
id, url, name |
7743405, https://www.airbnb.com/rooms/7743405, Chiado Luxury Apartment |
stable Airbnb listing id |
propertyType, area |
Entire rental unit, Lisbon |
|
bedrooms, beds, bathrooms |
3, 4, 2 |
|
rating, reviewsCount, isGuestFavorite, isNewListing, badges |
4.99, 502, true |
|
latitude, longitude |
38.7107, -9.1442 |
|
priceTotal, pricePerNight, nights, priceOriginalTotal, priceLines, priceLabel, currency |
2040, 408, 5 |
for checkIn–checkOut, as Airbnb's search shows it (usually before taxes; the details add on with dates gives the full breakdown) |
checkIn, checkOut, datesChosenByAirbnb |
2026-12-07, 2026-12-12, true |
without your dates Airbnb prices each home's next available nights |
thumbnailUrl, photos, searchQuery, position, scrapedAt |
||
Details add on: roomType, personCapacity, description, amenities, amenitiesNotIncluded, houseRules, checkInTime, checkOutTime, petsAllowed, sleepingArrangements, ratingCleanliness, ratingAccuracy, ratingCheckIn, ratingCommunication, ratingLocation, ratingValue, locationDescription, locationIsExact, locationDetails, city, neighborhood, neighborhoodSummary, country, locationPath, descriptionHtml, descriptionLanguage, highlights, amenityGroups, hostId, hostIsSuperhost, hostIsVerified, hostRating, hostReviewsCount, hostYearsHosting, hostLanguages, hostResponseRate, hostResponseTime, coHostsCount, photosCount, photoCaptions, photoOrientations, coHosts, homeTier, isLuxe, cancellationPolicy, pageTitle, metaDescription, appLink, iosLink, androidLink (+ hostName, hostPhotoUrl, hostAbout, hostLivesIn only with Include names and photos) |
Entire home/apt, 6, Check-in after 4:00 PM, ["English", "Portuguese"], 100 |
all photos in photos |
Prices with taxes add on: the quote… fields above as Airbnb shows them to visitors from Europe, quoteTaxes, quoteTaxesShown |
13.46, true |
total with taxes and the tax amount |
Host profile add on: hostProfileUrl, hostListingsCount, hostListings (id, url, name, type, rating, reviews, rooms), hostReviewsFromGuestsCount, hostReviewsFromHostsCount, hostProfileRating, hostIdentityVerified, hostVerifications, hostVerifiedSince, hostMonthsHosting, hostMonthsOnAirbnb, hostTripsCount, hostIsBusiness, hostReviewsFromGuestsPreview, hostReviewsFromHostsPreview (newest reviews on the profile) (+ hostName, hostPhotoUrl, hostAbout, hostLivesIn, hostProfileFacts, hostInterests only with Include names and photos) |
7, 3465, 125 |
one request per host, shared by all of the host's listings |
Calendar add on: availableDays30, availableDays90, availableDaysInCalendar, unavailablePercent30, unavailablePercent90, unavailablePercentInCalendar, nextAvailableDate, minNightsTypical, calendarFrom, calendarTo, calendarDaysCount (+ calendar day list on request) |
5, 83.3, 2026-10-27, 4 |
occupancy estimate; "InCalendar" = today to the end of the loaded months (Airbnb gives at most 12 months = 336 to 365 days) |
Details with your dates (same request, no extra fee): isAvailable, instantBook, cancellationTerms, priceQuoteAvailable, priceQuoteNote, quoteCheckIn, quoteCheckOut, quoteNights, quoteGuests, quoteTotal, quoteOriginalTotal, quoteNightlyRate, quoteAveragePerNight, quoteCleaningFee, quoteServiceFee, quoteOtherFees, quoteTaxes, quoteDiscounts, quoteLines, quoteNote |
true, Free cancellation before November 11, 386.86, 13.46 |
for your dates and guests |
notes |
Not available this time (not charged): calendar. |
only when an add on could not be loaded |
Review rows: listingId, listingUrl, id, rating, date, language, text, textTranslated and translatedFrom (Airbnb's translation into the chosen language), hostResponse, hostResponseTranslated, highlight, tripDetails, photos (+ reviewerName, reviewerPhotoUrl, reviewerLocation only with Include names and photos).
The dataset has four views, Listings, Listing details, Availability & occupancy, Reviews, and every run saves a RUN_SUMMARY record (listings found and delivered, homes outside the boundary, map areas and pages searched, add ons delivered, add ons and prices for your dates not available, failed listings and places with reasons, requests and retries, whether the spending limit was reached).
How much does Airbnb Scraper cost?
You pay per event, through your Apify account. Main price: $2.79 per 1,000 listings on the Apify Free plan and $0.275 on Gold. Every event and plan:
| Event | Free | Bronze | Silver | Gold |
|---|---|---|---|---|
| ListingOne delivered listing from a search (or a listing URL): name, link, type, bedrooms/beds/baths, rating, reviews count, price for the dates, location, photos. No start fee. | $0.00279 | $0.00139 | $0.00104 | $0.000275 |
| Listing details (add on)Option 'Listing details' (always for listing URLs): description, amenities, house rules, rating categories, host stats and all photos for one listing. | $0.00001 | $0.00001 | $0.00001 | $0.000075 |
| Availability calendar (add on)Option 'Availability calendar': up to 12 months of availability for one listing, with the occupancy estimate and next available date. | $0.0021 | $0.0018 | $0.0015 | $0.0012 |
| Host profileOption 'Host profile': the host's public profile (listings, review counts, verification, months hosting) for one delivered listing. One request per host is shared by all of that host's listings. | $0.0014 | $0.000945 | $0.00084 | $0.000175 |
| Price with taxesOption 'Prices with taxes': the listing's total for your dates with taxes, as Airbnb shows it to visitors from Europe. | $0.00029 | $0.00029 | $0.00029 | $0.00029 |
| ReviewOne delivered review row (rating, date, text, host response). | $0.0035 | $0.00287 | $0.00224 | $0.0007 |
How do I call Airbnb Scraper API from code?
Every run is one HTTP request to the Apify API with your Apify token; the input below is the actor's own example. The synchronous endpoint returns the rows in the response for runs up to 300 seconds; for longer runs start a run and fetch its dataset.
curl -X POST "https://api.apify.com/v2/acts/cheapapi~airbnb-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"locations":["Lisbon, Portugal"],"maxResults":20}'With the JavaScript client:
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('cheapapi/airbnb-scraper').call({
"locations": [
"Lisbon, Portugal"
],
"maxResults": 20
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();How does Airbnb Scraper compare with alternatives?
Actor fees of public Apify Store listings (Free plan / Gold plan), checked October 2026:
| Option | 1,000 listings, search data | 1,000 listings with details | 1,000 reviews | Results per search | Calendar / occupancy |
|---|---|---|---|---|---|
| This Actor | $2.79 / $0.275 | $2.80 / $0.35 | $3.50 / $0.70 | up to 10,000 per location | yes (add on) |
| Most used Airbnb Actor (~17,500 users) | , (always loads details) | $4.00 / $1.00 ($0.50 Diamond) | separate Actor: $5.00 / $2.30 ($1.00 Diamond) | ~240 | no |
| Most used Airbnb calendar Actor (~280 users) | , | , | , | , | $3.00 per 1,000 results, $10 per 1,000 priced dates |
All in prices on both sides: like the most used Actor, this Actor's prices include Apify platform usage and proxies, the fees above are the whole cost. Details cost just $0.01 per 1,000 listings on the Free, Bronze and Silver plans, so listings with details cost 30% less than that Actor's listings on every plan (Gold+: $0.35 vs its Diamond $0.50); search only listings cost less again. With the host profile add on, listings with details and host profile cost 30% less than that Actor's listings with host profiles on every plan (Gold+: $0.525 vs its Diamond $0.75).
What is it used for?
- Short term rental investing: find markets and properties with high occupancy and nightly rates before buying.
- Dynamic pricing and revenue management: compare your nightly rate with every competing home for the same dates and guests.
- Market research: count supply by neighbourhood, property type and size; track it monthly with a schedule.
- Property management prospecting: find active, well reviewed listings in your area (host stats included; names only on request).
- Travel and data products: feed listings, photos and availability into dashboards or apps.
- Review analysis: collect guest reviews to study what guests praise or complain about.
What is not included?
- Experiences, Airbnb Luxe and long term "monthly stays" search pages, homes (stays) search only.
- Booked vs host blocked days, Airbnb shows both as "unavailable"; the occupancy figure is an estimate (upper bound).
- Revenue or ADR history like paid analytics tools, this Actor gives today's live data you can build history from (schedule it).
- Taxes Airbnb does not list, with Prices with taxes you get what Airbnb shows visitors from Europe (taxes itemised); a stay without listed taxes has
quoteTaxesShown: false. - Cancellation policy name, Airbnb's current listing page gives the terms for your dates (
cancellationTerms), and the policy name (cancellationPolicy) only sometimes. - Host contact details (phone, email), Airbnb does not publish them.
What are the limits?
- Homes (stays) only; experiences are not included.
- Occupancy is an estimate (booked and host blocked days look the same).
- Locations are geocoded with OpenStreetMap; ambiguous names use the best match, add the country (e.g.
Paris, France) or paste an Airbnb search URL with its map. Places it does not know are skipped (not searched worldwide). - Up to 10,000 listings per location or search URL per run.
- Airbnb changes its website from time to time; the Actor finds the current search query automatically, other changes may need an update.
- Reviews come newest first; review text is in the original language.
Questions about Airbnb Scraper
Is it legal?
The Actor reads public listing pages the same way a browser does, without logging in. Airbnb's terms restrict automated access, so use the data responsibly and in line with the laws that apply to you. Host and reviewer names, photos and locations are personal data, they are off by default; turn them on only with a lawful basis (e.g. under the GDPR).
How fresh is the data?
Live: every run reads Airbnb at that moment.
How do I export the results?
Open the run's Output or Storage → Dataset tab and download JSON, CSV, Excel, HTML or XML, or use the views (Listings, Listing details, Availability & occupancy, Reviews) to export only those columns. Through the API: GET https://api.apify.com/v2/datasets/<datasetId>/items?format=csv&view=listings&token=<YOUR_TOKEN>.
How does it get more than 240 results?
Airbnb shows at most about 280 homes per search. The Actor checks how many homes each map area has and splits dense areas into four smaller ones until each area shows all of its homes.
Why are prices for different dates in each row?
Without Check in/Check out, Airbnb prices every home for its own next available nights (datesChosenByAirbnb: true). Give dates to compare prices for the same stay.
Is unavailablePercent the occupancy rate?
It is an estimate: Airbnb marks a day unavailable when it is booked or blocked by the host, so the real occupancy is equal or lower.
Why did I get fewer listings than I asked for?
The area or your filters have fewer homes, listings are not available for your dates, or homes were outside the place's boundary (outsideBoundarySkipped in RUN_SUMMARY; turn off Only homes inside the place's boundary to keep them). A place the map does not know is skipped and reported.
Why was I charged for a listing without some fields?
You are charged for the listing row; add ons that were not available are free and named in notes.
Do I need proxies?
No. Apify's proxies are used automatically and included in the price. If Airbnb ever refuses requests, the run stops with a clear message and nothing more is charged.
Do I need an Airbnb account?
No.
Run Airbnb Scraper on Apify
The form opens with a working example. Free Apify accounts get a small monthly allowance.