Agoda Reviews Scraper avatar

Agoda Reviews Scraper

Pricing

from $2.80 / 1,000 review-scrapeds

Go to Apify Store
Agoda Reviews Scraper

Agoda Reviews Scraper

Scrape Agoda hotel reviews, including the Booking.com reviews Agoda shows. Just add hotel URLs, ids or names and get score, title, text, pros and cons, stay dates, room, traveller type, country, hotel reply, category scores, aspect sentiment and topic summaries. $4.00 per 1,000 reviews.

Pricing

from $2.80 / 1,000 review-scrapeds

Rating

0.0

(0)

Developer

BonCross API

BonCross API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Categories

Share

What is Agoda Reviews Scraper?

An Agoda hotel page shows two kinds of review: the ones Agoda's own guests wrote, and the Booking.com reviews Agoda displays beside them. Agoda Reviews Scraper gets you both in one dataset, each tagged with its source, and puts the hotel's scores on every row. Paste hotel links, property ids or names and press Start.

Five reasons to use it for review work:

  • Both sources, counted honestly. A measured run of 300 reviews on two hotels returned 137 from Agoda and 163 from Booking.com. Each row says which, and the hotel's totals per source come with it, with and without text.
  • The site's own subject filters. Ask for the reviews under a topic ("Pool", "Breakfast", "Check in") or a highlighted phrase ("infinity pool"). On three hotels, 160 of 160 returned reviews contained every word of their phrase.
  • Nine filters, applied before you're charged. Source, score band, language, traveller type, room type, topic, phrase and review date. A review a filter removes costs nothing.
  • The same answer every time. One Rome hotel returned the same 149 text reviews on three consecutive runs.
  • Many hotels in one run. 25 hotels in four cities, 200 newest reviews each, came to 4,806 reviews in 94 seconds.

BonCross Verified means we tested this actor against the live site before release and kept the record:

  • 47 of 47 live checks on its inputs and filters passed on 7 October 2026
  • 12 hotels run the same day, given as 1 link and 11 names: 275 reviews
  • Charges checked against the 275 reviews
  • A weak name match or a hotel with no reviews gets a row saying so

Who is it for?

  • Hotel and revenue teams watching their own reputation and a competitive set, with a daily feed of new reviews and hotel replies
  • Analysts benchmarking cleanliness, facilities, location and value across properties
  • Anyone hunting the recurring complaint behind a falling score, by topic or by room type
  • Researchers who want to know what travellers from one country or one kind of trip value
  • Teams building training and evaluation sets for sentiment and summarisation models

How to scrape Agoda reviews

  1. Sign up for a free Apify account.
  2. Open Agoda Reviews Scraper and add your hotels: Agoda links, property ids or hotel names with the city.
  3. Choose how many reviews you want per hotel and the order (newest first is the default). Add filters if you only want some of them.
  4. Click Start. Twelve newest reviews for one hotel took 5 to 7 seconds in testing.
  5. Download the reviews as Excel, CSV, JSON, XML or HTML.

There's no code to write and no Agoda login involved.

What data is in each review?

⭐ Review score and rating textTitle and full review text
👍 Pros and cons🌐 Language and translation
📅 Posted dateStay dates and room booked
Traveller name, country and group💬 Hotel reply
📷 Review photos🏨 Hotel name, id and source
Hotel category scoresPer-aspect sentiment
Topic summariesReview counts per source, with and without text

You can also add the hotel's own record to each row: address, facilities, house rules for children and extra beds, and the property's FAQ answers such as the year it was built and the breakfast price. Numbers arrive as numbers, with the site's wording kept beside them.

⬇️ Input

Put your hotels in "Hotels". An entry can be an Agoda hotel URL, a numeric property id, the slug from a URL, or a hotel name with its city. "Max reviews per hotel" (1 to 20,000, default 100) sets how deep to go.

Got a long list of links? "Start URLs" loads them in bulk from a file, a Google Sheet or a remote list, and is combined with the Hotels list.

