Agoda Search Scraper
Pricing
from $1.20 / 1,000 property-listeds
Agoda Search Scraper
Scrape Agoda search results for any destination and dates. Just add a city, area or Agoda URL and get every property with nightly and stay prices with and without tax, review score, stars, coordinates, cancellation deadline, pay-later, breakfast and rooms left. $4.00 per 1,000 properties.
Pricing
from $1.20 / 1,000 property-listeds
Rating
0.0
(0)
Developer
BonCross API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
What is Agoda Search Scraper?
Agoda Search Scraper gives you Agoda's search results as data, with 26 filters to shape them: the 17 on Agoda's own search page, applied by Agoda, and nine more on price, score and availability. You type a city, an area or a landmark, set your dates, and get the properties Agoda is selling for that stay, each priced with and without tax.
Agoda is a major booking site, especially across Asia, and it lists hotels and homes worldwide. A city id or a search URL copied from your browser works as a destination too.
What you get that a plain listing scrape doesn't:
- Filters that do what they say. 61 of 61 live checks on the inputs and filters passed on 7 October 2026. Where Agoda's own location and "excellent for" filters let through a property whose card shows a lower score, that row is removed too.
- Tax on both sides. Each priced row has the nightly and stay price including every tax and fee, and Agoda's own pre-tax figures beside them. Nothing is calculated.
- Only real results. When few properties match, Agoda pads the page with places from a neighbouring town or outside your filters. One measured search had 26 real matches and 17 of these fillers. You get the 26.
- A feed of what moved. Name a price memory, switch on "Only new or changed prices", and a scheduled run returns just the properties that are new or repriced. The unchanged ones aren't charged.
- Speed. Four cities at 250 properties each, 1,000 rows, took 10 to 12 seconds when Agoda answered promptly.
BonCross Verified means we tested this actor against the live site before release and kept the record:
- 66 of 66 live checks on its inputs and filters passed on 7 October 2026
- 7 destinations run the same day in 7 countries: 175 properties, none empty
- Charges checked against the 175 rows
- A place name that matches nothing where you said gets a free row listing what Agoda suggests
In each row you can:
- Read the review score, review count, star rating and property type
- See the crossed-out price and discount message when Agoda discounts a property
- Check the free-cancellation deadline, pay-later and pay-at-hotel eligibility, breakfast and rooms left
- Get what the search card shows beside the price: distance to the city centre, nearby stations and landmarks in metres, the location score, highlights and campaign badges
- Price any party size, children's ages included, in any currency Agoda supports
- Find out why a destination couldn't be reached, from a row that says so
What data do you get for each property?
| 🏨 Property name and Agoda id | 🔗 Property URL |
| ⭐ Star rating | Review score and review count |
| 💷 Nightly price and stay total | Prices excluding tax, and whether the price includes tax |
| Crossed-out price and discount message | Currency |
| 📍 Area, city, country and coordinates | Rooms left |
| Free cancellation and its deadline | Pay later and pay at hotel |
| 🍳 Breakfast included | Property type and sponsored flag |
| 🖼 Main image | Highlighted facilities |
| Distance from the city-centre zone | 🚉 Nearby stations and landmarks, in metres |
| Location score and score breakdown | Highlights and campaign badge |
| 📈 Price change since the last run | Timestamp of the scrape |
How to scrape Agoda search results
It's a form. You don't write any code, and the result downloads as a spreadsheet.
- Create a free Apify account and open Agoda Search Scraper.
- Add one or more destinations: "Paris", "Times Square", "Eiffel Tower", an Agoda city id, or a search URL from your browser.
- Set your dates and guests, pick a currency and a sort order, and tick the filters you'd tick on Agoda.
- Click Start. A 10-property search took 3 to 4 seconds in the measured runs below.
- Download the properties as Excel or CSV, or as JSON, XML or HTML.
⬇️ Input
Give it destinations by name: a city ("Paris"), an area ("Times Square", "Sukhumvit") or a landmark ("Eiffel Tower"). An Agoda city id works, and so does a search URL pasted from your browser. City, area and landmark URLs are all read, and a URL's own dates and guests are used for that destination.
Dates are either fixed ("Check-in date" and "Check-out date") or rolling ("Check-in days ahead" and "Nights"), which is what you want on a schedule. The rest is optional.
You have two limits. "Max results per destination" (1 to 5,000, default 100) applies to each destination separately: ten destinations at 50 each returns 500. "Maximum results for the whole run" caps the run as a whole, and nothing past it is fetched or charged for.
A city for two nights, cheapest first
{"destinations": ["Paris"],"checkIn": "2026-11-18","checkOut": "2026-11-20","adults": 2,"currency": "USD","sort": "price_low_to_high","maxResultsPerDestination": 100}
A city, a district and a second city: four and five star hotels with free cancellation
{"destinations": ["Paris", "Times Square", "Bangkok"],"checkIn": "2026-11-18","checkOut": "2026-11-20","adults": 2,"currency": "USD","sort": "review_score","stars": ["4", "5"],"freeCancellationOnly": true,"maxResultsPerDestination": 100}
A rolling window with a price ceiling and a family party
{"destinations": ["Bangkok"],"checkInDaysAhead": 30,"nights": 3,"adults": 2,"childrenAges": [7, 4],"rooms": 1,"currency": "GBP","maxPricePerNight": 150,"minReviewScore": 8}
A daily price monitor that returns only what moved
{"destinations": ["New York"],"checkInDaysAhead": 60,"nights": 2,"currency": "USD","maxResultsPerDestination": 200,"priceStoreName": "new-york-prices","onlyNewOrChanged": true}
Around a landmark, inside the city centre, with a bathtub, free cancellation and payment at the hotel
{"destinations": ["Eiffel Tower"],"checkInDaysAhead": 45,"nights": 2,"distanceToCenter": ["inside"],"roomAmenities": ["bathtub"],"paymentOptions": ["free_cancellation", "pay_at_hotel"],"minLocationScore": "9"}
The filters
Tick several values in one filter and you get properties matching any of them, as on the site.
| Field | What it does |
|---|---|
stars, accommodationTypes, hotelBrands, hotelName | Star class (Agoda Luxe included), property type, brand, and part of the property name. Applied by Agoda. |
distanceToCenter, minLocationScore, excellentFor | Distance to the centre, minimum location rating, and Agoda's "Excellent cleanliness / service / value for money / location / facilities / room quality" filters. Applied by Agoda. |
paymentOptions, roomOffers, kidsStayFree | Free cancellation, pay later, pay at hotel and the like, room offers such as breakfast or airport transfer, and kids stay free. Applied by Agoda. |
propertyFacilities, roomAmenities, bedTypes, goodFor | Facilities, in-room amenities, bed type, and who the property suits. Applied by Agoda. |
minBedrooms, minBathrooms, minBeds | For homes and larger parties. Applied by Agoda. |
productType | Hotels, homes, or both. |
minReviewScore, minReviewCount | A floor on the guest score and on how many reviews stand behind it. |
minPricePerNight, maxPricePerNight | A price band per room per night. |
freeCancellationOnly, breakfastOnly, excludeSponsored | Keep refundable or breakfast-included offers, and drop sponsored placements. |
onlyAvailable | On by default. Switch it off to include sold-out or unpriced properties. |
includeNearbySuggestions | Off by default. Switch it on to keep Agoda's padding suggestions, each marked isOutsideSearch. |
sort | recommended, price_low_to_high, price_high_to_low, review_score, stars_high_to_low, stars_low_to_high or distance_from_center. |
For developers
maxResultsPerDestinationis the per-destination limit andmaxItemsthe run-wide one (0 means no limit).- Agoda returns up to 100 properties per request. A deeper
maxResultsPerDestinationmeans more requests, read in order. priceStoreNamenames the storage that remembers the last price per property. WithonlyNewOrChangedon, the next run returns only new or moved rows and fillspreviousPricePerNight,previousScrapedAt,priceChangeandpriceChangePct. Use one name per watchlist.maxConcurrency(Parallel requests, default 8, 1 to 32) sets how many requests run at once. The default suits nearly every run.delayMs(Delay between requests, default 0) adds a pause before each request, in milliseconds. Values above 2000 are treated as 2000. We'd leave it at 0.- Destinations in one run are searched at the same time. Rows are saved as they arrive, and if the platform restarts a run part-way, the properties already delivered are neither repeated nor charged again.
inputon each row is the destination exactly as you entered it, which lets you match rows from a long list back to it.
⬆️ Output
One row is one property for one stay. You can view the dataset as a table, as JSON or on a map in the Output tab.
{"input": "Paris", "destination": "Paris", "destinationType": "city", "destinationCountry": "France", "destinationId": 15470, "destinationCityId": 15470, "isOutsideSearch": false,"id": "7266", "hotelId": 7266, "name": "Pullman Paris Tour Eiffel", "localName": "Pullman Paris Tour Eiffel","url": "https://www.agoda.com/pullman-paris-tour-eiffel_11/hotel/paris-fr.html","propertyType": "Hotel", "stars": 4, "isSponsored": false, "sponsoredType": "NoSponsored", "resultType": "NormalProperty","country": "France", "countryCode": "FR", "city": "Paris", "cityId": 15470, "area": "15th - Tour Eiffel - Porte de Versailles", "areaId": 58391,"lat": 48.8555908203125, "lng": 2.292680025100708,"rating": 8.5, "ratingScale": 10, "reviewCount": 6310,"currency": "USD", "checkIn": "2026-11-06", "checkOut": "2026-11-08", "nights": 2,"adults": 2, "rooms": 1, "childrenAges": [],"isAvailable": true, "isSoldOut": false,"pricePerNight": 476.12, "pricePerNightExcludingTax": 418.04, "pricePerNightListed": null,"priceTotal": 952.24, "priceTotalExcludingTax": 836.08, "pricesIncludeTax": true,"isFreeCancellation": true, "freeCancellationUntil": "2026-11-05", "cancellationType": "FreeCancellation","isPayLater": true, "isPayAtHotel": false, "isNoCreditCard": false, "isBreakfastIncluded": true, "benefitIds": [95, 1],"supplierId": 29004, "roomsLeft": 255, "discountMessage": null,"distanceToCenterKm": 0, "isInCityCenter": true, "facilities": ["Free Wi-Fi in all rooms!", "Gym/fitness"],"highlights": ["Eiffel Tower Balcony Views", "On-site Frame Restaurant"], "campaignBadge": null,"nearbyTransport": [{ "name": "Champ de Mars - Tour Eiffel RER Train Station", "distanceM": 259 }, { "name": "Bir-Hakeim Metro Station", "distanceM": 317 }],"nearbyLandmarks": [{ "name": "Eiffel Tower", "distanceM": 336 }, { "name": "Champs-Elysees", "distanceM": 1958 }],"locationScore": 9.3, "scoreBreakdown": { "cleanliness": 8.7, "facilities": 8.3, "location": 9.3, "roomComfort": 8, "staffPerformance": 8.5, "valueForMoney": 7.9 },"image": "https://pix8.agoda.net/hotelImages/7266/0/35abd7670c3765b9d010edaa780a67af.jpeg?va=1&ce=3","engagement": "Booked 16 times today","previousPricePerNight": null, "previousScrapedAt": null, "priceChange": null, "priceChangePct": null,"scrapedAt": "2026-10-07T13:12:12.931Z"}
A few columns to know before you build on them:
distanceToCenterKmis how far the property is from the edge of Agoda's city-centre zone. 0 means it's inside, whichisInCityCentersays outright.propertyTypeis Agoda's own class for the listing:Hotel,NonHotelorSingleRoom.facilitiesholds the one or two facilities Agoda highlights for the property, not its full list.highlights,campaignBadge,nearbyTransport,nearbyLandmarksandlocationScoreare what Agoda's search card shows beside the price.scoreBreakdownis the guest rating by category.destinationTypesays whether a row came from a city, area or landmark search.destinationCountryis the country of the place your name resolved to. It's null when you gave a city id or a search URL.pricePerNightListedis the crossed-out price. It's filled only on discounted properties: 4% of rows in a 175-property sample on 7 October 2026.- The four price-memory columns at the end stay null until a run reuses a price memory an earlier run filled.
How much does it cost?
| Event | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
actor-start, per run | $0.002 | $0.002 | $0.002 | $0.002 |
destination-resolved, per name resolved to a city | $0.002 | $0.002 | $0.002 | $0.002 |
destination-checked, per destination given as a city id or link that returns no property | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
property-listed, per property returned | $0.004 | $0.0036 | $0.0024 | $0.0012 |
Enterprise plans pay the Business price.
$4.00 per 1,000 properties on the Free plan, $1.20 on Business, with all fields included. That's the whole price: proxy usage and platform usage are part of it.
You pay for the rows you get. A property your filters remove is free, and so is one whose price hasn't changed when "Only new or changed prices" is on. Give a destination as an Agoda city id or a search URL and you skip the $0.002 resolution fee. If such a destination then returns no property at all, because every one was filtered out or nothing moved, it costs the $0.0005 destination-checked fee once.
- Three cities by name, 100 properties each: $0.002 + 3 × $0.002 + 300 × $0.004 = $1.21 per run ($0.37 on Business).
- A daily monitor of one city at 200 properties for a month, where about 40 prices move each day: 30 × ($0.002 + $0.002 + 40 × $0.004) = $4.92 for the month ($1.56 on Business).
The $5 of credits in Apify's Free plan each month covers about 12 searches of 100 properties each, roughly 1,200 properties, before you pay anything.
How many properties can you get, and how fast?
| Run | Result |
|---|---|
| Osaka, 2 nights, USD, 10 properties | 10 properties from one request in 3 to 4 seconds, each priced, with URL and coordinates |
| Osaka, 2 nights, APA Hotels only, up to 30 | 27 properties from one request in 6 seconds |
| Bangkok, 2 nights, 100 properties | 100 properties, 6 of them sponsored placements |
| Osaka, Bangkok, Rome and Tokyo, 250 properties each | 1,000 properties in 10 to 12 seconds when Agoda answers promptly, 1 to 2 minutes in a busy hour |
| Bangkok, Tokyo, Paris and New York, 500 properties each | 2,000 properties in 23 to 56 seconds, depending on how fast Agoda answers |
These are whole runs on Apify, measured on 1 and 2 October 2026. Agoda's own response time varies by the hour, and an occasional slow answer can add up to a minute.
Agoda returns up to 100 properties per request and a large city has thousands. "Max results per destination" (up to 5,000) decides how deep you go. Adding cities adds little time, because they're searched together. At the measured rates a one-hour run lists well over 100,000 properties.
Price monitoring, your own code and AI agents
The setup we'd recommend for rate shopping is the daily monitor: an Apify Schedule, a rolling check-in date, a price memory name and "Only new or changed prices". Each morning's dataset then holds only the hotels that moved, with the previous price and the change in money and percent. A webhook can push that into your revenue system, or the Google Sheets and Slack integrations can pass it to a team.
People also use the full list for market research on pricing and supply by area or star class, for building a hotel database with coordinates and review scores, for tracking discount depth and free-cancellation availability across a city, and for feeding metasearch or pricing models with dated inventory.
From code, one call runs a search and returns the rows:
POST https://api.apify.com/v2/acts/boncross~agoda-search/run-sync-get-dataset-items?token=YOUR_TOKEN
There's an apify-client package for Node.js and for Python. For an AI agent in Claude, ChatGPT, Cursor or LibreChat, add the Apify MCP server (mcp.apify.com) and reference the actor as boncross/agoda-search. The agent sends the destination and dates and gets the priced list back.
FAQ
Do I need proxies or an Agoda account?
Neither. Proxy usage is included in the price with nothing to set up, and the actor reads what Agoda shows a visitor who isn't signed in.
Are the prices tax-inclusive?
pricePerNight and priceTotal include every tax and fee, including any Agoda lists as paid at the property, and pricesIncludeTax is true on each priced row (null on a row with no price). pricePerNightExcludingTax and priceTotalExcludingTax are Agoda's own pre-tax figures for the same offer.
How do I search a district or a landmark and not the whole city?
Type its name, for example "Times Square" or "Eiffel Tower", or paste the Agoda search URL for it. An area is searched inside its city with Agoda's own area filter, and results stay inside the district. A landmark is searched the way Agoda's landmark page searches it, around the landmark.
My destination landed in the wrong place. What happened?
A name is read the way Agoda's own search box reads it, and some names exist in more than one country. Say which you mean with the city or country after a comma: "Montmartre, Paris", "Cambridge, MA", "Soho, London". If nothing Agoda suggests is in the place you named, you get an error row listing what it does suggest, and you aren't charged for it. An Agoda city id or a search URL names its place exactly and is searched as given. destination, destinationType and destinationCountry on each row show the place that was searched.
Why did a search return fewer properties than I asked for?
Usually because that's all there is. When fewer properties match than fit on a page, Agoda fills the rest with suggestions that don't match, such as places in a neighbouring town or hotels outside your filters. Those are left out. Switch on "Include nearby suggestions" if you want them, each marked isOutsideSearch: true.
How do I get only the prices that changed?
Give "Price memory store" a name and switch on "Only new or changed prices". The actor remembers the last price for each property and returns only new or moved rows on the next run. Unchanged properties aren't charged. A destination given as a city id or link where nothing changed costs the $0.0005 destination-checked fee alone.
Can I get the room name, or more than the cheapest offer?
Not from search. Agoda's search results hold each property's cheapest offer and don't name the room. Agoda Room Rates Scraper returns the full grid of rooms and rate plans for the hotels you pick.
Is it legal to scrape Agoda?
The actor reads only what Agoda serves to any logged-out visitor, and hotel prices are public commercial data, not personal data. You're responsible for complying with Agoda's terms and applicable law in how you use the data.
What are the limits?
- Prices are Agoda's public rates. Member-only rates need a login and aren't included.
- With the cheapest-first or dearest-first sort, Agoda returns the cheapest (or dearest) properties but only roughly in that order. It ranks on its own display price, which can differ from the rate in the row.
- "Rated excellent for" with room quality is Agoda's filter alone. The card has no room-quality score to check it against.
- "Room offers" keeps properties that have a room offer with what you asked for. The price in the row is the cheapest offer, which may not include it.
- Sponsored placements are included unless you switch on "Exclude sponsored listings". They were 6 rows in 100 in a measured Bangkok search, and
sponsoredTypesays which kind of placement paid for the position. - Agoda's own accommodation type label isn't returned per row.
propertyTypeis the class that's available. The "Property types" filter still works, because Agoda applies it. facilitiesis the one or two facilities Agoda highlights, not the complete list.
More from BonCross
- Agoda Reviews Scraper: Agoda hotel reviews, including the Booking.com reviews Agoda shows.
- Booking.com Hotel Search Scraper: Every hotel Booking.com is selling for a destination and your dates.
- Expedia Hotel Search Scraper: Every hotel Expedia and Hotels.com list for a destination and your dates.
- Google Hotels Search Scraper: Google Hotels prices for a whole city or map area.
- Accor Hotel Details Scraper: Full Accor hotel records.
- Booking.com Reviews Scraper: Every Booking.com guest review for any hotel.
Your feedback
Seen a price that doesn't match Agoda's page, or a filter that let the wrong hotel through? Tell us on the Issues tab in Apify Console, with the destination and dates you used. We read every issue and answer there.