Agoda Reviews Scraper avatar

Agoda Reviews Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Agoda Reviews Scraper

Agoda Reviews Scraper

[๐Ÿ’ฐ $2.0 / 1K] Extract guest reviews from Agoda hotels and accommodations. Collect ratings, reviewer details, stay info, and management responses. Filter by language, rating, and reviewer country.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull guest reviews from any Agoda hotel or accommodation โ€” ratings, reviewer profiles, stay details, and management responses โ€” for as many properties as you need in one run. Built for hospitality teams, market researchers, and travel data analysts who need structured Agoda review data at scale without building or maintaining their own pipeline.

Why This Scraper?

  • Management responses captured verbatim โ€” every reply includes the responder's name, response date, and the full response text. Audit how properties handle criticism or showcase service quality without leaving the dataset.
  • Reviewer profile on every row โ€” country of origin, traveler type (Solo, Couple, Family, Business), booked room type, and length of stay surface as structured fields, not buried in free text.
  • 4 Agoda-native sort modes โ€” Most Recent, Highest Rated, Lowest Rated, and Most Helpful. The sort is honored by Agoda's own API, so you get the same ordering a guest would see on-site.
  • Batch input โ€” URLs or numeric IDs โ€” paste a list of hotel page URLs, supply bare Agoda hotel IDs, or mix both in the same run. No one-at-a-time lookups.
  • Reviewer language preserved on every row โ€” the reviewLanguage ISO code (en, ja, ko, de, zh-tw, โ€ฆ) appears on each row so you can group or filter reviews by language after collection without re-running the actor.
  • Both rating number and label on every row โ€” rating gives the 1โ€“10 numeric score; ratingText gives Agoda's bucket label ("Exceptional", "Excellent", "Very good", "Good", "Review score") for direct display or segmentation without a lookup table.
  • Optional hotel metadata embedded on every row โ€” toggle Include Hotel Info on Every Row to add the hotel name, overall rating, and URL to each review. Invaluable when scraping multiple hotels into one flat CSV for downstream analysis.
  • Honest pagination โ€” no silent caps โ€” set maxReviewsPerHotel to 1,000 and you get 1,000 reviews (or all available, whichever is smaller). The last page is always kept whole, so you never lose a review mid-page.

Use Cases

Hospitality Reputation Management Track your property's newest reviews as they arrive. Pull with sort: Most Recent on a weekly schedule to catch issues before they accumulate. The responseText field lets you verify your team is actually replying โ€” not just that replies were promised.

Hotel Market Research & Competitive Benchmarking Collect reviews for 10โ€“50 competing hotels in one run. Compare rating distributions, traveler-type breakdowns, and room-type sentiment across the competitive set. The hotelName field on every row makes it trivial to pivot in Excel or any BI tool.

Sentiment Analysis & ML Training Data Each review row carries distinct reviewPositives, reviewNegatives, and reviewComments fields โ€” pre-split by the reviewer, not by you. Combine with the numeric rating and Agoda's label bucket for high-quality labeled training data for hospitality sentiment models.

Travel Aggregator Sourcing Agoda pools reviews from its own platform and partner booking sources, deduplicated per property. The reviewProviderText field identifies the source of each review, giving you cross-platform coverage without managing multiple scraper setups.

Reviewer-Demographic Insights Group reviews by reviewerGroupName (Solo, Couple, Family with young children, Business) and reviewerCountryName to understand which traveler segments rate a property well and which do not. Filter on reviewerLengthOfStay to separate weekend breaks from week-long visits.

Getting Started

Minimal โ€” One Hotel URL

Paste any Agoda hotel page URL and collect 100 reviews with defaults:

{
"startUrls": ["https://www.agoda.com/the-peninsula-bangkok/hotel/bangkok-th.html"]
}

Sort + Cap โ€” Recent Reviews with a Limit

Collect the 500 most recent reviews using a numeric hotel ID:

{
"hotelIds": ["10715"],
"sort": "mostRecent",
"maxReviewsPerHotel": 500
}