There are two limits. "Max reviews per hotel" applies to each hotel separately: ten hotels at 50 each returns 500. "Maximum results for the whole run" caps the run as a whole, and nothing past it is fetched or charged for.

Newest reviews for three hotels, given as a link, an id and a name

{
"hotels": [
"https://www.agoda.com/four-seasons-hotel-new-york-downtown/hotel/new-york-ny-us.html",
"49575",
"Hotel Adlon Kempinski Berlin"
],
"maxReviewsPerHotel": 200,
"sort": "recent"
}

Recent English reviews from couples, with the hotel record attached

{
"hotels": ["206039"],
"maxReviewsPerHotel": 300,
"sort": "recent",
"languages": ["en"],
"travellerTypes": ["couples"],
"reviewedAfter": "2026-01-01",
"includeHotelDetails": true
}

Reviews from guests who stayed in the king rooms

"Room types" takes a room name, part of one, or the roomTypeId from Agoda Room Rates Scraper, as on the site's Room type filter. It covers Agoda's own reviews, because Booking.com reviews don't name the room.

{
"hotels": [
"https://www.agoda.com/four-seasons-hotel-new-york-downtown/hotel/new-york-ny-us.html",
"https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"
],
"roomTypes": ["King"],
"maxReviewsPerHotel": 100
}

Reviews about the pool and the bathrooms

"Review topics" takes the topics shown above a hotel's reviews on the site (Location, Breakfast, Pool, Cleanliness, Check in, Value for money and so on), by name, part of a name, or id. Each hotel has its own list of up to 20. If you name one the hotel doesn't have, you get a row listing the ones it does. Only Agoda's own reviews are tagged with topics, and Booking.com reviews are left out while a topic is set. Each row says which topics it matched in matchedTopics.

{
"hotels": ["https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"],
"topics": ["Pool", "Bathroom"],
"maxReviewsPerHotel": 200
}

Reviews that mention a highlighted phrase

"Review phrases" takes the phrases Agoda highlights above a hotel's reviews ("infinity pool", "shuttle bus", "friendly staff"), by phrase, part of a phrase, or id. Each hotel has its own short list, up to about 8, drawn from English reviews, and a phrase the hotel doesn't have returns a row listing them. Only Agoda's own English reviews are matched. Each row says which phrases it matched in matchedPhrases.

{
"hotels": ["https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"],
"phrases": ["infinity pool"],
"maxReviewsPerHotel": 200
}

A daily monitor that returns only new reviews

{
"hotels": ["206039", "49575", "958"],
"maxReviewsPerHotel": 100,
"sort": "recent",
"dedupStoreName": "agoda-reviews-seen"
}

Aggregate scores only, with no review text

{
"hotels": ["206039", "49575"],
"summaryOnly": true
}

The remaining filters, briefly:

FieldNotes
sortrecent (default), helpful, rating_high or rating_low.
providersThe review sources: agoda, booking.com, others. All three by default.
minRating, maxRatingA score band out of 10. 0 turns either end off.
travellerTypesbusiness, couples, solo, families_young_children, families_teens or groups.
languagesCodes such as en, fr, it, pt, zh, th or he. A code covers the variants Agoda lists separately (zh is Simplified, Taiwan and Hong Kong Chinese, pt is Portugal and Brazil), and adding the region narrows it (zh-TW, pt-BR, en-GB).
reviewedAfterKeep reviews posted after a date.
includeHotelSummaryOn by default. Repeats the hotel's aggregates on each row at no extra charge.
includeHotelDetailsAdds the hotel's own record.

With a language filter, reviews arrive as written. Without one, Agoda translates most reviews into English and originalText holds the original.

