Hostelworld Scraper – Hostels, Dorm Prices & Reviews
Pricing
from $1.50 / 1,000 property rows
Hostelworld Scraper – Hostels, Dorm Prices & Reviews
Search Hostelworld by city and get one row per hostel: name, type, 0-100 rating breakdown, lowest dorm and private prices, every photo, facilities, geo, address and policies. Add a check-in date for room-level availability. Reviews included. No Hostelworld account or API key needed.
Hostelworld Scraper searches Hostelworld by city and extracts every property it lists — all images, facilities, dorm and private room prices, the full ratings breakdown, geo, address, policies and reviews — from the app's own mobile API. It reads Hostelworld's API directly, so it's fast, reliable and complete — no flaky HTML parsing, no headless browser. Export to JSON, CSV, Excel, or an API.
Why use this Hostelworld Scraper?
- No code required — set your input, click Start, download your data.
- Fast & accurate — reads Hostelworld's own mobile API and returns structured JSON, not scraped HTML.
- Rich, structured data — every field below, clean and ready to use.
- A whole city in one run — Hostelworld returns a city's entire property list in a single response, so there are no pagination gaps to worry about.
- Transparent pay-per-result pricing — pay only for the rows you get.
- Export anywhere — JSON, CSV, Excel, XML, or pull it live via the Apify API.
What can you do with Hostelworld data?
- Market & competitor research — compare every hostel in a city on price, rating and facilities.
- Price & availability monitoring — set a check-in date and track dorm and private rates over time.
- Data science & trend analysis — build clean datasets of hostel pricing and ratings.
- Lead generation & enrichment — feed hostel names, addresses and geo into your own tools.
What data does the Hostelworld Scraper extract?
Each row is one property and includes id, name, type, url, overallRating, numberOfRatings, ratingBreakdown, pricePerNight, dormPricePerNight, privatePricePerNight, currency, city, country, district, address1, address2, latitude, longitude, distanceFromCentreKm, overview, images, imagesGallery, facilities — plus detail, rooms, reviews and reviewStatistics when enrichment runs. See the full field table below.
How do I scrape Hostelworld? (3 steps)
- Set the location — put a city (or a specific property name) in
q. - Pick options — a
maxItemscap,currency, guests, and adateStartif you want room-level prices. - Run & export — click Start, then download the dataset as JSON/CSV/Excel or fetch it via the API.
What inputs does it take?
| Field | Type | Default | Description |
|---|---|---|---|
q | string | Lisbon | A location to search: a city, neighbourhood, or property name (e.g. 'Lisbon'). Resolved via Hostelworld's own mobile autocomplete. |
maxItems | integer | 50 | Maximum number of properties to return (0 = all in the location). |
numberOfGuests | integer | 2 | Guests for pricing/availability. |
dateStart | string | – | Check-in date YYYY-MM-DD (optional; enables live room prices). |
numNights | integer | 2 | Number of nights (1-31) for availability pricing. |
currency | string | EUR | ISO currency code for prices (EUR, USD, GBP, ...). |
includeDetails | boolean | true | Fetch full detail + reviews for each property, and room/dorm availability when dateStart is set (slower, more requests). |
proxyConfiguration | object | Apify Proxy | Route requests through a proxy (Apify Proxy by default). |
About
q: it's resolved through Hostelworld's own autocomplete. The actor prefers a city match among the suggestions and otherwise takes the first result. A city name (e.g."Lisbon") returns every property in that city (capped bymaxItems); a specific property name (e.g."Lisbon Calling") returns just that one property. If your query is ambiguous (a common word, a typo), you may get the wrong match — use the full, distinctive property or city name to be safe, and check the returnedname/urlmatch what you expected.
Example input
{"q": "Lisbon","maxItems": 50,"numberOfGuests": 2,"dateStart": "2026-10-15","numNights": 2,"currency": "EUR","includeDetails": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
What does a Hostelworld row look like?
Each result is a JSON object like this:
{"id": 98483,"name": "Avenue Hostel and Suites","type": "HOSTEL","url": "https://www.hostelworld.com/hostels/p/98483/avenue-hostel-and-suites/","overallRating": 91,"numberOfRatings": "2100","pricePerNight": "15.70","dormPricePerNight": "15.70","privatePricePerNight": null,"averagePricePerNight": null,"originalPricePerNight": null,"currency": "EUR","city": "Lisbon","country": "Portugal","district": { "id": "422", "name": "Rossio Square" },"address1": "Beco dos Apostolos 6","latitude": 38.7185,"longitude": -9.1447,"distanceFromCentreKm": 1.36,"distanceUnits": "km","starRating": 0,"overview": "Avenue Hostel and Suites is located in the heart of Lisbon …","isFeatured": true,"isPromoted": false,"isNew": false,"hostelworldRecommends": false,"freeCancellationAvailable": false,"freeCancellationAvailableUntil": "2026-07-10T13:17:28+01:00","promotions": [],"images": ["https://a.hwstatic.com/propertyimages/9/98483/rp6yw0yummxjw3i3lcys.jpg","…+3 more"],"imagesGallery": ["https://a.hwstatic.com/propertyimages/9/98483/xcy3ivw4o38qhbyvkyxu.jpg", "…+3 more"],"ratingBreakdown": {"ratingsCount": 122,"security": 97, "location": 88, "staff": 93, "fun": 91,"clean": 94, "facilities": 92, "value": 93, "average": 93},"facilities": [{ "name": "General", "id": "FACILITYCATEGORYGENERAL", "facilities": [ "…" ] },{ "name": "Services", "id": "FACILITYCATEGORYSERVICES", "facilities": [ "…" ] },"…+11 more"],"rooms": {"dorms": [ "…8 room types" ],"privates": [ "…3 room types" ],"cancellationPolicies": [ "…" ],"depositPercentage": 15,"vat": 0,"promotions": [ "…" ],"lowestPricePerNight": { "value": "30.01", "currency": "EUR" },"lowestDormPricePerNight": { "value": "30.01", "currency": "EUR" },"lowestPrivatePricePerNight": { "value": "105.16", "currency": "EUR" }},"detail": { "…": "description, about, directions, checkIn, policies, taxInfo, videos, raw, …" },"reviews": [ "…" ],"reviewStatistics": { "…": "…" }}
Which fields are in each row?
| Field | Type | Description |
|---|---|---|
id, name, type | text | Hostelworld property ID, name, and property type (e.g. HOSTEL) |
url | link | Property page on hostelworld.com |
overallRating | number | Overall score on Hostelworld's 0-100 scale |
numberOfRatings | text | How many guest ratings the score is based on |
ratingBreakdown | object | Per-category scores: security, location, staff, fun, clean, facilities, value, average, plus ratingsCount |
pricePerNight | text | Lowest nightly price across all room types |
dormPricePerNight / privatePricePerNight | text | Lowest dorm bed / private room nightly price |
averagePricePerNight / averageDormPricePerNight / averagePrivatePricePerNight | text | Average nightly price over the stay (when Hostelworld exposes it) |
originalPricePerNight / originalDormPricePerNight / originalPrivatePricePerNight | text | Pre-discount price (when a promotion applies) |
currency | text | Currency of every price on the row |
city, country | text | City and country names |
district | object | Neighbourhood {id, name} — e.g. {"id": "422", "name": "Rossio Square"} |
address1, address2 | text | Street address lines |
latitude, longitude | number | Coordinates |
distanceFromCentreKm / distanceUnits | number / text | Distance from the city centre and its unit |
starRating | number | Hotel-style star rating (0 for most hostels) |
overview | text | Short property blurb, HTML stripped |
promotions | array | Active promotions/discounts on the property |
isFeatured / isPromoted / isNew / hostelworldRecommends | boolean | Placement and editorial flags |
freeCancellationAvailable / freeCancellationAvailableUntil | boolean / text | Free-cancellation eligibility and deadline |
images / imagesGallery | array | Full-size property photo URLs and the extended gallery |
facilities | array | Facilities grouped into categories (see the table below) |
detail | object | Full detail projection: description, about, directions, hostelworldSays, checkIn, latestCheckOut, policies, cancellationPolicy, thingsToNote, paymentMethods, feeInfo, taxInfo, videos, maxNumberOfGuestsPerBooking, and the raw payload |
rooms | object | Room-level availability: dorms, privates, cancellationPolicies, depositPercentage, vat, promotions, and lowest total/dorm/private prices. Only present when dateStart is set. |
reviews / reviewStatistics | array / object | Guest reviews and their summary statistics |
Any field can be null when Hostelworld doesn't expose it for a given property.
Which facility categories does Hostelworld report?
Facilities arrive grouped. These are the categories seen on a Lisbon property:
| Category | Category |
|---|---|
| General | Bedroom |
| Services | Food & Drinks |
| Entertainment | Safety & Security |
| Laundry | Social Areas |
| Available for a Fee | Wellness |
| Free | Kitchen |
| Hostelworld Policies |
Each category carries its own list of individual facilities, so you can filter for things like a bar, free breakfast or lockers by checking the entries inside a category rather than parsing free text.
What do Hostelworld's price and rating terms mean?
- Dorm vs private — a dorm price is per bed in a shared room; a private price is for the whole room.
dormPricePerNightandprivatePricePerNightare the cheapest of each, andpricePerNightis the cheaper of the two. - Lowest vs average vs original — lowest is the cheapest single night found, average is the mean across the nights of your stay, and original is the pre-discount price shown when a promotion applies. All three are strings with the currency in
currency. - 0-100 rating — Hostelworld scores properties out of 100, not out of 5 or 10.
94means 9.4/10 in the app's display. starRating— the hotel-style star count, which is0for most hostels. UseoverallRatingfor quality, not this.- Distance from centre — straight-line distance from the city centre, in the unit given by
distanceUnits(km).
Pricing — pay per result
This actor uses pay-per-event pricing: you pay only for the rows it delivers.
| Event | Price | When charged |
|---|---|---|
| Property row | $1.50 per 1,000 rows | Every property returned. |
| Detailed profile | +$1.50 per 1,000 rows | Extra, only when includeDetails is on and the property's detail payload was fetched successfully. |
With includeDetails: true (the default), expect ~$3.00 per 1,000 properties. Set includeDetails: false to get listing-only data at $1.50 per 1,000.
How do I run it from the API?
Run it programmatically with the Apify API:
curl -X POST "https://api.apify.com/v2/acts/hostelworld-api-scraper/runs?token=YOUR_TOKEN" \-H 'Content-Type: application/json' \-d '{"q": "Lisbon","maxItems": 50,"numberOfGuests": 2,"numNights": 2,"currency": "EUR","includeDetails": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}'
Or with the Apify CLI: apify call hostelworld-api-scraper -i input.json -o.
FAQ
Do I need a Hostelworld account or API key? No. The actor talks to Hostelworld's mobile API for you — you only need an Apify account.
How do I get dorm and private room prices per room type? Set dateStart (and numNights). The rooms object — every dorm and private room type with its rates, deposit percentage, VAT and cancellation policies — comes from Hostelworld's availability endpoint, which needs a date. Without dateStart you still get the property-level pricePerNight, dormPricePerNight and privatePricePerNight.
Can I scrape a whole city, not just the first page? Yes. Hostelworld's city endpoint returns the city's entire property list in one response, so a run with maxItems: 0 gets every property in that city. There is no page-by-page crawl to stall halfway.
Does it return guest reviews? Yes — reviews and reviewStatistics are fetched for each property when includeDetails is on.
Can I schedule it? Yes. Use Apify's Schedules to run it hourly or daily and append to the same dataset — the usual setup for tracking hostel prices for a city over time.
How is cost bounded? Set maxItems. You are charged per property row delivered, plus one detail charge per property when includeDetails is on, so maxItems is a hard ceiling on run cost. Turning includeDetails off halves it.
What happens if one property fails? Detail, availability and review fetches are best-effort per property: a failure is recorded on that record and the run continues, so one bad property never kills the run.
Do I need a proxy? A proxy is recommended for reliable runs; set proxyConfiguration (Residential is safest for geo-restricted or bot-protected sites).
How does it work?
The actor impersonates Hostelworld's official Android app and calls the same mobile API endpoints it does: autocomplete to resolve your location, the city properties endpoint to list it, then per-property detail, availability and reviews. Each response is normalised into the flat record above. No browser, no HTML scraping — just clean, structured data.
Good to know
- Scrape only public listing data and respect Hostelworld.com's Terms of Service and robots policy.
- For personal data (reviews carry reviewer details), comply with GDPR/CCPA and applicable law — you are the data controller.
- Records are de-duplicated by property
id, so the same hostel is never pushed twice.
Travel & booking toolkit
Part of the Travel & booking toolkit — search and pricing data across accommodation, transport, and travel-planning sites worldwide:
- Booking.com API Scraper — Scrape Booking.com properties, live prices and full room-rate tables.
- Agoda API Scraper — Agoda search results, pricing and property details via GraphQL.
- Airbnb API Scraper — Airbnb listings, details, and reviews via GraphQL API.
- FlixBus API Scraper — FlixBus trips between cities — times, stations, duration, prices.
- Changi Airport Timetable Scraper — Arrival and departure flight timetables from Changi Airport (SIN).
- eSIMDB Travel eSIM Scraper — Travel eSIM data plans from esimdb.com by country/region.
Did you find this useful?
Rate this actor on Apify! Your feedback helps other users find it and helps us keep improving it.