# Airbnb Listing Details Scraper (`steadyfeeds/airbnb-listing-details`) Actor

Full detail for any Airbnb listing: all amenities, house rules, rating breakdown by category, host summary, room-by-room photos and exact coordinates.

- **URL**: https://apify.com/steadyfeeds/airbnb-listing-details.md
- **Developed by:** [christopher tan](https://apify.com/steadyfeeds) (community)
- **Categories:** Travel, Real estate, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Airbnb Listing Details Scraper

Everything Airbnb publishes about a specific listing, in one row. All amenities, the full house rules, the rating breakdown by category, the host summary, room-by-room photos and exact coordinates.

Press **Start** to see it work on a sample listing.

Pair it with the [Airbnb Listings Scraper](https://apify.com/steadyfeeds/airbnb-listings-scraper): search first to find listings, then enrich them here.

### What you get

46 fields per listing, including:

| Field | Example |
|---|---|
| `title` | `Lisbon Downtown Baixa, ideal for short stay` |
| `propertyType` / `spaceType` | `CONDOMINIUM` / `ENTIRE_HOME` |
| `guests` / `bedrooms` / `beds` / `bathrooms` | `2` / `1` / `1` / `1` |
| `rating` / `reviewsCount` | `4.91` / `226` |
| `categoryRatings` | `{"cleanliness": 4.9, "accuracy": 4.9, "checkin": 5.0, "communication": 5.0, "location": 5.0, "value": 4.8}` |
| `amenities` / `amenityCount` | 45 named amenities, grouped by category too |
| `amenitiesNotIncluded` | `["Exterior security cameras on property"]` |
| `houseRules` | Check-in window, checkout time, pets, parties, quiet hours |
| `hostName` / `hostIsSuperhost` / `hostBadges` | `GestHomes By Alexandra & Pedro` / `true` / `["Superhost", "13 years hosting"]` |
| `hostTotalReviews` / `hostResponseRate` / `hostResponseTime` | `2580` / `Response rate: 100%` / `Responds within an hour` |
| `latitude` / `longitude` / `isExactLocation` | `38.7111` / `-9.1357` / `true` |
| `photoUrls` / `photos` | Up to 40 full-size URLs, with captions and room tags |
| `roomPhotoTour` | Photos grouped by room: `Living room` (11), `Bedroom` (6), `Full bathroom` (5) |
| `description` | The host's full listing description, HTML stripped |
| `highlights` | `Self check-in`, `Vibrant neighbourhood` |
| `reviewTags` | What guests mention most, with counts: `Location` (170), `Cleanliness` (85), `Quiet` (49) |
| `neighbourhoodDetails` | The host's written description of the area |

### What people use it for

- **Competitive benchmarking for hosts.** See exactly which amenities top-rated neighbours offer that you do not, and where their category ratings beat yours.
- **Understanding what guests actually value.** `reviewTags` gives the themes guests mention most with counts, so you can see whether a market rewards location, cleanliness or quiet.
- **Revenue and acquisition analysis.** Combine capacity, amenities and category ratings to explain why some listings out-earn others.
- **Due diligence on a property.** Pull house rules, exact coordinates and the host's track record before booking or investing.
- **Building travel products.** Feed complete listing records, with room-level photos, into an app or an AI agent.
- **Academic and policy research.** Study short-term rental stock with amenity and capacity detail, not just prices.

### Input

Give it listing URLs or bare numeric ids. Both forms work and can be mixed.

```
https://www.airbnb.com/rooms/670694153658292838
14072055
```

Any country domain works too, so a `www.airbnb.co.uk/rooms/...` URL is fine.

### What it cannot do, and why

- **One request per listing.** This Actor enriches listings you already know. To find listings in the first place, run the Airbnb Listings Scraper and feed its `listingId` values in here.
- **No review text.** Airbnb loads individual reviews through a separate request whose signature rotates, so this Actor deliberately does not depend on it. You get the rating, the review count, the per-category breakdown and the review tags with counts, but not the written reviews.
- **No nightly price.** Prices depend on dates and guest count, and belong to search rather than to a listing record. Use the Airbnb Listings Scraper with your dates for pricing.
- **Host display name and public badges only.** No contact details, no guest data. This is the same host summary any visitor sees on the page.
- **Delisted listings are reported, not guessed.** A removed or invalid listing produces a clear message naming the id, and the rest of the run continues.
- **Some fields are conditional.** `amenitiesNotIncluded`, `highlights` and the room photo tour only appear when Airbnb publishes them for that listing.

### More tools from steadyfeeds

- [Telegram Channel Scraper](https://apify.com/steadyfeeds/telegram-channel-scraper) — Export posts from public Telegram channels.
- [Airbnb Listings Scraper](https://apify.com/steadyfeeds/airbnb-listings-scraper) — Search Airbnb and export prices, ratings and coordinates.
- [Job Board Scraper](https://apify.com/steadyfeeds/job-board-scraper) — Every open role from company career pages across eight systems.
- [Events Scraper](https://apify.com/steadyfeeds/events-scraper) — public events from Eventbrite, Meetup and Luma in one run.

### Notes

Reads the same public listing pages you can open in a browser. No headless browser is used, so runs are fast and cheap.

Something broken or a field you need? Open an issue on this Actor and I will take a look.

# Actor input Schema

## `listings` (type: `array`):

Listing URLs or bare numeric ids. Both work: https://www.airbnb.com/rooms/12345678 or 12345678. Pair this with the Airbnb Listings Scraper to enrich a whole search.

## `proxyConfiguration` (type: `object`):

Off by default. Turn a proxy on if Airbnb starts returning bot checks on large runs, or to read prices as if from another country.

## Actor input object example

```json
{
  "listings": [
    "https://www.airbnb.com/rooms/670694153658292838",
    "https://www.airbnb.com/rooms/14072055"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `listings` (type: `string`):

All scraped listing details as JSON.

## `spreadsheet` (type: `string`):

The same results as an .xlsx spreadsheet.

## `csv` (type: `string`):

The same results as a CSV file.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "listings": [
        "https://www.airbnb.com/rooms/670694153658292838",
        "https://www.airbnb.com/rooms/14072055"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("steadyfeeds/airbnb-listing-details").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "listings": [
        "https://www.airbnb.com/rooms/670694153658292838",
        "https://www.airbnb.com/rooms/14072055",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("steadyfeeds/airbnb-listing-details").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "listings": [
    "https://www.airbnb.com/rooms/670694153658292838",
    "https://www.airbnb.com/rooms/14072055"
  ]
}' |
apify call steadyfeeds/airbnb-listing-details --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,steadyfeeds/airbnb-listing-details"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/o9GhNd2WcOPWee2Ie/builds/4mabQjYYWJL9eK4aC/openapi.json
