Agoda Hotel Rates Scraper · Apify
Agoda Hotel Rates Scraper avatar

Agoda Hotel Rates Scraper

Pricing

from $0.99 / 1,000 results

Go to Apify Store
Agoda Hotel Rates Scraper

Agoda Hotel Rates Scraper

Scrape Agoda hotels by destination or hotel ID: name, star rating, review score and count, live nightly price (with/without tax, before-discount), coordinates, address, and room offers. Pick your dates, guests, and currency. No login.

Pricing

from $0.99 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

54

Total users

11

Monthly active users

2.3 hours

Issues response

3 days ago

Last modified

Features

Limited permissions

Share

Extract hotels and live nightly prices from Agoda — by destination, by specific hotel, or as a daily rate calendar per room type. For every hotel you get its name, star rating, guest review score and review count, exact coordinates, address, the cheapest available price (with and without taxes/fees, plus the before-discount price), and the cheapest room offers with their cancellation policy. Choose your own check-in/check-out dates, number of guests, and currency.

Why use this actor

  • No account, no login, no API key required.
  • Real, dated prices — the price for the exact stay dates, guests, and currency you ask for, not a vague "from" figure.
  • Three ways to search — sweep every hotel in a destination, track specific hotels by their Agoda property ID, or pull a daily rate calendar: every room type and rate plan for every night in a date range (ideal for revenue management, rate parity and competitor monitoring).
  • Rich structured fields — star rating, guest review score and count, latitude/longitude, full address, and per-room offers.
  • Any currency — prices come back in the currency you choose (USD, EUR, SGD, GBP, …).
  • Stable JSON output ready for spreadsheets, databases, dashboards, or pipelines. Export to JSON, CSV, or Excel.
  • Runs on a schedule with automatic retries — no scrapers, browsers, or blocks to babysit.

How it works

  1. Choose a mode: Search a destination, or pull Property detail + rates for specific hotel IDs.
  2. Enter your destinations (city or place names) or hotel property IDs, your check-in / check-out dates, guests, and currency.
  3. The actor matches each place name to the right Agoda destination automatically, then collects every hotel with its live price and review data.
  4. Each hotel becomes one clean row in your dataset, which you can download or feed into another system.

You do not manage any of the retrieval, retries, or formatting — just the inputs above.

Input

Search mode