For developers

  • maxReviewsPerHotel is the per-hotel limit and maxItems the run-wide one (0 means no limit). Both count reviews returned, after filters.
  • dedupStoreName names the storage that remembers which reviews you've had. Later runs with the same name push only new ones, and a review already seen isn't charged.
  • maxConcurrency (Parallel requests, default 4, 1 to 32) sets how many requests run at once. If a run reports errors, try a lower number.
  • delayMs (Delay between requests, default 0) adds a pause before each request, in milliseconds. Values above 2000 are treated as 2000.
  • Each page of reviews is asked again until every source that still has reviews on it is present. That's what keeps the counts stable from run to run.
  • Reviews are saved as each hotel finishes. If the platform restarts a run part-way, the reviews already delivered are neither repeated nor charged again.

⬆️ Output

One row is one review, with the hotel's aggregates repeated on it, which means a single export is enough for most analysis. This one is an Agoda guest's review of a New York hotel:

{
"input": "https://www.agoda.com/four-seasons-hotel-new-york-downtown/hotel/new-york-ny-us.html",
"hotelId": 206039,
"hotelName": "Four Seasons Hotel New York Downtown",
"url": "https://www.agoda.com/four-seasons-hotel-new-york-downtown/hotel/new-york-ny-us.html",
"hotelRating": 8.7, "hotelRatingScale": 10, "hotelRatingText": "Excellent",
"hotelReviewCount": 31,
"hotelGrades": [
{ "name": "Cleanliness", "rating": 9.7, "ratingScale": 10 },
{ "name": "Facilities", "rating": 8.9, "ratingScale": 10 },
{ "name": "Location", "rating": 9.2, "ratingScale": 10 },
{ "name": "Service", "rating": 8.6, "ratingScale": 10 },
{ "name": "Value for money", "rating": 8, "ratingScale": 10 }
],
"hotelReviewCounts": [
{ "providerId": 332, "provider": "Agoda Reviews", "reviewCount": 31, "reviewsWithText": 5 },
{ "providerId": 3038, "provider": "Booking.com Reviews", "reviewCount": 167, "reviewsWithText": 85 }
],
"hotelAspectSentiment": [],
"hotelTopicSummaries": { "positives": [], "negatives": [] },
"id": "485412110", "reviewId": 485412110, "provider": "Agoda", "providerId": 332,
"rating": 10, "ratingScale": 10, "ratingText": "Exceptional",
"title": "Great value",
"text": "Beautiful hotel, excellent area. The staff really makes this hotel enjoyable.",
"positives": null, "negatives": null,
"originalTitle": null, "originalText": null, "language": "en", "translatedTo": null,
"postedAt": "2022-03-23T23:30:00+07:00", "checkIn": "2022-03-20", "checkOut": "2022-03-22", "stayMonth": "March 2022",
"reviewer": { "name": "Douglas", "country": "United States", "countryCode": "US", "group": "Family with young children", "roomType": "Manhattan Room with king bed", "lengthOfStay": 2, "reviewCount": null, "isExpert": false },
"response": null, "images": [],
"sort": "recent", "scrapedAt": "2026-10-07T20:35:52.654Z"
}

Which columns a review fills depends on where it came from. Agoda's own reviews have text together with checkIn, checkOut and stayMonth. They're also the only ones that can have guest images, a management response or the untranslated originalTitle and originalText. A Booking.com review of the same hotel has positives and negatives in place of text ("Hotel staff, room size, cleanliness and overall quality of facility." and "Seating in lobby was a bit limited." on one from May 2026) and leaves the rest of those empty.

Measured over 300 reviews on two properties: text on 137 of 137 Agoda reviews and 0 of 163 Booking.com ones, positives on 159 of those 163, response on 18 and images on 11 of the Agoda reviews. title, rating, postedAt, language and reviewer are there whatever the source. Filter on provider if your pipeline needs one shape.

