Airbnb Listing Details avatar

Airbnb Listing Details

Pricing

from $1.10 / 1,000 listings

Go to Apify Store
Airbnb Listing Details

Airbnb Listing Details

Full listing detail from Airbnb room URLs: the per-category rating breakdown, amenities with availability flags, house rules, host, and photos.

Pricing

from $1.10 / 1,000 listings

Rating

0.0

(0)

Developer

Drydock Data

Drydock Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Give it Airbnb room URLs, get back the full listing record: the per-category rating breakdown, every amenity with a flag for whether the listing actually has it, house rules, sleeping arrangements, host response stats, coordinates, and photos.

Why this one

The rating breakdown is the point. An overall 4.9 can sit on top of a 4.3 for cleanliness, and the overall number is already in any search result. This Actor returns cleanliness, accuracy, check-in, communication, location and value as separate numbers, which is the thing you cannot get without opening the listing.

Absent amenities stay in the data. Airbnb's page lists what a place doesn't have as well as what it does. Scrapers that flatten amenities to a list of titles drop the unavailable ones — so a listing that says "Unavailable: Dryer" comes back looking like it has a dryer, by omission. Here every amenity carries available: true or false, and amenityCount counts only the real ones.

A dead listing doesn't kill the run. Listings get removed constantly. One 404 in a batch of 500 is logged, counted, left uncharged, and written to the FAILED_LISTINGS key-value record — so a short dataset is always explainable rather than mysterious.

What it does not return

No prices. Airbnb renders listing facts into the room page but leaves price and availability to a later call, so anything price-shaped scraped from a room page is either empty or stale. Prices belong to a search, where they are real and where every listing can be priced for the same stay — that is what Airbnb Search Scraper is for. Its url field feeds straight into this Actor's input.

No host contact details. Name, superhost status and response stats, nothing more.

How to use it

  1. Paste room URLs or bare listing IDs into Listing URLs or IDs. Any regional domain works, and duplicates collapse so you are never charged twice for one listing.
  2. Set Language if you want descriptions and amenities in something other than English.
  3. Leave the Apify proxy on. Airbnb routes by exit IP and rate-limits hard.
  4. Run it, then take the results as JSON, CSV, Excel, or straight from the API.

Input

{
"listingUrls": [
"https://www.airbnb.com/rooms/26844351",
"29538827"
],
"locale": "en",
"includePhotos": true,
"maxPhotos": 20,
"proxyConfiguration": { "useApifyProxy": true }
}

Output

{
"id": "26844351",
"url": "https://www.airbnb.com/rooms/26844351",
"name": "Lisbon view",
"propertyType": "APARTMENT",
"spaceType": "ENTIRE_HOME",
"personCapacity": 4,
"rating": 4.92,
"reviewsCount": 116,
"categoryRatings": {
"cleanliness": 4.9,
"accuracy": 4.9,
"checkin": 5.0,
"communication": 4.9,
"location": 4.9,
"value": 4.8
},
"isGuestFavorite": true,
"amenities": [
{ "group": "Bathroom", "title": "Hair dryer", "subtitle": null, "available": true },
{ "group": "Laundry", "title": "Dryer", "subtitle": null, "available": false }
],
"amenityCount": 41,
"houseRules": [
{ "type": "HOUSE_RULES_CHECK_IN_WINDOW", "title": "Check-in after 4:00 PM", "description": null }
],
"host": {
"name": "Sofia",
"isSuperhost": true,
"isVerified": true,
"responseRate": "100%",
"responseTime": "within an hour"
},
"latitude": 38.7185,
"longitude": -9.1246,
"isExactLocation": true,
"photos": ["https://a0.muscache.com/im/pictures/..."],
"scrapedAt": "2026-09-02T08:20:00.000Z"
}

Fields

FieldWhat it is
id, urlAirbnb listing ID and canonical room URL
name, propertyType, spaceTypeListing title, property type, whole-home vs private room
personCapacityMaximum guests
rating, reviewsCountOverall rating and how many reviews it rests on
categoryRatingsCleanliness, accuracy, check-in, communication, location, value
isGuestFavorite, isNewListingAirbnb's own badges
amenities, amenityCountEvery amenity with an available flag; the count is of available ones only
sleepingArrangementsNamed spaces and what is in them
houseRules, safetyAndPropertyCheck-in window, pets, cameras, and the rest
hostName, superhost, verified, response rate and time, cohost count
latitude, longitude, isExactLocationCoordinates, and whether Airbnb is showing the real pin or an approximate one
description, descriptionShort, highlightsListing copy as plain text
photosPhoto URLs, capped by maxPhotos
scrapedAtWhen the record was taken

Cost

You pay per listing returned. A failed or removed listing is not charged. Photos and description length do not change the price.

Runs are HTTP-only — no browser — so compute is a small fraction of the per-listing charge on any reasonable batch size.

Tips

  • Feed it url values straight from Airbnb Search Scraper to turn a search into full records.
  • Set Max listings when testing against a long input list, so a typo costs a few cents rather than the whole batch.
  • isExactLocation matters if you are mapping: when it is false, Airbnb is deliberately fuzzing the pin and the coordinates are approximate.
  • Check FAILED_LISTINGS in the run's key-value store to see exactly which inputs failed and why.

Support and limitations

Airbnb changes its page shape without notice. When it does, this Actor fails loudly rather than returning empty rows — a scraper that silently returns nothing is worse than one that stops. Runs are checked daily against a fixed listing, so breakage is usually found and fixed before anyone reports it.

Only public listing data is collected, and no host contact details. You are responsible for how you use scraped data, including compliance with Airbnb's terms and applicable law in your jurisdiction.

Something wrong or missing? Open an issue on the Actor's Issues tab.