Agoda Hotel Reviews Scraper 🏨 Ratings, Text & Sentiment avatar

Agoda Hotel Reviews Scraper 🏨 Ratings, Text & Sentiment

Pricing

from $0.002 / review

Go to Apify Store
Agoda Hotel Reviews Scraper 🏨 Ratings, Text & Sentiment

Agoda Hotel Reviews Scraper 🏨 Ratings, Text & Sentiment

Scrape Agoda hotel reviews at scale - guest ratings, full original + translated text, positives/negatives, reviewer country & traveler type, stay dates, review photos & owner responses, plus LLM-ready markdown. Paste hotel URLs or IDs. Filter by date/rating/language; export JSON/CSV.

Pricing

from $0.002 / review

Rating

0.0

(0)

Developer

Factden

Factden

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Categories

Share

Agoda Hotel Reviews Scraper

Scrape Agoda hotel reviews at scale - guest scores (/10), full original + translated review text, what guests liked & disliked, reviewer country and traveler type, stay dates, review photos, and hotel owner responses - plus a per-review LLM-ready markdown block. Paste one or more Agoda hotel URLs or bare hotel IDs and export clean JSON, CSV, Excel, or via API. No login, no Agoda API key.

Reviews in every language, one actor. Agoda aggregates guest reviews from 33 languages and multiple booking sources. Default runs return Agoda's own reviews; opt in to other sources or pin specific languages when you need them - the output schema stays identical.

Runs on the Apify platform, so you get scheduling, a REST API, webhooks & integrations, proxy rotation, and run monitoring out of the box - plus incremental / since-date runs so you only pull what's new.

Agoda hotel reviews - one row per review

What makes this Agoda scraper different

  • One row per review, ready to analyze - every review is a flat record with the hotel context (hotelId / hotelName / hotelUrl) merged on, so each row stands alone in a spreadsheet or a database.
  • Original + translated text - you get what the guest actually wrote plus Agoda's translated title/body, with positives and negatives kept separate.
  • Per-language pull - select one or more of Agoda's 33 review languages and the actor fetches a dedicated stream per language and merges + de-duplicates them for you.
  • AI-ready out of the box - each review ships with a self-contained markdownContent block for RAG / vector-DB ingestion. No post-processing.
  • Fair pricing, no start fee - pay only per review returned; a run that finds zero reviews costs nothing.

What does Agoda Hotel Reviews Scraper do?

Give it Agoda hotel-page URLs or numeric hotel IDs and it returns every public guest review it can reach for each property, newest-first, as clean structured rows. Each review carries the overall /10 score, the word rating label, the written review text (original + translated), separate liked / disliked notes, the reviewer's country, traveler type, room type, stay dates, length of stay, review photos, and any hotel owner response. Alongside the reviews it returns a hotel aggregate: property type, star rating, full address, coordinates, the Agoda score, the total review count, and per-source scores.

Does Agoda have a reviews API?

Agoda offers partner and affiliate APIs for rates and availability, but there is no public API for reading a property's guest reviews. This actor fills that gap: point it at any Agoda hotel URL or ID and get the reviews back as JSON/CSV, with no key and no partner account.

Agoda partner/affiliate APIAgoda Hotel Reviews Scraper
Read guest review textNot availableYes - full original + translated
Per-review score, liked/disliked, photosNot availableYes
Reviewer country & traveler typeNot availableYes
Owner responsesNot availableYes
Account / API key requiredYes (partner approval)No
Output as JSON / CSV / Excel-Yes, plus REST API & MCP

Who is it for?

  • Revenue & reputation managers monitoring their own and competitor properties.
  • Market & travel researchers analyzing guest sentiment across a city, region, or brand.
  • Data & AI teams building review-summarization, sentiment, or RAG chatbots.
  • Agencies & tooling vendors powering guest-experience dashboards and owner-response tracking.