A few more things you'll see:

  • With "Review topics" set, each review has matchedTopics, for example ["Pool"] or ["Pool", "Bathroom"]. With "Review phrases" set, matchedPhrases works the same way.
  • With "Summary rows only", each hotel returns one row marked isSummary: true. It has the overall score, category grades, per-source counts, aspect sentiment, topic summaries, recent scores, the hotel's review room types and its word cloud.
  • A hotel Agoda lists no reviews for, or whose reviews your filters all removed, returns one row with input, hotelId, hotelName, url, reviewsRead and an error saying which of the two it was.
  • hotelAspectSentiment and hotelTopicSummaries are empty where Agoda publishes none for the hotel, as in the record above.

How many reviews can you get, and how fast?

RunResult
Le Méridien Visconti Rome, 12 newest12 reviews in 5 to 7 seconds
Sheraton Grande Tokyo Bay and The Peninsula Bangkok, newest first, 150 each300 reviews, 137 Agoda and 163 Booking.com, 18 with a hotel reply
Le Méridien Visconti Rome and Sheraton Grande Tokyo Bay, four languages, 100 each, hotel details on125 reviews
Le Méridien Visconti Rome, no capall 149 text reviews, 56 Agoda and 93 Booking.com, identical three runs in a row
Le Méridien Visconti Rome, Hotel Nikko Kanazawa and Sheraton Grande Tokyo Bay, 200 newest each548 reviews in 7 to 17 seconds, up to a minute in an hour when Agoda answers slowly
Six hotels, 200 newest each1,018 reviews in 33 seconds
25 hotels in four cities, 200 newest each4,806 reviews in 94 seconds

Timed runs were measured on Apify on 2 October 2026. At those rates a one-hour run collects well over 100,000 reviews.

Don't expect the number on Agoda's page. Its headline count, for example "From 74 reviews", includes score-only submissions with no text. The review pages serve only reviews with text, and hotelReviewCounts reports both numbers per source.

How much does it cost?

EventFree planStarterScaleBusiness
actor-start, per run$0.002$0.002$0.002$0.002
hotel-resolved, per URL, slug or name resolved to a property id$0.002$0.002$0.002$0.002
review-scraped, per review$0.004$0.0036$0.0032$0.0028
hotel-summary, per hotel with summaryOnly$0.002$0.0018$0.0016$0.0014

Enterprise plans pay the Business price.

$4.00 per 1,000 reviews on the Free plan, $2.80 on Business, with the hotel's aggregates included. Nothing is added on top: proxy usage and platform usage are in that price.

Reviews your filters remove are free, and so are reviews an only-new store has already seen. The aggregates and hotel details cost nothing extra when they arrive with reviews. Pass property ids and you skip the $0.002 resolution fee.

  • 20 hotels by id, 200 reviews each: $0.002 + 4,000 × $0.004 = $16.002 ($11.202 on Business).
  • A daily monitor of 50 hotels by id, where about 5 new reviews arrive per hotel per day: 30 × ($0.002 + 250 × $0.004) = $30.06 for the month ($21.06 on Business).
  • Aggregate scores only for 100 hotels by id: $0.002 + 100 × $0.002 = $0.202 ($0.142 on Business).

Apify's Free plan comes with $5 of credits each month. With this actor that's about 12 runs of 100 reviews for a hotel given by link, roughly 1,200 reviews.

