{
  "data": {
    "id": "n1EEZzCPiKhxMKNPf",
    "actId": "Wc7czDKdh285Jqwnv",
    "userId": "tnBVjt3CXmcUrEE3L",
    "startedAt": "2026-11-02T00:55:58.677Z",
    "finishedAt": "2026-11-02T00:56:18.038Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 19243,
      "runTimeSecs": 19.243,
      "computeUnits": 0.02138111111111111,
      "imageSizeBytes": 361239552
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "F2Aeb3gE2syjqz9xC",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Hostelworld Scraper Input\",\n  \"description\": \"Choose a mode, then search cities or countries, paste property URLs or IDs, and optionally add dates, guests, currency, filters and review options.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to collect: city search, pasted URLs/IDs, a country city index, dated availability, room rate plans, or reviews.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"byUrl\",\n        \"topCities\",\n        \"availability\",\n        \"rooms\",\n        \"reviews\"\n      ],\n      \"enumTitles\": [\n        \"Search cities\",\n        \"Paste URLs or IDs\",\n        \"Top cities in a country\",\n        \"Dated availability\",\n        \"Room and rate plans\",\n        \"Reviews\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"searchQueries\": {\n      \"title\": \"Cities or destinations\",\n      \"type\": \"array\",\n      \"description\": \"City or destination names for search, availability, rooms and reviews. Example: London, Paris, Bangkok.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [\n        \"London\"\n      ]\n    },\n    \"countries\": {\n      \"title\": \"Countries\",\n      \"type\": \"array\",\n      \"description\": \"Country names for topCities, or to expand a search when no city is given. Example: England, Thailand, Portugal.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"propertyUrls\": {\n      \"title\": \"Property, city or search URLs\",\n      \"type\": \"array\",\n      \"description\": \"Hostelworld property, city or search URLs. Property URLs and IDs take priority over city queries in availability, rooms and reviews.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"propertyIds\": {\n      \"title\": \"Property IDs\",\n      \"type\": \"array\",\n      \"description\": \"Numeric Hostelworld property IDs, for example 88047.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"dateFrom\": {\n      \"title\": \"Check-in date\",\n      \"type\": \"string\",\n      \"description\": \"Check-in date in YYYY-MM-DD format. Required for room rows; optional for dated prices elsewhere.\",\n      \"editor\": \"datepicker\"\n    },\n    \"dateTo\": {\n      \"title\": \"Check-out date\",\n      \"type\": \"string\",\n      \"description\": \"Check-out date in YYYY-MM-DD format. Nights are derived; maximum stay is 30 nights.\",\n      \"editor\": \"datepicker\"\n    },\n    \"daysAhead\": {\n      \"title\": \"Days ahead\",\n      \"type\": \"integer\",\n      \"description\": \"Alternative to dateFrom for schedules: check in this many days from today.\",\n      \"minimum\": 0,\n      \"maximum\": 365\n    },\n    \"numNights\": {\n      \"title\": \"Nights\",\n      \"type\": \"integer\",\n      \"description\": \"Stay length when only dateFrom or daysAhead is set.\",\n      \"minimum\": 1,\n      \"maximum\": 30,\n      \"default\": 2,\n      \"prefill\": 2\n    },\n    \"guests\": {\n      \"title\": \"Guests\",\n      \"type\": \"integer\",\n      \"description\": \"Party size used for availability and room prices.\",\n      \"minimum\": 1,\n      \"maximum\": 20,\n      \"default\": 2,\n      \"prefill\": 2\n    },\n    \"currency\": {\n      \"title\": \"Currency\",\n      \"type\": \"string\",\n      \"description\": \"Currency for every price field. Property-native price ranges are also returned in propertyPrices.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"EUR\",\n        \"USD\",\n        \"GBP\",\n        \"AUD\",\n        \"CAD\",\n        \"NZD\",\n        \"CHF\",\n        \"SEK\",\n        \"NOK\",\n        \"DKK\",\n        \"PLN\",\n        \"CZK\",\n        \"HUF\",\n        \"RON\",\n        \"BGN\",\n        \"HRK\",\n        \"TRY\",\n        \"RUB\",\n        \"UAH\",\n        \"ILS\",\n        \"AED\",\n        \"SAR\",\n        \"QAR\",\n        \"KWD\",\n        \"BHD\",\n        \"OMR\",\n        \"JOD\",\n        \"EGP\",\n        \"ZAR\",\n        \"KES\",\n        \"TZS\",\n        \"UGX\",\n        \"RWF\",\n        \"NAD\",\n        \"SZL\",\n        \"MAD\",\n        \"TND\",\n        \"MUR\",\n        \"INR\",\n        \"PKR\",\n        \"BDT\",\n        \"LKR\",\n        \"NPR\",\n        \"CNY\",\n        \"HKD\",\n        \"TWD\",\n        \"JPY\",\n        \"KRW\",\n        \"SGD\",\n        \"MYR\",\n        \"THB\",\n        \"IDR\",\n        \"PHP\",\n        \"VND\",\n        \"KHR\",\n        \"LAK\",\n        \"MMK\",\n        \"MNT\",\n        \"KZT\",\n        \"GEL\",\n        \"AMD\",\n        \"AZN\",\n        \"MXN\",\n        \"BRL\",\n        \"ARS\",\n        \"CLP\",\n        \"COP\",\n        \"PEN\",\n        \"BOB\",\n        \"PYG\",\n        \"UYU\",\n        \"CRC\",\n        \"GTQ\",\n        \"HNL\",\n        \"NIO\",\n        \"DOP\",\n        \"BSD\",\n        \"BZD\",\n        \"XCD\",\n        \"FJD\",\n        \"PGK\",\n        \"WST\",\n        \"TOP\",\n        \"VUV\"\n      ],\n      \"enumTitles\": [\n        \"EUR - Euro\",\n        \"USD - US Dollar\",\n        \"GBP - British Pound\",\n        \"AUD - Australian Dollar\",\n        \"CAD - Canadian Dollar\",\n        \"NZD - New Zealand Dollar\",\n        \"CHF - Swiss Franc\",\n        \"SEK - Swedish Krona\",\n        \"NOK - Norwegian Krone\",\n        \"DKK - Danish Krone\",\n        \"PLN - Polish Zloty\",\n        \"CZK - Czech Koruna\",\n        \"HUF - Hungarian Forint\",\n        \"RON - Romanian Leu\",\n        \"BGN - Bulgarian Lev\",\n        \"HRK - Croatian Kuna\",\n        \"TRY - Turkish Lira\",\n        \"RUB - Russian Ruble\",\n        \"UAH - Ukrainian Hryvnia\",\n        \"ILS - Israeli Shekel\",\n        \"AED - UAE Dirham\",\n        \"SAR - Saudi Riyal\",\n        \"QAR - Qatari Riyal\",\n        \"KWD - Kuwaiti Dinar\",\n        \"BHD - Bahraini Dinar\",\n        \"OMR - Omani Rial\",\n        \"JOD - Jordanian Dinar\",\n        \"EGP - Egyptian Pound\",\n        \"ZAR - South African Rand\",\n        \"KES - Kenyan Shilling\",\n        \"TZS - Tanzanian Shilling\",\n        \"UGX - Ugandan Shilling\",\n        \"RWF - Rwandan Franc\",\n        \"NAD - Namibian Dollar\",\n        \"SZL - Swazi Lilangeni\",\n        \"MAD - Moroccan Dirham\",\n        \"TND - Tunisian Dinar\",\n        \"MUR - Mauritian Rupee\",\n        \"INR - Indian Rupee\",\n        \"PKR - Pakistani Rupee\",\n        \"BDT - Bangladeshi Taka\",\n        \"LKR - Sri Lankan Rupee\",\n        \"NPR - Nepalese Rupee\",\n        \"CNY - Chinese Yuan\",\n        \"HKD - Hong Kong Dollar\",\n        \"TWD - New Taiwan Dollar\",\n        \"JPY - Japanese Yen\",\n        \"KRW - South Korean Won\",\n        \"SGD - Singapore Dollar\",\n        \"MYR - Malaysian Ringgit\",\n        \"THB - Thai Baht\",\n        \"IDR - Indonesian Rupiah\",\n        \"PHP - Philippine Peso\",\n        \"VND - Vietnamese Dong\",\n        \"KHR - Cambodian Riel\",\n        \"LAK - Lao Kip\",\n        \"MMK - Myanmar Kyat\",\n        \"MNT - Mongolian Tugrik\",\n        \"KZT - Kazakhstani Tenge\",\n        \"GEL - Georgian Lari\",\n        \"AMD - Armenian Dram\",\n        \"AZN - Azerbaijani Manat\",\n        \"MXN - Mexican Peso\",\n        \"BRL - Brazilian Real\",\n        \"ARS - Argentine Peso\",\n        \"CLP - Chilean Peso\",\n        \"COP - Colombian Peso\",\n        \"PEN - Peruvian Sol\",\n        \"BOB - Bolivian Boliviano\",\n        \"PYG - Paraguayan Guarani\",\n        \"UYU - Uruguayan Peso\",\n        \"CRC - Costa Rican Colon\",\n        \"GTQ - Guatemalan Quetzal\",\n        \"HNL - Honduran Lempira\",\n        \"NIO - Nicaraguan Cordoba\",\n        \"DOP - Dominican Peso\",\n        \"BSD - Bahamian Dollar\",\n        \"BZD - Belize Dollar\",\n        \"XCD - East Caribbean Dollar\",\n        \"FJD - Fijian Dollar\",\n        \"PGK - Papua New Guinean Kina\",\n        \"WST - Samoan Tala\",\n        \"TOP - Tongan Paanga\",\n        \"VUV - Vanuatu Vatu\"\n      ],\n      \"default\": \"EUR\",\n      \"prefill\": \"EUR\"\n    },\n    \"language\": {\n      \"title\": \"Language\",\n      \"type\": \"string\",\n      \"description\": \"Language requested from Hostelworld for descriptions and labels.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"de\",\n        \"es\",\n        \"fr\",\n        \"it\",\n        \"nl\",\n        \"pt\",\n        \"pt-br\",\n        \"pl\",\n        \"ru\",\n        \"tr\",\n        \"ja\",\n        \"ko\",\n        \"zh-cn\",\n        \"sv\",\n        \"da\",\n        \"no\",\n        \"fi\",\n        \"cs\"\n      ],\n      \"enumTitles\": [\n        \"en - English\",\n        \"de - German\",\n        \"es - Spanish\",\n        \"fr - French\",\n        \"it - Italian\",\n        \"nl - Dutch\",\n        \"pt - Portuguese\",\n        \"pt-br - Portuguese (Brazil)\",\n        \"pl - Polish\",\n        \"ru - Russian\",\n        \"tr - Turkish\",\n        \"ja - Japanese\",\n        \"ko - Korean\",\n        \"zh-cn - Chinese (Simplified)\",\n        \"sv - Swedish\",\n        \"da - Danish\",\n        \"no - Norwegian\",\n        \"fi - Finnish\",\n        \"cs - Czech\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    },\n    \"propertyType\": {\n      \"title\": \"Property type\",\n      \"type\": \"string\",\n      \"description\": \"Keep only one accommodation type.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"hostel\",\n        \"hotel\",\n        \"guesthouse\",\n        \"apartment\",\n        \"campsite\"\n      ],\n      \"enumTitles\": [\n        \"All types\",\n        \"Hostel\",\n        \"Hotel\",\n        \"Guesthouse\",\n        \"Apartment\",\n        \"Campsite\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"number\",\n      \"description\": \"Only properties rated at or above this value on the 0-10 scale.\",\n      \"minimum\": 0,\n      \"maximum\": 10\n    },\n    \"minPrice\": {\n      \"title\": \"Minimum price per night\",\n      \"type\": \"number\",\n      \"description\": \"Only properties at or above this nightly price in the selected currency.\",\n      \"minimum\": 0,\n      \"maximum\": 10000\n    },\n    \"maxPrice\": {\n      \"title\": \"Maximum price per night\",\n      \"type\": \"number\",\n      \"description\": \"Only properties at or below this nightly price in the selected currency.\",\n      \"minimum\": 0,\n      \"maximum\": 10000\n    },\n    \"maxDistanceKm\": {\n      \"title\": \"Maximum distance from centre (km)\",\n      \"type\": \"number\",\n      \"description\": \"Only properties within this many kilometres of the city centre.\",\n      \"minimum\": 0,\n      \"maximum\": 50\n    },\n    \"freeCancellationOnly\": {\n      \"title\": \"Free cancellation only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only properties offering a free-cancellation rate.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Order of hostel rows. Ties are broken by property ID.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"relevance\",\n        \"priceLow\",\n        \"priceHigh\",\n        \"ratingHigh\",\n        \"reviewCount\",\n        \"distance\"\n      ],\n      \"enumTitles\": [\n        \"Hostelworld relevance\",\n        \"Price: low to high\",\n        \"Price: high to low\",\n        \"Rating: high to low\",\n        \"Most reviews\",\n        \"Closest to centre\"\n      ],\n      \"default\": \"relevance\",\n      \"prefill\": \"relevance\"\n    },\n    \"includeDetails\": {\n      \"title\": \"Include full profiles\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the full profile for every hostel: facilities, policies, images, directions and payment methods. Turn off for the cheapest city listing.\",\n      \"default\": true,\n      \"prefill\": false\n    },\n    \"includeReviews\": {\n      \"title\": \"Include reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Also emit review rows for hostels found in search or byUrl.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"reviewsPerProperty\": {\n      \"title\": \"Reviews per property\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum review rows per property for reviews mode or inline reviews.\",\n      \"minimum\": 0,\n      \"maximum\": 20000,\n      \"default\": 10,\n      \"prefill\": 10\n    },\n    \"reviewsSort\": {\n      \"title\": \"Review order\",\n      \"type\": \"string\",\n      \"description\": \"Hostelworld review sort order.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"-date\",\n        \"date\",\n        \"rating\",\n        \"-rating\"\n      ],\n      \"enumTitles\": [\n        \"Newest first\",\n        \"Oldest first\",\n        \"Highest rating first\",\n        \"Lowest rating first\"\n      ],\n      \"default\": \"-date\",\n      \"prefill\": \"-date\"\n    },\n    \"allLanguages\": {\n      \"title\": \"All review languages\",\n      \"type\": \"boolean\",\n      \"description\": \"Include reviews in every language instead of English only.\",\n      \"default\": true,\n      \"prefill\": true\n    },\n    \"sinceDate\": {\n      \"title\": \"Reviews since\",\n      \"type\": \"string\",\n      \"description\": \"Only reviews on or after this date (YYYY-MM-DD). Newest-first searches stop early.\",\n      \"editor\": \"datepicker\"\n    },\n    \"reviewRatingMin\": {\n      \"title\": \"Review score minimum\",\n      \"type\": \"integer\",\n      \"description\": \"Only reviews at or above this score on the 0-100 scale.\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"reviewRatingMax\": {\n      \"title\": \"Review score maximum\",\n      \"type\": \"integer\",\n      \"description\": \"Only reviews at or below this score on the 0-100 scale.\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"requireReviewText\": {\n      \"title\": \"Require review text\",\n      \"type\": \"boolean\",\n      \"description\": \"Drop score-only reviews without written text.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"roomCategory\": {\n      \"title\": \"Room category\",\n      \"type\": \"string\",\n      \"description\": \"Filter room rows to dorms or private rooms.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"all\",\n        \"dorm\",\n        \"private\"\n      ],\n      \"enumTitles\": [\n        \"All rooms\",\n        \"Dorms\",\n        \"Private rooms\"\n      ],\n      \"default\": \"all\",\n      \"prefill\": \"all\"\n    },\n    \"maxItems\": {\n      \"title\": \"Max hostels\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on hostel rows. Rooms and reviews use their own per-property caps.\",\n      \"minimum\": 1,\n      \"maximum\": 5000,\n      \"default\": 50,\n      \"prefill\": 3\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Hostelworld Hostels, Rooms & Reviews Finder\n\nScrape **Hostelworld** city inventories, full property profiles, dated dorm and private prices, room rate plans and reviews in every language. Six modes cover destination search, pasted URLs or IDs, country city indexes, availability summaries, room-level rate rows and review exports. No login, cookies, API key or proxy configuration is required.\n\n## What this actor does\n\n- **Six modes:** `search`, `byUrl`, `topCities`, `availability`, `rooms` and `reviews`\n- **Complete city inventories** with full pagination, so a 300-property city is no longer cut off at 30 rows\n- **Dated pricing** for dorms and private rooms, including beds available and per-room rate plans\n- **All-language reviews** with sort, date cutoff, score band, owner replies and reviewer metadata\n- **Filters and sorting** by property type, rating, price, distance, free cancellation, price/rating/review count/distance order\n- **Currency and language selection** across 80+ currencies and 19 Hostelworld locales\n- **Empty fields are omitted** at every depth, so records never carry `null`, `\"\"`, `[]` or `{}`\n\n## Output per hostel (`recordType: \"hostel\"`)\n\nIdentity and location:\n\n- `propertyId`, `slug`, `name`, `type`, `hostelworldUrl`\n- `address`, `address1`, `address2`, `city`, `country`, `continent`, `district`, `districts[]`, `region`, `postalCode`\n- `latitude`, `longitude`, `distanceToCenter` (km)\n\nRatings:\n\n- `rating` — overall score on Hostelworld's 0–10 scale\n- `ratingBreakdown` — atmosphere, cleanliness, facilities, location, security, staff and value for money, 0–10\n- `ratingPercent`, `ratingBreakdownPercent` — the same scores on the raw 0–100 scale\n- `ratingLabel`, `reviewCount`, `starRating`, `bestFor[]`\n\nPrices:\n\n- `pricePerNight`, `currencyCode`\n- `lowestDormPricePerNight`, `lowestPrivatePricePerNight`, `averagePricePerNight`, `originalPricePerNight`, `discountPercent`\n- `promotions[]`, `propertyPrices` — native-currency shared/private min, max and average\n- `freeCancellation`, `freeCancellationUntil`, `depositPercentage`\n\nProfile and policy:\n\n- `description`, `hostelworldSays`, `directions`\n- `amenities[]`, `facilitiesByCategory[]`, `policies[]`, `thingsToNote[]`, `paymentMethods[]`\n- `checkinTime`, `checkoutTime`, `maxGuestsPerBooking`, `timesBookedToday`, `taxesIncluded`, `feesIncluded`\n\nMedia and availability:\n\n- `imageUrl`, `imageUrls[]`, `imageCount`\n- `dormAvailable`, `privateRoomAvailable`\n- With dates: `checkInDate`, `nights`, `guests`, `bedsAvailable`, `dormTypesAvailable`, `privateTypesAvailable`, `cancellationOptions[]`, `vat`\n- `scrapedAt`\n\n## Output per room (`recordType: \"room\"`)\n\n- `propertyId`, `name`, `hostelworldUrl`, `city`, `country`\n- `checkInDate`, `nights`, `guests`\n- `roomId`, `roomName`, `roomDescription`, `roomCategory` (`dorm` or `private`), `roomType`, `roomGrade`\n- `capacity`, `ensuite`, `bedsAvailable`, `roomsAvailable`\n- `ratePlanId`, `ratePlanType`, `ratePlanCount`, `paymentOption`, `paymentOptionId`, `isDefaultRatePlan`, `paymentOptions[]`, `cheapestPaymentOption`\n- `pricePerNight`, `lowestPricePerNight`, `averagePricePerNight`, `originalPricePerNight`, `discountPercent`, `totalPrice`, `originalTotalPrice`, `currencyCode`\n- `roomImages[]`, `scrapedAt`\n\nPrivate-room prices are for the whole room; dorm prices are per bed. `pricePerNight` is the selected rate-plan price, while `lowestPricePerNight` is the room's advertised minimum and can be lower than every listed rate plan. The hostel row reports the city-wide lowest dorm bed price as `lowestDormPricePerNight`.\n\n## Output per review (`recordType: \"review\"`)\n\n- `propertyId`, `name`, `hostelworldUrl`, `city`, `country`\n- `reviewId`, `reviewDate`, `reviewText`, `reviewLanguage`, `isMachineTranslated`, `ownerComment`\n- `groupType`, `ageGroup`, `tripTypes[]`\n- `ratingOverall`, `ratingValueForMoney`, `ratingSafety`, `ratingLocation`, `ratingStaff`, `ratingAtmosphere`, `ratingCleanliness`, `ratingFacilities` — review scores on a 0–100 scale\n- `reviewerNickname`, `reviewerCountry`, `reviewerCountryCode`, `reviewerGender`, `reviewerNumberOfReviews`\n- `scrapedAt`\n\n## Output per city (`recordType: \"city\"`, mode `topCities`)\n\n- `cityId`, `cityName`, `country`, `continent`\n- `hostelworldUrl`, `imageUrl`\n- `numberOfProperties`, `numberOfReviews`, `avgRating`\n- `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `byUrl` / `topCities` / `availability` / `rooms` / `reviews` |\n| `searchQueries` | array | – | City or destination names (search, availability, rooms, reviews) |\n| `countries` | array | – | Country names for `topCities`, or to expand a search when no city is set |\n| `propertyUrls` | array | – | Hostelworld property, city or search URLs |\n| `propertyIds` | array | – | Numeric Hostelworld property IDs |\n| `dateFrom` | string | – | Check-in date, `YYYY-MM-DD` |\n| `dateTo` | string | – | Check-out date, `YYYY-MM-DD`; maximum 30 nights |\n| `daysAhead` | integer | – | Check in this many days from today (alternative to `dateFrom`) |\n| `numNights` | integer | `2` | Stay length when only `dateFrom` or `daysAhead` is set |\n| `guests` | integer | `2` | Party size for availability and room prices |\n| `currency` | string | `EUR` | Price currency (80+ ISO codes) |\n| `language` | string | `en` | Hostelworld locale (19 options) |\n| `propertyType` | string | `all` | `all` / `hostel` / `hotel` / `guesthouse` / `apartment` / `campsite` |\n| `minRating` | number | – | Minimum overall rating on the 0–10 scale |\n| `minPrice` | number | – | Minimum nightly price in the selected currency |\n| `maxPrice` | number | – | Maximum nightly price in the selected currency |\n| `maxDistanceKm` | number | – | Maximum distance from the city centre |\n| `freeCancellationOnly` | boolean | `false` | Keep only properties with free-cancellation rates |\n| `sortBy` | string | `relevance` | `relevance` / `priceLow` / `priceHigh` / `ratingHigh` / `reviewCount` / `distance` |\n| `includeDetails` | boolean | `true` | Fetch full profiles (facilities, policies, images, directions) |\n| `includeReviews` | boolean | `false` | Add review rows in search and byUrl modes |\n| `reviewsPerProperty` | integer | `10` | Review cap per property |\n| `reviewsSort` | string | `-date` | `-date` / `date` / `rating` / `-rating` |\n| `allLanguages` | boolean | `true` | Include reviews in every language |\n| `sinceDate` | string | – | Only reviews on or after this date, `YYYY-MM-DD` |\n| `reviewRatingMin` | integer | – | Minimum review score on the 0–100 scale |\n| `reviewRatingMax` | integer | – | Maximum review score on the 0–100 scale |\n| `requireReviewText` | boolean | `false` | Drop score-only reviews |\n| `roomCategory` | string | `all` | `all` / `dorm` / `private` |\n| `maxItems` | integer | `50` | Hard cap on hostel rows (1–5000) |\n\n## Examples\n\n### Example: search a city with dated prices\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"London\"],\n  \"dateFrom\": \"2026-12-20\",\n  \"dateTo\": \"2026-12-22\",\n  \"guests\": 2,\n  \"currency\": \"EUR\",\n  \"minRating\": 8,\n  \"sortBy\": \"priceLow\",\n  \"maxItems\": 20\n}\n```\n\n### Example: full profiles for pasted properties\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"propertyUrls\": [\n    \"https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/\",\n    \"https://www.hostelworld.com/hostels/p/14348/palmers-lodge-swiss-cottage/\"\n  ],\n  \"includeDetails\": true\n}\n```\n\n### Example: dated room and rate-plan rows\n\n```json\n{\n  \"mode\": \"rooms\",\n  \"propertyIds\": [\"88047\", \"14348\"],\n  \"dateFrom\": \"2027-02-10\",\n  \"numNights\": 2,\n  \"guests\": 2,\n  \"currency\": \"GBP\",\n  \"roomCategory\": \"private\"\n}\n```\n\n### Example: all-language reviews since a date\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"searchQueries\": [\"Bangkok\"],\n  \"reviewsPerProperty\": 100,\n  \"reviewsSort\": \"-date\",\n  \"allLanguages\": true,\n  \"sinceDate\": \"2026-01-01\",\n  \"requireReviewText\": true,\n  \"maxItems\": 5\n}\n```\n\n### Example: country city index\n\n```json\n{\n  \"mode\": \"topCities\",\n  \"countries\": [\"Portugal\"],\n  \"maxItems\": 20\n}\n```\n\n## Use cases\n\n- **Hostel price comparison** — pull dated dorm and private prices for the same city and stay\n- **Travel content and directories** — build city inventories with facilities, policies, images and geo data\n- **Review analytics** — export multilingual review text with ratings, trip type, age group and country\n- **Revenue and rate research** — compare room-level rate plans, discounts and cancellation terms\n- **Market mapping** — measure hostel supply, ratings and review volume across countries and cities\n- **App and dashboard feeds** — join flat hostel, room, review and city rows on `propertyId`\n\n## FAQ\n\n**Do I need a Hostelworld account, cookie or API key?**\nNo. The actor reads public Hostelworld data and works without any account, cookie, token or proxy setup.\n\n**Why did my old `searchQuery` input keep working after the schema changed?**\nSaved tasks that still send `searchQuery` are mapped to the first city in `searchQueries`, so old inputs continue to run.\n\n**How many hostels can one city return?**\nThe full city inventory is fetched, not just the first page. `maxItems` is the only cap, up to 5,000 hostel rows.\n\n**Why are there two rating scales?**\nThe legacy `rating` and `ratingBreakdown` fields stay on Hostelworld's 0–10 scale. `ratingPercent` and `ratingBreakdownPercent` expose the raw 0–100 values. Review scores are reported on 0–100.\n\n**Do dates change the prices?**\nYes. With `dateFrom` and `dateTo` (or `daysAhead`), hostel rows carry that stay's lowest dorm and private prices, beds available and cancellation options. Without dates, listing prices are returned and availability fields are omitted.\n\n**How do room rows differ from hostel rows?**\nHostel rows give one summary per property. Room rows give one row per room and rate plan, with capacity, ensuite flag, beds, room images, payment option and per-night plus total prices. Dorm prices are per bed; private-room prices are for the whole room. `lowestPricePerNight` shows the room's advertised minimum when a cheaper unlisted rate exists.\n\n**Can I get reviews in languages other than English?**\nYes. `allLanguages` is on by default. Use `reviewsSort`, `sinceDate`, `reviewRatingMin`, `reviewRatingMax` and `requireReviewText` to narrow the export.\n\n**Why is a field missing on some records?**\nHostelworld does not publish every field for every property. Missing values are omitted rather than filled with placeholders, so check for the field's presence.\n\n**What happens when a property has no availability for my dates?**\nThe property is skipped in `rooms` mode. In other modes it is returned with its profile and sold-out availability flags, but without a dated price, and the run status explains the shortfall.\n\n**Is this affiliated with Hostelworld?**\nNo. This is an independent third-party actor and is not operated by or affiliated with Hostelworld.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "hostelworld-property-ratings-and-price-finder",
      "title": "Hostelworld Hostels, Rooms & Reviews Finder",
      "description": "Scrape Hostelworld city listings, full property profiles, dated dorm and private prices, room rate plans and all-language reviews. Filter by type, rating, price, distance and cancellation, with currency and language selection.",
      "version": "1.0",
      "buildTag": "latest",
      "dockerfile": "./Dockerfile",
      "readme": "# Hostelworld Hostels, Rooms & Reviews Finder\n\nScrape **Hostelworld** city inventories, full property profiles, dated dorm and private prices, room rate plans and reviews in every language. Six modes cover destination search, pasted URLs or IDs, country city indexes, availability summaries, room-level rate rows and review exports. No login, cookies, API key or proxy configuration is required.\n\n## What this actor does\n\n- **Six modes:** `search`, `byUrl`, `topCities`, `availability`, `rooms` and `reviews`\n- **Complete city inventories** with full pagination, so a 300-property city is no longer cut off at 30 rows\n- **Dated pricing** for dorms and private rooms, including beds available and per-room rate plans\n- **All-language reviews** with sort, date cutoff, score band, owner replies and reviewer metadata\n- **Filters and sorting** by property type, rating, price, distance, free cancellation, price/rating/review count/distance order\n- **Currency and language selection** across 80+ currencies and 19 Hostelworld locales\n- **Empty fields are omitted** at every depth, so records never carry `null`, `\"\"`, `[]` or `{}`\n\n## Output per hostel (`recordType: \"hostel\"`)\n\nIdentity and location:\n\n- `propertyId`, `slug`, `name`, `type`, `hostelworldUrl`\n- `address`, `address1`, `address2`, `city`, `country`, `continent`, `district`, `districts[]`, `region`, `postalCode`\n- `latitude`, `longitude`, `distanceToCenter` (km)\n\nRatings:\n\n- `rating` — overall score on Hostelworld's 0–10 scale\n- `ratingBreakdown` — atmosphere, cleanliness, facilities, location, security, staff and value for money, 0–10\n- `ratingPercent`, `ratingBreakdownPercent` — the same scores on the raw 0–100 scale\n- `ratingLabel`, `reviewCount`, `starRating`, `bestFor[]`\n\nPrices:\n\n- `pricePerNight`, `currencyCode`\n- `lowestDormPricePerNight`, `lowestPrivatePricePerNight`, `averagePricePerNight`, `originalPricePerNight`, `discountPercent`\n- `promotions[]`, `propertyPrices` — native-currency shared/private min, max and average\n- `freeCancellation`, `freeCancellationUntil`, `depositPercentage`\n\nProfile and policy:\n\n- `description`, `hostelworldSays`, `directions`\n- `amenities[]`, `facilitiesByCategory[]`, `policies[]`, `thingsToNote[]`, `paymentMethods[]`\n- `checkinTime`, `checkoutTime`, `maxGuestsPerBooking`, `timesBookedToday`, `taxesIncluded`, `feesIncluded`\n\nMedia and availability:\n\n- `imageUrl`, `imageUrls[]`, `imageCount`\n- `dormAvailable`, `privateRoomAvailable`\n- With dates: `checkInDate`, `nights`, `guests`, `bedsAvailable`, `dormTypesAvailable`, `privateTypesAvailable`, `cancellationOptions[]`, `vat`\n- `scrapedAt`\n\n## Output per room (`recordType: \"room\"`)\n\n- `propertyId`, `name`, `hostelworldUrl`, `city`, `country`\n- `checkInDate`, `nights`, `guests`\n- `roomId`, `roomName`, `roomDescription`, `roomCategory` (`dorm` or `private`), `roomType`, `roomGrade`\n- `capacity`, `ensuite`, `bedsAvailable`, `roomsAvailable`\n- `ratePlanId`, `ratePlanType`, `ratePlanCount`, `paymentOption`, `paymentOptionId`, `isDefaultRatePlan`, `paymentOptions[]`, `cheapestPaymentOption`\n- `pricePerNight`, `lowestPricePerNight`, `averagePricePerNight`, `originalPricePerNight`, `discountPercent`, `totalPrice`, `originalTotalPrice`, `currencyCode`\n- `roomImages[]`, `scrapedAt`\n\nPrivate-room prices are for the whole room; dorm prices are per bed. `pricePerNight` is the selected rate-plan price, while `lowestPricePerNight` is the room's advertised minimum and can be lower than every listed rate plan. The hostel row reports the city-wide lowest dorm bed price as `lowestDormPricePerNight`.\n\n## Output per review (`recordType: \"review\"`)\n\n- `propertyId`, `name`, `hostelworldUrl`, `city`, `country`\n- `reviewId`, `reviewDate`, `reviewText`, `reviewLanguage`, `isMachineTranslated`, `ownerComment`\n- `groupType`, `ageGroup`, `tripTypes[]`\n- `ratingOverall`, `ratingValueForMoney`, `ratingSafety`, `ratingLocation`, `ratingStaff`, `ratingAtmosphere`, `ratingCleanliness`, `ratingFacilities` — review scores on a 0–100 scale\n- `reviewerNickname`, `reviewerCountry`, `reviewerCountryCode`, `reviewerGender`, `reviewerNumberOfReviews`\n- `scrapedAt`\n\n## Output per city (`recordType: \"city\"`, mode `topCities`)\n\n- `cityId`, `cityName`, `country`, `continent`\n- `hostelworldUrl`, `imageUrl`\n- `numberOfProperties`, `numberOfReviews`, `avgRating`\n- `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` / `byUrl` / `topCities` / `availability` / `rooms` / `reviews` |\n| `searchQueries` | array | – | City or destination names (search, availability, rooms, reviews) |\n| `countries` | array | – | Country names for `topCities`, or to expand a search when no city is set |\n| `propertyUrls` | array | – | Hostelworld property, city or search URLs |\n| `propertyIds` | array | – | Numeric Hostelworld property IDs |\n| `dateFrom` | string | – | Check-in date, `YYYY-MM-DD` |\n| `dateTo` | string | – | Check-out date, `YYYY-MM-DD`; maximum 30 nights |\n| `daysAhead` | integer | – | Check in this many days from today (alternative to `dateFrom`) |\n| `numNights` | integer | `2` | Stay length when only `dateFrom` or `daysAhead` is set |\n| `guests` | integer | `2` | Party size for availability and room prices |\n| `currency` | string | `EUR` | Price currency (80+ ISO codes) |\n| `language` | string | `en` | Hostelworld locale (19 options) |\n| `propertyType` | string | `all` | `all` / `hostel` / `hotel` / `guesthouse` / `apartment` / `campsite` |\n| `minRating` | number | – | Minimum overall rating on the 0–10 scale |\n| `minPrice` | number | – | Minimum nightly price in the selected currency |\n| `maxPrice` | number | – | Maximum nightly price in the selected currency |\n| `maxDistanceKm` | number | – | Maximum distance from the city centre |\n| `freeCancellationOnly` | boolean | `false` | Keep only properties with free-cancellation rates |\n| `sortBy` | string | `relevance` | `relevance` / `priceLow` / `priceHigh` / `ratingHigh` / `reviewCount` / `distance` |\n| `includeDetails` | boolean | `true` | Fetch full profiles (facilities, policies, images, directions) |\n| `includeReviews` | boolean | `false` | Add review rows in search and byUrl modes |\n| `reviewsPerProperty` | integer | `10` | Review cap per property |\n| `reviewsSort` | string | `-date` | `-date` / `date` / `rating` / `-rating` |\n| `allLanguages` | boolean | `true` | Include reviews in every language |\n| `sinceDate` | string | – | Only reviews on or after this date, `YYYY-MM-DD` |\n| `reviewRatingMin` | integer | – | Minimum review score on the 0–100 scale |\n| `reviewRatingMax` | integer | – | Maximum review score on the 0–100 scale |\n| `requireReviewText` | boolean | `false` | Drop score-only reviews |\n| `roomCategory` | string | `all` | `all` / `dorm` / `private` |\n| `maxItems` | integer | `50` | Hard cap on hostel rows (1–5000) |\n\n## Examples\n\n### Example: search a city with dated prices\n\n```json\n{\n  \"mode\": \"search\",\n  \"searchQueries\": [\"London\"],\n  \"dateFrom\": \"2026-12-20\",\n  \"dateTo\": \"2026-12-22\",\n  \"guests\": 2,\n  \"currency\": \"EUR\",\n  \"minRating\": 8,\n  \"sortBy\": \"priceLow\",\n  \"maxItems\": 20\n}\n```\n\n### Example: full profiles for pasted properties\n\n```json\n{\n  \"mode\": \"byUrl\",\n  \"propertyUrls\": [\n    \"https://www.hostelworld.com/hostels/p/88047/wombat-s-city-hostel-london/\",\n    \"https://www.hostelworld.com/hostels/p/14348/palmers-lodge-swiss-cottage/\"\n  ],\n  \"includeDetails\": true\n}\n```\n\n### Example: dated room and rate-plan rows\n\n```json\n{\n  \"mode\": \"rooms\",\n  \"propertyIds\": [\"88047\", \"14348\"],\n  \"dateFrom\": \"2027-02-10\",\n  \"numNights\": 2,\n  \"guests\": 2,\n  \"currency\": \"GBP\",\n  \"roomCategory\": \"private\"\n}\n```\n\n### Example: all-language reviews since a date\n\n```json\n{\n  \"mode\": \"reviews\",\n  \"searchQueries\": [\"Bangkok\"],\n  \"reviewsPerProperty\": 100,\n  \"reviewsSort\": \"-date\",\n  \"allLanguages\": true,\n  \"sinceDate\": \"2026-01-01\",\n  \"requireReviewText\": true,\n  \"maxItems\": 5\n}\n```\n\n### Example: country city index\n\n```json\n{\n  \"mode\": \"topCities\",\n  \"countries\": [\"Portugal\"],\n  \"maxItems\": 20\n}\n```\n\n## Use cases\n\n- **Hostel price comparison** — pull dated dorm and private prices for the same city and stay\n- **Travel content and directories** — build city inventories with facilities, policies, images and geo data\n- **Review analytics** — export multilingual review text with ratings, trip type, age group and country\n- **Revenue and rate research** — compare room-level rate plans, discounts and cancellation terms\n- **Market mapping** — measure hostel supply, ratings and review volume across countries and cities\n- **App and dashboard feeds** — join flat hostel, room, review and city rows on `propertyId`\n\n## FAQ\n\n**Do I need a Hostelworld account, cookie or API key?**\nNo. The actor reads public Hostelworld data and works without any account, cookie, token or proxy setup.\n\n**Why did my old `searchQuery` input keep working after the schema changed?**\nSaved tasks that still send `searchQuery` are mapped to the first city in `searchQueries`, so old inputs continue to run.\n\n**How many hostels can one city return?**\nThe full city inventory is fetched, not just the first page. `maxItems` is the only cap, up to 5,000 hostel rows.\n\n**Why are there two rating scales?**\nThe legacy `rating` and `ratingBreakdown` fields stay on Hostelworld's 0–10 scale. `ratingPercent` and `ratingBreakdownPercent` expose the raw 0–100 values. Review scores are reported on 0–100.\n\n**Do dates change the prices?**\nYes. With `dateFrom` and `dateTo` (or `daysAhead`), hostel rows carry that stay's lowest dorm and private prices, beds available and cancellation options. Without dates, listing prices are returned and availability fields are omitted.\n\n**How do room rows differ from hostel rows?**\nHostel rows give one summary per property. Room rows give one row per room and rate plan, with capacity, ensuite flag, beds, room images, payment option and per-night plus total prices. Dorm prices are per bed; private-room prices are for the whole room. `lowestPricePerNight` shows the room's advertised minimum when a cheaper unlisted rate exists.\n\n**Can I get reviews in languages other than English?**\nYes. `allLanguages` is on by default. Use `reviewsSort`, `sinceDate`, `reviewRatingMin`, `reviewRatingMax` and `requireReviewText` to narrow the export.\n\n**Why is a field missing on some records?**\nHostelworld does not publish every field for every property. Missing values are omitted rather than filled with placeholders, so check for the field's presence.\n\n**What happens when a property has no availability for my dates?**\nThe property is skipped in `rooms` mode. In other modes it is returned with its profile and sold-out availability flags, but without a dated price, and the run status explains the shortfall.\n\n**Is this affiliated with Hostelworld?**\nNo. This is an independent third-party actor and is not operated by or affiliated with Hostelworld.\n",
      "input": {
        "title": "Hostelworld Scraper Input",
        "description": "Choose a mode, then search cities or countries, paste property URLs or IDs, and optionally add dates, guests, currency, filters and review options.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to collect: city search, pasted URLs/IDs, a country city index, dated availability, room rate plans, or reviews.",
            "editor": "select",
            "enum": [
              "search",
              "byUrl",
              "topCities",
              "availability",
              "rooms",
              "reviews"
            ],
            "enumTitles": [
              "Search cities",
              "Paste URLs or IDs",
              "Top cities in a country",
              "Dated availability",
              "Room and rate plans",
              "Reviews"
            ],
            "default": "search",
            "prefill": "search"
          },
          "searchQueries": {
            "title": "Cities or destinations",
            "type": "array",
            "description": "City or destination names for search, availability, rooms and reviews. Example: London, Paris, Bangkok.",
            "editor": "stringList",
            "default": [],
            "prefill": [
              "London"
            ]
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Country names for topCities, or to expand a search when no city is given. Example: England, Thailand, Portugal.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "propertyUrls": {
            "title": "Property, city or search URLs",
            "type": "array",
            "description": "Hostelworld property, city or search URLs. Property URLs and IDs take priority over city queries in availability, rooms and reviews.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "propertyIds": {
            "title": "Property IDs",
            "type": "array",
            "description": "Numeric Hostelworld property IDs, for example 88047.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "dateFrom": {
            "title": "Check-in date",
            "type": "string",
            "description": "Check-in date in YYYY-MM-DD format. Required for room rows; optional for dated prices elsewhere.",
            "editor": "datepicker"
          },
          "dateTo": {
            "title": "Check-out date",
            "type": "string",
            "description": "Check-out date in YYYY-MM-DD format. Nights are derived; maximum stay is 30 nights.",
            "editor": "datepicker"
          },
          "daysAhead": {
            "title": "Days ahead",
            "type": "integer",
            "description": "Alternative to dateFrom for schedules: check in this many days from today.",
            "minimum": 0,
            "maximum": 365
          },
          "numNights": {
            "title": "Nights",
            "type": "integer",
            "description": "Stay length when only dateFrom or daysAhead is set.",
            "minimum": 1,
            "maximum": 30,
            "default": 2,
            "prefill": 2
          },
          "guests": {
            "title": "Guests",
            "type": "integer",
            "description": "Party size used for availability and room prices.",
            "minimum": 1,
            "maximum": 20,
            "default": 2,
            "prefill": 2
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Currency for every price field. Property-native price ranges are also returned in propertyPrices.",
            "editor": "select",
            "enum": [
              "EUR",
              "USD",
              "GBP",
              "AUD",
              "CAD",
              "NZD",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "CZK",
              "HUF",
              "RON",
              "BGN",
              "HRK",
              "TRY",
              "RUB",
              "UAH",
              "ILS",
              "AED",
              "SAR",
              "QAR",
              "KWD",
              "BHD",
              "OMR",
              "JOD",
              "EGP",
              "ZAR",
              "KES",
              "TZS",
              "UGX",
              "RWF",
              "NAD",
              "SZL",
              "MAD",
              "TND",
              "MUR",
              "INR",
              "PKR",
              "BDT",
              "LKR",
              "NPR",
              "CNY",
              "HKD",
              "TWD",
              "JPY",
              "KRW",
              "SGD",
              "MYR",
              "THB",
              "IDR",
              "PHP",
              "VND",
              "KHR",
              "LAK",
              "MMK",
              "MNT",
              "KZT",
              "GEL",
              "AMD",
              "AZN",
              "MXN",
              "BRL",
              "ARS",
              "CLP",
              "COP",
              "PEN",
              "BOB",
              "PYG",
              "UYU",
              "CRC",
              "GTQ",
              "HNL",
              "NIO",
              "DOP",
              "BSD",
              "BZD",
              "XCD",
              "FJD",
              "PGK",
              "WST",
              "TOP",
              "VUV"
            ],
            "enumTitles": [
              "EUR - Euro",
              "USD - US Dollar",
              "GBP - British Pound",
              "AUD - Australian Dollar",
              "CAD - Canadian Dollar",
              "NZD - New Zealand Dollar",
              "CHF - Swiss Franc",
              "SEK - Swedish Krona",
              "NOK - Norwegian Krone",
              "DKK - Danish Krone",
              "PLN - Polish Zloty",
              "CZK - Czech Koruna",
              "HUF - Hungarian Forint",
              "RON - Romanian Leu",
              "BGN - Bulgarian Lev",
              "HRK - Croatian Kuna",
              "TRY - Turkish Lira",
              "RUB - Russian Ruble",
              "UAH - Ukrainian Hryvnia",
              "ILS - Israeli Shekel",
              "AED - UAE Dirham",
              "SAR - Saudi Riyal",
              "QAR - Qatari Riyal",
              "KWD - Kuwaiti Dinar",
              "BHD - Bahraini Dinar",
              "OMR - Omani Rial",
              "JOD - Jordanian Dinar",
              "EGP - Egyptian Pound",
              "ZAR - South African Rand",
              "KES - Kenyan Shilling",
              "TZS - Tanzanian Shilling",
              "UGX - Ugandan Shilling",
              "RWF - Rwandan Franc",
              "NAD - Namibian Dollar",
              "SZL - Swazi Lilangeni",
              "MAD - Moroccan Dirham",
              "TND - Tunisian Dinar",
              "MUR - Mauritian Rupee",
              "INR - Indian Rupee",
              "PKR - Pakistani Rupee",
              "BDT - Bangladeshi Taka",
              "LKR - Sri Lankan Rupee",
              "NPR - Nepalese Rupee",
              "CNY - Chinese Yuan",
              "HKD - Hong Kong Dollar",
              "TWD - New Taiwan Dollar",
              "JPY - Japanese Yen",
              "KRW - South Korean Won",
              "SGD - Singapore Dollar",
              "MYR - Malaysian Ringgit",
              "THB - Thai Baht",
              "IDR - Indonesian Rupiah",
              "PHP - Philippine Peso",
              "VND - Vietnamese Dong",
              "KHR - Cambodian Riel",
              "LAK - Lao Kip",
              "MMK - Myanmar Kyat",
              "MNT - Mongolian Tugrik",
              "KZT - Kazakhstani Tenge",
              "GEL - Georgian Lari",
              "AMD - Armenian Dram",
              "AZN - Azerbaijani Manat",
              "MXN - Mexican Peso",
              "BRL - Brazilian Real",
              "ARS - Argentine Peso",
              "CLP - Chilean Peso",
              "COP - Colombian Peso",
              "PEN - Peruvian Sol",
              "BOB - Bolivian Boliviano",
              "PYG - Paraguayan Guarani",
              "UYU - Uruguayan Peso",
              "CRC - Costa Rican Colon",
              "GTQ - Guatemalan Quetzal",
              "HNL - Honduran Lempira",
              "NIO - Nicaraguan Cordoba",
              "DOP - Dominican Peso",
              "BSD - Bahamian Dollar",
              "BZD - Belize Dollar",
              "XCD - East Caribbean Dollar",
              "FJD - Fijian Dollar",
              "PGK - Papua New Guinean Kina",
              "WST - Samoan Tala",
              "TOP - Tongan Paanga",
              "VUV - Vanuatu Vatu"
            ],
            "default": "EUR",
            "prefill": "EUR"
          },
          "language": {
            "title": "Language",
            "type": "string",
            "description": "Language requested from Hostelworld for descriptions and labels.",
            "editor": "select",
            "enum": [
              "en",
              "de",
              "es",
              "fr",
              "it",
              "nl",
              "pt",
              "pt-br",
              "pl",
              "ru",
              "tr",
              "ja",
              "ko",
              "zh-cn",
              "sv",
              "da",
              "no",
              "fi",
              "cs"
            ],
            "enumTitles": [
              "en - English",
              "de - German",
              "es - Spanish",
              "fr - French",
              "it - Italian",
              "nl - Dutch",
              "pt - Portuguese",
              "pt-br - Portuguese (Brazil)",
              "pl - Polish",
              "ru - Russian",
              "tr - Turkish",
              "ja - Japanese",
              "ko - Korean",
              "zh-cn - Chinese (Simplified)",
              "sv - Swedish",
              "da - Danish",
              "no - Norwegian",
              "fi - Finnish",
              "cs - Czech"
            ],
            "default": "en",
            "prefill": "en"
          },
          "propertyType": {
            "title": "Property type",
            "type": "string",
            "description": "Keep only one accommodation type.",
            "editor": "select",
            "enum": [
              "all",
              "hostel",
              "hotel",
              "guesthouse",
              "apartment",
              "campsite"
            ],
            "enumTitles": [
              "All types",
              "Hostel",
              "Hotel",
              "Guesthouse",
              "Apartment",
              "Campsite"
            ],
            "default": "all",
            "prefill": "all"
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "number",
            "description": "Only properties rated at or above this value on the 0-10 scale.",
            "minimum": 0,
            "maximum": 10
          },
          "minPrice": {
            "title": "Minimum price per night",
            "type": "number",
            "description": "Only properties at or above this nightly price in the selected currency.",
            "minimum": 0,
            "maximum": 10000
          },
          "maxPrice": {
            "title": "Maximum price per night",
            "type": "number",
            "description": "Only properties at or below this nightly price in the selected currency.",
            "minimum": 0,
            "maximum": 10000
          },
          "maxDistanceKm": {
            "title": "Maximum distance from centre (km)",
            "type": "number",
            "description": "Only properties within this many kilometres of the city centre.",
            "minimum": 0,
            "maximum": 50
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Keep only properties offering a free-cancellation rate.",
            "default": false,
            "prefill": false
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Order of hostel rows. Ties are broken by property ID.",
            "editor": "select",
            "enum": [
              "relevance",
              "priceLow",
              "priceHigh",
              "ratingHigh",
              "reviewCount",
              "distance"
            ],
            "enumTitles": [
              "Hostelworld relevance",
              "Price: low to high",
              "Price: high to low",
              "Rating: high to low",
              "Most reviews",
              "Closest to centre"
            ],
            "default": "relevance",
            "prefill": "relevance"
          },
          "includeDetails": {
            "title": "Include full profiles",
            "type": "boolean",
            "description": "Fetch the full profile for every hostel: facilities, policies, images, directions and payment methods. Turn off for the cheapest city listing.",
            "default": true,
            "prefill": false
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Also emit review rows for hostels found in search or byUrl.",
            "default": false,
            "prefill": false
          },
          "reviewsPerProperty": {
            "title": "Reviews per property",
            "type": "integer",
            "description": "Maximum review rows per property for reviews mode or inline reviews.",
            "minimum": 0,
            "maximum": 20000,
            "default": 10,
            "prefill": 10
          },
          "reviewsSort": {
            "title": "Review order",
            "type": "string",
            "description": "Hostelworld review sort order.",
            "editor": "select",
            "enum": [
              "-date",
              "date",
              "rating",
              "-rating"
            ],
            "enumTitles": [
              "Newest first",
              "Oldest first",
              "Highest rating first",
              "Lowest rating first"
            ],
            "default": "-date",
            "prefill": "-date"
          },
          "allLanguages": {
            "title": "All review languages",
            "type": "boolean",
            "description": "Include reviews in every language instead of English only.",
            "default": true,
            "prefill": true
          },
          "sinceDate": {
            "title": "Reviews since",
            "type": "string",
            "description": "Only reviews on or after this date (YYYY-MM-DD). Newest-first searches stop early.",
            "editor": "datepicker"
          },
          "reviewRatingMin": {
            "title": "Review score minimum",
            "type": "integer",
            "description": "Only reviews at or above this score on the 0-100 scale.",
            "minimum": 0,
            "maximum": 100
          },
          "reviewRatingMax": {
            "title": "Review score maximum",
            "type": "integer",
            "description": "Only reviews at or below this score on the 0-100 scale.",
            "minimum": 0,
            "maximum": 100
          },
          "requireReviewText": {
            "title": "Require review text",
            "type": "boolean",
            "description": "Drop score-only reviews without written text.",
            "default": false,
            "prefill": false
          },
          "roomCategory": {
            "title": "Room category",
            "type": "string",
            "description": "Filter room rows to dorms or private rooms.",
            "editor": "select",
            "enum": [
              "all",
              "dorm",
              "private"
            ],
            "enumTitles": [
              "All rooms",
              "Dorms",
              "Private rooms"
            ],
            "default": "all",
            "prefill": "all"
          },
          "maxItems": {
            "title": "Max hostels",
            "type": "integer",
            "description": "Hard cap on hostel rows. Rooms and reviews use their own per-property caps.",
            "minimum": 1,
            "maximum": 5000,
            "default": 50,
            "prefill": 3
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Hostelworld Hostels, Rooms & Reviews Finder Output",
        "description": "One dataset with hostel, room, review and city rows from Hostelworld, including ratings, dated prices, facilities, policies, images and geo data.",
        "properties": {
          "records": {
            "type": "string",
            "title": "Hostelworld records",
            "description": "Dataset of hostel, room, review and city rows; use recordType to tell them apart.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "views": {
            "overview": {
              "title": "Hostels",
              "transformation": {
                "fields": [
                  "recordType",
                  "name",
                  "rating",
                  "pricePerNight",
                  "currencyCode",
                  "city",
                  "country",
                  "checkInDate",
                  "roomName",
                  "reviewDate",
                  "hostelworldUrl"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      },
      "environmentVariables": {},
      "defaultMemoryMbytes": 1024
    },
    "buildNumber": "1.0.2",
    "imageDigest": "945e0ff995f9bf4357255a74ea2c903e61a772532913c332d52617563bfd984d",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.02138111111111111
    }
  }
}