Multi-Hotel Benchmarking

Compare top-rated reviews across three competing properties:

{
"startUrls": [
"https://www.agoda.com/the-peninsula-bangkok/hotel/bangkok-th.html",
"https://www.agoda.com/the-okura-prestige-bangkok/hotel/bangkok-th.html",
"https://www.agoda.com/mandarin-oriental-bangkok-hotel/hotel/bangkok-th.html"
],
"sort": "highestRated",
"maxReviewsPerHotel": 200,
"includeHotelInfo": true
}

Lean Output โ€” Reviews Only, No Hotel Metadata

When you are scraping a single hotel and already know which property the data belongs to, strip hotel metadata to keep rows compact:

{
"hotelIds": ["10715"],
"maxReviewsPerHotel": 1000,
"includeHotelInfo": false,
"includeManagementResponses": false
}

Input Reference

Hotels to Scrape

ParameterTypeDefaultDescription
startUrlsstring[]โ€”One or more Agoda hotel page URLs. Example: https://www.agoda.com/hotel-name/hotel/city_name.html. Use this or Hotel IDs โ€” not both.
hotelIdsstring[]โ€”Numeric Agoda hotel IDs (e.g. 6901). Faster than URLs when you already have the ID โ€” skips the URL-resolution step.

Review Options

ParameterTypeDefaultDescription
maxReviewsPerHotelinteger100Maximum reviews to collect per hotel. Leave empty to collect all available. Large hotels may have tens of thousands โ€” set a limit to control costs.
sortselectMost RecentOrder in which to retrieve reviews: Most Recent, Highest Rated, Lowest Rated, or Most Helpful.

Output Options

ParameterTypeDefaultDescription
includeHotelInfobooleantrueAdds hotel name, overall rating, and URL to every review row. Recommended when scraping multiple hotels so each row is self-identifying.
includeManagementResponsesbooleantrueIncludes hotel management replies โ€” response date, responder name, and full response text โ€” on every applicable row.

Output

Each row is one review. Here is a representative example with all fields enabled:

{
"hotelReviewId": "73849201",
"rating": 9.6,
"ratingText": "Exceptional",
"reviewTitle": "Flawless service as always",
"reviewComments": "Staying at the Peninsula never disappoints. Staff remembered our names throughout the five-night stay.",
"reviewPositives": "Staff attentiveness, room cleanliness, rooftop pool",
"reviewNegatives": "",
"reviewLanguage": "en",
"reviewDate": "2024-11-15T08:42:00+07:00",
"checkInDate": "2024-11-10T00:00:00+07:00",
"checkOutDate": "2024-11-15T00:00:00+07:00",
"reviewerName": "Sophie T.",
"reviewerCountry": "GB",
"reviewerCountryName": "United Kingdom",
"reviewerGroupName": "Couple",
"reviewerRoomTypeName": "Deluxe River View Room",
"reviewerLengthOfStay": "5 nights",
"reviewProviderText": "Agoda",
"responseDate": "2024-11-18T09:20:18",
"responderName": "The Peninsula Bangkok",
"responseText": "Dear Sophie, thank you so much for your kind words and for celebrating with us.",
"hotelId": 10715,
"hotelName": "The Peninsula Bangkok",
"hotelOverallRating": 9.4,
"hotelAddress": null,
"hotelUrl": "https://www.agoda.com/the-peninsula-bangkok/hotel/bangkok-th.html"
}

Core Review Content

FieldTypeDescription
hotelReviewIdstringUnique Agoda review identifier
ratingnumberReviewer score from 1 to 10
ratingTextstringAgoda's label bucket: "Exceptional", "Excellent", "Very good", "Good", or "Review score"
reviewTitlestringReview headline as written by the guest
reviewCommentsstringFull review body text
reviewPositivesstringWhat the guest liked (reviewer-filled structured field)
reviewNegativesstringWhat the guest did not like (reviewer-filled structured field)
reviewLanguagestringISO language code of the review text (e.g. en, ja, ko, de)
reviewDatestringISO 8601 datetime with timezone offset when the review was published (e.g. 2024-11-15T08:42:00+07:00)
reviewProviderTextstringSource platform (e.g. "Agoda", "Booking.com")

