# Airbnb Listing (`rigelbytes/airbnb-listing`) Actor

Extract detailed Unlimited Airbnb listing data with ease! Just input a listing URL to retrieve essential information, including property details, images, host information, ratings, and amenities. Ideal for market analysis, travel planning, and real estate insights.

- **URL**: https://apify.com/rigelbytes/airbnb-listing.md
- **Developed by:** [Rigel Bytes](https://apify.com/rigelbytes) (community)
- **Categories:** Real estate, Travel, Automation
- **Stats:** 156 total users, 0 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month after the free trial period.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

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

Effortlessly bulk retrieve **Unlimited** Airbnb listing with this Apify Actor! Just provide a list of listing URL, and the scraper will return comprehensive information on the property, including features, images, host details, and more. Perfect for real estate analysis, travel planning, and market insights.

### 📝 Copy for Use:

```json
{
  "urls": ["https://www.airbnb.com/rooms/782682596976136912"]
}
```

### Input

The actor accepts the following input:

- airbnb\_url (string, required): The URL of the Airbnb listing from which to download images.

- proxy (string, optional): The proxy URL to use for scraping. This ensures you can scrape images from multiple listings without being rate-limited.

### Recommended Proxy Providers

- ## **Shifter**

  - Reliable residential proxies all over the world.
  - Cheap rates
  - [Order Shifter Now](https://shifter.io/r/YoBB/order)
  - Get 10% Off any product, use coupan `rigelbytes-YoBB`.

- ## **OxyLabs**
  - **100M+ Proxies**
  - Fastest proxies in the market
  - Real profile, human-like Residential IPs
  - Quality assurance framework for most reliable IPs
  - [Get Proxies](https://oxylabs.go2cloud.org/aff_c?offer_id=7\&aff_id=1366\&url_id=7)

### 🙌 Why Buy Through Our Affiliate Link?

- Exclusive Deals: Some providers may offer special discounts or bonuses when you use our link.
- Support Our Work: Each purchase helps us maintain and improve the tools and services we provide.
- No Extra Cost: You pay the same price, but part of it goes to supporting our efforts.

### [![Learn More About Proxies](https://img.shields.io/badge/Learn_More-About_Proxies-blue?style=for-the-badge)](#understanding-proxies)

#### Running via Apify Console

You can run this actor from the Apify Console by providing the necessary input parameters.

#### Running via API

You can trigger this actor using the Apify API, passing the required input in the request body.

### API Request Example (Python)

```shell
from apify_client import ApifyClient

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

## Prepare the Actor input
run_input = {
    "urls": ["https://www.airbnb.com/rooms/782682596976136912"]
}

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


```

### JavaScript

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

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

// Prepare Actor input
const input = {
    "urls": ["https://www.airbnb.com/rooms/782682596976136912"]
};

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

})();

```

### Running with cURL

```shell
## Set API token
API_TOKEN=<YOUR_API_TOKEN>

## Prepare Actor input
cat > input.json <<'EOF'
{
  "urls": ["https://www.airbnb.com/rooms/782682596976136912"]
}
EOF

## Run the Actor
curl "https://api.apify.com/v2/acts/rigelbytes/airbnb-listing/runs?token=$API_TOKEN" \
  -X POST \
  -d @input.json \
  -H 'Content-Type: application/json'

```

- ## Output
  ![Output](https://github.com/faizanalii/apify-images/blob/main/output.png?raw=true)

```json
{
  "identifier": {
    "format": "string",
    "label": "Listing ID"
  },
  "url": {
    "format": "link",
    "label": "Listing URL"
  },
  "active": {
    "format": "boolean",
    "label": "Active"
  },
  "headline": {
    "format": "string",
    "label": "Headline"
  },
  "name": {
    "format": "string",
    "label": "Name"
  },
  "description": {
    "format": "string",
    "label": "Description"
  },
  "story": {
    "format": "string",
    "label": "Story"
  },
  "unit": {
    "format": "object",
    "label": "Unit",
    "properties": {
      "identifier": {
        "format": "string",
        "label": "Identifier"
      },
      "active": {
        "format": "boolean",
        "label": "Status"
      },
      "name": {
        "format": "string",
        "label": "Name"
      },
      "category": {
        "format": "string",
        "label": "Category"
      },
      "area": {
        "format": "object",
        "label": "Area",
        "properties": {
          "size": {
            "format": "number",
            "label": "Size"
          },
          "unit": {
            "format": "string",
            "label": "Unit"
          }
        }
      }
    }
  },
  "features": {
    "format": "array",
    "label": "Features",
    "properties": {
      "name": {
        "format": "string",
        "label": "Name"
      },
      "description": {
        "format": "string",
        "label": "Description"
      }
    }
  },
  "safety_features": {
    "format": "array",
    "label": "Safety Features",
    "properties": {
      "name": {
        "format": "string",
        "label": "Name"
      },
      "note": {
        "format": "string",
        "label": "Note"
      }
    }
  },
  "bathrooms": {
    "format": "array",
    "label": "Bathrooms",
    "properties": {
      "name": {
        "format": "string",
        "label": "Name"
      },
      "category": {
        "format": "string",
        "label": "Category"
      },
      "amenities": {
        "format": "array",
        "label": "Amenities",
        "properties": {
          "name": {
            "format": "string",
            "label": "Name"
          },
          "count": {
            "format": "integer",
            "label": "Count"
          }
        }
      }
    }
  },
  "bedrooms": {
    "format": "array",
    "label": "Bedrooms",
    "properties": {
      "name": {
        "format": "string",
        "label": "Name"
      },
      "note": {
        "format": "string",
        "label": "Note"
      },
      "category": {
        "format": "string",
        "label": "Category"
      },
      "amenities": {
        "format": "array",
        "label": "Amenities",
        "properties": {
          "name": {
            "format": "string",
            "label": "Name"
          },
          "count": {
            "format": "integer",
            "label": "Count"
          }
        }
      }
    }
  },
  "images": {
    "format": "array",
    "label": "Images",
    "properties": {
      "identifier": {
        "format": "string",
        "label": "Identifier"
      },
      "url": {
        "format": "link",
        "label": "Image Link"
      },
      "caption": {
        "format": "string",
        "label": "Caption"
      }
    }
  },
  "location": {
    "format": "object",
    "label": "Location",
    "properties": {
      "show_exact": {
        "format": "boolean",
        "label": "Show Exact"
      },
      "address": {
        "format": "object",
        "label": "Address",
        "properties": {
          "city": {
            "format": "string",
            "label": "City"
          },
          "primary": {
            "format": "string",
            "label": "Primary"
          },
          "secondary": {
            "format": "string",
            "label": "Secondary"
          },
          "subdivision": {
            "format": "string",
            "label": "State"
          },
          "postcode": {
            "format": "string",
            "label": "Postcode"
          },
          "country": {
            "format": "string",
            "label": "Country"
          }
        }
      },
      "coordinates": {
        "format": "object",
        "label": "Coordinates",
        "properties": {
          "lat": {
            "format": "text",
            "label": "Latitude"
          },
          "lng": {
            "format": "text",
            "label": "Longitude"
          }
        }
      }
    }
  },
  "supplement": {
    "format": "object",
    "label": "Supplement",
    "properties": {
      "max_guests": {
        "format": "integer",
        "label": "Max Guests"
      },
      "max_sleeps": {
        "format": "integer",
        "label": "Max Sleeps"
      },
      "allows_children": {
        "format": "boolean",
        "label": "Allows Children"
      },
      "allows_pets": {
        "format": "boolean",
        "label": "Allows Pet"
      },
      "allows_events": {
        "format": "boolean",
        "label": "Allows Events"
      },
      "cancellation_policy": {
        "format": "string",
        "label": "Cancellation Policy"
      }
    }
  },
  "host": {
    "format": "object",
    "label": "Host",
    "properties": {
      "host": {
        "format": "object",
        "label": "Host",
        "properties": {
          "name": {
            "format": "string",
            "label": "Name"
          },
          "profilePictureUrl": {
            "format": "link",
            "label": "Profile Picture"
          }
        }
      },
      "title": {
        "format": "string",
        "label": "Title"
      },
      "superhost": {
        "format": "boolean",
        "label": "Superhost"
      },
      "verified": {
        "format": "boolean",
        "label": "Verified"
      },
      "host_details": {
        "format": "array",
        "label": "Host Details"
      },
      "stats": {
        "format": "array",
        "label": "Stats",
        "properties": {
          "label": {
            "format": "string",
            "label": "Label"
          },
          "value": {
            "format": "string",
            "label": "Value"
          },
          "type": {
            "format": "string",
            "label": "Type"
          }
        }
      },
      "host_highlights": {
        "format": "array",
        "label": "Host Highlights",
        "properties": {
          "title": {
            "format": "string",
            "label": "Title"
          }
        }
      },
      "co_hosts": {
        "format": "array",
        "label": "Co-Hosts",
        "properties": {
          "name": {
            "format": "string",
            "label": "Name"
          },
          "profilePictureUrl": {
            "format": "link",
            "label": "Profile Picture"
          }
        }
      }
    }
  },
  "rating": {
    "format": "object",
    "label": "Rating",
    "properties": {
      "total_reviews": {
        "format": "integer",
        "label": "Total Reviews"
      },
      "overall_rating": {
        "format": "number",
        "label": "Overall Rating"
      },
      "ratings": {
        "format": "array",
        "label": "Rating Breakdown",
        "properties": {
          "categoryType": {
            "format": "string",
            "label": "Category"
          },
          "label": {
            "format": "string",
            "label": "Label"
          },
          "percentage": {
            "format": "number",
            "label": "Percentage"
          }
        }
      }
    }
  }
}
```

### Understanding Proxies:

When scraping data or browsing anonymously, proxies are essential. They act as intermediaries, masking your original IP address and allowing you to send requests from another location.

#### Why Use Proxies?

- Avoid IP Blocks: By routing requests through proxies, you prevent the target website from recognizing your IP as a scraper or spammer.
- Access Geo-restricted Content: Proxies let you access content or websites restricted by location.
- Enhance Anonymity: Hide your actual IP, ensuring privacy while scraping or browsing.

#### Types of Proxies

1. Residential Proxies
   - Real IP addresses provided by ISPs to home users.
   - They mimic regular users, making them harder to detect.
   - Best for: Long-term, undetectable scraping, and avoiding blocks.
2. Data Center Proxies
   - IP addresses from servers in data centers.
   - Faster and cheaper than residential proxies but easier to detect and block.
   - Best for: High-speed scraping, but with a higher risk of detection.
3. Mobile Proxies
   - IPs provided by mobile carriers (3G/4G/5G networks).
   - Very difficult to detect, as they appear as regular mobile users.
   - Best for: Mobile-related scraping or avoiding sophisticated blocks.

#### Rotating Proxies vs. Straight Proxies

- Rotating Proxies: Every request you send goes through a different proxy, making it harder for websites to detect patterns.
- Straight Proxies: All requests are sent through the same proxy, making it easier to track your IP.

### About Rigel Bytes

Rigel Bytes specializes in web scraping, automation, and data analytics. We help businesses extract and leverage valuable data for informed decision-making.

### Contact Us

Ready to unlock the power of data? Reach out to us at (contact@rigelbytes.com) or [book an appointment](https://cal.com/faizanali/appointments) with us to learn more about how we can help you achieve your data goals.

# Actor input Schema

## `urls` (type: `array`):

List of Airbnb Listing URLs to scrape data from

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

Select proxy groups or use your custom proxies

## Actor input object example

```json
{
  "urls": [
    "https://www.airbnb.com/rooms/782682596976136912--testing"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "urls": [
        "https://www.airbnb.com/rooms/782682596976136912--testing"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("rigelbytes/airbnb-listing").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 = { "urls": ["https://www.airbnb.com/rooms/782682596976136912--testing"] }

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.airbnb.com/rooms/782682596976136912--testing"
  ]
}' |
apify call rigelbytes/airbnb-listing --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=rigelbytes/airbnb-listing",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/XhSu4AALp8O7es1XI/builds/6AeXTnNAdvHfP8gAB/openapi.json
