Airbnb Listing Details
Pricing
from $1.10 / 1,000 listings
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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
- 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.
- Set Language if you want descriptions and amenities in something other than English.
- Leave the Apify proxy on. Airbnb routes by exit IP and rate-limits hard.
- 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
| Field | What it is |
|---|---|
id, url | Airbnb listing ID and canonical room URL |
name, propertyType, spaceType | Listing title, property type, whole-home vs private room |
personCapacity | Maximum guests |
rating, reviewsCount | Overall rating and how many reviews it rests on |
categoryRatings | Cleanliness, accuracy, check-in, communication, location, value |
isGuestFavorite, isNewListing | Airbnb's own badges |
amenities, amenityCount | Every amenity with an available flag; the count is of available ones only |
sleepingArrangements | Named spaces and what is in them |
houseRules, safetyAndProperty | Check-in window, pets, cameras, and the rest |
host | Name, superhost, verified, response rate and time, cohost count |
latitude, longitude, isExactLocation | Coordinates, and whether Airbnb is showing the real pin or an approximate one |
description, descriptionShort, highlights | Listing copy as plain text |
photos | Photo URLs, capped by maxPhotos |
scrapedAt | When 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
urlvalues 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.
isExactLocationmatters if you are mapping: when it isfalse, Airbnb is deliberately fuzzing the pin and the coordinates are approximate.- Check
FAILED_LISTINGSin 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.