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

- **URL**: https://apify.com/scrapebase/airbnb-rooms-urls-scraper.md
- **Developed by:** [ScrapeBase](https://apify.com/scrapebase) (community)
- **Categories:** Automation, Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

$19.99/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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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 Rooms URLs Scraper - Extract Property Data at Scale

**Airbnb Rooms URLs Scraper** is a powerful, production-ready Apify Actor designed to extract comprehensive property data from Airbnb listings. Whether you need to scrape individual listings, search by keywords, or collect bulk data for market research, this actor provides reliable, structured data extraction with intelligent proxy management and anti-blocking capabilities.

### Why Choose This Airbnb Scraper?

This actor stands out from other Airbnb scraping solutions with its **intelligent proxy fallback system**, **bulk processing capabilities**, and **comprehensive data extraction**. Unlike basic scrapers, it automatically handles blocking scenarios, supports keyword-based searches, and extracts detailed property information including ratings, amenities, and capacity data.

#### Key Advantages

- **🔄 Smart Proxy Management**: Automatically falls back from no proxy → datacenter → residential proxies when blocked
- **⚡ High Performance**: Concurrent processing of multiple listings for faster data collection
- **🔍 Keyword Search Support**: Search Airbnb by location or keywords to discover listings automatically
- **📊 Comprehensive Data**: Extracts property type, capacity, ratings, amenities, and more
- **🛡️ Anti-Blocking**: Built-in retry logic and residential proxy support to avoid detection
- **💾 Live Data Saving**: Results saved in real-time to Apify dataset and key-value store
- **🎯 Production Ready**: Robust error handling, detailed logging, and scalable architecture

### Key Features

#### Intelligent Proxy Fallback System

The actor implements a sophisticated three-tier proxy strategy:

1. **No Proxy (Default)**: Starts without proxy for maximum speed
2. **Datacenter Proxy**: Automatically switches if blocked
3. **Residential Proxy**: Final fallback with sticky behavior - once residential proxy is activated, it's used for all remaining requests

The system includes automatic retry logic (up to 3 attempts) for residential proxies and comprehensive logging of all proxy events.

#### Flexible Input Methods

- **Direct URLs**: Provide specific Airbnb listing URLs as plain strings (e.g., `"https://www.airbnb.com/rooms/53997462"`)
- **Keyword Search**: Search by location, property type, or any keyword as plain strings (e.g., `"New York City apartment"`)
- **Usernames**: Input host usernames directly (e.g., `"host_username"`)
- **Bulk Processing**: Process hundreds of listings simultaneously
- **Mixed Input**: Combine URLs, keywords, and usernames in a single run - all as simple strings
- **Automatic Detection**: The actor automatically detects whether each input is a URL or keyword

#### Comprehensive Data Extraction

Extracts structured data including:

- **Property Information**: Type, capacity, URL
- **Rating Details**: Accuracy, check-in, cleanliness, communication, location, value, guest satisfaction
- **Review Metrics**: Total review count
- **Amenities**: Complete list with categories (Bathroom, Kitchen, WiFi, etc.)
- **Highlights**: Property highlights and special features

#### Advanced Search Capabilities

- Extract room URLs from search results automatically
- Process multiple keywords in parallel

### Input

The actor accepts the following input parameters:

#### Input Schema

```json
{
  "startUrls": [
    "https://www.airbnb.com/rooms/53997462",
    "https://www.airbnb.com/rooms/12937",
    "New York City apartment",
    "host_username"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
````

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| **startUrls** | Array of Strings | Yes | List of Airbnb listing URLs, keywords, or usernames as plain strings. Supports mixed input types. The actor automatically detects URLs vs keywords. |
| **proxyConfiguration** | Object | No | Proxy settings. Default: `{"useApifyProxy": false}` (starts with no proxy). |

#### Input Examples

**Example 1: Direct URLs**

```json
{
  "startUrls": [
    "https://www.airbnb.com/rooms/53997462",
    "https://www.airbnb.com/rooms/12937"
  ],
  "proxyConfiguration": { "useApifyProxy": false }
}
```

**Example 2: Keyword Search**

```json
{
  "startUrls": [
    "Paris apartment",
    "Tokyo studio",
    "Barcelona beachfront"
  ],
  "proxyConfiguration": { "useApifyProxy": false }
}
```

**Example 3: Mixed Input (URLs, Keywords, Usernames)**

```json
{
  "startUrls": [
    "https://www.airbnb.com/rooms/53997462",
    "New York City apartment",
    "Paris studio",
    "host_username"
  ],
  "proxyConfiguration": { "useApifyProxy": true }
}
```

#### Input Format Notes

- **URLs**: Must be full Airbnb listing URLs (e.g., `"https://www.airbnb.com/rooms/53997462"`)
- **Keywords**: Any search term (e.g., `"New York City apartment"`, `"Paris studio"`)
- **Usernames**: Host usernames (e.g., `"host_username"`)
- **Automatic Detection**: The actor automatically detects whether an input is a URL or keyword based on the format
- **Plain Strings**: All inputs are simple strings - no need for objects or special formatting

### Output

The actor outputs structured JSON data matching the following schema:

#### Output Schema

```json
{
  "url": "https://www.airbnb.com/rooms/53997462",
  "propertyType": "Entire condo",
  "personCapacity": 2,
  "rating": {
    "accuracy": 4.9,
    "checking": 5.0,
    "cleanliness": 5.0,
    "communication": 5.0,
    "location": 5.0,
    "value": 5.0,
    "guestSatisfaction": 4.98,
    "reviewsCount": 49
  },
  "amenities": [
    {
      "title": "Bathroom",
      "values": [
        {
          "title": "Hair dryer",
          "subtitle": "",
          "icon": "SYSTEM_HAIRDRYER",
          "available": true
        }
      ]
    },
    {
      "__typename": "Amenity",
      "available": true,
      "title": "Wifi",
      "icon": "SYSTEM_WI_FI"
    }
  ],
  "highlights": []
}
```

#### Output Fields

| Field | Type | Description |
|-------|------|-------------|
| **url** | String | The Airbnb listing URL |
| **propertyType** | String | Type of property (e.g., "Entire condo", "Private room in rental unit") |
| **personCapacity** | Integer | Maximum number of guests |
| **rating** | Object | Detailed rating breakdown |
| **rating.accuracy** | Float | Accuracy rating (0-5) |
| **rating.checking** | Float | Check-in rating (0-5) |
| **rating.cleanliness** | Float | Cleanliness rating (0-5) |
| **rating.communication** | Float | Communication rating (0-5) |
| **rating.location** | Float | Location rating (0-5) |
| **rating.value** | Float | Value rating (0-5) |
| **rating.guestSatisfaction** | Float | Overall guest satisfaction score |
| **rating.reviewsCount** | Integer | Total number of reviews |
| **amenities** | Array | List of available amenities with categories |
| **highlights** | Array | Property highlights and special features |

#### Output Storage

- **Dataset**: Each listing is saved as a separate item in the Apify dataset
- **Key-Value Store**: Complete results array saved under key `OUTPUT` for easy download

### 🚀 How to Use the Actor (via Apify Console)

1. **Log in** to [Apify Console](https://console.apify.com) and navigate to **Actors**
2. **Find** the "Airbnb-Rooms-URLs-Scraper" actor and click to open it
3. **Configure Input**:
   - Add your URLs, keywords, or usernames as **plain strings** in the `startUrls` field (one per line)
   - Configure proxy settings (default: no proxy with automatic fallback)
4. **Run the Actor**: Click "Start" and monitor progress in real-time
5. **Access Results**:
   - View individual listings in the **OUTPUT** tab
   - Download results as JSON or CSV
   - Access the complete dataset via API
6. **Monitor Logs**: Track proxy events, extraction progress, and any errors in the **Log** tab

#### Using the Actor via API

```bash
curl -X POST \
  https://api.apify.com/v2/acts/YOUR_ACTOR_ID/run-sync \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      "https://www.airbnb.com/rooms/53997462",
      "New York City apartment"
    ],
    "proxyConfiguration": {"useApifyProxy": false}
  }'