Reviewer Profile & Stay Details

FieldTypeDescription
reviewerNamestringReviewer's display name
reviewerCountrystringReviewer's country as an ISO alpha-2 code (e.g. GB, JP, US)
reviewerCountryNamestringReviewer's country as a full name (e.g. "United Kingdom")
reviewerGroupNamestringTraveler type: Solo, Couple, Family with young children, Business, etc.
reviewerRoomTypeNamestringRoom type the reviewer booked
reviewerLengthOfStaystringFormatted stay duration (e.g. "3 nights")
checkInDatestringGuest check-in date as ISO 8601 datetime with timezone offset
checkOutDatestringGuest check-out date as ISO 8601 datetime with timezone offset

Management Response

Present on every row when includeManagementResponses is true. Fields are empty strings when no management response exists for a review.

FieldTypeDescription
responseDatestringISO 8601 datetime when management published the response (e.g. 2024-11-18T09:20:18)
responderNamestringName or handle of the responder
responseTextstringFull text of the management reply

Hotel Metadata

Present on every row when includeHotelInfo is true.

FieldTypeDescription
hotelIdnumberAgoda's numeric hotel identifier
hotelNamestringHotel display name
hotelOverallRatingnumberHotel's aggregate rating score
hotelAddressstringHotel address (null โ€” not returned by Agoda's review API)
hotelUrlstringAgoda hotel page URL

Tips for Best Results

  • Use sort: Most Recent for ongoing reputation tracking. Pull weekly and compare against your previous run using reviewDate to surface only new reviews. A cap of 50โ€“100 per hotel is enough for most weekly sweeps.
  • Combine includeManagementResponses: true with sort: Lowest Rated to audit how a property handles its harshest critics. Reviews with an empty responseText are unanswered complaints you can act on immediately.
  • Use hotelIds instead of URLs when you already have them. Numeric IDs skip the URL-to-ID resolution step, making multi-hotel batch runs faster. You can find a hotel's ID in the Agoda URL structure or via a one-off URL scrape.
  • Keep includeHotelInfo: true for multi-hotel runs. Every row carries hotelName and hotelId, so you can export a single flat CSV and pivot by property without a secondary join.
  • For sentiment ML training, pull 1,000+ reviews per hotel and group on reviewLanguage afterward. The pre-split reviewPositives and reviewNegatives fields are ready-made labeled data โ€” no sentence segmentation needed.
  • Agoda returns up to 50 reviews per page. Setting maxReviewsPerHotel below 50 still yields up to 50 results because the last page is kept whole. At $2/1,000, the maximum overshoot cost is $0.10.
  • Start small to verify. Set maxReviewsPerHotel: 50 on your first run to confirm the hotel URL resolves and the data shape matches your needs, then scale up to thousands.

Pricing

$2.00 per 1,000 reviews โ€” pay per result returned.

ReviewsCost
100$0.20
1,000$2.00
10,000$20.00
100,000$200.00

No compute charges โ€” you only pay per result returned.

A "result" is one review row in the output dataset.

Integrations

Export your data in JSON, CSV, Excel, XML, or RSS and connect to your existing stack. Apify integrates natively with:

  • Zapier / Make / n8n โ€” trigger downstream workflows when new reviews land
  • Google Sheets โ€” export directly to a spreadsheet for stakeholder sharing
  • Slack / Email โ€” notify your team when runs complete
  • Webhooks โ€” push review data to any custom endpoint in real time
  • Apify API โ€” schedule runs, retrieve datasets, and integrate programmatically from any language

This actor collects publicly visible guest reviews from Agoda. Users are responsible for ensuring their use of the collected data complies with Agoda's Terms of Service, applicable data protection regulations (including GDPR where relevant), and any local laws governing the storage and processing of user-generated content. Do not use extracted data for spam, identity fraud, harassment, or any other unlawful purpose.