Limitations

  • A hotel name has to match one of Agoda's suggestions closely. When none does, you get an error row naming the closest hotel and its id, and no fee. In a run of 26 names on 7 October 2026, 21 reached their hotel, with misspelled, shortened, Japanese, Korean, Chinese and Thai names among them, and 5 were refused: 3 invented names and 2 hotels Agoda doesn't suggest under the name typed. A link, a slug or a property id isn't name-checked at all, which makes it the surer input when you have one.
  • A hotel with no reviews, or with none left after your filters, returns one row saying so. The hotel-resolved fee for a name or link still applies.
  • Agoda doesn't publish helpful-vote counts. There's no vote column, and "most helpful" is Agoda's own order within each source.
  • translatedTo is set only where Agoda translated the review and sends the original beside it (originalText). Many reviews, including most Booking.com ones, are returned as written.
  • Agoda sends Brazilian Portuguese reviews with no language code, and language is empty on them. The pt and pt-BR filters still return them.
  • Booking.com reviews have Agoda's 0 to 10 score, not Booking.com's original scale. They have no stay dates, photos or management response.
  • Review photos are rare, and only Agoda's own reviews can have them: 11 of 137 in a measured sample.
  • "Room types" and "Review topics" apply to Agoda's own reviews only. Topics are Agoda's tagging: a review filed under Pool usually names the pool, though not always (53 of 61 did in a measured sample). The count Agoda prints on a topic counts recent mentions and is smaller than the number of reviews the topic returns.
  • "Review phrases" matches Agoda's own English reviews only, and only the few phrases Agoda highlights for that hotel (8 at a large Tokyo hotel, 3 at a small one in Rome). The count matched the number Agoda reports for the phrase.
  • There's no free-text keyword filter. Agoda stopped applying one and returns the same reviews whatever word is given.
  • The others source is listed on Agoda but its partner reviews aren't served. Selecting it alone normally returns nothing.
  • Score-only submissions are counted in hotelReviewCounts but have no review to return.
  • Read reviewsWithText as approximate. Agoda's own figure flips between two values from one request to the next: 8 and 5 for one hotel within a second on 7 October 2026.

FAQ

Does it include the Booking.com reviews Agoda shows?

It does. They arrive in the same dataset, tagged provider: "Booking.com". To keep only one source, set "Review sources" to agoda or booking.com.

Why is my review count lower than the number on Agoda's page?

Agoda's headline figure counts score-only submissions that have no text. The review pages show only reviews with text. hotelReviewCounts gives both numbers for each source, which lets you see the split.

How do I get only the reviews about one thing, like breakfast?

Use "Review topics" with the topic's name. If the hotel doesn't have that topic, the run returns a row listing the topics it does have, and you can pick from those. For an exact wording, try "Review phrases", which is limited to the handful Agoda highlights for the hotel.

How do I get only new reviews each day?

Give "Only-new store" a name and schedule the run. The actor remembers which reviews it has returned for that name, and later runs push only the new ones. You aren't charged for a review you've already had.

Can I get the scores without paying for the text?

Switch on "Summary rows only". Each hotel then returns one row with the overall score, category scores, per-source counts, aspect sentiment and topic summaries, at the hotel-summary price of $0.002 per hotel on the Free plan.

What happens when a hotel has no reviews?

You get one row for it with an error that says Agoda lists no reviews for the hotel, or that none passed your filters. No review is charged. If you gave the hotel as a name or a link, the $0.002 hotel-resolved fee still applies.

Do I need proxies or an Agoda account?

You need neither. Proxy usage is part of the price and there's nothing to configure. No login is involved.

The actor reads only what Agoda serves to any logged-out visitor. Reviews contain personal data such as a reviewer's display name and country, which means you need a lawful basis to collect and store them. You're responsible for complying with Agoda's terms and applicable law.

Schedules, API and AI agents

A reputation feed is a schedule plus an only-new store: Apify runs the actor each morning and the dataset holds yesterday's reviews and nothing else. From there a webhook, Slack or Google Sheets can carry them to whoever answers guests.

To call it from code:

POST https://api.apify.com/v2/acts/boncross~agoda-reviews/run-sync-get-dataset-items?token=YOUR_TOKEN

The apify-client packages for Node.js and Python wrap the same API. An AI agent can run it through the Apify MCP server (mcp.apify.com) as boncross/agoda-reviews, which is a quick way to ask "what do guests complain about at these three hotels?" and get an answer built on the actual reviews.

More from BonCross

Your feedback

If a review is missing, lands under the wrong hotel, or a column you need isn't there, open an issue on the Issues tab in Apify Console. We read them all and reply in the thread. Requests for a new filter or column are welcome there too.