Agoda Hotel Scraper — Hotels, Rooms & Reviews API
Pricing
from $2.00 / 1,000 hotel extracteds
Agoda Hotel Scraper — Hotels, Rooms & Reviews API
Scrape Agoda hotel listings with star rating, guest score, review count, nightly price and property type. Search by location, coordinates, or URL, plus location autocomplete. Opt-in room rates, availability, price calendar and guest reviews.
Pricing
from $2.00 / 1,000 hotel extracteds
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Agoda Hotel Scraper — Hotels, Rooms & Reviews API 🏨
🎉 NEW: Bundle hotels + room rates + guest reviews in a single run — no three-actor pipeline
Built for hospitality analysts, travel researchers, OTA revenue teams, and rate-shopping tools that need clean Agoda data fast.
📋 Overview
Agoda data without the manual dance. Pull hotels, room rates, availability, nightly price trends, guest scores, and reviews from anywhere on Agoda — by city, coordinates, or URL — in one structured run.
Why hospitality teams choose us:
- ✅ 4 search modes — free-text location (auto-paginated), lat/lng radius, Agoda URL, and location autocomplete for city-ID lookup
- ⚡ Direct-API speed — sub-2-second/hotel, no Cloudflare/captcha brittleness like browser-scrapers
- 🛏️ Bundled room rates & availability — opt-in
fetchRoomspulls every room type with its rate-plan offers (price, free cancellation, breakfast, occupancy) in the same run - 📆 Nightly price-trend calendar — a 60-day price grid per hotel so you can spot the cheapest dates and demand peaks
- 💯 Guest score + reviews — 0–10 aggregate score plus opt-in per-review sentiment (title, comment, traveller type, stay dates)
- 💰 Tiered pay-per-result — $0.009 FREE → $0.00125 DIAMOND per hotel, only charged for rows you actually get
- 💎 Hospitality KPIs out of the box — avg guest score, star rating, price distribution, per-city / per-area / per-type breakdowns in a default HTML report
✨ Features
- 🧭 Location, coordinate & URL search — target a whole city, a radius around a point, or a specific Agoda search URL
- 🔎 Location autocomplete — resolve fuzzy place names to Agoda city IDs and hotel counts
- ⭐ Rich hotel records — star rating, guest score, review count, property type, address, coordinates, and images
- 🛏️ Room-level rates — master rooms with every rate-plan offer: price, cross-out price, discount, cancellation policy, breakfast, instant booking, occupancy
- 📆 Price calendar — per-hotel nightly price trend to time the best booking window
- 📝 Guest reviews enrichment — score, headline, translated + original comment, traveller type, stay dates, property responses
- 💱 Stay-spec + currency — pass check-in / check-out / adults / rooms / currency for date-accurate quotes in any ISO currency
- 📊 Hospitality KPIs report — auto-generated HTML with distributions and market breakdowns
- 🔁 Built-in deduplication — hotels deduped across overlapping queries automatically
🎬 Quick Start
Point the actor at a city, pick a search mode, and run. Free-text location works out of the box (it auto-paginates), and enrichment is one checkbox away.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~agoda-hotel-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode": "bylocation", "location": "Bangkok"}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose a search mode
Pick bylocation (free text), bycoordinates (lat/lng + radius), byurl (an Agoda URL), or autocomplete (location lookup).
Step 2: Add optional enrichment
Toggle fetchRooms for room rates, availability, and the price calendar. Toggle fetchReviews for guest reviews.
Step 3: Run and export
Start the run and export results as JSON, CSV, or Excel directly from the Apify dataset.
That's it! In under a minute, you'll have:
- A clean table of Agoda hotels with star rating, guest score, and price
- Optional room-rate and guest-review rows per hotel
- A hospitality KPI HTML report
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
| searchMode | string | No | bylocation (default), bycoordinates, byurl, or autocomplete |
| location | string | For bylocation | City / region / landmark name |
| query | string | For autocomplete | Partial location name to look up |
| latitude / longitude | number | For bycoordinates | Center point for a radial search |
| radius | number | No | Radius in km (default 5, range 0.1–50) |
| url | string | For byurl | Full Agoda search / city URL |
| checkIn / checkOut | string | No | Stay dates (YYYY-MM-DD) for date-accurate quotes |
| adults / rooms | integer | No | Occupancy (defaults 2 adults, 1 room) |
| currency | string | No | ISO currency code (default USD) |
| maxResults | integer | No | Cap on hotels per query (default 30, max 300) |
| fetchRooms | boolean | No | Room rates, availability & price calendar (PAID) |
| fetchReviews | boolean | No | Guest reviews (PAID) |
Example — city search with enrichment:
{"searchMode": "bylocation","location": "Bangkok","checkIn": "2026-08-15","checkOut": "2026-08-17","currency": "USD","fetchRooms": true,"fetchReviews": true}
Radial search around a coordinate:
{"searchMode": "bycoordinates","latitude": 13.7563,"longitude": 100.5018,"radius": 5}
📤 Output
Results are saved to the Apify dataset. Hotel rows are the primary output; room and review rows are added when enrichment is enabled.
| Field | Type | Description |
|---|---|---|
| hotelId | integer | Unique Agoda property ID |
| name | string | Hotel name |
| starRating | number | Official star rating (0–5) |
| reviewScore | number | Aggregate guest score (0–10) |
| reviewCount | integer | Number of guest reviews |
| propertyType | string | Agoda property type |
| pricing | object | Nightly price (currency, per-night inclusive/exclusive/strikethrough) |
| priceCalendar | array | Nightly price-trend calendar (rooms enrichment) |
| address | object | City, area, country, cityId |
| location | object | Latitude / longitude |
| media | object | Thumbnail + image array |
| url | string | Agoda hotel page URL |
| offers | array | (room rows) Rate-plan offers: price, cancellation, breakfast, occupancy |
| rating / reviewTitle / comment | mixed | (review rows) Guest score, headline, and body |
Example hotel row:
{"_type": "hotel","hotelId": 61208465,"name": "Palette Hi Hotel Bangkok","starRating": 4.0,"reviewScore": 7.8,"reviewCount": 1558,"propertyType": "NormalProperty","address": { "city": "Bangkok", "area": "Ratchada", "country": "Thailand", "cityId": 9395 },"location": { "latitude": 13.739198, "longitude": 100.553263 },"url": "https://www.agoda.com/hi-hotel-bangkok/hotel/bangkok-th.html"}
💼 Use Cases & Examples
1. Hospitality Market Intelligence
Analysts benchmarking a city's hotel supply, quality, and price bands.
Input: A city via bylocation
Output: Every hotel with star rating, guest score, and price distribution
Use: Size a market, spot quality gaps, and build a comp set in minutes.
2. Travel & OTA Research
Product and content teams mapping inventory across destinations.
Input: Multiple cities or coordinate clusters Output: Structured hotel catalogs ready for dashboards and feeds Use: Power travel guides, destination pages, and metasearch comparisons.
3. Hotel Rate Benchmarking
Revenue managers tracking competitor pricing and availability.
Input: A location plus fetchRooms
Output: Room-level rate plans and a nightly price calendar per hotel
Use: Rate-shop rivals, time promotions, and defend RevPAR.
4. Guest-Review Sentiment Analysis
Reputation and CX teams mining what guests actually say.
Input: A location plus fetchReviews
Output: Per-review score, headline, comment, traveller type, and stay dates
Use: Track sentiment trends and surface recurring complaints.
5. Competitor Comp-Set Monitoring
Owners and asset managers watching a fixed set of nearby properties.
Input: A tight radius via bycoordinates
Output: A repeatable snapshot of the local comp set with scores and prices
Use: Schedule weekly pulls to monitor positioning over time.
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/agoda-hotel-scraper').call({searchMode: 'bylocation',location: 'Bangkok'});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/agoda-hotel-scraper').call(run_input={'searchMode': 'bylocation', 'location': 'Bangkok'})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~agoda-hotel-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"searchMode": "bylocation", "location": "Bangkok"}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: Schedule or webhook
- HTTP Request: Call the actor API
- Process: Handle JSON results
- Action: Save to a sheet, alert on rate changes, or feed a dashboard
📊 Performance & Pricing
FREE Tier (Try It Now)
- Up to 25 hotels per run — full feature access, same data quality
- No credit card required
- Perfect for testing and small projects
PAID Tier (Production Ready)
- Unlimited hotels per run, plus room-rate and review enrichment
- Faster processing, no delays
- Pay-per-result: only charged for successful rows
💰 Fair, tiered pricing — $0.009 FREE → $0.00125 DIAMOND per hotel; room rates and reviews billed only when you enable them.
❓ Frequently Asked Questions
Q: How many hotels can I process? A: FREE tier: up to 25 per run. PAID tier: unlimited, with auto-pagination on location search.
Q: Where do live room rates come from?
A: Enable fetchRooms — the actor pulls every room type with its rate-plan offers and a nightly price calendar per hotel.
Q: Are guest reviews included?
A: Enable fetchReviews — you get per-review score, headline, comment, traveller type, and stay dates.
Q: What output formats are available? A: JSON, CSV, and Excel — export directly from the Apify dataset.
Q: Can I search around a specific point?
A: Yes — use bycoordinates with latitude, longitude, and a radius in kilometers.
Q: Is this legal? A: Yes — the actor only extracts publicly available data. See the legal section below.
🐛 Troubleshooting
No hotels returned
- Try a broader
locationterm, or useautocompleteto confirm the place resolves on Agoda. - For
bycoordinates, widen theradius.
No room rates or reviews in the dataset
- Room rates and reviews are PAID-tier enrichment — enable
fetchRooms/fetchReviewson a paid Apify plan.
A specific hotel is missing a price
- Search rows do not always carry a live nightly rate — enable
fetchRoomsto pull the room-level price and the price calendar.
⚠️ Trademark Disclaimer
Agoda™ is a trademark of Agoda Company Pte. Ltd. This actor is an independent, unofficial tool and is not affiliated with, endorsed by, sponsored by, or in any way officially connected to Agoda Company Pte. Ltd. or Booking Holdings Inc. All product names, logos, and brands are the property of their respective owners and are used for identification purposes only. Use this actor in compliance with Agoda's Terms of Service and all applicable laws.
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
🤝 Support
Join our active support community
- For issues or questions, open an issue in the actor's Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools