Agoda Hotel Prices
Pricing
from $0.70 / 1,000 hotel scrapeds
Agoda Hotel Prices
One search, one flat table: hotel name, id, area, lowest all-in price, star rating, review score and count, and the booking URL - for any Agoda destination and date.
Pricing
from $0.70 / 1,000 hotel scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
21 hours ago
Last modified
Categories
Share
One search in, one flat table out. Give it a destination and a date; it returns the hotels Agoda would show you, each with its lowest available all-in price in the currency you asked for, its star rating, its review score and review count, and the URL of the booking page.
Built to be called by an agent or a script: small input, small output, one row per hotel, no nested objects, no HTML.
Output
One item per hotel:
| field | meaning |
|---|---|
hotel_id | Agoda's numeric property id, stable across searches |
name | Property name as Agoda displays it |
url | Booking page on agoda.com |
area | Neighbourhood, e.g. Sukhumvit |
city, country | As Agoda classifies the property |
star_rating | Official star rating, 1-5 |
review_score | Agoda guest score out of 10 |
review_count | Number of guest reviews behind that score |
price | Lowest all-in price, per room per night, taxes and fees included |
price_excluding_taxes | The same room before taxes and fees |
currency | Currency the two prices are quoted in |
is_available | Whether anything was bookable for those dates |
check_in, check_out, nights, adults, rooms | The search the prices belong to |
requested_destination | The destination string you sent, echoed back |
resolved_city, resolved_city_id | The city Agoda actually searched. null name when you passed a numeric id |
destination_matched | false when Agoda returned a city whose name is not what you asked for |
Always check destination_matched
Agoda's autocomplete answers nearly any string with a city, so a typo or a bad
input produces a complete, successful, charged run about somewhere else.
This actor cannot refuse that outright without also refusing legitimate spelling
variants - Agoda files "Koh Samui" as "Ko Samui" - so instead every row says
what you asked for and what it got. When destination_matched is false,
compare requested_destination against resolved_city before trusting the
prices. The run log carries a warning for the same case.
Fields that can be null, and why they are not zero
A price is only ever a number when Agoda quoted one.
priceandprice_excluding_taxesarenullfor a sold-out property. When nothing is bookable for your dates Agoda still lists the hotel but returns no offer at all - there is no price to report. A0there would read as "free", so this actor never writes one. Sold-out hotels are skipped entirely unless you switch on Include sold-out hotels.star_rating,review_scoreandreview_countarenullfor a property Agoda has no such value for - typically a new listing with no reviews yet. A new hotel is not a hotel that scored 0.areaisnullwhere Agoda files a property under a city but no neighbourhood.
Nothing in the output is inferred, averaged or filled in. Every value came from the response for the exact search you asked for.
What it does not do
- It does not return room-level detail. One row is one hotel at its cheapest bookable rate, not a list of room types.
- It prices the search you asked for, not the calendar. Prices are specific to the dates, occupancy and currency in the input. Change the dates and the prices change; that is the source, not a bug.
- It has no partner or affiliate access. It reads the same public search Agoda's own website reads, so it sees what a visitor sees - and, like a visitor, it does not see private negotiated rates.
- Destinations resolve to a city, and Agoda will resolve almost anything.
An area or landmark ("Chiang Mai Airport") resolves to the city containing it.
A string that matches no city at all still comes back with some city -
zzzqqqresolves to Zschepplin, Germany - so a nonsense destination does not fail, it succeeds about the wrong place. Checkdestination_matchedon the rows; see below.
Proxy
Use a residential proxy. Agoda blocks repeated searches from one address and answers with an HTML challenge page instead of results. The actor treats that - and any 403, 429 or 5xx - as a temporary refusal, takes a fresh exit address and retries; a permanent error, such as a malformed request, is never retried, so a hopeless run does not spend your money four times over. The default proxy setting already asks for the residential group.
Pricing
- Actor start - a small fixed fee per run, so a search that legitimately finds nothing still covers its cost.
- Hotel scraped - charged once per hotel written to the dataset. A hotel that appears on two result pages is charged once; Agoda repeats a few properties across page boundaries and this actor de-duplicates by property id before charging.
Sold-out hotels are not charged unless you asked for them.
Tips
maxItemscounts hotels delivered, not hotels looked at, so a sold-out property never costs you a row you asked for. Agoda serves 45 per page, so asking for 20 usually costs one page and asking for 90 usually costs two.- Set
currencyto whatever your downstream expects -THB,USD,JPY,SGD. The conversion is Agoda's, not ours. - For a repeatable price series, pin
destinationto a numeric city id rather than a name, so autocomplete changes cannot move your dataset under you. Take the id fromresolved_city_idon a run you have already checked.