{
"mode": "search",
"destinations": ["Singapore"],
"checkIn": "2026-08-10",
"checkOut": "2026-08-11",
"adults": 2,
"children": 0,
"rooms": 1,
"currency": "USD",
"fetchRooms": true,
"maxItems": 100,
"maxItemsPerSearch": 200,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Property mode (detail + rates for specific hotels)

{
"mode": "property",
"propertyIds": ["185945"],
"checkIn": "2026-08-10",
"checkOut": "2026-08-11",
"adults": 2,
"children": 0,
"rooms": 1,
"currency": "EUR",
"fetchRooms": true
}
FieldTypeDescription
modestringsearch (find hotels in a destination) or property (detail + rates for specific hotel IDs).
destinationsarrayCity / place names to search, e.g. Singapore, Tokyo, Bali. Search mode.
searchUrlsarrayOptional Agoda search URLs that contain a city id, e.g. https://www.agoda.com/search?city=4064. Search mode.
propertyIdsarrayAgoda numeric hotel IDs, e.g. 185945 (Marina Bay Sands). Property mode.
checkInstringCheck-in date YYYY-MM-DD. Defaults to ~30 days out.
checkOutstringCheck-out date YYYY-MM-DD. One night after check-in by default.
adultsintegerAdult guests to price for (default 2).
childrenintegerChildren in the party (default 0).
roomsintegerRooms to price (default 1).
currencystringCurrency code the prices are returned in, e.g. USD, EUR, SGD.
fetchRoomsbooleanInclude the cheapest room offers (price + cancellation policy) on each record.
maxItemsintegerOverall cap on hotel records for the run (0 = no limit).
maxItemsPerSearchintegerCap per destination. Agoda serves 45 hotels per page.
proxyConfigurationobjectResidential proxy recommended for stable, geo-consistent results.

Room rates mode (daily rates per room type)

{
"mode": "roomRates",
"hotelUrls": ["https://www.agoda.com/harris-hotel-tuban/hotel/bali-id.html"],
"propertyIds": ["64410066"],
"dateFrom": "2026-11-01",
"dateTo": "2026-11-30",
"nights": 1,
"adults": 2,
"currency": "IDR"
}
FieldTypeDescription
hotelUrlsarrayAgoda hotel page URLs. The property ID is read from the page.
propertyIdsarrayAgoda numeric hotel IDs (can be combined with hotelUrls).
dateFrom / dateTostringFirst and last check-in date of the calendar, YYYY-MM-DD (inclusive, up to 366 nights). Defaults to the next 30 nights.
nightsintegerLength of stay priced for each check-in date (default 1 = nightly rate).
childAgesarrayAge of each child when children > 0.
maxConcurrencyintegerNights fetched in parallel per hotel (default 4).

Output

Search mode — one row per hotel

{
"_input": "Singapore",
"_source": "S1-citysearch",
"_scrapedAt": "2026-07-09T20:36:50Z",
"recordType": "HOTEL",
"propertyId": 335555,
"hotelName": "Dorsett Changi City Singapore",
"starRating": 4.0,
"reviewScore": 8.6,
"reviewCount": 7860,
"latitude": 1.3343963623046875,
"longitude": 103.96414184570312,
"address": "Changi, Singapore",
"city": "Singapore",
"cityId": 4064,
"propertyType": "Hotel",
"url": "https://www.agoda.com/dorsett-changi-city-singapore/hotel/singapore-sg.html",
"checkIn": "2026-08-10",
"checkOut": "2026-08-11",
"occupancy": { "adults": 2, "children": 0, "rooms": 1 },
"currency": "USD",
"isAvailable": true,
"soldOut": false,
"cheapestPrice": 164.67,
"priceInclusive": 197.43,
"priceExclusive": 164.67,
"beforeDiscountPrice": 164.67,
"rooms": [
{
"roomName": null,
"price": 164.67,
"priceInclusive": 197.43,
"beforeDiscountPrice": 164.67,
"currency": "USD",
"cancellation": "NonRefundable",
"availableRooms": 65,
"supplierId": 332
}
]
}

Property mode — one row per hotel (detail + rates)

{
"_input": "185945",
"_source": "S1-property",
"_scrapedAt": "2026-07-09T20:37:12Z",
"recordType": "PROPERTY",
"propertyId": 185945,
"hotelName": "Marina Bay Sands",
"starRating": 5.0,
"reviewScore": 8.9,
"reviewCount": 48807,
"latitude": 1.2836209535598755,
"longitude": 103.86072540283203,
"address": "10 Bayfront Avenue, Marina Bay, Singapore",
"city": "Singapore",
"cityId": 4064,
"propertyType": "Hotel",
"url": "https://www.agoda.com/marina-bay-sands/hotel/singapore-sg.html",
"checkIn": "2026-08-10",
"checkOut": "2026-08-11",
"occupancy": { "adults": 2, "children": 0, "rooms": 1 },
"currency": "EUR",
"isAvailable": true,
"soldOut": false,
"cheapestPrice": 744.45,
"priceInclusive": 892.60,
"priceExclusive": 744.45,
"beforeDiscountPrice": 744.45,
"rooms": [
{
"roomName": null,
"price": 744.45,
"priceInclusive": 892.60,
"beforeDiscountPrice": 744.45,
"currency": "EUR",
"cancellation": "FreeCancellation",
"availableRooms": 50,
"supplierId": 332
}
]
}
FieldTypeDescription
propertyIdintegerAgoda's unique hotel ID.
hotelNamestringHotel name.
starRatingnumberOfficial star rating (1–5).
reviewScorenumberGuest review score out of 10.
reviewCountintegerNumber of guest reviews.
latitude / longitudenumberHotel coordinates.
addressstringStreet/area, city, country.
city / cityIdstring / integerCity name and Agoda city ID.
propertyTypestringe.g. Hotel, Resort, Apartment.
urlstringAgoda hotel page.
checkIn / checkOutstringThe dates the price applies to.
occupancyobjectAdults, children, rooms the price is for.
currencystringCurrency of all prices in the record.
isAvailable / soldOutbooleanAvailability for the requested stay.
cheapestPricenumberCheapest nightly price, excluding taxes/fees.
priceInclusivenumberCheapest nightly price including taxes/fees.
priceExclusivenumberCheapest nightly price excluding taxes/fees.
beforeDiscountPricenumberNightly price before any discount.
roomsarrayCheapest available room offers (price, taxes, cancellation policy, rooms left). Present when fetchRooms is on.

Room rates mode — one row per hotel x night x room type x rate plan

{
"_source": "S2-roomgrid",
"recordType": "ROOM_RATE",
"propertyId": 48690,
"hotelName": "HARRIS Hotel Kuta Tuban Bali",
"starRating": 4.0,
"area": "Kuta",
"checkIn": "2026-11-01",
"checkOut": "2026-11-02",
"roomTypeId": 3144655,
"roomType": "HARRIS Room",
"ratePlanId": 612127,
"maxOccupancy": 2,
"roomsLeft": 5,
"breakfastIncluded": false,
"freeCancellation": false,
"cancellationPolicy": "Non-refundable (Low price!)",
"payLater": false,
"supplierId": 332,
"supplier": "Agoda.com",
"currency": "IDR",
"price": 785124,
"priceInclusive": 950000,
"beforeDiscountPrice": 2539500,
"totalStayInclusive": 950000,
"soldOut": false
}
FieldTypeDescription
checkIn / checkOutstringThe night (stay) this rate is for.
roomTypeId / roomTypenumber / stringAgoda room type.
ratePlanIdnumberRate plan of this offer (a room type usually has several: with/without breakfast, refundable or not).
breakfastIncluded, freeCancellation, payLaterbooleanConditions of the rate plan.
cancellationPolicystringShort cancellation text as shown on Agoda.
roomsLeftnumberRooms Agoda still sells at this rate.
price / priceInclusivenumberNightly price without / with taxes and fees, in currency (exactly as Agoda shows it).
beforeDiscountPricenumberCrossed-out nightly price (with taxes).
totalStayInclusivenumberWhole stay with taxes (equals priceInclusive when nights is 1).
supplierId, suppliernumber / stringWho supplies the rate (332 = Agoda.com).
soldOutbooleantrue on a row with no price: the room type is offered on other nights of the range but not on this one.

Notes & limits

  • Prices are per night for the requested dates, guests, and rooms, in your chosen currency.
  • Search returns 45 hotels per page; raise maxItemsPerSearch for more, or use several destinations for volume.
  • A small share of hotels can show as sold out (no price) for a given date/occupancy — those rows carry isAvailable: false.
  • In search results, room offers reflect the cheapest available option, so roomName may be blank; use room rates mode for every room type and rate plan of a hotel.
  • Room rates mode makes one request per hotel per night: 30 nights for one hotel take well under a minute.
  • For rate-parity / price tracking, run property mode on a schedule with the same propertyIds across different dates — each run captures that day's live price.
  • Residential proxy (any country) is recommended for the most consistent results.

Other travel actors

ActorWhat it does
Booking.com Hotels ScraperHotel search results from Booking.com by destination and dates.
Agoda Hotel Rates ScraperThis actor — Agoda hotels, live rates, and review data.