Hotel and vacation-rental price monitoring
Usa los endpoints de Agoda para convertir hotel and vacation-rental price monitoring en solicitudes API repetibles con inputs documentados y respuestas JSON.
Turn Agoda's Hotels, Homes & Apartments, Things To Do, and Flights results into structured JSON — city search, hotel and home listings with pricing, activity search and detail, and one-way flight search with segment amenities, sourced from Agoda's own internal APIs. Credential-free.
Search Agoda hotels, homes, activities, and flights and get detail and amenity data as structured JSON.
Familias de endpoints
4
Parámetros documentados
31
Ejemplos
8
Snapshot en vivo del catálogo
Endpoints activos
8
Métodos
GET, POST
Parámetros obligatorios
15
Referencias de esquema
8
{
"platform": "Agoda",
"endpoint": "agoda-hotels-search",
"method": "GET",
"path": "/agoda/hotels/search",
"auth": "apiKey"
}Casos de uso
Search Agoda hotels, homes, activities, and flights and get detail and amenity data as structured JSON.
Usa los endpoints de Agoda para convertir hotel and vacation-rental price monitoring en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de Agoda para convertir travel activity discovery en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de Agoda para convertir flight fare research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Ejecución gestionada
Cada cifra de abajo se lee directamente del catálogo de endpoints en vivo de Agoda — 8 endpoints, 31 parámetros de solicitud documentados y 8 esquemas de respuesta publicados — el mismo catálogo contra el que corren Docs y Playground.
8 documented Agoda endpoints, grouped into 4 request families — Flights, Activities and Hotels, plus 1 more.
31 request parameters are documented across those Agoda endpoints, 15 of them required — the full input contract is public before you write any integration code.
8 of the 8 Agoda endpoints ship a recorded example response, and 8 carry a documented response schema — you can code against the real JSON before the first request.
Agoda endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
8 hosted MCP tools back the Agoda endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Mapa de cobertura
Estas tarjetas se generan a partir del catálogo de endpoints activo, así que la landing page refleja la misma superficie de API que usan Docs y Playground.
/agoda/flights/search-locations
/agoda/activities/search
/agoda/hotels/search
/agoda/homes/search
Catálogo de endpoints
/agoda/hotels/searchReturns hotel search results for an Agoda city: the matching property ids for that city plus a direct link to each property's listing page. Callers may supply a known Agoda city id or a free-text city name; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own hotel search.
Notas de la respuesta
- One of `city_id` or `city` is required; supplying neither returns `400` before any upstream request is made. An explicit non-positive `city_id` also returns `400`. An unknown/unresolvable city returns `404`. - Each result only carries `property_id` and a direct `source_url` — Agoda's own search does not reliably return richer inline content (name, rating, thumbnail) credential-free. Call the hotel-detail endpoint with each `property_id` for full hotel content. Example response: ```json { "code": 200, "msg": "OK", "data": { "city_id": 9395, "page": 1, "limit": 10, "count": 10, "properties": [ { "property_id": 10630, "source_url": "https://www.agoda.com/search?cid=-1&selectedproperty=10630&city=9395" } ] } } ```
Herramienta MCP agoda_hotels_search
/agoda/hotels/{property_id}Returns full hotel detail from Agoda: identity (name, any former name), an accommodation type code, address (street address, postal code, city, country), guest rating, a main photo, room count, hotel chain id, a long and short description, and short-form policy statements (minimum age, adult/child definitions, extra-bed and additional-room booking policy). Credential-free public data from Agoda's own hotel content source.
Notas de la respuesta
- `property_id` must be numeric; a non-numeric or non-positive value returns `400` before any upstream request is made. - An unknown/nonexistent property id returns `404`. - `min_age` is an empty list on properties with no minimum-age policy on file; the other policy fields (`adult`, `extra_bed`, `additional`) are Agoda's own short display strings, not a structured rule schema. - `accommodation_type` is Agoda's own numeric property-type code. Known values: `34` (Hotel), `33` (Hostel), `37` (Resort), `120` (Apartment). - `main_image_url` is omitted when Agoda has no main photo on file for the property. Guest-review scores are not yet included in this response — see the endpoint's ongoing coverage notes for what is planned. Example response: ```json { "code": 200, "msg": "OK", "data": { "property_id": 10637, "display_name": "Baiyoke Sky Hotel", "accommodation_type": 34, "rating": 4, "address": { "city": {"id": 9395, "name": "Bangkok"}, "country": {"id": 106, "name": "Thailand"}, "address1": "222 Ratchaprarop Road, Ratchathewi", "postal_code": "10400" }, "main_image_url": "https://pix8.agoda.net/hotelImages/10637/-1/878a9b58ccd19eee41b98d20e388c080.jpg?ca=9&ce=1", "number_of_rooms": "659", "chain_id": 3603, "description_long": "Experience Luxury and Convenience at Baiyoke Sky Hotel. Welcome to Baiyoke Sky Hotel, a luxurious 4-star hotel located in the heart of Bangkok, Thailand...", "description_short": "Experience Luxury and Convenience at Baiyoke Sky Hotel.", "policy": { "adult": ["Guests 12 years and older are considered adults."], "extra_bed": ["Extra beds are dependent on the room you choose. Please check the individual room capacity for more details."], "additional": ["When booking more than 5 rooms, different policies and additional supplements may apply."] }, "source_url": "https://www.agoda.com/search?cid=-1&selectedproperty=10637&city=9395" } } ```
Herramienta MCP agoda_hotel_detail
/agoda/homes/searchReturns Homes & Apartments results for an Agoda city: full listing detail for every matching property whose accommodation type is Apartment, drawn from the same city search as hotel search and filtered to non-hotel accommodation types. Callers may supply a known Agoda city id or a free-text city name; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own hotel/home search.
Notas de la respuesta
- One of `city_id` or `city` is required; supplying neither returns `400` before any upstream request is made. An unknown/unresolvable city returns `404`. - `homes` entries carry the same shape as the hotel detail endpoint's response, plus `accommodation_type`. Known `accommodation_type` values observed on Agoda: `34` (Hotel), `33` (Hostel), `37` (Resort), `120` (Apartment). This endpoint currently returns only `120` (Apartment) entries; broader vacation-home/villa coverage is a planned follow-up. - Because results are filtered down from a page of hotel-search candidates, `count` can be smaller than `limit` even when more matching homes exist on later pages — page forward with `page` to see more. Example response: ```json { "code": 200, "msg": "OK", "data": { "city_id": 9395, "page": 1, "limit": 10, "count": 1, "homes": [ { "property_id": 149146, "display_name": "Diamond Bangkok Apartment", "accommodation_type": 120, "rating": 3.5, "address": { "city": {"id": 9395, "name": "Bangkok"}, "country": {"id": 106, "name": "Thailand"} }, "source_url": "https://www.agoda.com/search?cid=-1&selectedproperty=149146&city=9395" } ] } } ```
Herramienta MCP agoda_homes_search
/agoda/activities/searchReturns Agoda activities (tours, attractions, experiences) matching a free-text keyword and/or a city. When keyword is omitted, the resolved city's name is used instead to return a general listing of activities in that city. Callers may supply a known Agoda city id or a free-text city name for the city filter; when both are supplied city_id takes precedence. Credential-free public data from Agoda's own destination search.
Notas de la respuesta
- At least one of `keyword`, `city_id`, or `city` is required; supplying none returns `400` before any upstream request is made. - `keyword` in the response echoes the actual search text used: the caller's own `keyword` when supplied, otherwise the resolved city name. - `city_id` filtering is best-effort: when a city filter is active, only activity results whose own city matches are kept. - A search with no matching activities returns `200` with an empty `activities` list, not an error. Example response: ```json { "code": 200, "msg": "OK", "data": { "city_id": 9395, "keyword": "chim chum", "count": 1, "activities": [ { "activity_id": 1633875, "name": "Bangkok Chim Chum | Bangkok", "city_id": 9395, "city_name": "Bangkok", "categories": [{"id": 2, "code": "FOOD_AND_DRINKS", "is_primary": true}], "source_url": "https://www.agoda.com/search?cityId=9395&selectedActivity=1633875" } ] } } ```
Herramienta MCP agoda_activities_search
/agoda/activities/{activity_id}Returns full activity detail from Agoda: title, description, stated duration, categories, and content images. Credential-free public data from Agoda's own activity content source.
Notas de la respuesta
- `activity_id` must be numeric; a non-numeric or non-positive value returns `400` before any upstream request is made. - An unknown/nonexistent activity id returns `404`. - `duration` and `categories` are exactly as Agoda's own content API returns them (a display-oriented duration pair, not a structured min/max range; categories are Agoda's own category codes, e.g. `FoodAndDrinks`). - `images` is a best-effort list of content images (up to 10); an activity with no supplier-provided images returns an empty list. Example response: ```json { "code": 200, "msg": "OK", "data": { "activity_id": 1633875, "title": "Bangkok Chim Chum | Bangkok", "description": "<ul><li>Savor Bangkok Chim Chum's delicious Thai hot pot.</li></ul>", "duration": {"minutes": 60, "type": "FIXED"}, "categories": ["FoodAndDrinks"], "images": [ { "url": "https://pix6.agoda.net/generic/08092caf37fb2f99eb46f81fd210201e.png?ce=3", "image_type": "SUPPLIER" } ], "source_url": "https://www.agoda.com/search?selectedActivity=1633875" } } ```
Herramienta MCP agoda_activity_detail
/agoda/flights/search-locationsResolves a free-text city or airport name into IATA airport codes for flight search, with each city's direct and nearby airports. Credential-free public data from Agoda's own flight destination search.
Notas de la respuesta
- An empty or missing `keyword` returns `400` before any upstream request is made. - A query with no matches returns `200` with an empty `suggestions` list, not an error. - `city_code` is only present when the location has its own distinct city-wide booking code (e.g. Bangkok's is `BKK`, matching its single main airport). Locations with no distinct city-wide code (e.g. a city served by one airport with a different code from the city name) have an empty `city_code` — use one of `airports[].code` instead. - `airports` lists airports directly serving the location; `nearby_airports` lists nearby alternates (each with a `distance_km`), only populated for some entries. Example response: ```json { "code": 200, "msg": "OK", "data": { "keyword": "Bangkok", "count": 1, "suggestions": [ { "name": "Bangkok", "city_code": "BKK", "country_code": "TH", "country_name": "Thailand", "state_name": "Bangkok Province", "airports": [ {"code": "BKK", "name": "Suvarnabhumi Airport", "lat": 13.681108, "lng": 100.747283} ] } ] } } ```
Herramienta MCP agoda_flights_search_locations
/agoda/flights/searchReturns bookable one-way flight itineraries between two IATA airport codes for a departure date, including per-segment flight number, airline, times, layovers, aircraft type, and price. Resolve free-text city/airport names to codes first via the flight destination search endpoint. Credential-free public data from Agoda's own flight search.
Notas de la respuesta
- Missing `origin`/`destination`/`departure_date`, a malformed `departure_date`, or an unrecognized `cabin_class` return `400` before any upstream request is made. - Only one-way search is supported. Round-trip search is not available on this endpoint. - Agoda's own flight search is asynchronous — this endpoint transparently polls upstream until results are complete or a bounded attempt budget is exhausted, so callers always get one settled result in a single call. A route/date/passenger combination with no available inventory returns `200` with an empty `itineraries` list, not an error. - `stops_count` and `duration` on each itinerary reflect the whole journey; each entry in `segments` is one flown leg, with a `layover` object on any segment followed by a connection. - `source_url` on each itinerary is Agoda's own real booking deep link for that exact itinerary. Example response: ```json { "code": 200, "msg": "OK", "data": { "origin": "SYD", "destination": "BKK", "departure_date": "2026-10-20", "cabin_class": "Economy", "adults": 1, "page": 1, "last_page": false, "count": 1, "itineraries": [ { "bundle_ref_id": "783056524", "price": {"amount": "710", "currency": "USD"}, "duration": "34h 50m", "stops_count": 2, "airline": {"code": "VN", "name": "Vietnam Airlines"}, "segments": [ { "departure": {"date_time": "2026-10-20T11:15", "airport": {"code": "SYD", "name": "Sydney Airport", "city": "Sydney"}}, "arrival": {"date_time": "2026-10-20T16:15", "airport": {"code": "SGN", "name": "Tan Son Nhat International Airport", "city": "Ho Chi Minh City"}}, "duration": "9h 0m", "cabin_class": "Economy", "cabin_code": "ECO", "flight_number": "772", "airline": {"code": "VN", "name": "Vietnam Airlines"}, "layover": {"airport": "Ho Chi Minh City (SGN)", "duration": "12h 45m layover"}, "aircraft": "Airbus A359", "fare_basis_code": "TLOXAU" } ], "source_url": "https://www.agoda.com/en-us/packages/book?cid=-1&pk=..." } ] } } ```
Herramienta MCP agoda_flights_search
/agoda/flights/itinerary-amenitiesReturns real-content amenities (aircraft type, seat layout, meals, entertainment, wifi) for one or more flight segments. Copy the segments straight from a flight search response's own segment fields. Credential-free public data from Agoda's own flight content service.
Notas de la respuesta
- An empty `segments` array, or a segment missing a required field, returns `400` before any upstream request is made. - `segments` in the response are returned in the same order as requested. - An entry with no amenity content on file returns an empty `amenities` list, not an error. Example response: ```json { "code": 200, "msg": "OK", "data": { "count": 1, "segments": [ { "flight_number": "772", "amenities": [ "A350 Widebody jet", "Alcoholic beverages available (Free)", "On-demand video (Free)", "Meal available (Free)", "3-3-3 Layout", "Fast Wifi Available (Paid)" ] } ] } } ```
Herramienta MCP agoda_flights_itinerary_amenities
APIs relacionadas
Travel & Hospitality
Build travel and lodging research workflows from structured Airbnb stay, room, availability, and review data.
Travel & Hospitality
Research hotels, restaurants, attractions, and destination pages from TripAdvisor with normalized listing and review endpoints.
Travel & Hospitality
Turn Expedia's Stays, Flights, and Things To Do results into structured JSON — destination search, hotel listings with pricing and reviews, flight offers, and activity search, sourced from the same API the official mobile app uses. Credential-free.
Cobertura de la empresa
Booking Holdings Inc. · BKNG
Agoda es operado por Booking Holdings Inc. (BKNG). Los endpoints SEC de Crawlora usan el mismo CIK de esa empresa, así que los filings, datos financieros, transacciones de insiders y participaciones 13F provienen de la misma API key que los endpoints de Agoda de arriba.
Otras plataformas de Booking Holdings Inc. en el catálogo
Cómo hacer scraping de Agoda
Agoda's Hotels, Homes, Things To Do, and Flights surfaces run on internal GraphQL APIs. Crawlora's Agoda endpoints replay these directly and return hotel and home listings, activity search and detail, and flight offers as normalized JSON — no account or signed session required.
Pass a city name to /agoda/hotels/search, /agoda/homes/search, or /agoda/activities/search for normalized listing cards.
Pass a property id to /agoda/hotels/{property_id} or an activity id to /agoda/activities/{activity_id} for full detail.
Pass origin, destination, and date to /agoda/flights/search for one-way flight offers, or resolve airports first with /agoda/flights/search-locations.
Feed travel-price dashboards and research pipelines, or re-run searches on a schedule to track price and availability changes over time.
Preguntas frecuentes
Send a city name to Crawlora's /agoda/hotels/search endpoint and get normalized hotel listings with current pricing as structured JSON — no account required.
Yes — /agoda/homes/search returns Agoda Homes & Apartments listings for a city, in the same normalized shape as hotel search.
Collecting publicly accessible hotel, activity, and flight data is generally permissible if you respect Agoda's terms of use, robots directives, rate limits, and applicable law. This is for public data you are authorized to collect.