Hostelworld API: Search hostels
Finds 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.
Unofficial. Not affiliated with or endorsed by Hostelworld.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- City, required
city City to search, for example Berlin or Berlin, Germany.
Berlin
- Sort optional
sort Order results, for example price_low_to_high.
recommended (default)
One of
recommended,price_low_to_high,rating.- Guests optional
guests Number of travellers, for example 2.
1 (default)
Whole number from 1 to 8.
- Check in, required
check_in Arrival date, for example 2026-10-20.
2026-11-20
Date.
- Currency optional
currency Three-letter price currency, for example EUR.
USD (default)
- Check Out, required
check_out Departure date, for example 2026-10-22.
2026-11-22
Date.
- Room Type optional
room_type Only include properties with this room type available, for example dorm.
any (default)
One of
any,dorm,private.- Max Results optional
max_results Maximum number of properties to return, for example 20.
20 (default)
Whole number from 1 to 50.
Input as JSON
{ "city": "Berlin", "check_in": "2026-11-20", "check_out": "2026-11-22"}Output
{ "hostels": [ { "link": "https://www.hostelworld.com/pwa/hosteldetails.php/Circus-Hostel/Berlin/703?from=2026-10-20&to=2026-10-22&guests=1" , "name": "Circus Hostel", "type": "hostel", "rating": 9.3, "property_id": 703, "rating_label": "Superb", "review_count": 8081, "main_facilities": [ "Free WiFi", "Wi-Fi", "Common Room" ], "free_cancellation": true, "distance_from_city_centre_km": 1.01, "lowest_dorm_bed_price_per_night": { "amount": 26.41, "currency": "USD" }, "lowest_private_room_price_per_night": { "amount": 101.56, "currency": "USD" } }, { "link": "https://www.hostelworld.com/pwa/hosteldetails.php/St-Christopher-s-Berlin-Mitte/Berlin/15426?from=2026-10-20&to=2026-10-22&guests=1" , "name": "St Christopher's Berlin - Mitte", "type": "hostel", "rating": 8.3, "property_id": 15426, "rating_label": "Fabulous", "review_count": 10426, "main_facilities": [ "Free WiFi", "Wi-Fi", "Linen Included" ], "free_cancellation": true, "distance_from_city_centre_km": 1.28, "lowest_dorm_bed_price_per_night": { "amount": 21.48, "currency": "USD" }, "lowest_private_room_price_per_night": { "amount": 122.75, "currency": "USD" } }, { "link": "https://www.hostelworld.com/pwa/hosteldetails.php/MEININGER-Berlin-East-Side-Gallery/Berlin/280374?from=2026-10-20&to=2026-10-22&guests=1" , "name": "MEININGER Berlin East Side Gallery", "type": "hostel", "rating": 8.8, "property_id": 280374, "rating_label": "Fabulous", "review_count": 2158, "main_facilities": [ "Free WiFi", "Wi-Fi", "Common Room" ], "free_cancellation": true, "distance_from_city_centre_km": 2.37, "lowest_dorm_bed_price_per_night": { "amount": 33.28, "currency": "USD" }, "lowest_private_room_price_per_night": { "amount": 114.16, "currency": "USD" } } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"hostelworld.com/search_hostels","input":{"city":"Berlin","check_in":"2026-11-20","check_out":"2026-11-22"}}' # 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": "hostelworld.com/search_hostels" , "input": { "city": "Berlin", "check_in": "2026-11-20", "check_out": "2026-11-22" }})# 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": "hostelworld.com/search_hostels" , "input": { "city": "Berlin", "check_in": "2026-11-20", "check_out": "2026-11-22" } }), 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 hostelworld.com/search_hostels# with {"city":"Berlin","check_in":"2026-11-20","check_out":"2026-11-22"}"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": [ "city", "check_in", "check_out" ], "properties": { "city": { "type": "string", "minLength": 1, "description": "City to search, for example Berlin or Berlin, Germany." }, "sort": { "enum": [ "recommended", "price_low_to_high", "rating" ], "type": "string", "default": "recommended", "description": "Order results, for example price_low_to_high." }, "guests": { "type": "integer", "default": 1, "maximum": 8, "minimum": 1, "description": "Number of travellers, for example 2." }, "check_in": { "type": "string", "format": "date", "description": "Arrival date, for example 2026-10-20." }, "currency": { "type": "string", "default": "USD", "pattern": "^[A-Za-z]{3}$", "description": "Three-letter price currency, for example EUR." }, "check_out": { "type": "string", "format": "date", "description": "Departure date, for example 2026-10-22." }, "room_type": { "enum": [ "any", "dorm", "private" ], "type": "string", "default": "any", "description": "Only include properties with this room type available, for example dorm." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Maximum number of properties to return, for example 20.", "x-fous-developer": true } }, "additionalProperties": false}Output schema
{ "type": "object", "required": [ "hostels" ], "properties": { "hostels": { "type": "array", "items": { "type": "object", "required": [ "name", "type", "rating", "rating_label", "review_count", "distance_from_city_centre_km", "lowest_dorm_bed_price_per_night", "lowest_private_room_price_per_night", "free_cancellation", "main_facilities", "link", "property_id" ], "properties": { "link": { "type": "string" }, "name": { "type": "string" }, "type": { "enum": [ "hostel", "hotel", "guesthouse" ], "type": "string" }, "rating": { "type": [ "number", "null" ], "description": "Overall rating out of 10." }, "property_id": { "type": "integer", "x-fous-developer": true }, "rating_label": { "type": [ "string", "null" ] }, "review_count": { "type": "integer" }, "main_facilities": { "type": "array", "items": { "type": "string" } }, "free_cancellation": { "type": "boolean" }, "distance_from_city_centre_km": { "type": [ "number", "null" ] }, "lowest_dorm_bed_price_per_night": { "type": [ "object", "null" ], "required": [ "amount", "currency" ], "properties": { "amount": { "type": "number" }, "currency": { "type": "string" } } }, "lowest_private_room_price_per_night": { "type": [ "object", "null" ], "required": [ "amount", "currency" ], "properties": { "amount": { "type": "number" }, "currency": { "type": "string" } } } }, "additionalProperties": false } } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
hostelworld.com/search_hostels- Returns
- name, type, rating, reviews, distance, lowest dorm and private prices, free cancellation, facilities, link
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 hostelworld.com/search_hostels with the inputs above.
Ask your agent
- Find cheap dorm beds in Lisbon for 2 people from 2026-05-14 to 2026-05-18, sorted by lowest price, prices in EUR
- What are the best-rated hostels on Hostelworld in Budapest for check-in June 3 and check-out June 6, 2026?
- I'm travelling solo to Mexico City, arriving 2026-11-02 and leaving 2026-11-07 — show me hostels with private rooms, ideally with free cancellation
- Pull up to 10 places to stay in Kyoto, Japan for 4 friends, March 20–24 2027, prices in JPY
- Search Hostelworld for hostels in Amsterdam for 3 guests, 2026-08-09 to 2026-08-11, include ratings, distance from centre and booking links
See more
Finds 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 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_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_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_staysSearches public Airbnb homes for a destination and travel dates. Each stay comes with its price, rating, room details and listing link. Prices are the displayed trip totals, including fees.
airbnb.com/search_staysCompares 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_hotelsFinds 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.
agoda.com/get_room_prices