# Airbnb Rooms URLs Scraper (`tri_angle/airbnb-rooms-urls-scraper`) Actor

Turn any Airbnb listing URL into structured data. Get the price for your dates, the host profile and ratings, amenities, and house rules, ready to compare listings side by side or track them over time.

- **URL**: https://apify.com/tri_angle/airbnb-rooms-urls-scraper.md
- **Developed by:** [Tri⟁angle](https://apify.com/tri_angle) (Apify)
- **Categories:** Travel, Real estate
- **Stats:** 2,312 total users, 401 monthly users, 100.0% runs succeeded, 38 bookmarks
- **User rating**: 4.56 out of 5 stars

## Pricing

from $1.95 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Airbnb Rooms URLs Scraper do?

Airbnb Rooms URLs Scraper will enable you to scrape direct Airbnb rooms URLs and get all available details about the accommodation from the official Airbnb website.

Airbnb Rooms URLs Scraper can scrape:

- Room details
- Price
- Rating details
- Host details
- Amenities
- House rules
- Image URLs with captions

### Why scrape Airbnb?

Airbnb has millions of users and is a great source of data for the hospitality industry, real estate market analysis, travel planning, and more.

Here are just some of the ways you could use that data:

- Analyze pricing trends in different locations
- Compare amenities offered by different hosts
- Plan travel itineraries based on available accommodations
- Monitor availability of rooms for specific dates

If you would like more inspiration on how scraping Airbnb could help your business or organization, check out our [industry pages](https://apify.com/industries).

### How to scrape Airbnb

It's easy to scrape Airbnb with Airbnb Rooms URLs Scraper. Just follow these few steps and you'll get your data in a few seconds/minutes.

1. Click on Try for free.
2. Enter one or more direct room URLs (e.g. "https://www.airbnb.com/rooms/53997462" )
3. Click on Run.
4. When Airbnb Rooms URLs Scraper has finished, preview or download your data from the Dataset tab.

### How much will it cost to scrape Airbnb?

Apify gives you $5 free usage credits every month on the [Apify Free plan](https://apify.com/pricing). You can get several hundreds of results per month from Airbnb Rooms URLs Scraper for that.

But if you need to get data from Airbnb more frequently, you should grab an Apify subscription. We recommend our [$49/month Starter plan](https://apify.com/pricing)!

Try to start a couple of test runs and you will have a better idea what are the average costs for your runs.

### Input and Output example

Example input in JSON:

```json
{
  "startUrls": [
    {
      "url": "https://www.airbnb.com/rooms/53997462"
    }
  ]
}
```

Example output in JSON (just a couple of attributes - there are many more):

```json
"propertyType": "Entire condo",
"personCapacity": 4,
  "rating": {
    "accuracy": 4.94,
    "checking": 5,
    "cleanliness": 4.97,
    "communication": 5,
    "location": 4.97,
    "value": 4.94,
    "guestSatisfaction": 4.97,
    "reviewsCount": 36
  },
"amenities": [
    {
      "title": "Bathroom",
      "values": [
        {
          "title": "Hair dryer",
          "subtitle": "",
          "icon": "SYSTEM_HAIRDRYER",
          "available": true
        },
        {
          "title": "Cleaning products",
          "subtitle": "",
          "icon": "SYSTEM_CLEANING_SUPPLIES",
          "available": true
        },
        {
          "title": "Body soap",
          "subtitle": "",
          "icon": "SYSTEM_SOAP",
          "available": true
        },
        {
          "title": "Hot water",
          "subtitle": "",
          "icon": "SYSTEM_HOT_WATER",
          "available": true
        }
      ]
    },
"highlights": [
    {
      "title": "Top 10% of homes",
      "subtitle": "This home is highly ranked based on ratings, reviews, and reliability.",
      "icon": "SYSTEM_GOLDEN_TROPHY",
      "type": "LISTING_GUEST_FAVORITE"
    },
    {
      "title": "Alexia is a Superhost",
      "subtitle": "Superhosts are experienced, highly rated Hosts.",
      "icon": "SYSTEM_SUPERHOST",
      "type": "LISTING_SUPER_HOST"
    },
    {
      "title": "Great location",
      "subtitle": "100% of recent guests gave the location a 5-star rating.",
      "icon": "SYSTEM_LOCATION",
      "type": "LISTING_LOCATION_REVIEW_RATING"
    }
  ],
```

### Tips for scraping Airbnb

- You will receive prices in the output, if you specify the dates in the input + when the accommodation is available for those dates

### New functions in the making

- We want to implement the calendar view to check availability of the accommodation

### Other Airbnb Scrapers

Check our other scrapers:

1. [Airbnb Scraper](https://apify.com/tri_angle/airbnb-scraper) - for scraping destinations, e.g. "Prague"

2. [New Fast Airbnb Scraper](https://apify.com/tri_angle/new-fast-airbnb-scraper) - quickly scrapes results for destinations and returns only the most important data (doesn't open each accommodation for details)

3. Airbnb Reviews Scraper - coming soon!

### Is it legal to scrape Airbnb?

Note that personal data is protected by GDPR in the European Union and by other regulations around the world.
You should not scrape personal data unless you have a legitimate reason to do so.
If you're unsure whether your reason is legitimate, consult your lawyers.
We also recommend that you read our blog post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

# Changelog

This Actor's version history is a separate document: https://apify.com/tri_angle/airbnb-rooms-urls-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

List of Airbnb properties to scrape. Example property URL: https://www.airbnb.com/rooms/668146487515150072

## `enrichUserProfiles` (type: `boolean`):

If enabled, the actor makes extra requests for each host/co-host in every listing to get more detailed user info. This increases cost and runtime. If a profile is private or there's an unexpected error, it will be skipped and won't appear in the output.

## `checkIn` (type: `string`):

Date must be in <code>YYYY-MM-DD</code> format with zero-padded month and day, e.g., <code>2022-02-20</code>.

## `checkOut` (type: `string`):

Date must be in <code>YYYY-MM-DD</code> format with zero-padded month and day, e.g., <code>2022-02-20</code>.

## `locale` (type: `string`):

Localized results in this locale will be extracted (language and region).

## `currency` (type: `string`):

Currency that will be extracted for prices.

## `adults` (type: `integer`):

No description

## `children` (type: `integer`):

No description

## `infants` (type: `integer`):

No description

## `pets` (type: `integer`):

No description

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.airbnb.com/rooms/668146487515150072"
    },
    {
      "url": "https://www.airbnb.com/rooms/1142713268362716050"
    }
  ],
  "locale": "en-US",
  "currency": "USD"
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.airbnb.com/rooms/668146487515150072"
        },
        {
            "url": "https://www.airbnb.com/rooms/1142713268362716050"
        }
    ],
    "locale": "en-US",
    "currency": "USD"
};

// Run the Actor and wait for it to finish
const run = await client.actor("tri_angle/airbnb-rooms-urls-scraper").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 = {
    "startUrls": [
        { "url": "https://www.airbnb.com/rooms/668146487515150072" },
        { "url": "https://www.airbnb.com/rooms/1142713268362716050" },
    ],
    "locale": "en-US",
    "currency": "USD",
}

# Run the Actor and wait for it to finish
run = client.actor("tri_angle/airbnb-rooms-urls-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.airbnb.com/rooms/668146487515150072"
    },
    {
      "url": "https://www.airbnb.com/rooms/1142713268362716050"
    }
  ],
  "locale": "en-US",
  "currency": "USD"
}' |
apify call tri_angle/airbnb-rooms-urls-scraper --silent --output-dataset

```

## MCP server setup

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

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/OIYrZy1OpUEgIMYmh/builds/Vq3bksQjvuuXFo45T/openapi.json
