Airbnb Detail Scraper | Listings, Hosts and Availability avatar

Airbnb Detail Scraper | Listings, Hosts and Availability

Pricing

from $1.23 / 1,000 listings

Go to Apify Store
Airbnb Detail Scraper | Listings, Hosts and Availability

Airbnb Detail Scraper | Listings, Hosts and Availability

Airbnb scraper for full listing details: paste listing links, ids, search links or just a city and get description, rooms, beds, amenities, house rules, host profile, ratings by category, registration number, availability and every photo. 20 listings in 19 seconds, 74 fields each. No login.

Pricing

from $1.23 / 1,000 listings

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Airbnb Detail Scraper | Listings, Hosts and Availability (2026)

Airbnb listings, 74 fields each, from any URL.

From SilentFlow. Creators of Facebook Search Scraper and JD Products Scraper (#1 for โ€œjd scraperโ€ in Apify Store search), with 890,000+ combined lifetime runs.

The whole Airbnb listing page of every stay on your list, one row per listing: description, rooms and beds, every amenity, house rules, host profile and response rate, the six category ratings, what guests say most, the local registration number, the coming availability and every photo. Our default test run read 20 listings, from a private room in Queens to a guesthouse in Austin, in 18 seconds.

Why choose this actor?

Copying listing pages into a spreadsheet one tab at a time? Building a comp set from a few columns because the rest of the page never makes it out? Starting every run by hunting down listing links you do not have yet?

  • 61 filled fields per listing, not 35. On our default run (20 listings: 3 named one by one and the first 17 shown for Austin, TX), 61 data fields were filled on at least half of the rows, as flat columns: property and room type, guests, bedrooms, beds, baths, highlights, amenities and the ones the place lacks, sleeping arrangements, house rules, safety features, host name, rating, review count, years hosting, response rate and response time, the overall rating with its six categories (accuracy, cleanliness, check-in, communication, location, value) and the share of 5 to 1 star reviews, review themes with their summaries, city, state, country code, coordinates, neighborhood and transit notes, and every photo with its room. The most used alternative announces 35 fields.
  • Start from a city, not only from links. Type a place (Austin, TX, Lisbon, Portugal) and get the full page of the listings Airbnb shows there, or paste listing links, search links with their filters, or bare listing ids, all in the same run. In our test, Lisbon, Portugal gave 23 full listings over 2 search pages next to 2 listing ids. The most used alternative takes links and ids only.
  • Registration number and availability in the same row. The licence number hosts show for their city came out on 8 of the 20 default rows (NYC OSE-STRREG-0000923, Austin OL 2014 028089) and on 15 of 15 rows of a Paris run. With availability on, every one of the 20 default rows also carried the minimum and maximum nights, the open nights in the next 30 and 90 days and the next date a stay can start.

Try Airbnb Detail Scraper free

Try your first 20 listings

Paste this input in the JSON tab of the actor and hit Start:

{
"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }],
"listingIds": ["17222007", "5456"],
"searchQueries": ["Austin, TX"],
"maxItems": 20
}

It runs on the Apify Free plan. Each listing becomes one row of your dataset: open the Output tab to see the table, switch to the "Hosts and registration" or "Availability" view, or export the rows as JSON, CSV or Excel.

How it works

SilentFlow ยท Airbnb suite
ย ย Airbnb Professional Host Scraper
Emails, Phones, SIRET
ย ย Airbnb Pro Host Contact & Email Scraper
Airbnb Pro Host Contact &
ย ย Airbnb Search Scraper
Prices, Fees, Amenities,
ย ย Airbnb Search Scraper
Airbnb Search Scraper
Airbnb Detail Scraper
You are here

Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

You have access to the Airbnb Detail Scraper on Apify: silentflow/airbnb-detail-scraper
Input (no field is required, give at least one link, id or place):
- startUrls (array of {url} or strings): Airbnb listing links (https://www.airbnb.com/rooms/12937, any Airbnb country site) or search links (https://www.airbnb.com/s/Lisbon--Portugal/homes?adults=2), whose filters are kept
- listingIds (array of strings): listing ids, the number at the end of a listing link (17222007)
- searchQueries (array of strings): cities, regions or neighborhoods (Austin, TX); each gives the listings Airbnb shows there, up to about 270
- maxItems (integer, default 50): total listings saved, one row each
- language (string, default "en"): en, fr, es, de, it, pt, nl, ja, ko, zh, ru, pl, sv, da, tr, el, or a name such as French
- includeAvailability (boolean, default true): adds minNights, maxNights, availableDaysNext30, availableDaysNext90, nextAvailableDate
Output, one row per listing (78 data fields plus searchQuery and scrapedAt):
- Identity: id (string), url (string), title (string), listingType ("home" or "hotel")
- Content: description, propertyType, roomType, homeType (strings), personCapacity, bedrooms, beds (integers), bathrooms (number), bathroomLabel (string), highlights, amenities, unavailableAmenities, sleepingArrangements, houseRules, safetyFeatures, accessibilityFeatures (string arrays), amenitiesCount (integer), quietHours, checkInTime, checkOutTime (strings), petsAllowed, smokingAllowed, eventsAllowed, childrenAllowed, infantsAllowed (booleans), registrationNumber, descriptionLanguage (strings)
- Host: hostName, hostId, hostUrl, hostPictureUrl, hostResponseTime, hostAbout (strings), hostIsSuperhost, hostIsVerified (booleans), hostRating, hostResponseRate (numbers), hostReviewsCount, hostYearsHosting, hostMonthsHosting (integers), hostHighlights, hostLanguages, coHosts (string arrays)
- Ratings: rating, ratingAccuracy, ratingCleanliness, ratingCheckin, ratingCommunication, ratingLocation, ratingValue (numbers), reviewsCount (integer), ratingDistribution (object, star -> percent of reviews), reviewTags (array of {name, count, summary}), isGuestFavorite, isNewListing (booleans)
- Place: location, city, state, country, countryCode (ISO), neighborhoodOverview, gettingAround (strings), latitude, longitude (numbers), isLocationVerified (boolean)
- Availability: minNights, maxNights, availableDaysNext30, availableDaysNext90 (integers), nextAvailableDate (YYYY-MM-DD)
- Media: imageUrl (string), images (string array), imagesCount (integer), photos (array of {url, caption, room})
- Meta: searchQuery (the place or search link a row came from), scrapedAt (RFC 3339)
A value the page does not show is null.
Use apify-client for Python or JavaScript: client.actor("silentflow/airbnb-detail-scraper").call(run_input=...)

How to scrape Airbnb listing details

{
"startUrls": [{ "url": "https://www.airbnb.com/rooms/12937" }]
}

One row with the title, description, rooms, 36 amenities, house rules, the host and the six category ratings of this private room in Queens, plus its registration number and its coming availability.

Read a list of listing ids from your spreadsheet

{
"listingIds": ["17222007", "5456", "3176", "1516344059006265040"],
"maxItems": 4
}

Ids are the digits at the end of any airbnb.com/rooms/... link. A listing that is gone is named in the log and gives no row; the others are read as usual.

Get every listing of a city with its full page

{
"searchQueries": ["Lisbon, Portugal", "Austin, TX"],
"maxItems": 100,
"includeAvailability": true
}

Each place gives the listings Airbnb shows for it, page after page, each with its full page and availability, until maxItems is reached.

Input parameters

ParameterTypeDefaultWhat it does
startUrlsarrayprefilledListing links give that listing. Search links give the listings they show, with their filters.
listingIdsarrayprefilledListing ids, the number at the end of a listing link. Links are accepted here too.
searchQueriesarrayprefilledCities, regions or neighborhoods. Each gives the listings Airbnb shows there.
maxItemsinteger50How many listings the run saves in total, one row each.
languagestringenLanguage of titles, descriptions, amenities and house rules. A code (fr) or a name (French).
includeAvailabilitybooleantrueAdds minimum and maximum nights, open nights in the next 30 and 90 days and the next start date.

Accepted listing links. https://www.airbnb.com/rooms/{id}, with or without ? parameters, from any Airbnb country site (airbnb.fr, airbnb.co.uk, airbnb.com.au...), and /rooms/plus/{id} or /luxury/listing/{id} pages. Every row links back to https://www.airbnb.com/rooms/{id}.

Accepted search links. https://www.airbnb.com/s/{place}/homes with the filters Airbnb puts in the link: guests (adults=2), room type (room_types[]=Entire home/apt), price, amenities. The run starts from the first page of the search and walks the next ones.

Places. A city with its state or country (Austin, TX, Lisbon, Portugal), a region or a neighborhood (Montmartre, Paris). Airbnb shows up to 15 pages of 18 listings for a place, so a place gives up to about 270 listings. Add more places, or nearby neighborhoods, to go further.

Order of the rows. Listings named one by one (links and ids) come first, in the order given, then the listings of each search link and place. A listing given twice is read once.

What data can you extract from Airbnb?

Every row is one listing, with 78 data fields grouped the way you read the page:

  • Identity (4). id, url, title, listingType (home or hotel).
  • The place (27). description in plain text with its sections, propertyType ("Entire guesthouse"), roomType ("Entire home/apt"), homeType, personCapacity, bedrooms, beds, bathrooms and their label, highlights, amenities and amenitiesCount, unavailableAmenities (what the listing says it does not have), sleepingArrangements ("Bedroom: 1 queen bed, 1 sofa bed"), houseRules, quietHours, check-in and check-out times when the host sets them, whether pets, smoking, events, children and infants are allowed, safetyFeatures, accessibilityFeatures, registrationNumber, descriptionLanguage.
  • The host (16). Name, id, profile link and picture, Superhost and verified status, host rating and review count, years and months hosting, response rate and response time, the "about" text, profile highlights, spoken languages and co-hosts.
  • Ratings (12). Overall rating and review count, the six category ratings, the share of reviews per star, the review themes Airbnb sums up (name, how many reviews mention it, one-line summary), Guest favorite and new listing flags.
  • Location (10). The place line, city, state, country and its ISO code, latitude and longitude, the host's neighborhood and transit notes, and whether Airbnb verified the location.
  • Availability (5). minNights, maxNights, availableDaysNext30, availableDaysNext90, nextAvailableDate.
  • Media (4). The cover image, every photo link, the photo count and each photo with its caption and room. The default run averaged 45 photos and 26 amenities per listing.

Usable as is. id is the Airbnb listing id: it never changes, so it is safe to deduplicate and join on across runs. url is the listing's permanent page. Ratings are numbers (4.92), hostResponseRate is a percentage (100), ratingDistribution gives the percent of reviews per star, nextAvailableDate is a calendar date and scrapedAt is RFC 3339 in UTC. A value the page does not show is null, never an empty text or a 0.

Output example

One row of the default run (Austin). Lists are shortened to their first 3 items here; the row had 26 amenities, 5 house rules, 10 review themes and 16 photos.

{
"id": "5456",
"url": "https://www.airbnb.com/rooms/5456",
"title": "Walk to 6th, Rainey St and Convention Ctr",
"listingType": "home",
"description": "Great central location for walking to Convention Center, Rainey Street, East 6th Street, Downtown, Congress Ave Bats.\n\nFree wifi\n\nNo Smoking, No pets\n\nThe space\nCute Private Studio apartment located in Willow Spence National Historic District. It is walking distance from Convention Center (3 1/2...",
"propertyType": "Entire guesthouse",
"roomType": "Entire home/apt",
"homeType": "Guesthouse",
"personCapacity": 3,
"bedrooms": 1,
"beds": 2,
"bathrooms": 1,
"bathroomLabel": "1 bath",
"highlights": ["In East Austin, near 6th Street", "Charming vintage guesthouse", "Sylvia is an exceptional host"],
"amenities": ["Hair dryer", "Shampoo", "Hot water"],
"amenitiesCount": 26,
"unavailableAmenities": ["Washer", "Dryer", "Carbon monoxide alarm"],
"sleepingArrangements": ["Bedroom: 1 double bed, 1 single bed"],
"houseRules": ["Up to 3 overnight guests", "No pets", "No smoking: Including vaping and e-cigarettes"],
"petsAllowed": false,
"smokingAllowed": false,
"eventsAllowed": false,
"childrenAllowed": false,
"infantsAllowed": false,
"safetyFeatures": ["Exterior security cameras on property", "Carbon monoxide detector not required", "Smoke alarm installed"],
"accessibilityFeatures": null,
"registrationNumber": "OL 2014 028089",
"descriptionLanguage": "en",
"hostName": "Sylvia",
"hostId": "8028",
"hostUrl": "https://www.airbnb.com/users/show/8028",
"hostPictureUrl": "https://a0.muscache.com/im/users/8028/profile_pic/1329882962/original.jpg",
"hostIsSuperhost": true,
"hostIsVerified": true,
"hostRating": 4.85,
"hostReviewsCount": 721,
"hostYearsHosting": 16,
"hostMonthsHosting": 190,
"hostResponseRate": 100,
"hostResponseTime": "Responds within a few hours",
"hostAbout": "I am a licensed Real Estate Broker and owner of Armadillo Realty. I attended The University of Texas at Austin and fell in love with the small town that it was back in 1979...",
"hostHighlights": ["My work: Armadillo Realty", "Speaks Spanish"],
"hostLanguages": ["Spanish"],
"coHosts": null,
"rating": 4.85,
"reviewsCount": 721,
"ratingAccuracy": 4.88,
"ratingCleanliness": 4.86,
"ratingCheckin": 4.9,
"ratingCommunication": 4.83,
"ratingLocation": 4.73,
"ratingValue": 4.79,
"ratingDistribution": { "1": 0, "2": 0.3, "3": 1.3, "4": 11.3, "5": 87 },
"reviewTags": [
{ "name": "Walkability", "count": 278, "summary": "Most guests find the area very walkable, with short trips to downtown, Rainey Street, and the Convention Center." },
{ "name": "Hospitality", "count": 439, "summary": "Most guests find Sylvia a kind, responsive host who goes above and beyond." },
{ "name": "Location", "count": 434, "summary": "Most guests find the location great, with easy walks to downtown and Rainey Street." }
],
"isGuestFavorite": true,
"isNewListing": false,
"location": "Austin, Texas, United States",
"city": "Austin",
"state": "Texas",
"country": "United States",
"countryCode": "US",
"latitude": 30.26057,
"longitude": -97.73441,
"neighborhoodOverview": "My neighborhood is ideally located if you want to walk to bars and restaurants downtown, East 6th Street or Rainey Street. The Convention Center is only 3 1/2 blocks away and a quick 10 minute walk...",
"gettingAround": "Bus stop around the block. Uber, Lyft, Ride, scooters, bikes available.",
"isLocationVerified": true,
"minNights": 2,
"maxNights": 7,
"availableDaysNext30": 22,
"availableDaysNext90": 82,
"nextAvailableDate": "2026-11-04",
"imageUrl": "https://a0.muscache.com/im/pictures/14084884/b5a35a84_original.jpg",
"images": [
"https://a0.muscache.com/im/pictures/14084884/b5a35a84_original.jpg",
"https://a0.muscache.com/im/pictures/14084902/a82b1dc8_original.jpg",
"https://a0.muscache.com/im/pictures/239014/d52628f6_original.jpg"
],
"imagesCount": 16,
"photos": [
{ "url": "https://a0.muscache.com/im/pictures/14084884/b5a35a84_original.jpg", "room": "Bedroom" },
{ "url": "https://a0.muscache.com/im/pictures/14084902/a82b1dc8_original.jpg", "room": "Living room" },
{ "url": "https://a0.muscache.com/im/pictures/239014/d52628f6_original.jpg", "room": "Dining area" }
],
"scrapedAt": "2026-11-03T10:30:30Z"
}

Advanced usage

Watch the availability of a competitor set every week

{
"listingIds": ["5456", "1516344059006265040", "23860926", "747499"],
"includeAvailability": true,
"maxItems": 4
}

Schedule this input weekly in Apify. availableDaysNext30 and availableDaysNext90 falling from one week to the next show which of your neighbors are filling up, and minNights shows who raised their minimum stay for the season.

Pull the registration numbers of a regulated city

{
"searchQueries": ["Paris, France"],
"includeAvailability": false,
"maxItems": 200
}

Each row carries registrationNumber when the host shows one, next to the host name, the property type and the coordinates. In our Paris test, all 15 entire homes showed their 13-digit city number. Turn availability off when you only need the page: the run is quicker.

{
"startUrls": [
{ "url": "https://www.airbnb.com/s/Austin--TX/homes?adults=6&room_types%5B%5D=Entire%20home%2Fapt" }
],
"maxItems": 60
}

Set your filters on airbnb.com (guests, room type, amenities), copy the link from the address bar and paste it. Compare personCapacity, bedrooms, amenitiesCount, the six category ratings and reviewTags across listings that really compete with yours.

Get the listing pages in your team's language

{
"startUrls": [{ "url": "https://www.airbnb.fr/s/Paris--France/homes?room_types%5B%5D=Entire%20home%2Fapt" }],
"language": "fr",
"maxItems": 15
}

Titles, descriptions, amenities, house rules and host texts come back in French ("Sรจche-cheveux", "1 salle de bain"), while numbers, ids, links and coordinates stay the same. Sixteen languages are in the list, and any two-letter code can be typed.

Enrich a long list of ids for a model or a database

{
"listingIds": ["12937", "17222007", "5456", "3176"],
"includeAvailability": false,
"maxItems": 1000
}

Paste hundreds of ids exported from a spreadsheet, a CRM or a previous search, and pull the rows from the Apify dataset as JSON, CSV or Excel, or straight into your pipeline with the Apify API clients for Python and JavaScript. id is stable, so a new run can be merged with the last one on it.

FAQ

Do I need an Airbnb account or an API key? No. The actor reads the public listing pages anyone can open in a browser. There is no login and nothing to connect.

What is Airbnb? Airbnb is the largest marketplace for short-term rentals: entire homes, private rooms, guesthouses, boutique hotels and unique stays around the world, each with a public page listing its rooms, amenities, rules, host and reviews.

What exactly does a row contain? The listing page as a guest sees it before booking: description, rooms and beds, amenities, house rules, safety features, host profile, ratings by category, review themes, location, registration number when shown, photos, and the availability summary when it is on. The full list is in "What data can you extract from Airbnb?" above.

Does it give the nightly price? No. Airbnb prices a stay only for given dates and guests, so the row carries what does not depend on dates. The availability summary (open nights in the next 30 and 90 days, next start date, minimum and maximum nights) tells you how booked a listing is and on which terms.

How many listings can I get from one city? Airbnb shows up to 15 pages of 18 listings for a place, about 270. For more, add several places (a city and its neighborhoods) or several search links with different filters. Listings found twice are read once.

Can I mix links, ids and places in one run? Yes. Listings named one by one come first, then the listings of each search link and place, until maxItems is reached. In our Lisbon test, 3 ids (one of them removed from Airbnb) and one place gave 25 rows over 2 search pages.

How fresh is the data? Live. Every run reads the listing pages at the time it runs, with nothing cached. scrapedAt tells you when each row was read.

Why are some fields empty on some listings? They are empty on the page. Hosts choose what they show: many listings have no registration number, no quiet hours or no accessibility features, a new listing has no rating yet, and hotel rooms show less about the host than homes do. An empty value is null.

What happens with a listing that was removed? It is named in the log ("Listing 2818 is not on Airbnb anymore") and gives no row. The rest of the run goes on.

Are the photo links permanent? They are the photo addresses of the listing on Airbnb's own image servers, and they keep working as long as the host keeps the photo. To archive pictures, download them from the images list after the run.

Which languages are available? English, French, Spanish, German, Italian, Portuguese, Dutch, Japanese, Korean, Chinese, Russian, Polish, Swedish, Danish, Turkish and Greek in the list, and any two-letter code typed in. Airbnb translates titles, descriptions, amenities and rules into it.

Is it legal to scrape Airbnb? The actor reads publicly available listing pages, the way a visitor does. How you store and use the data is your responsibility; see "Legal compliance" below.

More SilentFlow scrapers

๐Ÿ›’ E-commerce

๐Ÿ’ผ Jobs

๐Ÿ  Real estate

๐Ÿ“ฃ Social media

๐Ÿข Business data

โœˆ๏ธ Travel

๐ŸŽฏ Lead generation

๐Ÿ”Ž SEO

๐ŸŽฌ Video

๐Ÿ“ฐ News

๐Ÿงฐ More tools

Support

Need something this scraper does not do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We do custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

This actor extracts publicly available listing data from Airbnb. It does not log in and does not bypass any login, paywall or CAPTCHA. Users are responsible for complying with Airbnb's terms of service and with the data protection laws that apply to them (GDPR in the EU, CCPA in California, PIPL in China). Host names, pictures, profile texts and the approximate location of a home are personal data: store them only for a legitimate purpose, keep them no longer than needed, and do not use them to contact hosts outside Airbnb or to profile them. Registration numbers and ratings are informational: check them with the city or with Airbnb before any compliance, lending or investment decision.

Airbnb Detail Scraper by SilentFlow: the whole listing page of every stay, one row each.