# Airbnb Reviews Scraper - Fast & Browserless (`mof1re/airbnb-reviews-scraper-browserless`) Actor

⚡ Scrapes Airbnb listing reviews via raw HTTP requests — no browser, no headless Chrome. Structured output: ratings, reviewer info, review text (original & translated), host replies, keyword filtering, per-category rating breakdowns. Built for speed and clean data.

- **URL**: https://apify.com/mof1re/airbnb-reviews-scraper-browserless.md
- **Developed by:** [Vladimir Efimenco](https://apify.com/mof1re) (community)
- **Categories:** Lead generation, SEO tools, Travel
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## 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 Reviews Scraper | ⚡ Fast Browserless

Browserless Airbnb review scraper built on the site's internal GraphQL API, not a headless browser. Returns full review content alongside reviewer details, host replies, and listing-wide rating breakdowns.

### ⚡ Why this one

- **Full dataset, not a summary** — every review comes with the original text, the auto-translated text, reviewer profile info, room/stay context, and the host's reply where present.
- **Listing-wide rating breakdown included** — per-category scores (cleanliness, accuracy, location, etc.) are attached to the first review of each listing, not buried in a separate call.
- **Flexible filtering** — sort order and translation language match what's available on the live site, plus a keyword search that can run server-side or locally.
- **Batch by design** — scrape multiple listings in a single run (up to 5 in parallel), with a configurable result cap per listing or unlimited collection.
- **Proxies included** — proxy pool is built in. You don't need to bring your own.
- **Fast** — no browser, no rendering wait. Pure HTTP calls to the same internal API the airbnb.com frontend uses.

### 📋 Example output

```json
[
  {
    "listing_url": "https://www.airbnb.com/rooms/8881364",
    "listing_title": "VALLS 1 -Antique & Modernist Apt- w/Elevator now! - Apartments for Rent in Barcelona, Catalunya, Spain - Airbnb",
    "listing_data": {
      "listing_id": null,
      "title": "VALLS 1 -Antique & Modernist Apt- w/Elevator now! - Apartments for Rent in Barcelona, Catalunya, Spain - Airbnb",
      "description": "Jul 9, 2026 · Entire rental unit · VALLS 1, located on a 19th century building, is a 2015 restored and fully equipped apartment, maintaining original floor mosaic tiles (modernism st...",
      "property_type": "Entire rental unit",
      "space_type": "ENTIRE_HOME",
      "person_capacity": 4,
      "city": "Barcelona",
      "latitude": 41.37984,
      "longitude": 2.13544,
      "rating_average": 4.9,
      "rating_count": "555",
      "ratings_by_category": {
        "ACCURACY": 4.93,
        "CLEANLINESS": 4.93,
        "CHECKIN": 4.88,
        "LOCATION": 4.83,
        "COMMUNICATION": 4.91,
        "VALUE": 4.84
      },
      "host_name": "Wally",
      "host_id": null,
      "host_is_superhost": true,
      "host_years_hosting": "11 years hosting",
      "overview_title": "Entire rental unit in Barcelona, Spain",
      "overview_items": [
        "4 guests",
        "2 bedrooms",
        "3 beds",
        "2 baths"
      ],
      "is_guest_favorite": true,
      "house_rules": [
        "Check-in after 3:00 PM",
        "Checkout before 11:00 AM",
        "4 guests maximum"
      ],
      "additional_rules_text": null,
      "safety_items": [
        "Carbon monoxide alarm not reported",
        "Smoke alarm not reported",
        "Not suitable for infants (under 2 years)"
      ],
      "cancellation_policy_title": "Cancellation policy",
      "main_image": "https://a0.muscache.com/im/pictures/98ac503a-996e-4c80-b66b-0a5a3045b9da.jpg",
      "canonical_url": "https://www.airbnb.com/rooms/8881364"
    },
    "review_id": "1711553542847523261",
    "rating": 5,
    "language": "en",
    "text_raw": "Easy access to grocery stores, fruit markets, train station and hop on hop off bus stop orange line. Wally greeted us and went through the apartment. It was very nice having an elevator. The apartment was very clean.",
    "text_clean": "Easy access to grocery stores, fruit markets, train station and hop on hop off bus stop orange line. Wally greeted us and went through the apartment. It was very nice having an elevator. The apartment was very clean.",
    "text_localized_raw": "Easy access to grocery stores, fruit markets, train station and hop on hop off bus stop orange line. Wally greeted us and went through the apartment. It was very nice having an elevator. The apartment was very clean.",
    "text_localized": "Easy access to grocery stores, fruit markets, train station and hop on hop off bus stop orange line. Wally greeted us and went through the apartment. It was very nice having an elevator. The apartment was very clean.",
    "text_language": "en",
    "text_disclaimer": null,
    "date": "2026-06-19T11:51:21Z",
    "date_localized": "2 weeks ago",
    "highlight": null,
    "response_raw": null,
    "response": null,
    "response_date": null,
    "room_type": null,
    "room_listing_id": null,
    "reviewer_name": "Lynne",
    "reviewer_id": "305781228",
    "reviewer_profile_url": "https://airbnb.com/users/profile/1495007206638464448",
    "reviewer_avatar": "https://a0.muscache.com/im/pictures/user/User/original/7097c2e8-eff4-4e17-9455-5e8f50016168.jpeg",
    "reviewer_location": null,
    "reviewer_deleted": false,
    "host_name": "Wally",
    "host_id": "46159733",
    "host_profile_url": "https://airbnb.com/users/profile/1465690109182236649",
    "host_avatar": "https://a0.muscache.com/im/pictures/user/User-46159733/original/83463c70-a136-46a3-8dac-08346d03f5e7.jpeg",
    "host_deleted": false,
    "search_keyword": "",
    "keyword_match": false
  },
  {
    "listing_url": "https://www.airbnb.com/rooms/8881364",
    "listing_title": "VALLS 1 -Antique & Modernist Apt- w/Elevator now! - Apartments for Rent in Barcelona, Catalunya, Spain - Airbnb",
    "listing_data": {
      "note": "to avoid duplication hotel data available on first result row"
    },
    "review_id": "1705827050805829484",
    "rating": 5,
    "language": "en",
    "text_raw": "This is a great location and a great space. Within less than a minute’s walk…bread store, coffee place, nutrition store (sold some vegan products), wine store, and small supermarket. The train (metro) was extremely close…so helpful. Overall just a great place. Highly recommend!",
    "text_clean": "This is a great location and a great space. Within less than a minute’s walk…bread store, coffee place, nutrition store (sold some vegan products), wine store, and small supermarket. The train (metro) was extremely close…so helpful. Overall just a great place. Highly recommend!",
    "text_localized_raw": "This is a great location and a great space. Within less than a minute’s walk…bread store, coffee place, nutrition store (sold some vegan products), wine store, and small supermarket. The train (metro) was extremely close…so helpful. Overall just a great place. Highly recommend!",
    "text_localized": "This is a great location and a great space. Within less than a minute’s walk…bread store, coffee place, nutrition store (sold some vegan products), wine store, and small supermarket. The train (metro) was extremely close…so helpful. Overall just a great place. Highly recommend!",
    "text_language": "en",
    "text_disclaimer": null,
    "date": "2026-06-11T14:13:50Z",
    "date_localized": "4 weeks ago",
    "highlight": null,
    "response_raw": null,
    "response": null,
    "response_date": null,
    "room_type": null,
    "room_listing_id": null,
    "reviewer_name": "Christine",
    "reviewer_id": "442651333",
    "reviewer_profile_url": "https://airbnb.com/users/profile/1484215888234177043",
    "reviewer_avatar": "https://a0.muscache.com/im/pictures/user/User/original/bfb01bbe-3bd6-462a-bfe9-e07f4f78140e.jpeg",
    "reviewer_location": null,
    "reviewer_deleted": false,
    "host_name": "Wally",
    "host_id": "46159733",
    "host_profile_url": "https://airbnb.com/users/profile/1465690109182236649",
    "host_avatar": "https://a0.muscache.com/im/pictures/user/User-46159733/original/83463c70-a136-46a3-8dac-08346d03f5e7.jpeg",
    "host_deleted": false,
    "search_keyword": "",
    "keyword_match": false
  },
  {
    "listing_url": "https://www.airbnb.com/rooms/8881364",
    "listing_title": "VALLS 1 -Antique & Modernist Apt- w/Elevator now! - Apartments for Rent in Barcelona, Catalunya, Spain - Airbnb",
    "listing_data": {
      "note": "to avoid duplication hotel data available on first result row"
    },
    "review_id": "1704386533720741653",
    "rating": 5,
    "language": "en",
    "text_raw": "We loved our stay here, we felt like we were nicely away from the hustle and bustle yet still very close to transportation and the private back patio is a rare find! Thank you Wally",
    "text_clean": "We loved our stay here, we felt like we were nicely away from the hustle and bustle yet still very close to transportation and the private back patio is a rare find! Thank you Wally",
    "text_localized_raw": "We loved our stay here, we felt like we were nicely away from the hustle and bustle yet still very close to transportation and the private back patio is a rare find! Thank you Wally",
    "text_localized": "We loved our stay here, we felt like we were nicely away from the hustle and bustle yet still very close to transportation and the private back patio is a rare find! Thank you Wally",
    "text_language": "en",
    "text_disclaimer": null,
    "date": "2026-06-09T14:31:47Z",
    "date_localized": "June 2026",
    "highlight": "Stayed with kids",
    "response_raw": null,
    "response": null,
    "response_date": null,
    "room_type": null,
    "room_listing_id": null,
    "reviewer_name": "Laura",
    "reviewer_id": "179198774",
    "reviewer_profile_url": "https://airbnb.com/users/profile/1473996270761019428",
    "reviewer_avatar": "https://a0.muscache.com/im/pictures/user/a0d023c0-ce46-46c7-b441-ad18bac18361.jpg",
    "reviewer_location": null,
    "reviewer_deleted": false,
    "host_name": "Wally",
    "host_id": "46159733",
    "host_profile_url": "https://airbnb.com/users/profile/1465690109182236649",
    "host_avatar": "https://a0.muscache.com/im/pictures/user/User-46159733/original/83463c70-a136-46a3-8dac-08346d03f5e7.jpeg",
    "host_deleted": false,
    "search_keyword": "",
    "keyword_match": false
  }
]
````

### 🧾 What you get, per review

- Review content — original text, auto-translated text, rating, review date, highlight snippet
- Reviewer info — name, profile URL, avatar, location, deleted-account flag
- Host reply — reply message and reply date, if the host responded
- Room/stay context — room type booked
- Listing-wide ratings — category-by-category score breakdown, listing details (property type, location, host info, house rules)
- Keyword match — whether the search query matched this review

### 🔍 How keyword search works

The `search` field is a single query, same as what you'd type into Airbnb's own review search box.

- **`searchIsLocalFilter` unchecked (default):** the query is sent to Airbnb as a server-side filter — only matching reviews are returned, and every one of them is marked `keyword_match: true`.
- **`searchIsLocalFilter` checked:** the query is *not* sent to Airbnb. Every review is still fetched and returned, but each one is checked locally against the query text, and gets a `keyword_match` flag showing whether it was found.

Use the checked option when you want the full, unfiltered review set but still want to know which reviews mention your keyword.

### 🔧 Input options

| Field | Description |
|---|---|
| `listingUrls` | One or more Airbnb listing page URLs |
| `maxResults` | Max reviews to collect per listing. Leave empty to collect all available |
| `sort` | Sort order — best quality, most recent, highest or lowest rating |
| `lang` | Language Airbnb auto-translates reviews into (50+ supported) |
| `search` | Keyword to search for in reviews |
| `searchIsLocalFilter` | If checked, `search` tags reviews locally instead of filtering them via Airbnb |

### 📊 Data Fields

#### 📝 Review Details

| Field | Description |
|---|---|
| `listing_url` | Airbnb listing page URL this review belongs to |
| `listing_title` | Title of the listing |
| `review_id` | Unique ID of the review |
| `rating` | Reviewer's overall rating for this stay |
| `text_raw` / `text_clean` | Original review text, unformatted / with formatting cleaned up |
| `text_localized_raw` / `text_localized` | Auto-translated review text, unformatted / cleaned up |
| `text_language` | Language the review was translated into |
| `date` / `date_localized` | Raw and human-readable review date |
| `highlight` | Airbnb-generated highlight snippet, if any |
| `response_raw` / `response` | Host's reply, unformatted / cleaned up |
| `response_date` | Date of the host's reply |

#### 🛏️ Room / Stay

| Field | Description |
|---|---|
| `room_type` | Title of the room/listing type the review refers to |
| `room_listing_id` | ID of that room/listing type |

#### 👤 Reviewer

| Field | Description |
|---|---|
| `reviewer_name` | First name of the reviewer |
| `reviewer_id` | Airbnb user ID of the reviewer |
| `reviewer_profile_url` | URL of the reviewer's profile |
| `reviewer_avatar` | URL of the reviewer's avatar |
| `reviewer_location` | Reviewer's localized location |
| `reviewer_deleted` | Whether the reviewer's account is deleted |

#### 🏠 Host

| Field | Description |
|---|---|
| `host_name` | First name of the host |
| `host_id` | Airbnb user ID of the host |
| `host_profile_url` | URL of the host's profile |
| `host_avatar` | URL of the host's avatar |
| `host_deleted` | Whether the host's account is deleted |

#### ⭐ Listing & Matching

| Field | Description |
|---|---|
| `listing_data` | Full listing details — property type, location, ratings breakdown, house rules, etc. Only populated on the first review per listing, to avoid duplication |
| `search_keyword` | The search query provided in actor input, if any |
| `keyword_match` | True if the query matched this review — verified locally, or because Airbnb's own filter already applied it |

### 💳 Pricing

Pay-per-result. You're charged for reviews actually delivered, not for pages fetched or requests made.

### ⚠️ Notes

- Free-tier accounts are capped at a small sample size per run, and to a single listing per run — upgrade to a paid Apify plan for full volume and batch scraping.
- Data reflects what's publicly listed on airbnb.com at the time of the run; the source updates continuously.

### 🔗 See also

Need reviews from another platform? Check out:
[Booking.com Reviews Scraper](https://apify.com/mof1re/booking-reviews-scraper-browserless)
[Trustpilot Reviews Scraper](https://apify.com/mof1re/trustpilot-scraper-fast-browserlessapif) — same browserless approach, full review + business profile data.

# Actor input Schema

## `listingUrls` (type: `array`):

Airbnb listing page URLs to scrape reviews from.

## `maxResults` (type: `integer`):

How many reviews to collect per listing. Leave empty to get all (free-tier is capped at 150).

## `lang` (type: `string`):

Language Airbnb will auto-translate reviews into.

## `sort` (type: `string`):

Order in which reviews are fetched.

## `search` (type: `string`):

Keyword to search for in reviews.

## `searchIsLocalFilter` (type: `boolean`):

If checked, the query is NOT sent to Airbnb as a search filter — every review is still fetched and returned, but each one is checked locally and gets keyword\_match / matched\_keywords flags showing whether/where the query was found. If unchecked, the query is used as Airbnb's own search filter, so only matching reviews are returned.

## Actor input object example

```json
{
  "listingUrls": [
    {
      "url": "https://www.airbnb.com/rooms/8881364"
    }
  ],
  "lang": "en",
  "sort": "BEST_QUALITY",
  "searchIsLocalFilter": false
}
```

# Actor output Schema

## `jobAds` (type: `string`):

No description

# 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 = {
    "listingUrls": [
        {
            "url": "https://www.airbnb.com/rooms/8881364"
        }
    ],
    "search": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("mof1re/airbnb-reviews-scraper-browserless").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 = {
    "listingUrls": [{ "url": "https://www.airbnb.com/rooms/8881364" }],
    "search": "",
}

# Run the Actor and wait for it to finish
run = client.actor("mof1re/airbnb-reviews-scraper-browserless").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 '{
  "listingUrls": [
    {
      "url": "https://www.airbnb.com/rooms/8881364"
    }
  ],
  "search": ""
}' |
apify call mof1re/airbnb-reviews-scraper-browserless --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airbnb Reviews Scraper - Fast & Browserless",
        "description": "⚡ Scrapes Airbnb listing reviews via raw HTTP requests — no browser, no headless Chrome. Structured output: ratings, reviewer info, review text (original & translated), host replies, keyword filtering, per-category rating breakdowns. Built for speed and clean data.",
        "version": "0.1",
        "x-build-id": "phXg8n3GHMa5N7CdZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/mof1re~airbnb-reviews-scraper-browserless/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-mof1re-airbnb-reviews-scraper-browserless",
                "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/mof1re~airbnb-reviews-scraper-browserless/runs": {
            "post": {
                "operationId": "runs-sync-mof1re-airbnb-reviews-scraper-browserless",
                "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/mof1re~airbnb-reviews-scraper-browserless/run-sync": {
            "post": {
                "operationId": "run-sync-mof1re-airbnb-reviews-scraper-browserless",
                "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": [
                    "listingUrls"
                ],
                "properties": {
                    "listingUrls": {
                        "title": "🏠 Listing URLs",
                        "type": "array",
                        "description": "Airbnb listing page URLs to scrape reviews from.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max reviews per listing",
                        "type": "integer",
                        "description": "How many reviews to collect per listing. Leave empty to get all (free-tier is capped at 150)."
                    },
                    "lang": {
                        "title": "🌐 Review language",
                        "enum": [
                            "az",
                            "id",
                            "bs",
                            "ca",
                            "cs",
                            "sr",
                            "da",
                            "de",
                            "et",
                            "en",
                            "es",
                            "fr",
                            "ga",
                            "hr",
                            "xh",
                            "zu",
                            "is",
                            "it",
                            "sw",
                            "lv",
                            "lt",
                            "hu",
                            "mt",
                            "ms",
                            "nl",
                            "no",
                            "pl",
                            "pt",
                            "ro",
                            "sq",
                            "sk",
                            "sl",
                            "fi",
                            "sv",
                            "tl",
                            "vi",
                            "tr",
                            "el",
                            "bg",
                            "mk",
                            "ru",
                            "uk",
                            "hy",
                            "ka",
                            "he",
                            "ar",
                            "mr",
                            "hi",
                            "kn",
                            "th",
                            "ko",
                            "ja",
                            "zh"
                        ],
                        "type": "string",
                        "description": "Language Airbnb will auto-translate reviews into.",
                        "default": "en"
                    },
                    "sort": {
                        "title": "↕️ Sort order",
                        "enum": [
                            "BEST_QUALITY",
                            "MOST_RECENT",
                            "RATING_DESC",
                            "RATING_ASC"
                        ],
                        "type": "string",
                        "description": "Order in which reviews are fetched.",
                        "default": "BEST_QUALITY"
                    },
                    "search": {
                        "title": "🔍 Search query",
                        "type": "string",
                        "description": "Keyword to search for in reviews."
                    },
                    "searchIsLocalFilter": {
                        "title": "🏷️ Tag only (don't filter by query)",
                        "type": "boolean",
                        "description": "If checked, the query is NOT sent to Airbnb as a search filter — every review is still fetched and returned, but each one is checked locally and gets keyword_match / matched_keywords flags showing whether/where the query was found. If unchecked, the query is used as Airbnb's own search filter, so only matching reviews are returned.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
