Agoda Reviews Scraper
Pricing
from $3.00 / 1,000 review scrapeds
Agoda Reviews Scraper
Scrape Agoda hotel guest reviews by hotel URL or ID — rating, title, text, pros/cons, reviewer profile, hotel response, and dates. HTTP-only, MCP-ready.
Pricing
from $3.00 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Agoda hotel guest reviews by hotel URL or hotel ID — rating, title, full text, pros/cons, reviewer profile, traveler type, room type, hotel response, and dates. HTTP-only, fast, and MCP-ready for AI agents.
What it does
Give it one or more Agoda hotel pages (or numeric hotel IDs) and it returns every guest review as a clean, flat JSON record. It reads Agoda's own review API directly — no browser, no login — and paginates through the full review history per hotel, up to your chosen limit. Optionally pulls reviews from all aggregated providers (Agoda + partner sources) for maximum coverage.
When to use it
- Hotel & OTA revenue managers monitoring guest sentiment on their own and competitor properties.
- Hospitality analysts building rating trend and review-volume datasets.
- Market researchers mining traveler-type, country, and room-type breakdowns.
- AI agents / LLM pipelines that need structured review data from a single tool call.
Do not use it for hotel prices/availability or search results — this actor returns reviews only. One hotel URL per entry (not a city or search URL).
Output
One dataset item per review:
| Field | Description |
|---|---|
hotelId | Numeric Agoda hotel ID |
hotelReviewId | Unique review ID |
rating | Score 0–10 |
ratingText | Agoda label (e.g. "Exceptional") |
reviewTitle | Review headline |
reviewText | Main review body |
positives | "Liked" text (when present) |
negatives | "Disliked" text (when present) |
reviewDate | ISO 8601 review timestamp |
checkInDate | ISO 8601 check-in date |
checkInMonthYear | Human-readable stay month |
lengthOfStay | Nights stayed |
helpfulVotes | Helpful-vote count |
reviewerName | Display name |
reviewerCountry | Reviewer country |
travelerType | Solo / Couple / Family / Business, etc. |
roomType | Room type stayed in |
language | Original review language code |
provider | Source (Agoda, Booking.com, etc.) |
providerId | Numeric provider ID |
hotelResponderName | Hotel's responder name (if the hotel replied) |
hotelResponseDate | Date of the hotel's response |
images | Guest-uploaded image URLs |
scrapedAt | ISO 8601 scrape timestamp |
Pricing
Pay-per-event:
- Actor start — $0.00005 per run.
- Review scraped — $0.003 per review returned.
100 reviews ≈ $0.30. Costs are capped by maxReviewsPerHotel and shown in the run log/status before charging begins. Both event-based and usage-based billing are available; pick whichever fits at run time.
Input
| Field | Type | Notes |
|---|---|---|
hotelUrls | array | Agoda hotel page URLs. hotelId auto-extracted. |
hotelIds | array | Numeric hotel IDs (skips the page fetch, faster). |
maxReviewsPerHotel | integer | Default 100. Set high/0 to pull all. |
sortBy | enum | most_recent (default), most_helpful, highest_rated, lowest_rated. |
includeAllProviders | boolean | Pull partner-provider reviews too. Default false. |
onlyReviewsWithText | boolean | Skip rating-only entries. Default false. |
proxyConfiguration | object | Defaults to Apify Residential (required). |
Example input
{"hotelUrls": ["https://www.agoda.com/the-berkeley-hotel-pratunam/hotel/bangkok-th.html"],"maxReviewsPerHotel": 200,"sortBy": "most_recent","includeAllProviders": false}
Direct hotel IDs
{"hotelIds": ["461790"],"maxReviewsPerHotel": 500,"sortBy": "most_helpful"}
Usage from the API (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('khadinakbar/agoda-reviews-scraper').call({hotelIds: ['461790'],maxReviewsPerHotel: 100,sortBy: 'most_recent',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Usage from Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")run = client.actor("khadinakbar/agoda-reviews-scraper").call(run_input={"hotelIds": ["461790"],"maxReviewsPerHotel": 100,"sortBy": "most_recent",})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["rating"], item["reviewTitle"])
MCP / AI agents
Exposed through Apify MCP as khadinakbar/agoda-reviews-scraper. It takes a hotel URL or ID and returns structured review JSON — a natural single tool call for Claude, ChatGPT, or any agent doing hospitality research or sentiment analysis. Charged $0.003 per review.
How it works
The actor calls Agoda's public ReviewComments endpoint over plain HTTP through Apify Residential proxies, paces requests to respect Agoda's rate limits, and paginates until it reaches your maxReviewsPerHotel cap or exhausts the reviews. Reviews are de-duplicated by review ID. When a hotel returns nothing after repeated attempts, that hotel is skipped and logged in the RUN_SUMMARY key-value record; if every hotel is blocked, the run fails honestly rather than reporting a false success.
FAQ
How do I find a hotel ID? Open the hotel on Agoda; the numeric hotelId is in the page URL query string or page source. Or just pass the full hotel URL and the actor extracts it.
Can I get all reviews for a large hotel? Yes — set maxReviewsPerHotel high (or 0). Large hotels have tens of thousands of reviews; the run will take longer and cost more.
Why residential proxies? Agoda rate-limits datacenter IPs aggressively. Residential is the default and recommended setting.
Does it get reviews in English? Agoda returns each review with its original text; the language code is in the language field.
Are hotel responses included? When a hotel has publicly replied, hotelResponderName and hotelResponseDate are populated.
Legal
This actor collects only publicly available review data from Agoda's own review endpoints. It performs no login and accesses no private or personal account data. You are responsible for using the output in compliance with Agoda's Terms of Service, applicable data-protection laws (including GDPR/CCPA where relevant), and any restrictions on personal data. Use for lawful research, analytics, and monitoring purposes only.