# Hostelworld Scraper (`crawlerbros/hostelworld-scraper`) Actor

Scrape Hostelworld.com, the world's largest hostel booking platform with 17,000+ properties in 179 countries. Search hostels by city, fetch specific property pages, or list top hostel cities. Returns ratings, reviews, amenities, room types, prices, geo coordinates, and more.

- **URL**: https://apify.com/crawlerbros/hostelworld-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Travel, Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Hostelworld Scraper

Extract comprehensive hostel and budget accommodation data from [Hostelworld.com](https://www.hostelworld.com) — the world's largest hostel booking platform with 17,000+ properties across 179 countries. Search by city, scrape specific properties, or explore the world's top hostel destinations.

### What data do you get?

Each hostel/property record includes:

| Field | Description |
|-------|-------------|
| `name` | Property name |
| `propertyId` | Unique Hostelworld property ID |
| `type` | Property type (Hostel, Hotel, Guesthouse, etc.) |
| `city` | City name |
| `country` | Country name |
| `address` | Street address |
| `postalCode` | Postal/ZIP code |
| `latitude`, `longitude` | GPS coordinates |
| `rating` | Overall rating (0–10 scale) |
| `reviewCount` | Total number of reviews |
| `ratingBreakdown` | Scores for atmosphere, cleanliness, facilities, location, security, staff, value |
| `pricePerNight` | Starting price per night |
| `currencyCode` | Currency of the price |
| `amenities` | Full list of facilities (Free WiFi, Bar, Kitchen, Security Lockers, etc.) |
| `dormAvailable` | Whether dormitory beds are offered |
| `privateRoomAvailable` | Whether private rooms are available |
| `distanceToCenter` | Distance from city centre (km) |
| `checkinTime`, `checkoutTime` | Check-in and check-out times |
| `description` | Property description |
| `hostelworldUrl` | Property page URL |
| `imageUrl` | Main property image URL |
| `imageUrls` | Up to 5 property image URLs |

### Use Cases

- **Budget travel research** — Find the highest-rated hostels in any city
- **Travel app development** — Build hostel comparison or travel planning features
- **Market analysis** — Compare accommodation prices across destinations
- **Content creation** — Gather data for travel blogs and guides
- **Academic research** — Study budget tourism and hostel distribution

### Input Configuration

#### Mode: Search Hostels (default)

Find hostels in any city by name. Works with 60+ major destinations.

```json
{
  "mode": "search",
  "searchQuery": "London",
  "maxItems": 30
}
````

With date filtering for price availability:

```json
{
  "mode": "search",
  "searchQuery": "Bangkok",
  "dateFrom": "2026-07-01",
  "dateTo": "2026-07-07",
  "guests": 2,
  "minRating": 8.0,
  "maxItems": 20
}
```

#### Mode: Fetch by URL

Scrape one or more specific property pages by URL.

```json
{
  "mode": "byUrl",
  "propertyUrls": [
    "https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/",
    "https://www.hostelworld.com/hostels/p/14348/palmers-lodge-swiss-cottage/"
  ]
}
```

#### Mode: Top Cities

List top hostel cities worldwide (no scraping required — returns pre-built curated list).

```json
{
  "mode": "topCities",
  "maxItems": 50
}
```

### Supported Cities (Search Mode)

**Europe:** London, Paris, Barcelona, Amsterdam, Berlin, Rome, Prague, Vienna, Lisbon, Madrid, Budapest, Dublin, Edinburgh, Athens, Florence, Venice, Zagreb, Dubrovnik, Krakow, Copenhagen, Stockholm, Oslo, Zurich, Brussels, Porto, Seville, Milan, and more.

**Americas:** New York, Los Angeles, Chicago, San Francisco, Miami, Boston, Seattle, Denver, Buenos Aires, Rio de Janeiro, São Paulo, Bogotá, Lima, Cusco, Toronto, Vancouver, Montréal, Cancún, Mexico City.

**Asia:** Tokyo, Osaka, Kyoto, Bangkok, Chiang Mai, Bali, Hanoi, Ho Chi Minh City, Singapore, Hong Kong, Seoul, Beijing, Shanghai, Mumbai, Delhi, Kathmandu.

**Oceania:** Sydney, Melbourne, Brisbane, Auckland, Christchurch.

**Africa/Middle East:** Cape Town, Marrakech, Cairo, Tel Aviv, Istanbul.

### Output Example

```json
{
  "name": "Wombat's City Hostel London",
  "propertyId": "88047",
  "slug": "wombat-s-city-hostel-london",
  "type": "Hostel",
  "city": "London",
  "country": "England",
  "address": "7 Dock Street",
  "postalCode": "E1 8LL",
  "latitude": 51.5104214,
  "longitude": -0.0682039,
  "rating": 9.16,
  "reviewCount": 18808,
  "ratingBreakdown": {
    "valueMoney": 9.0,
    "security": 9.6,
    "atmosphere": 9.1,
    "cleanliness": 9.1,
    "staff": 9.3,
    "location": 8.9,
    "facilities": 9.1
  },
  "pricePerNight": 9668.91,
  "currencyCode": "PKR",
  "amenities": [
    "Free WiFi", "Free Security Lockers", "Luggage Storage",
    "24 Hour Reception", "Bar", "Self-Catering Facilities",
    "Laundry Facilities", "Hot Showers"
  ],
  "dormAvailable": true,
  "privateRoomAvailable": true,
  "distanceToCenter": 3.6,
  "checkinTime": "14:00:00",
  "checkoutTime": "10:00:00",
  "description": "A safe haven in the middle of the metropolis...",
  "hostelworldUrl": "https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/",
  "imageUrl": "https://a.hwstatic.com/image/upload/f_auto/propertyimages/8/88047/pjev.jpg",
  "imageUrls": ["https://...", "https://..."],
  "scrapedAt": "2026-05-23T10:00:00+00:00"
}
```

### FAQ

**How many results per city?**
Each city listing page returns up to 30 properties. The actor fetches individual property detail pages to provide the full dataset including amenities, rating breakdowns, and prices.

**Do dates affect the results?**
Without dates, you get the standard city listing with base prices. With `dateFrom` and `dateTo`, the results reflect availability for those dates.

**Which currencies are prices shown in?**
Prices are shown in the currency configured for the Hostelworld session (typically PKR for anonymous visits from Pakistan, EUR for Europe, etc.). Use `currencyCode` to identify the currency.

**Why might some cities not work?**
The scraper supports 60+ major cities via a pre-built lookup table. For other cities, the scraper attempts to construct the URL automatically. If your city isn't supported, use the `byUrl` mode with a direct Hostelworld city page URL.

**Does this require login or API keys?**
No. All data is publicly available on Hostelworld.com without requiring an account.

# Actor input Schema

## `mode` (type: `string`):

What to scrape.

## `searchQuery` (type: `string`):

City or destination name (mode=search). Works best with major cities like 'London', 'Paris', 'Bangkok', 'New York', 'Sydney', etc.

## `dateFrom` (type: `string`):

Check-in date in YYYY-MM-DD format (optional, used to filter by availability and show prices).

## `dateTo` (type: `string`):

Check-out date in YYYY-MM-DD format (optional, used together with dateFrom).

## `guests` (type: `integer`):

Number of guests for the booking (default: 1).

## `minRating` (type: `number`):

Only return properties with rating at or above this value (0-10 scale).

## `maxPrice` (type: `number`):

Only return properties with price per night at or below this value (in the property's local currency).

## `propertyUrls` (type: `array`):

Specific Hostelworld property URLs to scrape (e.g. https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/).

## `maxItems` (type: `integer`):

Hard cap on records returned.

## Actor input object example

```json
{
  "mode": "search",
  "searchQuery": "London",
  "guests": 1,
  "propertyUrls": [],
  "maxItems": 50
}
```

# Actor output Schema

## `hostels` (type: `string`):

Dataset containing all scraped Hostelworld property records.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "search",
    "searchQuery": "London",
    "guests": 1,
    "propertyUrls": [],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/hostelworld-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "search",
    "searchQuery": "London",
    "guests": 1,
    "propertyUrls": [],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/hostelworld-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "search",
  "searchQuery": "London",
  "guests": 1,
  "propertyUrls": [],
  "maxItems": 50
}' |
apify call crawlerbros/hostelworld-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/hostelworld-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hostelworld Scraper",
        "description": "Scrape Hostelworld.com, the world's largest hostel booking platform with 17,000+ properties in 179 countries. Search hostels by city, fetch specific property pages, or list top hostel cities. Returns ratings, reviews, amenities, room types, prices, geo coordinates, and more.",
        "version": "1.0",
        "x-build-id": "q11w2n2R5QbHXQxai"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~hostelworld-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-hostelworld-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~hostelworld-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-hostelworld-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~hostelworld-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-hostelworld-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byUrl",
                            "topCities"
                        ],
                        "type": "string",
                        "description": "What to scrape.",
                        "default": "search"
                    },
                    "searchQuery": {
                        "title": "City or destination",
                        "type": "string",
                        "description": "City or destination name (mode=search). Works best with major cities like 'London', 'Paris', 'Bangkok', 'New York', 'Sydney', etc."
                    },
                    "dateFrom": {
                        "title": "Check-in date",
                        "type": "string",
                        "description": "Check-in date in YYYY-MM-DD format (optional, used to filter by availability and show prices)."
                    },
                    "dateTo": {
                        "title": "Check-out date",
                        "type": "string",
                        "description": "Check-out date in YYYY-MM-DD format (optional, used together with dateFrom)."
                    },
                    "guests": {
                        "title": "Number of guests",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "Number of guests for the booking (default: 1).",
                        "default": 1
                    },
                    "minRating": {
                        "title": "Minimum rating",
                        "minimum": 0,
                        "maximum": 10,
                        "type": "number",
                        "description": "Only return properties with rating at or above this value (0-10 scale)."
                    },
                    "maxPrice": {
                        "title": "Maximum price per night",
                        "minimum": 0,
                        "maximum": 1000,
                        "type": "number",
                        "description": "Only return properties with price per night at or below this value (in the property's local currency)."
                    },
                    "propertyUrls": {
                        "title": "Property URLs (mode=byUrl)",
                        "type": "array",
                        "description": "Specific Hostelworld property URLs to scrape (e.g. https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/).",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Hard cap on records returned.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
