# Agoda Reviews Scraper (`lergassy/agoda-reviews-scraper`) Actor

Extract Agoda hotel reviews and property data, including the Booking.com reviews Agoda shows for each hotel. Get rating, review text, traveler type, room type, reviewer country, check-in date, and helpful votes. Export data, run via API, schedule runs, or integrate with other tools.

- **URL**: https://apify.com/lergassy/agoda-reviews-scraper.md
- **Developed by:** [Matvey](https://apify.com/lergassy) (community)
- **Categories:** Travel
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Agoda Reviews Scraper** extracts hotel reviews and property data from [Agoda.com](https://www.agoda.com) — the leading hotel booking platform in Asia — **without the official Agoda API**, login, or cookies. Paste a hotel URL and get every review as structured **Agoda data**: rating, text, traveler type, room type, reviewer country, and dates. As a bonus, it also extracts the **Booking.com reviews** that Agoda displays for most hotels, so you get two review sources from a single run.

Runs use Agoda's own JSON endpoints instead of rendering pages in a browser, so a hotel with hundreds of reviews finishes in seconds. Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools.

### What is Agoda Reviews Scraper?

Agoda Reviews Scraper is a no-code tool to **scrape Agoda reviews** at scale. Give it one or more hotel page URLs and choose a review source (Agoda, Booking.com, or both), a sort order, and a limit. The Actor returns clean JSON you can download as CSV or Excel, push into a spreadsheet or CRM, or feed into an AI pipeline.

- **Two review sources in one run**: Agoda's own guest reviews plus the Booking.com reviews shown on the same hotel page.
- **Rich review fields**: rating, title, full text, traveler type (couple, family, business, solo), room type, length of stay, reviewer country, check-in month, helpful votes.
- **Hotel record** with Agoda and Booking.com review counts.
- **Fast and cheap**: no browser, no proxies needed for small runs.

### What data can Agoda Reviews Scraper extract?

| Field | Example |
|---|---|
| `rating` | 10.0 |
| `title` | Great location, clean and friendly |
| `text` | We stayed 7 nights in the Magani Suite… |
| `travelerType` | Couple |
| `roomType` | Magani Suite |
| `reviewerCountry` | Australia |
| `checkInDate` | August 2026 |
| `lengthOfStay` | 7 nights |
| `source` | agoda / booking.com |
| `hotelName`, `hotelId`, `hotelUrl` | The Magani Hotel And Spa, 335650 |

The hotel record adds `agodaReviewCount` and `bookingReviewCount` so you can size a property before scraping everything.

### How much does it cost to scrape Agoda reviews?

Pricing is **pay per result**: you are charged only for the review and hotel records actually saved to your dataset, with no subscription. Every Apify account includes free monthly usage, which is enough to scrape several hundred Agoda reviews for free. Because the Actor talks to Agoda's JSON endpoints directly, platform compute is tiny — a two-hotel run of 160 reviews used well under a cent of compute in our tests. See the **Pricing** tab for the current price per 1,000 results.

### How to scrape Agoda reviews

1. Open any hotel on Agoda.com and copy its URL, for example `https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html`.
2. Paste it into **Agoda hotel URLs**. Add as many hotels as you need.
3. Choose **Review source** (Agoda, Booking.com, or both), **Sort reviews by**, and **Max reviews per hotel**.
4. Click **Start**. When the run finishes, open the **Storage** tab and export as JSON, CSV, or Excel.

### ⬇️ Input

[![Agoda Reviews Scraper input form on Apify](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/agoda/agoda-scraper-input-form.png)](https://console.apify.com/sign-up)

The only required field is the list of Agoda hotel URLs. Everything else has sensible defaults.

```json
{
    "startUrls": [
        "https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html",
        "https://www.agoda.com/padma-resort-legian/hotel/bali-id.html"
    ],
    "mode": "both",
    "reviewsProvider": "all",
    "maxReviewsPerHotel": 200,
    "reviewsSort": "recent"
}
```

| Field | Required | Description |
|---|---|---|
| `startUrls` | yes | Agoda hotel page URLs |
| `mode` | no | `reviews`, `hotel`, or `both` (default `both`) |
| `reviewsProvider` | no | `agoda`, `booking`, or `all` |
| `maxReviewsPerHotel` | no | Per hotel, per source (default 100) |
| `reviewsSort` | no | `recent`, `ratingDesc`, `ratingAsc`, `helpful` |

#### Scrape reviews from Booking.com via Agoda

Set `reviewsProvider` to `booking` or `all`. Agoda shows Booking.com guest reviews on most hotel pages; the Actor pulls them through the same endpoint and tags each record with `source: "booking.com"`.

### ⬆️ Output

[![Agoda reviews dataset preview: hotel, source, rating, title, traveler type, room, country, date](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/agoda/agoda-scraper-output-table.png)](https://console.apify.com/sign-up)

Each review is one dataset item. A hotel record (`type: "hotel"`) is added per URL when `mode` is `hotel` or `both`.

```json
{
    "type": "review",
    "hotelId": 335650,
    "hotelName": "The Magani Hotel And Spa",
    "source": "booking.com",
    "rating": 10,
    "title": "Good value",
    "text": "Good value for money in a busy location, easy walk to many restaurants and bars…",
    "travelerType": "Couple",
    "roomType": "Deluxe Room",
    "reviewerCountry": "Australia",
    "reviewDate": "August 30, 2026",
    "checkInDate": "August 2026",
    "lengthOfStay": "3 nights",
    "helpfulVotes": 0
}
```

Use the **Reviews** and **Hotels** table views in the dataset to browse results, or download everything as CSV/Excel.

### Use cases for Agoda review data

#### Hotel reputation monitoring

Track new reviews for your own property from Agoda and Booking.com in one feed; schedule the Actor daily and alert your team on low ratings.

#### Competitor benchmarking

Compare guest sentiment across competing hotels in Bali, Bangkok, Tokyo, or any market Agoda covers.

#### Sentiment analysis and AI

Feed clean, structured review text into sentiment models, dashboards, or RAG applications.

#### Travel content and recommendations

Build hotel guides and comparison pages backed by real guest feedback.

### Integrations and Agoda reviews API

Run Agoda Reviews Scraper from your own code with the [Apify API](https://docs.apify.com/api/v2) and the JavaScript or Python client, or connect it without code to Google Sheets, Slack, n8n, Make, Zapier, and webhooks. It also works with LangChain, LlamaIndex, and the Apify MCP server, so AI agents can request Agoda reviews on demand.

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("lergassy/agoda-reviews-scraper").call(run_input={
    "startUrls": ["https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"],
    "reviewsProvider": "all",
    "maxReviewsPerHotel": 100,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["rating"], item["text"])
```

### 🤖 For AI Agents & LLM Apps

Compact reference for agents calling this Actor through the [Apify MCP server](https://mcp.apify.com) or the Apify API (`lergassy/agoda-reviews-scraper`).

**Purpose:** returns guest reviews for any Agoda property, including the
Booking.com reviews Agoda republishes on the same page, plus a summary row per
hotel. Use it to answer "what do guests say about this hotel", "how did sentiment
change this season" and "how does this property compare with the one next door".

**Minimal input:**

```json
{ "startUrls": ["https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"], "maxReviewsPerHotel": 50 }
```

**Output:** one row per review — `type`, `hotelId`, `hotelName`, `hotelUrl`,
`source`, `reviewId`, `rating`, `title`, `text`, `positives`, `negatives`,
`reviewDate`, `checkInDate`, `reviewerName`, `reviewerCountry`, `travelerType`,
`roomType`, `lengthOfStay`, `reviewProvider`, `helpfulVotes`. With `mode` set to
`hotel` or `both` the dataset also carries one row per property with `name`,
`hotelId`, `agodaReviewCount`, `bookingReviewCount` and `url`.

**Behaviors an agent should know:**

- Input is Agoda property URLs, not search queries. Any Agoda hotel URL works; the
  Actor resolves the property id from it.
- `reviewsProvider` picks the pool: `agoda` (default), `booking` for the
  Booking.com reviews shown on the same property, or `all` for both. The `source`
  field on every row says which pool it came from, so mixed runs stay traceable.
- `maxReviewsPerHotel` is per property **and per source**, default 100. Ten hotels
  with `all` can therefore return up to 2,000 rows.
- Ratings use each source's own scale: Agoda scores out of 10, Booking.com out of
  10 as well, but the two populations are not directly comparable — compare within
  a `source`, not across it.
- `positives` and `negatives` are only filled where the source splits the review
  into liked and disliked; Agoda's own reviews usually put everything in `text`.
- Dates are ISO 8601. `checkInDate` is the month of the stay, not a full date,
  because that is all the source publishes.
- No login, no API key and no browser: the Actor reads Agoda's own review endpoint,
  so runs are fast and cheap.

### ❓ FAQ

#### Is it legal to scrape Agoda reviews?

The Actor extracts only publicly available data that anyone can see without logging in and does not collect private account data. Always review the target website's terms of service and consult a lawyer for your specific use case.

#### Can I use Agoda Reviews Scraper with the Apify API?

Yes. Every Actor on Apify is available via REST API and the official JavaScript and Python clients — see the **API** tab for ready-made snippets.

#### Can I use it through an MCP server?

Yes. Connect the Apify MCP server to your AI agent and it can call this Actor as a tool.

#### Can I integrate it with other apps?

Yes — Google Sheets, Slack, n8n, Make, Zapier, webhooks, and any tool that speaks HTTP.

#### How do I get one review per row?

Reviews are already one item per row. Filter the **Reviews** view or export with `type=review` to drop hotel records.

#### Do I need proxies?

Small runs work without them. For large volumes keep Apify Proxy enabled in the input (on by default).

#### Which hotels work?

Any hotel page on agoda.com worldwide; Agoda's deepest coverage is Asia — Bali, Thailand, Japan, Vietnam, Singapore, Malaysia.

#### Does it scrape hotel prices?

Not yet — this Actor focuses on reviews and property info. Price-by-date extraction is planned; request it in the Issues tab if you need it.

### Your feedback

Found a bug or need a field we don't return? Open an issue in the **Issues** tab — feature requests are welcome and usually shipped fast. If the Actor helped you, a review helps others find it.

### You might also like

| Actor | What it does |
|---|---|
| [Airbnb Scraper](https://apify.com/lergassy/airbnb-scraper) | Airbnb listings for any place and dates: nightly price, rating, beds, amenities, host |
| [Tokopedia Reviews Scraper](https://apify.com/lergassy/tokopedia-reviews-scraper) | Product reviews from any shop on Indonesia's largest marketplace |
| [Google Flights Scraper](https://apify.com/lergassy/google-flights-scraper) | Flight prices, airlines, stops and times by route and dates |
| [New Business Leads Monitor](https://apify.com/lergassy/us-business-filings) | Daily feed of newly registered US businesses and funded startups, with phone, email and lead score |
| [Email & Phone Verifier](https://apify.com/lergassy/email-phone-verifier) | Checks e-mails and phone numbers in bulk: deliverability, throwaway and role flags, numbering plan, US state and time zone |

# Actor input Schema

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

Paste one or more links to hotel pages on <a href='https://www.agoda.com' target='_blank'>Agoda.com</a> — open a hotel there and copy the address from your browser. Example: <code>https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html</code>

## `mode` (type: `string`):

Hotel info, reviews, or both

## `reviewsProvider` (type: `string`):

Agoda displays both its own guest reviews and Booking.com reviews for most hotels. Pick one source or scrape both at once.

## `maxReviewsPerHotel` (type: `integer`):

Limit the number of reviews scraped per hotel per review source

## `reviewsSort` (type: `string`):

Order in which reviews are scraped

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

Proxy settings. Recommended for larger runs.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"
  ],
  "mode": "both",
  "reviewsProvider": "agoda",
  "maxReviewsPerHotel": 100,
  "reviewsSort": "recent",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

One row per guest review, plus one summary row per hotel: rating, title, text, traveller type, room type, stay length and review source (Agoda's own reviews and the Booking.com reviews shown on Agoda).

# 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.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/agoda-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 = { "startUrls": ["https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"] }

# Run the Actor and wait for it to finish
run = client.actor("lergassy/agoda-reviews-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    "https://www.agoda.com/the-magani-hotel-and-spa/hotel/bali-id.html"
  ]
}' |
apify call lergassy/agoda-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/agoda-reviews-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/3gqlOCuYuavskaGGj/builds/3OsCe7yODb9vpTR46/openapi.json
