Hostelworld Hostels Scraper avatar

Hostelworld Hostels Scraper

Pricing

from $0.84 / 1,000 results

Go to Apify Store
Hostelworld Hostels Scraper

Hostelworld Hostels Scraper

Scrapes hostels, guesthouses and budget hotels from Hostelworld by city. Every row carries nightly dorm and private prices, an 8-axis rating breakdown, GPS coordinates, address, district, facilities and images. Optional per-property detail adds policies, house rules and check-in times.

Pricing

from $0.84 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

Scrapes hostels, guesthouses and budget hotels from Hostelworld — the world's largest hostel booking platform — city by city.

Public data only. No login, no cookies, no browser. No bot challenge of any kind: 8 of 8 TLS profiles returned clean 200s on every surface, and the API answers a request with no headers at all.

This actor reads Hostelworld's own public JSON API (api.m.hostelworld.com), not scraped HTML — so rows arrive already structured, and a site redesign cannot break them.

The one thing you need to know before using this

Hostelworld has no city search endpoint. Names are resolved through their own continents → countries → cities listing, which means:

You typeWhat happens
Spain/BarcelonaRecommended. One lookup request, unambiguous.
BarcelonaWorks, but the first bare name builds a global city index (one request per country, run concurrently).
22418A raw city id, used as-is with zero lookups.

That listing is not exhaustive — Barcelona is reachable as city 83 too, and 83 does not appear in it. If a city you know exists is not found, pass its numeric id instead. A name matching more than one country is refused with the candidate list rather than guessed at.

Unlike most targets, this API does not silently widen a bad input: an unknown city is a clean 404, and an unknown property type or sort value is a clean 400. What it does do is silently ignore parameter names it does not recognise — so every filter this actor offers was verified to actually move the result count.

What you get

Three record types share one dataset, told apart by recordType.

PROPERTY — one row per hostel

Straight from the listing, no detail fetch needed:

  • Prices — lowest nightly rate overall, and split by dorm vs private room, with currency
  • Ratings — overall score and review count, plus an 8-axis breakdown (security, location, staff, atmosphere, cleanliness, facilities, value, fun)
  • Location — street address, district, GPS coordinates, distance
  • Everything else — property type, star rating, images, gallery, overview text, free-cancellation status, promoted/featured/new flags

With Fetch full property details on, each row also gets a detail object: full description, house rules and things to note, cancellation policy, payment methods, check-in/check-out window, the categorised facility list and a sample of recent reviews.

detail is kept as a nested object rather than merged into the row on purpose — the detail document reuses several key names with a different type (id is an int in the listing and a string in the detail), so a flat merge would make column types unstable mid-dataset.

SEARCH_SUMMARY — one row per city

Hostelworld's own match total, which city id the name resolved to, the city and country it actually served, how many requests were spent, and locationApplied.

ERROR — one row per input that could not be processed

Every input maps to at least one row, so nothing disappears silently.

Input

FieldWhat it does
CitiesOne city per entry — Spain/Barcelona, Barcelona, or 22418.
Property typeHOSTEL, HOTEL, GUESTHOUSE, APARTMENT, CAMPSITE. Verified to partition a city exactly (Barcelona: 93+5+15+2 = 115).
Sort orderRating, price, distance or name. Values Hostelworld refuses (popularity, recommended) are not offered.
Check-in date + NightsSet together to keep only properties with real availability — on London this narrowed 94 to 80. One without the other is an upstream 400, so they are gated as a pair.
Fetch full property detailsAdds one request per property. Off by default.
Max properties per city0 for unlimited. There is no result-window ceiling.
Rows per requestUp to 500. No server-side cap was found — a whole city fits in one request.
Max concurrent requests / Minimum seconds between requestsThroughput controls. No throttling was observed, so the interval defaults to 0.

Known limits

  • Cities, not regions or countries. The API is organised per city; there is no "all of Spain" query. Pass several cities instead.
  • The country city listing is incomplete. See above — numeric ids are the escape hatch.
  • Prices are indicative. Listing prices are Hostelworld's "from" rates. For rates tied to specific dates, set check-in and nights.
  • Reviews are not included. /properties/{id}/reviews is a separate paginated endpoint — one Barcelona hostel alone has 698 reviews at 50 per page. Folding that in would turn a 100-property crawl into thousands of requests, so it belongs in a sibling actor.
  • Availability is a filter, not a room inventory. Check-in + nights narrows which properties are returned; it does not return per-room availability.

Notes on politeness

The API showed no rate limiting (12 back-to-back detail calls all returned 200), so defaults are modest rather than aggressive: concurrency 4, no forced delay. Minimum seconds between requests paces request starts without occupying a concurrency slot, so raising it slows the crawl without wasting workers.