Agoda Scraper - Hotels, Prices, Reviews & Ratings
Pricing
from $5.00 / 1,000 hotel scrapeds
Agoda Scraper - Hotels, Prices, Reviews & Ratings
Scrape Agoda hotels: full property details, star ratings, amenities, location, category review scores and complete guest reviews with reviewer demographics and hotel responses. Search by hotel name or paste hotel URLs. No browser needed. Export to JSON, CSV or Excel.
Pricing
from $5.00 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Agoda Scraper — Hotels, Ratings, Amenities & Guest Reviews
Extract complete hotel data from Agoda — the full property profile (star rating, location, geo-coordinates, 100+ amenities, room types, photos), the category review scores guests actually care about (cleanliness, location, service, room comfort, value for money — each with the city average), and every guest review with reviewer demographics, traveler type, stay dates and the hotel's own response.
No login, no cookies, no browser — fast, reliable JSON extraction that works on any Agoda hotel, in any country.
Why this Agoda scraper?
Most hotel scrapers return a name, a price and a single review score. This actor reads Agoda's public property and review endpoints directly and ships the richest dataset in the category — one clean record per hotel and one per review, with nothing dropped.
| Data | Typical scrapers | This actor |
|---|---|---|
| Hotel name, star rating, property type | ✅ | ✅ |
| Full address + latitude/longitude | partial | ✅ |
| Overall review score + review count | ✅ | ✅ |
| Category scores (cleanliness, location, service, comfort, value) | ❌ | ✅ + city average |
| Score distribution (Exceptional / Excellent / Good …) | ❌ | ✅ histogram |
| All amenities, grouped (107+ on a big hotel) | partial | ✅ |
| Room types, photos (100+), video, awards | ❌ | ✅ |
| Nearby attractions with distances | ❌ | ✅ |
| Full guest reviews (text, positives/negatives) | partial | ✅ |
| Reviewer country, traveler type, room, stay dates | ❌ | ✅ |
| Hotel's response to each review | ❌ | ✅ |
| New-/changed-only monitoring | ❌ | ✅ |
Use cases
- Reputation & review intelligence — pull every guest review for your property (and your competitors') with category scores, traveler types and your published responses. Track sentiment and category weak spots over time.
- Competitive benchmarking — compare star rating, review score and per-category scores against the city average that Agoda publishes for each grade.
- Travel content & aggregation — power hotel directories, comparison sites and apps with structured property data: amenities, room types, photos, geo, descriptions and ratings for any destination.
- Market research — analyse amenities, accommodation types and rating distributions across a market.
- Monitoring — schedule recurring runs to capture new reviews and score changes the moment they happen.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Agoda Scraper, then either search by hotel name, paste Agoda hotel URLs, or enter hotel IDs.
- Click Start and watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"searchTerms": ["Marina Bay Sands Singapore"],"hotelUrls": ["https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html"],"outputType": "all","includeReviews": true,"maxReviewsPerHotel": 100,"reviewsSort": "most_helpful"}
- searchTerms — hotel names to look up via Agoda's suggest API (e.g.
Marina Bay Sands Singapore,The Ritz-Carlton, Bangkok). Every matching hotel is scraped. - hotelUrls — direct Agoda hotel page URLs (any country domain). The most reliable way to scrape a known list of properties.
- hotelIds — numeric Agoda hotel IDs (e.g.
185945). - startUrls — advanced: an alternative way to pass hotel page URLs as a URL list.
- outputType (default
hotels) —hotelsorreviewsgive one clean, dense table;allreturns both in one dataset, each row tagged with atype. - includeReviews (default true) — fetch each hotel's guest reviews (applies when output is
reviewsorall). - maxReviewsPerHotel (default 100, 0 = all) — cap reviews per hotel.
- reviewsSort —
most_helpful(default),newest,highest,lowest. - maxHotels — cap the number of hotels this run (0 = no limit).
- monitorMode / monitorKey / onlyChangedInMonitor — see Monitoring below.
- proxyConfiguration — proxy settings (Apify Residential by default).
Scope note: the actor scrapes specific properties (by URL, ID, or hotel-name search). A bare city name resolves to a destination only — to cover a whole city, feed the hotel URLs you want (Agoda's per-city result pages are JavaScript-rendered and intentionally out of scope for this fast, no-browser actor).
Output
By default you get one clean, dense table of hotels. Set outputType to reviews for guest reviews, or all to combine both (each row tagged with a type of hotel or review).
A hotel record (type: "hotel"):
{"type": "hotel","hotelId": 185945,"name": "Marina Bay Sands","url": "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html","accommodationType": "Hotel","starRating": 5,"fullAddress": "10 Bayfront Avenue, Marina Bay, Singapore, 018956","area": "Marina Bay","city": "Singapore","country": "Singapore","latitude": 1.2836,"longitude": 103.8607,"reviewScore": 8.9,"reviewScoreText": "Excellent","reviewCount": 48766,"categoryScores": { "cleanliness": 9.3, "facilities": 9.3, "location": 9.2, "roomComfort": 8.6, "service": 9.0, "valueForMoney": 8.0 },"categoryCityAverages": { "cleanliness": 8.7, "location": 8.8, "service": 8.6 },"scoreDistribution": [ { "label": "9+ Exceptional", "count": 19566 }, { "label": "8-9 Excellent", "count": 6649 } ],"facilities": ["Fitness center", "Outdoor pool", "Free Wi-Fi", "Spa", "Casino", "..."],"facilityGroups": [ { "group": "Things to do, ways to relax", "items": ["Spa", "Sauna", "Massage", "..."] } ],"roomTypes": [ { "name": "Sands Family Suite", "bedType": null, "sizeSqm": null } ],"nearbyAttractions": [ { "name": "ArtScience Museum", "distance": "350 m from property" } ],"images": ["https://pix8.agoda.net/hotelImages/185945/..."],"imageCount": 112,"videos": ["https://pix5.agoda.net/video/185945.mp4"],"checkInTime": "03:00 PM","checkOutTime": "11:00 AM","awards": ["Gold Circle Award Winner 2025"],"description": "Experience Luxury and Elegance at Marina Bay Sands…","scrapedAt": "2026-06-19T12:00:00.000Z"}
A review record (type: "review") carries rating (0–10), ratingText, title, text, positives, negatives, reviewDate, checkInDate/checkOutDate, lengthOfStay, reviewerName, reviewerCountry, travelerType (e.g. Family with young children), roomType, helpfulVotes, the hotel's hotelResponse, and any reviewer images.
What to expect (field coverage)
Agoda is organizer/host-entered data, so a few fields appear only when the property published them. Verified across multiple hotels, you can typically expect:
| Entity | Always present | Usually present | Present when published |
|---|---|---|---|
| Hotel | name, star rating, accommodation type, location, review score & count | category scores, facilities, photos, description, geo | awards, videos, room types, nearby attractions |
| Review | rating, review date, reviewer country, traveler type | title, text, room type, stay dates | positives/negatives, hotel response, reviewer images |
A blank field means the property didn't publish it for that record — not that scraping failed. Nothing is dropped.
Monitoring (only new / changed)
Turn on Monitor mode to remember each hotel's review score and review count between runs (in a named key-value store) and output only hotels that are new or have changed on later runs — perfect for tracking new reviews and score movements.
- It works with Apify Schedules, not against them: the Schedule triggers the run on your cadence (hourly/daily/weekly), and Monitor mode makes each run emit only fresh data. There is no conflict between the two.
- Use a distinct monitorKey per watchlist so their states stay separate.
- Set onlyChangedInMonitor to
falseto always output every hotel but still tag each asnew/changed/unchanged(withnewReviewsSinceLastRun).
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly to capture new reviews and score changes; pair with Monitor mode for a clean new-only feed.
- Webhooks — trigger downstream actions (Slack alert, CRM import, dashboard refresh) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/agoda-scraper').call({searchTerms: ['Marina Bay Sands Singapore'],outputType: 'all',maxReviewsPerHotel: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} hotels & reviews`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new reviews straight into Slack, Sheets or your CRM.
- Slack — get notified when a monitored hotel gets new reviews.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "pull the latest reviews and category scores for this Agoda hotel" and let it run the scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete travel & hospitality intelligence stack:
- Booking.com Scraper — hotel prices, availability, discounts and room data.
- Trip.com Scraper — hotel prices, reviews and amenities.
- Google Flights Scraper — airfares and price-drop monitoring.
- GetYourGuide Scraper — tours, activities and supplier data.
- Tours & Activities Scraper — multi-platform tours and experiences.
- Airbnb Scraper — short-stay listings, prices and availability.
- Resident Advisor Scraper — electronic-music events and venues.
- Eventbrite Scraper — events plus organizer leads.
Tips
- Bulk runs: paste many hotel URLs at once — they're scraped in parallel. Use
hotelIdsif you already have IDs from a previous run. - Reviews cost: keep
maxReviewsPerHotelmodest for big chains (Marina Bay Sands has 48k+ reviews). Reviews are billed per review. - Sorting: use
newestfor monitoring fresh reviews;most_helpfulfor the highest-signal feedback. - Proxies: keep the default Residential proxy — Agoda serves cleanly on it. Datacenter may work for lighter volumes at lower cost.
FAQ
How do I scrape a specific hotel? Put its name in searchTerms (e.g. Marina Bay Sands Singapore) or paste its Agoda page URL in hotelUrls. You can mix both and pass many at once.
Does it need the Agoda API or a key? No. Agoda's partner API requires approval and a key; this actor reads the same (and richer) data from Agoda's public property and review endpoints — no key or login needed.
Can I scrape every hotel in a city? This actor targets specific properties (by URL, ID or hotel name). Agoda's per-city result pages are JavaScript-rendered, so for city coverage feed the hotel URLs you want. Hotel-name and URL inputs are fully reliable.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I monitor a hotel for new reviews? Turn on Monitor mode and create a Schedule. Each scheduled run outputs only hotels with new reviews or changed scores.
A field is empty — why? Some hotels don't publish a video, awards, or room sizing, and some reviews have no written comment. Fields are blank only when the property/guest didn't publish that data — never because the scraper skipped it.
Is scraping Agoda legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA for personal data) and Agoda's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.