{
  "openapi": "3.0.1",
  "info": {
    "title": "Hostelworld Scraper",
    "description": "[💰 $4/1K listings + $1/1K reviews] Extract Hostelworld hostel listings AND guest reviews in one run — prices, ratings, addresses, coordinates and amenities, plus per-property reviews with reviewer nationality and traveller type. Add check-in dates for room-level availability. Search by city or URL.",
    "version": "1.0",
    "x-build-id": "ZXn50nABsD4Jg2dDy"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/solidcode~hostelworld-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-solidcode-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/solidcode~hostelworld-scraper/runs": {
      "post": {
        "operationId": "runs-sync-solidcode-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/solidcode~hostelworld-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-solidcode-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",
        "properties": {
          "search": {
            "title": "Search",
            "type": "string",
            "description": "City, country, or area to search on Hostelworld (e.g. 'Lisbon', 'hostels in Bangkok', 'Berlin'). Plain language — no URL needed. If you also paste URLs below, the URLs are used instead."
          },
          "startUrls": {
            "title": "Hostelworld URLs",
            "type": "array",
            "description": "Paste Hostelworld URLs to scrape — search-result pages or individual property pages. The actor detects the page type automatically: a search-result page returns that city's listings, and an individual property page returns that one property's full details (plus its reviews, if you turn them on). When provided, these override the destination above.",
            "items": {
              "type": "string"
            }
          },
          "checkIn": {
            "title": "Check-in Date",
            "type": "string",
            "description": "Check-in date in YYYY-MM-DD format. Optional. Leave both dates empty and you get every property in the destination's catalog at Hostelworld's standard nightly prices. Set dates to price a real stay instead: you get live rates, room availability and the per-room breakdown, but only properties still bookable on those nights are returned."
          },
          "checkOut": {
            "title": "Check-out Date",
            "type": "string",
            "description": "Check-out date in YYYY-MM-DD format. Must be after the check-in date. Only used when a check-in date is set."
          },
          "guests": {
            "title": "Guests",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Party size, 1 to 8. This only takes effect when you also set check-in and check-out dates — it then hides properties that can't take a party that size on those nights. It does not change prices, and it has no effect on a dateless catalog run.",
            "default": 2
          },
          "maxResults": {
            "title": "Max Listings",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum number of property listings to return. Set to 0 for all available.",
            "default": 100
          },
          "maxReviewsPerListing": {
            "title": "Reviews per Listing",
            "minimum": 0,
            "type": "integer",
            "description": "How many guest reviews to also collect for each property. Set to 0 to skip reviews and return listings only (cheapest). Each review is returned as its own result and adds to your total — popular hostels can have thousands of reviews, so start small. Capped at 5,000 reviews per property to keep runs bounded.",
            "default": 0
          },
          "sortBy": {
            "title": "Sort Listings By",
            "enum": [
              "popularity",
              "price_low",
              "rating"
            ],
            "type": "string",
            "description": "How Hostelworld should rank the listings.",
            "default": "popularity"
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "AUD",
              "CAD",
              "NZD",
              "JPY",
              "CNY",
              "CHF",
              "SEK",
              "NOK",
              "DKK",
              "PLN",
              "BRL",
              "MXN",
              "INR",
              "SGD",
              "HKD",
              "ZAR",
              "AED",
              "TRY",
              "THB",
              "IDR"
            ],
            "type": "string",
            "description": "Currency used for displayed prices.",
            "default": "USD"
          },
          "language": {
            "title": "Language",
            "enum": [
              "en",
              "es",
              "fr",
              "de",
              "it",
              "pt",
              "nl",
              "pl",
              "ja",
              "ko",
              "zh-CN",
              "ru",
              "sv",
              "da",
              "no",
              "fi",
              "tr"
            ],
            "type": "string",
            "description": "Language for result text such as property descriptions and review text (where Hostelworld provides it).",
            "default": "en"
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}