Agoda Scraper - Hotels, Prices, Reviews & Ratings avatar

Agoda Scraper - Hotels, Prices, Reviews & Ratings

Pricing

from $5.00 / 1,000 hotel scrapeds

Go to Apify Store
Agoda Scraper - Hotels, Prices, Reviews & Ratings

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

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

3 days ago

Last modified

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.

DataTypical scrapersThis actor
Hotel name, star rating, property type
Full address + latitude/longitudepartial
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

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the Agoda Scraper, then either search by hotel name, paste Agoda hotel URLs, or enter hotel IDs.
  3. Click Start and watch results stream into the dataset table.
  4. 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)hotels or reviews give one clean, dense table; all returns both in one dataset, each row tagged with a type.
  • includeReviews (default true) — fetch each hotel's guest reviews (applies when output is reviews or all).
  • maxReviewsPerHotel (default 100, 0 = all) — cap reviews per hotel.
  • reviewsSortmost_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:

EntityAlways presentUsually presentPresent when published
Hotelname, star rating, accommodation type, location, review score & countcategory scores, facilities, photos, description, geoawards, videos, room types, nearby attractions
Reviewrating, review date, reviewer country, traveler typetitle, text, room type, stay datespositives/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 false to always output every hotel but still tag each as new / changed / unchanged (with newReviewsSinceLastRun).

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:

Tips

  • Bulk runs: paste many hotel URLs at once — they're scraped in parallel. Use hotelIds if you already have IDs from a previous run.
  • Reviews cost: keep maxReviewsPerHotel modest for big chains (Marina Bay Sands has 48k+ reviews). Reviews are billed per review.
  • Sorting: use newest for monitoring fresh reviews; most_helpful for 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.