# Airbnb Reviews Scraper (`crawlio/airbnb-reviews-scraper`) Actor

Extract thousands of Airbnb reviews in seconds. Automatically pulls guest feedback, star distribution, stay dates, and host responses to help you analyze property sentiment and performance.

- **URL**: https://apify.com/crawlio/airbnb-reviews-scraper.md
- **Developed by:** [Crawlio](https://apify.com/crawlio) (community)
- **Categories:** Travel
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 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.

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

### What does Airbnb Reviews Scraper do?

Airbnb Reviews Scraper extracts review data from public [Airbnb](https://www.airbnb.com) listing URLs.

Airbnb Reviews Scraper can scrape:

- Review text
- Review author first name
- Review date
- Star rating
- Reviewer location and tenure when available
- Host responses when available
- Total review count
- Rating breakdowns such as cleanliness, accuracy, check-in, communication, location, and value

### Why scrape Airbnb reviews?

Airbnb reviews are useful for hospitality research, guest experience analysis, competitor monitoring, and listing quality checks.

Here are some ways you can use the data:

- Track guest sentiment across one or more listings
- Monitor recurring complaints or praised amenities
- Compare review volume and ratings between competing properties
- Build hospitality datasets for analytics or machine learning
- Audit listing quality and guest experience over time

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

### How to scrape Airbnb reviews

It's easy to scrape Airbnb reviews with Airbnb Reviews Scraper. Just follow these steps:

1. Click on **Try for free**.
2. Select operation:
   - **Reviews** -> fetch paginated review records
   - **Reviews summary** -> fetch review count and rating breakdown
3. Enter one Airbnb room URL or a list of URLs.
4. Click on **Run**.
5. When the Actor has finished, preview or download your data from the **Dataset** tab.

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

Apify gives you $5 free usage credits every month on the [Apify Free plan](https://apify.com/pricing). The `reviews` operation returns one row per scraped review, so usage scales with the number of reviews you request and the number of reviews Airbnb returns.

For regular review monitoring or larger batches, use an Apify paid plan. See [Apify pricing](https://apify.com/pricing) for current options.

### Results

The `reviews` operation returns one dataset row per scraped review.

Here is a sample review item returned by the Actor:

```json
{
  "url": "https://www.airbnb.com/rooms/992970965790772607",
  "review_offset": 0,
  "author": "Amal",
  "date": "2026-05-04",
  "text": "Had a very nice stay here; Lily was helpful and friendly. The room was clean and was tidied daily. I would recommend Lily as a host.",
  "star_rating": "5",
  "reviewer_location": "N/A",
  "reviewer_tenure": "10 years on Airbnb",
  "stay_type": "N/A",
  "avatar_url": "https://a0.muscache.com/im/pictures/user/3e441f05-ab47-49e8-a3b2-773b388dfb08.jpg"
}
````

### Supported operations

The Actor supports two operations:

- `reviews` -> fetch review records from one or more Airbnb listing URLs
- `reviews_summary` -> fetch total review count and rating breakdown

***

#### Reviews

Use this operation when you need individual review records.

The dataset contains one row per review. For example, `limit: 500` can return up to 500 rows for each listing URL. Leave `limit` empty to scrape all available reviews.

**Limit:** Optional. Actual returned reviews may be lower if the listing has fewer reviews or Airbnb stops pagination earlier.

**Example input:**

```json
{
  "operation": "reviews",
  "reviews": {
    "url": "https://www.airbnb.com/rooms/992970965790772607",
    "offset": 0,
    "limit": 20
  }
}
```

**Batch input:**

```json
{
  "operation": "reviews",
  "reviews": {
    "urls": [
      "https://www.airbnb.com/rooms/11710116",
      "https://www.airbnb.com/rooms/22463977"
    ],
    "offset": 0,
    "limit": 10
  }
}
```

***

#### Reviews summary

Use this operation when you only need review counts and rating breakdowns.

**Example input:**

```json
{
  "operation": "reviews_summary",
  "reviews_summary": {
    "url": "https://www.airbnb.com/rooms/992970965790772607"
  }
}
```

**Example summary row:**

```json
{
  "url": "https://www.airbnb.com/rooms/992970965790772607",
  "rating_breakdown": {
    "overall": "4.94",
    "cleanliness": "5.0",
    "accuracy": "4.9",
    "check_in": "4.9",
    "communication": "4.9",
    "location": "4.8",
    "value": "4.9",
    "star_distribution": {}
  },
  "reviews_count": 515
}
```

### Proxy support

Airbnb may show temporary verification pages or rate-limit traffic. If that happens, enable Apify Proxy in the **Proxy configuration** section. The Actor supports Apify proxy configuration and rotates to a fresh proxy session when it detects a temporary upstream block.

### Tips for scraping Airbnb reviews

- Use `limit` to control cost and runtime.
- Leave `limit` empty only when you want all available reviews for each listing.
- Use `offset` to continue from a later review page.
- Use `reviews_summary` first if you only need counts and ratings.
- Use batch URLs when comparing multiple listings.
- Schedule regular runs to monitor changes over time.

### Is it legal to scrape Airbnb?

Note that personal data is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

We also recommend that you read our blog post: [is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

# Actor input Schema

## `operation` (type: `string`):

Choose whether to fetch full reviews or a review summary.

## `reviews` (type: `object`):

Configuration for fetching full reviews.

## `reviews_summary` (type: `object`):

Configuration for fetching a review summary without individual reviews.

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

Select proxies to be used.

## Actor input object example

```json
{
  "operation": "reviews",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One dataset item per scraped review.

## `runSummary` (type: `string`):

Short summary stored in the OUTPUT record of the default key-value store.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlio/airbnb-reviews-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 = { "proxyConfiguration": { "useApifyProxy": False } }

# Run the Actor and wait for it to finish
run = client.actor("crawlio/airbnb-reviews-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 '{
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call crawlio/airbnb-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Airbnb Reviews Scraper",
        "description": "Extract thousands of Airbnb reviews in seconds. Automatically pulls guest feedback, star distribution, stay dates, and host responses to help you analyze property sentiment and performance.",
        "version": "0.1",
        "x-build-id": "ZNxzwxllkKtmk2yfe"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlio~airbnb-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlio-airbnb-reviews-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/crawlio~airbnb-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlio-airbnb-reviews-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/crawlio~airbnb-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlio-airbnb-reviews-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",
                "properties": {
                    "operation": {
                        "title": "Operation",
                        "enum": [
                            "reviews",
                            "reviews_summary"
                        ],
                        "type": "string",
                        "description": "Choose whether to fetch full reviews or a review summary.",
                        "default": "reviews"
                    },
                    "reviews": {
                        "title": "Reviews input",
                        "type": "object",
                        "description": "Configuration for fetching full reviews.",
                        "properties": {
                            "url": {
                                "title": "Listing URL",
                                "type": "string",
                                "description": "Single Airbnb listing URL.",
                                "prefill": "https://www.airbnb.com/rooms/992970965790772607",
                                "editor": "textfield"
                            },
                            "urls": {
                                "title": "Listing URLs",
                                "type": "array",
                                "description": "Optional batch list of Airbnb listing URLs.",
                                "prefill": [
                                    "https://www.airbnb.com/rooms/11710116",
                                    "https://www.airbnb.com/rooms/22463977",
                                    "https://www.airbnb.com/rooms/2114433",
                                    "https://www.airbnb.com/rooms/18022636",
                                    "https://www.airbnb.com/rooms/654949802542096801",
                                    "https://www.airbnb.com/rooms/30082832",
                                    "https://www.airbnb.com/rooms/23840413",
                                    "https://www.airbnb.com/rooms/20651581",
                                    "https://www.airbnb.com/rooms/38520126"
                                ],
                                "editor": "stringList",
                                "items": {
                                    "type": "string"
                                }
                            },
                            "offset": {
                                "title": "Review offset",
                                "description": "Starting offset for reviews (useful for pagination).",
                                "type": "integer",
                                "default": 0,
                                "minimum": 0,
                                "editor": "number"
                            },
                            "limit": {
                                "title": "Limit",
                                "type": "integer",
                                "description": "Maximum number of reviews to return. Leave empty to scrape all available reviews.",
                                "prefill": 20,
                                "minimum": 1,
                                "editor": "number"
                            }
                        },
                        "additionalProperties": false
                    },
                    "reviews_summary": {
                        "title": "Reviews summary input",
                        "type": "object",
                        "description": "Configuration for fetching a review summary without individual reviews.",
                        "properties": {
                            "url": {
                                "title": "Listing URL",
                                "type": "string",
                                "description": "Single Airbnb listing URL.",
                                "prefill": "https://www.airbnb.com/rooms/992970965790772607",
                                "editor": "textfield"
                            },
                            "urls": {
                                "title": "Listing URLs",
                                "type": "array",
                                "description": "Optional batch list of Airbnb listing URLs.",
                                "prefill": [
                                    "https://www.airbnb.com/rooms/11710116",
                                    "https://www.airbnb.com/rooms/22463977",
                                    "https://www.airbnb.com/rooms/2114433",
                                    "https://www.airbnb.com/rooms/18022636",
                                    "https://www.airbnb.com/rooms/654949802542096801",
                                    "https://www.airbnb.com/rooms/30082832",
                                    "https://www.airbnb.com/rooms/23840413",
                                    "https://www.airbnb.com/rooms/20651581",
                                    "https://www.airbnb.com/rooms/38520126"
                                ],
                                "editor": "stringList",
                                "items": {
                                    "type": "string"
                                }
                            }
                        },
                        "additionalProperties": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Settings",
                        "type": "object",
                        "description": "Select proxies to be used.",
                        "default": {
                            "useApifyProxy": 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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
