# Agoda Reviews Scraper - Ratings, Traveller Type & Hotel Replies (`topapi/agoda-reviews-scraper`) Actor

Scrape Agoda hotel reviews by link, hotel id or name: score, title, text, review and stay dates, reviewer country, traveller type, room, hotel reply, photos. Many hotels per run, language/score/traveller filters, hotel score summary, room prices, monitor mode. $4.80 per 1,000 reviews, no start fee.

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

## Pricing

from $4.80 / 1,000 reviews

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Agoda Reviews Scraper do?

**Agoda Reviews Scraper** extracts Agoda hotel reviews from [Agoda.com](https://www.agoda.com) and turns hotel links, Agoda hotel ids or hotel names into structured rows: one guest review per row with the score, title, full text, review and stay dates, reviewer country, traveller type, room and the hotel's reply. Built for hotel revenue and reputation teams, travel analysts and AI builders who need Agoda guest reviews in bulk without copying them by hand.

Agoda review scraper - Agoda reviews API - Agoda hotel reviews export

<a href="https://console.apify.com/actors/dGfEBw3nhTsEgTbvF"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/agoda-reviews-scraper-source.png" alt="Agoda hotel reviews page that Agoda Reviews Scraper turns into rows" style="width:70%"></a>

- **Every review field Agoda shows:** score out of 10 and its label, title, text, liked/disliked text, review date, check-in and check-out dates, nights stayed, reviewer country, traveller type, room type, guest photos and the hotel's reply with its date.
- **Many hotels in one run:** paste links, ids or names; a 10-hotel run returned 6,507 reviews in 102 seconds.
- **Original and translated text:** when Agoda shows a machine translation, you get both the English text and the review as it was written.
- **Hotel score summary:** Agoda score, sub-scores, scores by traveller type, review topics and Agoda's AI review summary, per hotel.
- **Room prices for your dates:** every room offer Agoda sells for a stay, with nightly and total price, breakfast and cancellation terms.
- **No login, cookies or Agoda API key.**
- **Export anywhere:** JSON, CSV, Excel, XML; schedules, webhooks, Make, Zapier, n8n, Google Sheets, Slack, the Apify API and MCP.

### What data can you get from Agoda?

<table>
<tr>
<td>🏨 Hotel name, id and link</td>
<td>🆔 Review id (<code>hotelReviewId</code>)</td>
<td>⭐ Score 0-10 + label (<code>rating</code>, <code>ratingText</code>)</td>
</tr>
<tr>
<td>📝 Title and text</td>
<td>👍 Liked / 👎 disliked text</td>
<td>🌐 Review language</td>
</tr>
<tr>
<td>🔤 Original text of translated reviews</td>
<td>📅 Review date</td>
<td>🛎️ Check-in / check-out dates, stay month</td>
</tr>
<tr>
<td>🌙 Nights stayed</td>
<td>🗺️ Reviewer country + country code</td>
<td>🧳 Traveller type (couple, family, solo, group, business)</td>
</tr>
<tr>
<td>🛏️ Room type the guest booked</td>
<td>📷 Guest photos</td>
<td>💬 Hotel reply, replier and reply date</td>
</tr>
<tr>
<td>📊 Hotel Agoda score + sub-scores on every row</td>
<td>🤖 AI review summary per hotel</td>
<td>💲 Room offers with prices for a stay</td>
</tr>
</table>

On a 6,507-review test run (10 hotels), every row had the review id, score, title, review date, stay dates, traveller type and language; 99.2% had review text, 99.7% the reviewer's country, 90.7% the room type and 33.7% a hotel reply.

### How to scrape Agoda reviews with Agoda Reviews Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up) - $5 of monthly credit, no card needed.
2. Open [Agoda Reviews Scraper](https://apify.com/topapi/agoda-reviews-scraper) and click **Try for free**.
3. Paste Agoda hotel links, hotel ids or hotel names into **Hotels** and set **Max reviews per hotel**.
4. Pick filters if you need them: sort order, review languages, guest rating, traveller type, room type, dates.
5. Click **Start**. Reviews stream into the dataset as each page is read.
6. Open the **Storage** tab and **Export** as JSON, CSV or Excel - or let a schedule run it for you.

### ⬇️ Input

| Parameter | Type | Description |
|---|---|---|
| **🔍 What to scrape** | | |
| `startUrls` | List | **Required.** Agoda hotel links (any language version), Agoda hotel ids, or hotel names, e.g. `https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html`, `185945`, `ibis Budapest City` |
| `propertyIds` | List | Optional Agoda property ids, same as putting the id in `startUrls` |
| `mode` | Select | `reviews` (default), `hotel` (summary row only), `both`, `rooms` (room prices only) |
| **🎯 Filters** (applied by Agoda) | | |
| `sort` | Select | `recent` (Agoda's "Most recent", default), `newest` (true newest first across every language), `oldest`, `helpful`, `ratingDesc`, `ratingAsc` |
| `reviewSources` | Multi-select | `agoda` (default) and/or `additional` (partner reviews Agoda lists under "Additional reviews", e.g. Priceline.com) |
| `language` | Multi-select | Review languages, e.g. `en`, `ja`, `ko`, `zh-tw`. Empty = all |
| `rating` | Multi-select | Agoda score bands: `exceptional`, `excellent`, `very_good`, `good`, `below_expectation` |
| `travellerType` | Select | `couple`, `solo`, `family_young_children`, `family_teens`, `group`, `business`. Default: all |
| `roomType` | Text | Only reviews of rooms whose name contains this text, e.g. `Suite` |
| **✂️ Refine results** | | |
| `cutoffDate` / `toDate` | Date | Review date window, `YYYY-MM-DD` or a relative age like `30 days` |
| `minRating` / `maxRating` | Number | Score range on Agoda's 0-10 scale |
| `keyword` | List | Keep reviews whose title or text contains any of these words |
| `onlyWithText` | Boolean | Skip reviews without comment text |
| **➕ Extra data** | | |
| `aggregateRatings` | Boolean | Hotel scores and review counts on every review row. Default `true`, free |
| `includeRooms` + `checkIn`, `checkOut`, `nights`, `adults`, `children`, `childrenAges`, `roomsWanted`, `currency` | | Room offers for the stay, charged as **room** at $0.001 per offer |
| **🔁 Monitoring** | | |
| `monitorMode` + `monitorStoreName` | Boolean / Text | Return only reviews that earlier runs with the same name did not deliver |
| **📦 Output** | | |
| `maxReviewsPerHotel` | Integer | Default `50`; `0` = every review Agoda serves |
| `maxResults` | Integer | Ceiling on review rows for the whole run. `0` = none |
| `stripPersonalData` | Boolean | Default `true`: the reviewer's display name is left out |
| `includeOwnerResponse` | Boolean | Hotel replies. Default `true` |
| `compact` | Boolean | Core fields only, sized for AI agents and MCP |

#### Input JSON

```json
{
  "startUrls": [
    "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html",
    "335650",
    "ibis Budapest City"
  ],
  "maxReviewsPerHotel": 200,
  "sort": "newest",
  "language": ["en", "ja"],
  "mode": "both"
}
```

#### Paste any Agoda hotel link, id or name

Links from any Agoda language version work (`/de-de/...`, `?cid=...`); the actor reads the hotel id from the page. A name uses the first hotel Agoda's own search box suggests, so add the city when the name is common: **Do:** `Hilton Bali Resort` · **Don't:** `Hilton` (Agoda suggests one Hilton of many).

#### Pick "Newest first" when you want the latest reviews

Agoda's "Most recent" order lists reviews written in, or translated into, English first and then every other language. With `sort: "newest"` the actor reads the hotel's recent review list in full and returns the newest reviews of every language first: on Marina Bay Sands the 100 newest came from 11 languages, against mostly English ones in Agoda's own order.

### ⬆️ Output

Every Agoda review becomes one dataset item. Here is the table view of a 10-hotel run:

<a href="https://console.apify.com/actors/dGfEBw3nhTsEgTbvF"><img src="https://api.apify.com/v2/key-value-stores/qNQ9zP0xaj2yxGeMY/records/agoda-reviews-scraper-output.png" alt="Agoda Reviews Scraper output: Agoda reviews as dataset rows" style="width:70%"></a>

One review row from that run (aggregate arrays shortened):

```json
{
  "type": "review",
  "hotelId": 335650,
  "hotelName": "The Magani Hotel and Spa",
  "hotelReviewId": 1185557602,
  "rating": 10,
  "ratingText": "Exceptional",
  "reviewTitle": "Magani hotel",
  "reviewComments": "We have stopped at this hotel on 3 times previously the staff are amazing service very good and we are going to book there again for our 2027 holiday",
  "language": "en",
  "reviewDate": "2026-09-23T11:11:43+07:00",
  "checkInDate": "2026-09-03T00:00:00+07:00",
  "checkOutDate": "2026-09-19T00:00:00+07:00",
  "reviewerLengthOfStay": 16,
  "reviewerCountryName": "Australia",
  "reviewerGroupName": "Couple",
  "reviewerRoomTypeName": "Deluxe Room",
  "responderName": "The Magani Hotel and Spa",
  "responseText": "... Thank you very much for your continued loyalty and for choosing The Magani Hotel and Spa on three occasions. ...",
  "responseDate": "2026-10-08T08:44:02.715+07:00",
  "agodaAggregateReviewScore": 9,
  "agodaReviewsCount": 2301,
  "bookingAggregateReviewScore": 9.4
}
```

A translated review carries both texts: `"reviewTitle": "Thoughtfulness!"`, `"originalTitle": "心遣い‼︎"`, `"language": "ja"`, `"isTranslated": true`.

#### Fields

| Field | Type | What it is | Fill on test run |
|---|---|---|---|
| `hotelReviewId` | number | Agoda's review id | 100% |
| `rating`, `ratingText` | number, string | Score 0-10 and Agoda's label | 100% |
| `reviewTitle`, `reviewComments` | string | Title and review text | 100%, 99.2% |
| `reviewPositives`, `reviewNegatives` | string | Liked / disliked text, when the guest split them | 6.0%, 0.5% |
| `language`, `isTranslated`, `translatedTo`, `originalTitle`, `originalComment` | | Language written in; original text of the 3.9% Agoda translated | 100% / 3.9% |
| `reviewDate`, `checkInDate`, `checkOutDate`, `stayMonth` | string (ISO 8601) | Review and stay dates (Agoda's UTC+7 clock) | 100% |
| `reviewerLengthOfStay` | number | Nights | 100% |
| `reviewerCountryName`, `reviewerCountryCode` | string | Reviewer's country | 99.7% |
| `reviewerGroupName` | string | Traveller type | 100% |
| `reviewerRoomTypeName` | string | Room booked | 90.7% |
| `reviewerName` | string | Display name, only with `stripPersonalData: false` | - |
| `helpfulVotes`, `unhelpfulVotes` | number | Votes on the review | 100% |
| `images` | array | Guest photo URLs | 4.6% |
| `responderName`, `responseText`, `responseDate` | string | Hotel reply | 33.7% |
| `agodaAggregateReviewScore`, `agodaAggregateDetailedReviewScore`, `agodaReviewsCount`, `bookingAggregateReviewScore`, `bookingAggregateDetailedReviewScore`, `bookingReviewsCount` | | Hotel-level scores and counts (`aggregateRatings`) | 100% |

**Hotel summary rows** (`type: "hotel"`, mode `hotel` or `both`): name, stars, type, address, area, city, country, postal code, coordinates, overall score and review count, Agoda score, sub-scores, score distribution, scores by traveller type, review topics with positive/negative shares, recent scores, the Booking.com score and count Agoda shows, review languages, and Agoda's AI review summary where Agoda has one (6 of 10 hotels on the test run).

**Room rows** (`type: "room"`, `includeRooms` or mode `rooms`): room name, offer, size, bedding, max guests, nightly price, price with taxes, total for the stay, crossed-out price and discount, breakfast, free cancellation, cancellation text, pay-later terms, benefits, availability note, supplier and room photos. A 2-night stay returned 76 offers for Marina Bay Sands and 12 for ibis Budapest City.

### How can I use Agoda reviews data?

- 🏨 **Hotel managers** - track every new Agoda review of your property and the replies your team posted.
- 📊 **Revenue and market analysts** - compare scores by traveller type and room across a city's hotels.
- 🔎 **Competitor benchmarking** - read what guests praise and complain about at the hotels next door.
- 🌏 **Asia travel research** - Agoda reviews are dense for Thailand, Japan, Korea, Indonesia, Singapore and Vietnam; get them in the language they were written in.
- 🤖 **AI and sentiment teams** - feed review text, original-language text and stay context into LLMs and dashboards.
- 💲 **Rate shoppers** - pull room offers and prices for given dates next to the reviews.

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

Agoda Reviews Scraper is pay-per-result: **$4.80 per 1,000 reviews** ($0.0048 per review), no start fee. Hotel summary rows are $0.001 each and room offers $0.001 each, only when you ask for them.

| Reviews | Cost |
|---:|---:|
| 10 | $0.048 |
| 100 | $0.48 |
| 1,000 | $4.80 |
| 10,000 | $48 |

There is nothing else to pay: Apify platform usage is included in these prices. Measured on 256 MB: 1,000 Marina Bay Sands reviews in 8-14 seconds (the time depends on how many empty answers Agoda sends that need a retry); 10 hotels, 6,507 reviews in 102 seconds.

### Integrations, API, scheduling & MCP

- **Schedules:** run Agoda Reviews Scraper daily or weekly from **Schedules**; with `monitorMode` each run returns only reviews you have not received yet.
- **Webhooks:** call a URL when a run finishes and push the reviews to your CRM, Slack or a sheet.
- **No-code:** Make, Zapier, n8n, Google Sheets, Airtable and Slack via [Apify integrations](https://docs.apify.com/integrations).
- **API:** run it from Node.js or Python with `apify-client` - code on the [API tab](https://apify.com/topapi/agoda-reviews-scraper/api/python) and the [Apify API reference](https://docs.apify.com/api/v2).
- **MCP / AI agents:** connect Claude, Cursor or any MCP client through the [MCP tab](https://apify.com/topapi/agoda-reviews-scraper/api/mcp) and ask for Agoda reviews in plain language.

### More travel and review scrapers

<table>
<tr>
<td>🛏️ <a href="https://apify.com/topapi/booking-hotels-scraper">Booking.com Hotels Scraper</a></td>
<td>🏨 <a href="https://apify.com/topapi/google-hotels-scraper">Google Hotels Scraper</a></td>
<td>📍 <a href="https://apify.com/topapi/google-maps-reviews-scraper">Google Maps Reviews Scraper</a></td>
</tr>
<tr>
<td>⭐ <a href="https://apify.com/topapi/trustpilot-reviews-scraper">Trustpilot Reviews Scraper</a></td>
<td>🍽️ <a href="https://apify.com/topapi/yelp-reviews-scraper">Yelp Reviews Scraper</a></td>
<td>👍 <a href="https://apify.com/topapi/facebook-reviews-scraper">Facebook Reviews Scraper</a></td>
</tr>
<tr>
<td>🗺️ <a href="https://apify.com/topapi/apple-maps-scraper">Apple Maps Scraper</a></td>
<td colspan="2">🧭 <a href="https://apify.com/topapi">All TopApi actors</a></td>
</tr>
</table>

### Limits & empty runs

- **How many reviews:** `maxReviewsPerHotel: 0` returns everything Agoda's review lists serve. For Marina Bay Sands that was 11,018 reviews in 292 seconds; Agoda's page counts 35,633 Agoda reviews, but its review list repeats earlier pages once it gets past roughly 150 pages, so older history beyond that is not reachable.
- **Booking.com-sourced reviews** that Agoda shows on its pages are not included; `bookingAggregateReviewScore` and `bookingReviewsCount` are the hotel-level numbers only.
- **Date windows, monitor runs and the newest/oldest sorts** read the hotel's whole recent list (about 100 reviews per request), so they take longer than a capped run in Agoda's order: 50 seconds for Marina Bay Sands.
- **Empty dataset:** the hotel has no Agoda reviews, your filters matched none, or the input was not an Agoda hotel; the run's status and `RUN_SUMMARY` record say which. Nothing is charged for those.
- **Not available:** reviewer profile counts and Agoda's expert-reviewer badge were empty on every one of 6,507 measured reviews, so they are not output.

### FAQ

#### How many reviews can Agoda Reviews Scraper collect in one run?

As many as you ask for across as many hotels as you paste. A 10-hotel run returned 6,507 reviews in 102 seconds and a single hotel returned 11,018 in under five minutes. Use `maxResults` to cap the whole run.

#### Can I run Agoda Reviews Scraper on a schedule to get new reviews automatically?

Yes. Save your input as a task, turn on `monitorMode` with a `monitorStoreName`, and add a daily schedule. The first run is the baseline; after it, each run looks only for reviews written since the previous run and returns the ones you have not received.

#### Can I get Agoda reviews in a specific language?

Yes. Pick languages in `language` (for example `ja` and `ko`); Agoda filters the list itself. Translated reviews also keep the original text in `originalTitle` and `originalComment`.

#### Can I integrate Agoda Reviews Scraper with other apps?

Yes - Make, Zapier, n8n, Google Sheets, Slack and more via [Apify integrations](https://docs.apify.com/integrations), or [webhooks](https://docs.apify.com/integrations/webhooks) when a run finishes.

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

Yes. Use `apify-client` for [Node.js](https://apify.com/topapi/agoda-reviews-scraper/api/javascript) or [Python](https://apify.com/topapi/agoda-reviews-scraper/api/python) to start runs and read the dataset.

#### Can I use Agoda Reviews Scraper through an MCP server?

Yes. Open the [MCP tab](https://apify.com/topapi/agoda-reviews-scraper/api/mcp), connect your MCP client and ask for Agoda hotel reviews in plain language. Turn on `compact` to keep the rows small.

#### Do I need an Agoda account, cookies or an API key?

No. Agoda Reviews Scraper reads only what Agoda shows any visitor; you pass hotel links, ids or names.

#### Does Agoda Reviews Scraper get hotel prices?

Yes. Turn on `includeRooms` (or use mode `rooms`) and give a check-in date and nights: every room offer Agoda sells for that stay becomes a row with its price, breakfast and cancellation terms.

#### Why did my run return no reviews?

Most often the filters left nothing (a language or room type the hotel has no reviews in), the hotel is new on Agoda, or the link was a city or search page instead of a hotel page. `RUN_SUMMARY` lists inputs that were not found and hotels without matching reviews.

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

Agoda Reviews Scraper extracts only publicly available reviews that anyone can read without logging in. Reviews can contain personal data, so reviewer names are left out by default; check Agoda's terms and your own use case before you use the data.

#### Your feedback

We keep improving Agoda Reviews Scraper. Found a bug or missing a field? Open an issue on the [Issues tab](https://apify.com/topapi/agoda-reviews-scraper/issues/open).

# Actor input Schema

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

Agoda hotel links, Agoda hotel ids or hotel names, one per line. e.g. https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html, 185945, ibis Budapest City. A name uses the first hotel Agoda suggests for it.

## `propertyIds` (type: `array`):

Optional: Agoda property ids, e.g. 185945 (Marina Bay Sands). Same as putting the id in Hotels.

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

Reviews (one row per review), a hotel summary row (scores per source, sub-scores, scores by traveller type, AI review summary, address, stars), both, or room prices for a stay.

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

Agoda's own sort orders, plus a true date order across all languages. Agoda's "Most recent" lists reviews in (or translated into) English first, then each other language.

## `reviewSources` (type: `array`):

Agoda's own verified guest reviews, and/or the reviews Agoda shows under "Additional reviews" from partner sites such as Priceline.com.

## `language` (type: `array`):

Only reviews written in these languages. Empty = every language.

## `rating` (type: `array`):

Only reviews in these Agoda score bands. Empty = every score.

## `travellerType` (type: `string`):

Only reviews from one kind of traveller, as Agoda groups them.

## `roomType` (type: `string`):

Only reviews of rooms whose name contains this text, e.g. "Deluxe" or "Suite". Matched against the room types Agoda lists for the hotel.

## `cutoffDate` (type: `string`):

YYYY-MM-DD, or a relative age such as "30 days". Reads the whole review list so reviews in every language are checked.

## `toDate` (type: `string`):

YYYY-MM-DD. Pair with the date above for a date window.

## `minRating` (type: `number`):

Keep reviews scored at least this on Agoda's 0-10 scale, e.g. 8.

## `maxRating` (type: `number`):

Keep reviews scored at most this, e.g. 5 for complaints only.

## `keyword` (type: `array`):

Keep reviews whose title or text contains any of these words, e.g. breakfast, pool. Case-insensitive; the original-language text is searched too.

## `onlyWithText` (type: `boolean`):

Skip reviews that carry a score and a title but no comment text.

## `aggregateRatings` (type: `boolean`):

Adds the hotel's Agoda score, sub-scores and review counts (and the Booking.com score Agoda shows) to every review row. Free.

## `includeRooms` (type: `boolean`):

Also return every room offer Agoda sells for the stay below: room, size, bedding, occupancy, nightly price, total, breakfast, cancellation, benefits. Charged per offer.

## `checkIn` (type: `string`):

YYYY-MM-DD. Empty = 30 days from today (rooms only).

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

YYYY-MM-DD. Empty = check-in plus the nights below.

## `nights` (type: `integer`):

Length of stay when no check-out date is given.

## `adults` (type: `integer`):

Guests to price the room for.

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

Number of children.

## `childrenAges` (type: `array`):

One age per child, e.g. 4, 9. Agoda prices some rooms by age.

## `roomsWanted` (type: `integer`):

How many rooms the stay needs.

## `currency` (type: `string`):

Currency for room prices.

## `monitorMode` (type: `boolean`):

Deliver only reviews that earlier runs with the same monitor name did not deliver. After a hotel's first run, only reviews written since the previous run are looked for. Pairs with a daily schedule.

## `monitorStoreName` (type: `string`):

Name of the store that remembers delivered reviews. Use one name per schedule, e.g. my-hotels-daily.

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

Reviews to return for each hotel. 0 = every review Agoda serves (about 11,000 for Marina Bay Sands).

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

Ceiling on review rows for the whole run, across every hotel. 0 = no ceiling.

## `stripPersonalData` (type: `boolean`):

ON: the reviewer's display name is left out (country, traveller type and room are kept). Turn OFF to include reviewerName.

## `includeOwnerResponse` (type: `boolean`):

The hotel's reply to a review: responder, text and date.

## `compact` (type: `boolean`):

Core fields only (hotel, review id, score, title, text, date, language, country, traveller type, room, hotel reply) - sized for AI agents and MCP.

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

Agoda answers Apify's own connection; the run moves to the Apify proxy only if Agoda refuses it. Choose a proxy group to use it from the first request.

## `maxConcurrency` (type: `integer`):

Requests to Agoda in flight at once.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"
  ],
  "mode": "reviews",
  "sort": "recent",
  "reviewSources": [
    "agoda"
  ],
  "travellerType": "all",
  "onlyWithText": false,
  "aggregateRatings": true,
  "includeRooms": false,
  "nights": 1,
  "adults": 2,
  "children": 0,
  "roomsWanted": 1,
  "currency": "USD",
  "monitorMode": false,
  "monitorStoreName": "agoda-reviews-monitor",
  "maxReviewsPerHotel": 50,
  "maxResults": 0,
  "stripPersonalData": true,
  "includeOwnerResponse": true,
  "compact": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 4
}
```

# Actor output Schema

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

One item per Agoda guest review (type review), plus hotel summary rows (type hotel) and room offer rows (type room) when requested.

## `summary` (type: `string`):

Per-hotel pages read and reviews delivered, inputs not found, reviews filtered out, Booking.com rows dropped, requests and empty answers retried.

# 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/marina-bay-sands/hotel/singapore-sg.html"
    ],
    "maxReviewsPerHotel": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("topapi/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/marina-bay-sands/hotel/singapore-sg.html"],
    "maxReviewsPerHotel": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("topapi/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/marina-bay-sands/hotel/singapore-sg.html"
  ],
  "maxReviewsPerHotel": 50
}' |
apify call topapi/agoda-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,topapi/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/dGfEBw3nhTsEgTbvF/builds/bvo3e6ZEnAGvto9g3/openapi.json
