Agoda API: Get room prices
Finds room offers and nightly prices for one Agoda hotel on selected dates. Totals are calculated from displayed nightly prices before taxes and fees; final checkout totals may differ.
Unofficial. Not affiliated with or endorsed by Agoda.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City, required
city Hotel city, for example Bangkok.
Bangkok
- Rooms optional
rooms Number of rooms, for example 1.
1 (default)
Whole number 1 or more.
- Adults optional
adults Number of adults, for example 2.
2 (default)
Whole number 1 or more.
- Check in, required
check_in Arrival date (YYYY-MM-DD), for example 2026-10-20.
2026-11-24
- Currency optional
currency Price currency code, for example USD.
USD (default)
Exactly 3 characters.
- Check Out, required
check_out Departure date (YYYY-MM-DD), for example 2026-10-22.
2026-11-26
- Hotel Name, required
hotel_name Hotel name or Agoda hotel link, for example Mandarin Oriental.
Mandarin Oriental
Input as JSON
{ "city": "Bangkok", "check_in": "2026-11-24", "check_out": "2026-11-26", "hotel_name": "Mandarin Oriental"}Output
{ "offers": [ { "room_id": "34807581", "bed_type": "1 king bed", "currency": "USD", "room_type": "Deluxe Premier room King", "agoda_link": "https://www.agoda.com/mandarin-oriental-bangkok_12/hotel/bangkok-th.html?checkIn=2026-10-20&checkOut=2026-10-22&adults=2&rooms=1¤cyCode=USD&los=2" , "rooms_left": null, "total_price": 1020, "maximum_guests": 3, "price_per_night": 510, "free_cancellation": "yes", "breakfast_included": "yes", "free_cancellation_deadline": "2026-10-13" }, { "room_id": "3094132", "bed_type": "2 single beds or 1 double bed", "currency": "USD", "room_type": "Deluxe Premier room Twin", "agoda_link": "https://www.agoda.com/mandarin-oriental-bangkok_12/hotel/bangkok-th.html?checkIn=2026-10-20&checkOut=2026-10-22&adults=2&rooms=1¤cyCode=USD&los=2" , "rooms_left": null, "total_price": 1020, "maximum_guests": 3, "price_per_night": 510, "free_cancellation": "yes", "breakfast_included": "yes", "free_cancellation_deadline": "2026-10-13" }, { "room_id": "34807581", "bed_type": "1 king bed", "currency": "USD", "room_type": "Deluxe Premier room King", "agoda_link": "https://www.agoda.com/mandarin-oriental-bangkok_12/hotel/bangkok-th.html?checkIn=2026-10-20&checkOut=2026-10-22&adults=2&rooms=1¤cyCode=USD&los=2" , "rooms_left": null, "total_price": 1084, "maximum_guests": 3, "price_per_night": 542, "free_cancellation": "no", "breakfast_included": "no", "free_cancellation_deadline": null } ], "address": "48 Oriental Avenue, Bangkok Riverside, Bangkok, Thailand, 10500", "agoda_link": "https://www.agoda.com/mandarin-oriental-bangkok_12/hotel/bangkok-th.html?checkIn=2026-10-20&checkOut=2026-10-22&adults=2&rooms=1¤cyCode=USD&los=2" , "hotel_name": "Mandarin Oriental, Bangkok", "property_id": 10713}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"agoda.com/get_room_prices","input":{"city":"Bangkok","check_in":"2026-11-24","check_out":"2026-11-26","hotel_name":"Mandarin Oriental"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "agoda.com/get_room_prices" , "input": { "city": "Bangkok", "check_in": "2026-11-24", "check_out": "2026-11-26", "hotel_name": "Mandarin Oriental" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "agoda.com/get_room_prices" , "input": { "city": "Bangkok", "check_in": "2026-11-24", "check_out": "2026-11-26", "hotel_name": "Mandarin Oriental" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run agoda.com/get_room_prices# with {"city":"Bangkok","check_in":"2026-11-24","check_out":"2026-11-26","hotel_name":"Mandarin Oriental"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "hotel_name", "city", "check_in", "check_out" ], "properties": { "city": { "type": "string", "description": "Hotel city, for example Bangkok." }, "rooms": { "type": "integer", "default": 1, "minimum": 1, "description": "Number of rooms, for example 1." }, "adults": { "type": "integer", "default": 2, "minimum": 1, "description": "Number of adults, for example 2." }, "check_in": { "type": "string", "description": "Arrival date (YYYY-MM-DD), for example 2026-10-20." }, "currency": { "type": "string", "default": "USD", "maxLength": 3, "minLength": 3, "description": "Price currency code, for example USD." }, "check_out": { "type": "string", "description": "Departure date (YYYY-MM-DD), for example 2026-10-22." }, "hotel_name": { "type": "string", "description": "Hotel name or Agoda hotel link, for example Mandarin Oriental." } }}Output schema
{ "type": "object", "required": [ "hotel_name", "address", "agoda_link", "property_id", "offers" ], "properties": { "offers": { "type": "array", "items": { "type": "object", "required": [ "room_type", "bed_type", "maximum_guests", "price_per_night", "total_price", "currency", "breakfast_included", "free_cancellation", "free_cancellation_deadline", "rooms_left", "agoda_link", "room_id" ], "properties": { "room_id": { "type": [ "string", "null" ] }, "bed_type": { "type": [ "string", "null" ] }, "currency": { "type": "string" }, "room_type": { "type": "string" }, "agoda_link": { "type": "string" }, "rooms_left": { "type": [ "integer", "null" ] }, "total_price": { "type": "number" }, "maximum_guests": { "type": [ "integer", "null" ] }, "price_per_night": { "type": "number" }, "free_cancellation": { "enum": [ "yes", "no" ], "type": "string" }, "breakfast_included": { "enum": [ "yes", "no" ], "type": "string" }, "free_cancellation_deadline": { "type": [ "string", "null" ] } }, "additionalProperties": false } }, "address": { "type": [ "string", "null" ] }, "agoda_link": { "type": "string" }, "hotel_name": { "type": "string" }, "property_id": { "type": "integer" } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
agoda.com/get_room_prices- Returns
- hotel name, address, link, room offers with bed type, max guests, nightly and total price, breakfast, free cancellation and deadline, rooms left
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method agoda.com/get_room_prices with the inputs above.
Ask your agent
- What rooms are available at the Shangri-La Kuala Lumpur from 2026-11-03 to 2026-11-06, and how much per night? 2 adults, 1 room.
- Check Agoda for room rates at Hotel Gracery Shinjuku in Tokyo, checking in March 14 2026 and out March 18, prices in JPY please.
- I need 2 rooms for 4 adults at The Peninsula Hong Kong, Dec 20–23 2026. Which offers include breakfast and free cancellation, and what's the cancellation deadline?
- Pull up nightly and total prices on agoda.com for Amari Phuket, 2026-08-10 to 2026-08-15, 2 adults, in EUR. Also tell me how many rooms are left for each option.
- Looking at Capella Singapore for one adult, Jan 5 to Jan 7 2027 — list the room types with bed type, max occupancy, and price in SGD.
See more
All Agoda methodsFinds available Agoda stays in a city for your dates, with prices before taxes and fees, star and guest ratings, and free-cancellation status.
agoda.com/search_hotelsFinds Expedia hotels in a destination for given dates, with public USD prices, reviews, property class, refund status and links. Nightly prices are per room; totals include all requested rooms, taxes and fees.
expedia.com/search_hotelsFinds hotels in a city on Trip.com for given dates, with prices, guest ratings, reviews and booking links. Only the initial public listing is read, so large limits may return fewer hotels.
trip.com/search_hotelsCompares Kayak hotel nightly rates across booking sites for a city or neighborhood and stay dates (two adults, one room).
kayak.com/search_hotelsFind publicly priced Priceline hotels in a place for your travel dates, with guest ratings, nightly and total USD prices, and cancellation information. Excludes hotels hidden behind anonymous deals and sign-in-only prices.
priceline.com/search_hotelsSearches Booking.com stays by destination and dates, with guest counts, price, review, cancellation, sorting and paging. Displayed prices generally exclude some taxes and fees; children are searched as age 8.
booking.com/search_staysFinds places to stay in a city or area for given dates on Google Hotels, with nightly and total prices, hotel class, guest ratings, amenities, address and cheapest booking site. Optional filters for price, stars and rating; vacation rentals are left out. Prices and availability can change.
google.com/search_hotelsFinds available hostels, hotels and guesthouses on Hostelworld in a city for given dates, with per-night dorm and private room prices, ratings, facilities and booking links.
hostelworld.com/search_hostels