Use cases

  • Reputation & sentiment analysis - track scores and what guests praise or complain about over time.
  • Competitor benchmarking - pull review volume, scores, and per-source ratings for any set of hotels.
  • Market research - break reviews down by traveler type, reviewer country, and language.
  • AI / RAG pipelines - ingest the markdownContent column straight into a vector DB.
  • Hospitality operations - monitor owner responses and guest-experience trends per property.

How to scrape Agoda reviews (to CSV)

  1. Open a hotel's page on Agoda and copy the URL, e.g. https://www.agoda.com/bayswater-inn-hotel/hotel/london-gb.html. Any regional Agoda domain and a locale prefix (e.g. /en-gb/) are fine, and a bare numeric hotel ID like 11019 also works.
  2. Paste one hotel per line into Hotel URLs or IDs.
  3. (Optional) Set Max reviews per hotel, a date range, a score range, a sort order, the Review sources, or one or more Review languages.
  4. Click Start, then open the Output tab and Export as CSV, JSON, HTML, or Excel - or pull the data from the API.

Input tab - hotel URLs plus filters & limits

Input

FieldDescription
Hotel URLs or IDs (hotelUrls)Agoda hotel-page URLs (any regional domain / locale prefix) or bare numeric hotel IDs (11019). One per line. Required.
Max reviews per hotel (maxReviews)Cap per hotel, fetched newest-first (default 200).
Sort reviews by (sortBy)newest (default), oldest, highestRating, lowestRating. Reviews are fetched newest-first; highest/lowest reorder the retrieved set.
From / To date (fromDate / toDate)Keep only reviews in a YYYY-MM-DD range - ideal for incremental / since-date monitoring.
Min / Max rating (minRating / maxRating)Keep only reviews within a score window. Agoda uses a 0-10 scale, not 1-5.
Review sources (reviewSources)Which booking sources' reviews to return. Defaults to Agoda's own reviews; add Booking.com / Priceline, or clear the field to include every source Agoda shows.
Review languages (languages)Return only selected languages (from Agoda's 33). Empty = all languages in one combined stream; select several to fetch and merge a stream per language.
Proxy (proxyConfiguration)Datacenter proxies are enough at typical volumes.

Example input

{
"hotelUrls": [
"https://www.agoda.com/bayswater-inn-hotel/hotel/london-gb.html",
"https://www.agoda.com/majerik-hotel/hotel/heviz-hu.html",
"11019"
],
"maxReviews": 50,
"sortBy": "newest",
"fromDate": "2026-01-01",
"minRating": 1,
"maxRating": 10,
"reviewSources": ["agoda"],
"languages": []
}

This mixes two hotel URLs and a bare hotel ID. When you pass a bare ID, the actor uses it directly; when you pass a URL it resolves the current hotel automatically.

Output

The actor writes to two datasets:

  • Reviews (the default dataset) - one row per guest review, with the hotel context (hotelId / hotelName / hotelUrl) merged onto every row.
  • Hotels - one row per hotel with the aggregate: property type, star rating, full address, coordinates, the Agoda score, total review count, and per-source scores.

The Output tab shows the Reviews dataset by default, plus an AI ingest view (the LLM-ready markdownContent column) and the Hotels dataset. Download any of them as JSON, HTML, CSV, or Excel, or fetch them from the API (the reviews dataset also exposes ?view=aiIngest).

Here is a real review row from a run on the Park Avenue Bayswater Inn (London):

{
"hotelId": 11019,
"hotelName": "Park Avenue Bayswater Inn Hyde Park",
"hotelUrl": "https://www.agoda.com/bayswater-inn-hotel/hotel/london-gb.html",
"reviewId": "1149287470",
"source": "Agoda",
"title": "Above average",
"text": "All in all good hotel, can't complain but wasn't the best.",
"positives": null,
"negatives": null,
"score": 6,
"ratingText": "Good",
"reviewDate": "2026-07-20",
"reviewerName": "Tiffany",
"reviewerCountry": "Australia",
"travelerType": "Couple",
"roomType": "Double Room",
"checkInDate": "2026-07-03",
"checkOutDate": "2026-07-07",
"lengthOfStay": 4,
"reviewPhotos": [],
"ownerResponse": null,
"markdownContent": "# Park Avenue Bayswater Inn Hyde Park review (Agoda)\n\n**Score:** 6/10 - Good\n..."
}

...and the matching hotel row from the Hotels dataset:

{
"hotelId": 11019,
"hotelName": "Park Avenue Bayswater Inn Hyde Park",
"hotelUrl": "https://www.agoda.com/bayswater-inn-hotel/hotel/london-gb.html",
"propertyType": "Hotel",
"stars": 4,
"addressStreet": "8-16 Princess Square",
"addressCity": "London",
"addressRegion": "Hyde Park",
"addressCountry": "United Kingdom",
"addressZip": "W2 4NT",
"latitude": 51.5128,
"longitude": -0.1921,
"score": 6.8,
"reviewsCount": 2268,
"providerScores": [
{ "providerId": 332, "source": "Agoda", "score": 6.8, "reviewCount": 2268, "maxScore": 10 },
{ "providerId": 3038, "source": "Booking.com", "score": 8.2, "reviewCount": 3237, "maxScore": 10 }
],
"reviewsExtracted": 50,
"extractedAt": "2026-08-05T15:33:42Z"
}

Scores are on Agoda's native 0-10 scale.

Hotels dataset - one row per hotel with the full aggregate:

Hotels - one row per hotel

AI ingest view - the self-contained, LLM-ready markdown for each review:

AI ingest view - LLM-ready markdown

Data fields

Reviews dataset - one row per review. Every row also carries hotelId, hotelName and hotelUrl.

FieldDescription
score, ratingTextOverall score on Agoda's 0-10 scale + word label ("Exceptional", "Good"…).
title, textReview headline and full body (original + translated, positives + negatives + comment combined).
positives, negativesWhat the guest liked and disliked, kept separate.
reviewDateDay the review was submitted (YYYY-MM-DD).
reviewerName, reviewerCountry, travelerTypeWho wrote it and how they travelled (Couple, Family, Solo…).
roomType, checkInDate, checkOutDate, lengthOfStayStay context.
reviewPhotosGuest photo URLs {url, caption, id}.
ownerResponseHotel/manager reply {text, date}, when present.
sourceThe booking site the review was posted on (Agoda, Booking.com, …).
markdownContentSelf-contained LLM-ready markdown block for RAG / vector-DB ingestion.

Hotels dataset - one row per hotel.

FieldDescription
hotelId, hotelName, hotelUrlProperty id, name, and source URL.
propertyType, starsProperty type and star rating.
addressStreet, addressCity, addressRegion, addressCountry, addressZipFull address.
latitude, longitudeCoordinates.
score, reviewsCountAgoda's aggregate score (0-10) and total review count.
providerScoresPer-source score, review count and max score.
reviewsExtracted, extractedAtHow many reviews this run pulled, and when.

Run it via the API

Run the actor programmatically and get the reviews back in one call:

curl -X POST "https://api.apify.com/v2/acts/factden~agoda-hotel-reviews-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"hotelUrls":["https://www.agoda.com/bayswater-inn-hotel/hotel/london-gb.html"],"maxReviews":50}'

The response is the default (reviews) dataset - one row per review. Append ?view=aiIngest for the LLM-ready markdown columns. The run's Hotels dataset (per-hotel aggregate) is available from the run's list of datasets in the Console or via the API.

Run on a schedule

Use Apify Schedules to run this actor hourly, daily, or weekly. Pair a tight From date with a low Max reviews per hotel and you pull only what's new since the last run - the cheapest way to keep a reviews dataset continuously fresh. Wire the results into Google Sheets, Make, Zapier, n8n, a webhook, or your own app via the Apify API.

AI agents & RAG

Every review includes a self-contained markdownContent block, so you can drop reviews straight into a vector DB or hand them to an LLM with no post-processing:

# Park Avenue Bayswater Inn Hyde Park review (Agoda)
**Score:** 6/10 - Good
**Reviewed:** 2026-07-20
**Traveler:** Couple from Australia
**Stay:** Double Room · stayed 4 night(s)
## Above average
## Review
All in all good hotel, can't complain but wasn't the best.

AI agents can also call this actor through the Apify MCP server, so assistants like Claude, ChatGPT and LangChain can pull Agoda reviews on demand.

How much does it cost to scrape Agoda reviews?

This actor uses pay-per-event pricing with no start fee - you pay only for the reviews you actually get, and nothing if a run returns zero reviews:

PlanPrice per 1,000 reviews
Free$4.00
Bronze$3.00
Silver$2.50
Gold+$2.00

Examples: 500 reviews ≈ $2.00 (Free) · 5,000 reviews ≈ $20.00 (Free) / $10.00 (Gold). Lower Max reviews per hotel to cap spend, and your first runs are covered by Apify's free tier. There is no per-run start fee - you are never charged just for launching a run.

Tips & advanced options

  • Reviews are fetched newest-first, so a tight From date plus a low Max reviews per hotel is the cheapest way to monitor only what's new (schedule it daily for incremental tracking).
  • Feed many hotels in one run - the actor de-duplicates repeated URLs and IDs automatically.
  • Use Review languages to pull only, say, Japanese or German reviews; the streams are merged and deduped.
  • Use Review sources to widen beyond Agoda to Booking.com/Priceline, or clear it for every source.

Building a review-intelligence pipeline? Pair this with other FactDen actors on the Apify Store:

Find this useful? Bookmark the actor and leave a review on its Apify Store page - it helps other travel and hospitality teams find it, and tells us which features to build next.

FAQ, disclaimers & support

  • Does Agoda have a reviews API? No public one for reading guest reviews - Agoda's partner/affiliate APIs cover rates and availability only. This actor returns the review data with no key and no partner account.
  • Do I need an Agoda account or API key? No.
  • Is scraping Agoda reviews legal? This actor collects only publicly available review content and does not touch private or account data. You are responsible for complying with Agoda's Terms of Service and applicable laws (including data-protection rules like GDPR) when using the data. See Apify's guide, is web scraping legal?, for background.
  • Can I use it via the Apify API or an MCP server? Yes - run it through the Apify REST API (see the example above) or connect it to an AI agent via the Apify MCP server, so assistants like Claude or ChatGPT can fetch Agoda reviews on demand.
  • Can I get reviews in a specific language? Yes - select one or more of Agoda's 33 review languages in Review languages; the actor fetches a stream per language and merges + de-duplicates them.
  • How many reviews can I get per hotel? As many as the hotel has - set Max reviews per hotel to cap it; the hotel row's reviewsCount tells you how many exist in total.
  • A hotel returned fewer reviews than expected. Your date/score/source/language filters, or Max reviews per hotel, may be limiting the result; reviewsCount shows how many exist in total.
  • A URL didn't resolve / "relisted or removed". Agoda sometimes relists a hotel under a new URL. Open the hotel on agoda.com and paste its current URL, or use the numeric hotel ID directly.
  • Found a bug or need a field we don't return? Open the Issues tab on this actor's Apify page. Custom solutions are available on request.

Changelog

  • 2026-08 - Initial release. Per-review rows + hotel aggregate across two datasets; 33-language per-language pull; Agoda / Booking.com / Priceline source filter; per-review LLM-ready markdown; incremental since-date runs; JSON/CSV/Excel export and full REST API.

⭐ If this actor saved you time, a review and a bookmark on the Apify Store page mean a lot - they help other travel and hospitality teams find it.