How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
Pattayain Destination. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
It suits travel analysts, agencies and developers who compare stays or track rates, and the smallest run is one hotel.
Good for
- You compare hotel prices in a city for fixed dates.
- You track the rate of the same hotels over time.
- You need room rates or guest reviews in a sheet or in your own system.
- You give an AI agent a simple way to get hotel prices.
Who uses it
Travel analysts
Compare hotel prices in a city for fixed dates.
Travel agencies
Check room rates and the cheapest dates for chosen hotels.
Developers
Feed hotel prices and reviews into your own tool.
Price
Prices will be shown after release.
Questions
Do I need an Agoda account?
No. You need only an Apify account. No cookies or Agoda key.
Can it book a room?
No. It only reads public prices and reviews.
Does it return all hotels of a city?
Not always. One search gives about 1,000 to 1,100 hotels. Split a large city with filters.
How fresh are the prices?
Each row shows the price at the time in fetchedAt. Prices are read live when the run works, not from an old copy.
Why is the room price not equal to the hotel price?
price comes from the search for your currency. Room rates come from the hotel page, often in USD, and can differ.
Do I pay for a hotel with no price?
Yes, with the default settings. It is a row with data about the hotel. Set includeSoldOut to false to skip it.
Details
Step by step on Apify
- In Destination, enter a city or district. The form starts with
Pattaya. - In Check-in and Check-out, keep
30 daysand31 days, or enter your own dates. - In Max hotels, keep
10. Ten hotels are enough for a first run. - Click Start. The button is outside this screenshot.
- Open the Output tab and choose the Overview view. Look at the columns Name, Stars, Rating, Reviews, Price and Currency.
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Compare hotels in a city | destination, checkIn, checkOut, starRatings | Hotel row | name, stars, rating, price, currency | CSV or Excel export |
| Track rates of chosen hotels | hotelIds, fixed dates, stateName | Hotel row with a change mark | hotelId, price, previousPrice, change | Schedule and webhook |
| Find the cheapest dates | hotelIds, checkIn, dateSweepDays | One hotel row per date | checkIn, checkOut, price, isAvailable | Google Sheets through a no-code tool |
| Compare room rates | hotelIds, includeRooms | Room row | roomName, price, cancellation, isBreakfastIncluded | Dataset API |
| Study guest opinions | hotelIds, maxReviews, reviewLanguages | Review row | rating, text, positives, negatives, date | Your text analysis tool |
Tips for better results
- Start with 10 hotels and one night. Check the first rows before a big run.
- One search gives about 1,000 hotels. Split a big city by stars, price or district.
- Use fixed dates and a monitor name to see only the prices that changed.
Limits and good to know
- Results per search: Agoda serves about 1,000 to 1,100 different hotels for one search, even if a city has many more. To get more, split the search by
starRatings, byminPriceandmaxPrice, or by a district name. The run warns you when this happens - Input size: up to 50 destinations, 50 city IDs, 1,000 hotel IDs, 100 hotel names, 1,000 links and 100 stays in one run. A stay can have up to 30 nights, up to 2 years ahead
- Time: the default timeout is 300 seconds. 650 hotels took up to 1.5 minutes and 1,000 hotels about 1.5 minutes in our tests. 10 hotels with rooms, reviews and details took up to 1.5 minutes. A full list of 1,000 hotel IDs and 50 place names took up to 3.5 minutes. Many rooms and reviews take longer. If the time runs out, you keep what was saved. Raise the timeout for large runs
- Prices:
priceis what Agoda shows for your search at that moment, and it can change. It is not a booking quote. A price without a sign-in can differ from a member price - Room rates: room rows are often in USD, and the room price can be about 10% above the search price. Not all rates may appear
- Room count:
roomCountshows how many rooms a price covers. It can be lower thanrooms - Names: with some values of
language, Agoda translates only part of the names
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"type": "hotel",
"hotelId": "86640187",
"name": "Grande Centre Point Voyage Pattaya",
"localName": null,
"stars": 5,
"rating": 9.4,
"reviewsCount": 254,
"isAvailable": true,
"isSoldOut": false,
"price": 225.08,
"priceExclTaxes": 210.36,
"pricePerNight": 210.36,
"pricePerNightInclTaxes": 225.08,
"crossedOutPricePerNight": 229.93,
"discountPercent": 9,
"currency": "USD",
"cancellationType": "NonRefundable",
"freeCancellationUntil": null,
"isFreeCancellation": false,
"payLater": false,
"payAtHotel": false,
"noCreditCardNeeded": false,
"roomsAvailable": 14,
"benefits": ["Price includes Free Breakfast", "Parking", "Coffee & tea", "Free WiFi", "Drinking water", "Free fitness center access"],
"address": "808,908 M.5 Na Kluea, Bang Lamung",
"postalCode": "20150",
"area": "North Pattaya",
"city": "Pattaya",
"cityId": 8584,
"country": "Thailand",
"countryCode": "TH",
"lat": 12.953625,
"lng": 100.886116,
"propertyType": "Hotel",
"imageUrl": "https://pix8.agoda.net/hotelImages/86640187/0/454f43fb32639acb0cc1464748b2e31b.png?va=1&ce=3&s=1024x768",
"url": "https://www.agoda.com/grande-centre-point-voyage-pattaya/hotel/pattaya-th.html?checkIn=2026-12-07&los=1&adults=2&rooms=1&children=0¤cyCode=USD",
"searchRank": 1,
"query": "Pattaya",
"checkIn": "2026-12-07",
"checkOut": "2026-12-08",
"nights": 1,
"adults": 2,
"children": 0,
"rooms": 1,
"roomCount": 1,
"source": "agoda",
"fetchedAt": "2026-11-07T09:10:57.470Z"
}Data fields (40)
| Field | Type | Meaning |
|---|---|---|
type | string | hotel, room, review or status. |
hotelId | string | Agoda hotel ID. |
name | string | Hotel name. |
localName | string | Name in the hotel's own language, when different. |
stars | number | Hotel class. |
rating | number | Guest rating from 0 to 10, or a review's rating. |
reviewsCount | integer | Number of guest reviews. |
price | number | Total for the stay and all rooms with taxes. |
priceExclTaxes | number | Total for the stay and all rooms without taxes. |
pricePerNight | number | Per room per night without taxes. |
pricePerNightInclTaxes | number | Per room per night with taxes. |
crossedOutPricePerNight | number | Crossed-out price per room per night. |
discountPercent | number | Discount off the crossed-out price. |
currency | string | Price currency. |
isAvailable | boolean | True when the hotel has a price on the dates. |
isSoldOut | boolean | True when Agoda marks the hotel as sold out. |
cancellationType | string | Agoda's cancellation type. |
freeCancellationUntil | string | Last date of free cancellation. |
isFreeCancellation | boolean | True when the offer is free to cancel. |
payLater | boolean | The offer can be paid later. |
payAtHotel | boolean | The offer can be paid at the hotel. |
noCreditCardNeeded | boolean | The offer needs no credit card. |
roomCount | integer | Rooms this price covers. Agoda can price fewer than you asked for when the guests fit. |
roomsAvailable | integer | Rooms left at this price. |
benefits | array | What the price includes. |
address | string | Street address. |
postalCode | string | Postal code. |
area | string | District. |
city | string | City. |
cityId | integer | Agoda city ID. |
country | string | Country. |
countryCode | string | Country code. |
lat | number | Latitude. |
lng | number | Longitude. |
propertyType | string | Hotel, resort, apartment and so on. |
imageUrl | string | Main photo of the hotel. |
url | string | Agoda page with these dates. |
searchRank | integer | Position in the search results. |
query | string | Which input produced this hotel. |
checkIn | string | Check-in date. |
Input settings (25)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Destination | destination | string | "Pattaya" |
| Check-in | checkIn | string | "30 days" |
| Check-out | checkOut | string | "31 days" |
| Adults | adults | integer | 2 |
| Currency | currency | string | "USD" |
| Max hotels | maxItems | integer | 10 |
| Max reviews per hotel | maxReviews | integer | 0 |
| More destinations | destinations | array | |
| Agoda city IDs | cityIds | array | |
| Agoda hotel IDs | hotelIds | array | |
| Hotel names | hotelNames | array | |
| Agoda links | startUrls | array | |
| More dates | extraStays | array | |
| Shift dates by days | dateSweepDays | integer | 0 |
| Rooms | rooms | integer | 1 |
| Children's ages | childrenAges | array | |
| Language | language | string | "en-us" |
| Sort by | sortBy | string | "ranking" |
| Stars | starRatings | array | |
| Min guest rating | minReviewScore | number | |
| Min price per night | minPrice | number | |
| Max price per night | maxPrice | number | |
| Property types | propertyTypes | array | |
| Amenities | amenities | array | |
| Free cancellation only | freeCancellationOnly | boolean | false |