```

### Best Use Cases

#### Market Research & Analysis

- **Competitive Analysis**: Compare property features, pricing, and ratings across markets
- **Market Trends**: Track property types, amenities, and guest satisfaction over time
- **Location Intelligence**: Analyze property distribution and popularity by location

#### Real Estate Investment

- **Property Evaluation**: Assess investment potential by analyzing ratings and amenities
- **Portfolio Analysis**: Monitor multiple properties and their performance metrics
- **Market Entry Research**: Identify opportunities in new markets

#### Data Aggregation & Integration

- **Property Listings Database**: Build comprehensive databases of Airbnb properties
- **API Development**: Create custom APIs powered by scraped data
- **Business Intelligence**: Feed data into BI tools for visualization and reporting

#### Academic Research

- **Tourism Studies**: Analyze accommodation trends and guest preferences
- **Urban Planning**: Study property distribution and impact on neighborhoods
- **Economic Research**: Examine pricing patterns and market dynamics

### Frequently Asked Questions

#### How does the proxy fallback system work?

The actor starts with **no proxy** for maximum speed. If Airbnb blocks the request (detected via HTTP status codes or content analysis), it automatically switches to a **datacenter proxy**. If still blocked, it falls back to a **residential proxy** and sticks with it for all remaining requests. This ensures maximum success rate while optimizing for speed.

#### Can I scrape private or password-protected listings?

No. This actor only extracts data from **publicly available** Airbnb listings. It cannot access private accounts, password-protected content, or listings that require authentication.

#### How many listings can I scrape at once?

The actor supports **bulk processing** with concurrent requests (default: 10 concurrent connections). You can process hundreds of listings in a single run. For very large datasets, consider running multiple actor instances or using Apify's scheduling features.

#### What happens if a listing is unavailable or removed?

If a listing URL is invalid or the property has been removed, the actor will log an error and continue processing other listings. The failed URL will not appear in the output dataset, but all successful extractions will be saved.

#### How accurate is the extracted data?

The actor uses multiple extraction methods (JSON parsing, regex patterns, HTML parsing) to maximize data accuracy. However, Airbnb's HTML structure may change over time. The actor is regularly updated to maintain compatibility.

#### Can I customize the data extraction?

The current version extracts all available fields. For custom extraction needs, you can modify the `data_extractor.py` file or contact support for feature requests.

#### Is this actor legal to use?

This actor collects only **publicly available data** from Airbnb listings. Users are responsible for ensuring compliance with:

- Airbnb's Terms of Service
- Local data protection laws (GDPR, CCPA, etc.)
- Anti-spam regulations
- Any applicable scraping laws in their jurisdiction

#### How do I handle rate limiting?

The actor includes built-in retry logic and proxy rotation to handle rate limiting. If you encounter persistent issues, consider:

- Reducing concurrency limit
- Using residential proxies
- Adding delays between requests
- Running during off-peak hours

#### What's the difference between datacenter and residential proxies?

- **Datacenter Proxies**: Faster and cheaper, but more easily detected
- **Residential Proxies**: Slower and more expensive, but appear as real user traffic

The actor automatically chooses the best option based on blocking detection.

### Support and Feedback

For issues, questions, or feature requests:

- **Apify Platform**: Check the actor's page in Apify Console for updates and documentation
- **Support**: Contact Apify support for technical assistance
- **Feedback**: We welcome suggestions for improvements and new features

***

### Important Notes

#### Data Collection Ethics

- ✅ Only collects **publicly available** data
- ✅ Respects Airbnb's robots.txt guidelines
- ✅ Implements rate limiting and delays
- ❌ Does not access private accounts
- ❌ Does not bypass authentication
- ❌ Does not collect personal information without consent

#### Legal Compliance

Users are responsible for ensuring their use of this actor complies with:

- **Airbnb Terms of Service**: Review Airbnb's ToS before scraping
- **Data Protection Laws**: GDPR, CCPA, and other privacy regulations
- **Local Laws**: Scraping laws vary by jurisdiction
- **Anti-Spam Regulations**: CAN-SPAM Act and similar laws

#### Disclaimer

This actor is provided "as-is" for legitimate research and business purposes. The developers are not responsible for misuse of scraped data or violations of terms of service. Always verify data accuracy and comply with applicable laws and regulations.

***

**Ready to start scraping?** [Deploy this actor on Apify](https://apify.com) and begin extracting Airbnb property data at scale!

# 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`):

Select date in format YYYY-MM-DD.

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

Select date in format YYYY-MM-DD.

## `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`):

Number of adult guests.

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

Number of children.

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

Number of infants.

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

Number of pets.

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

Choose which proxies to use. By default the actor starts with NO proxy, and falls back to datacenter → residential proxies automatically if blocked. Leave empty or set useApifyProxy to false for no proxy.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.airbnb.com/rooms/53997462",
    "https://www.airbnb.com/rooms/12937"
  ],
  "enrichUserProfiles": false,
  "locale": "en-US",
  "currency": "USD",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset items (one per listing)

# 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": [
        "https://www.airbnb.com/rooms/53997462",
        "https://www.airbnb.com/rooms/12937"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapebase/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": [
        "https://www.airbnb.com/rooms/53997462",
        "https://www.airbnb.com/rooms/12937",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapebase/airbnb-rooms-urls-scraper").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 '{
  "startUrls": [
    "https://www.airbnb.com/rooms/53997462",
    "https://www.airbnb.com/rooms/12937"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call scrapebase/airbnb-rooms-urls-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airbnb Rooms URLs Scraper",
        "version": "0.1",
        "x-build-id": "fOgfFP7l8BOREppdH"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapebase~airbnb-rooms-urls-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapebase-airbnb-rooms-urls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/scrapebase~airbnb-rooms-urls-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapebase-airbnb-rooms-urls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/scrapebase~airbnb-rooms-urls-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapebase-airbnb-rooms-urls-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "List of Airbnb properties to scrape. Example property URL: https://www.airbnb.com/rooms/668146487515150072",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichUserProfiles": {
                        "title": "Enrich User Profiles",
                        "type": "boolean",
                        "description": "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.",
                        "default": false
                    },
                    "checkIn": {
                        "title": "Check-In Date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "Select date in format YYYY-MM-DD."
                    },
                    "checkOut": {
                        "title": "Check-Out Date",
                        "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
                        "type": "string",
                        "description": "Select date in format YYYY-MM-DD."
                    },
                    "locale": {
                        "title": "Locale",
                        "enum": [
                            "en-US",
                            "az-AZ",
                            "id-ID",
                            "bs-BA",
                            "ca-ES",
                            "cs-CZ",
                            "sr-ME",
                            "da-DK",
                            "de-DE",
                            "de-AT",
                            "de-CH",
                            "de-LU",
                            "et-EE",
                            "en-AU",
                            "en-CA",
                            "en-GB",
                            "en-GY",
                            "en-IN",
                            "en-IE",
                            "en-NZ",
                            "en-SG",
                            "en-AE",
                            "es-AR",
                            "es-BZ",
                            "es-BO",
                            "es-CL",
                            "es-CO",
                            "es-CR",
                            "es-EC",
                            "es-SV",
                            "es-ES",
                            "es-US",
                            "es-GT",
                            "es-HN",
                            "es-419",
                            "es-MX",
                            "es-NI",
                            "es-PA",
                            "es-PY",
                            "es-PE",
                            "es-VE",
                            "fr-BE",
                            "fr-CA",
                            "fr-FR",
                            "fr-CH",
                            "fr-LU",
                            "ga-IE",
                            "hr-HR",
                            "xh-ZA",
                            "zu-ZA",
                            "is-IS",
                            "it-IT",
                            "it-CH",
                            "sw-XX",
                            "lv-LV",
                            "lt-LT",
                            "hu-HU",
                            "mt-MT",
                            "ms-MY",
                            "nl-BE",
                            "nl-NL",
                            "no-NO",
                            "pl-PL",
                            "pt-BR",
                            "pt-PT",
                            "ro-RO",
                            "sq-AL",
                            "sk-SK",
                            "sl-SI",
                            "sr-RS",
                            "fi-FI",
                            "sv-SE",
                            "tl-PH",
                            "vi-VN",
                            "tr-TR",
                            "el-GR",
                            "bg-BG",
                            "mk-MK",
                            "ru-RU",
                            "uk-UA",
                            "ka-GE",
                            "hy-AM",
                            "he-IL",
                            "ar-XX",
                            "hi-IN",
                            "th-TH",
                            "ko-KR",
                            "ja-JP",
                            "zh-US",
                            "zh-TW-US",
                            "zh-CN",
                            "zh-HK",
                            "zh-TW"
                        ],
                        "type": "string",
                        "description": "Localized results in this locale will be extracted (language and region).",
                        "default": "en-US"
                    },
                    "currency": {
                        "title": "Currency",
                        "enum": [
                            "USD",
                            "CZK",
                            "AUD",
                            "BRL",
                            "BGN",
                            "CAD",
                            "CLP",
                            "CNY",
                            "COP",
                            "CRC",
                            "HRK",
                            "DKK",
                            "EGP",
                            "AED",
                            "EUR",
                            "GHS",
                            "HKD",
                            "HUF",
                            "INR",
                            "IDR",
                            "ILS",
                            "JPY",
                            "KZT",
                            "KES",
                            "MYR",
                            "MXN",
                            "MAD",
                            "TWD",
                            "NZD",
                            "NOK",
                            "PEN",
                            "PHP",
                            "PLN",
                            "GBP",
                            "QAR",
                            "RON",
                            "SAR",
                            "SGD",
                            "ZAR",
                            "KRW",
                            "SEK",
                            "CHF",
                            "THB",
                            "TRY",
                            "UGX",
                            "UAH",
                            "UYU",
                            "VND"
                        ],
                        "type": "string",
                        "description": "Currency that will be extracted for prices.",
                        "default": "USD"
                    },
                    "adults": {
                        "title": "Adults",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Number of adult guests."
                    },
                    "children": {
                        "title": "Children",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of children."
                    },
                    "infants": {
                        "title": "Infants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of infants."
                    },
                    "pets": {
                        "title": "Pets",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Number of pets."
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Choose which proxies to use. By default the actor starts with NO proxy, and falls back to datacenter → residential proxies automatically if blocked. Leave empty or set useApifyProxy to false for no proxy."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
