{
  "data": {
    "id": "qKkfpiPudTr5BblJN",
    "actId": "4WvoVSVYzAS16pZCa",
    "userId": "IYgBDiXtHOijAaUel",
    "startedAt": "2026-11-11T11:09:19.008Z",
    "finishedAt": "2026-11-11T11:09:29.413Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 10323,
      "runTimeSecs": 10.323,
      "computeUnits": 0.01147,
      "imageSizeBytes": 319155712
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "QYo53EZkJk0prePWY",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Booking.com Attractions Scraper Input\",\n  \"description\": \"Choose a mode, a destination (or product URLs/IDs) and optional filters. The actor reads Booking.com's public attractions data with no account, cookies or proxy setup.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"What to fetch. Search lists activities for a destination; productDetails looks up specific products; availability returns time slots; reviews returns guest reviews; destinations lists the city catalogue.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"productDetails\",\n        \"availability\",\n        \"reviews\",\n        \"destinations\"\n      ],\n      \"enumTitles\": [\n        \"Search by destination\",\n        \"Product details by URL or ID\",\n        \"Availability and time slots\",\n        \"Reviews\",\n        \"Destination catalogue\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\"\n    },\n    \"destination\": {\n      \"title\": \"Destination\",\n      \"type\": \"string\",\n      \"description\": \"City to search. Pick a popular destination or choose Custom and enter a city slug and country code below. Used by mode=search.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"fr/paris\",\n        \"gb/london\",\n        \"us/new-york\",\n        \"it/rome\",\n        \"es/barcelona\",\n        \"nl/amsterdam\",\n        \"de/berlin\",\n        \"at/vienna\",\n        \"cz/prague\",\n        \"pt/lisbon\",\n        \"gr/athens\",\n        \"tr/istanbul\",\n        \"ae/dubai\",\n        \"th/bangkok\",\n        \"jp/tokyo\",\n        \"sg/singapore\",\n        \"au/sydney\",\n        \"us/los-angeles\",\n        \"us/san-francisco\",\n        \"us/las-vegas\",\n        \"us/miami\",\n        \"gb/edinburgh\",\n        \"ie/dublin\",\n        \"dk/copenhagen\",\n        \"se/stockholm\",\n        \"hu/budapest\",\n        \"pl/krakow\",\n        \"hr/dubrovnik\",\n        \"eg/cairo\",\n        \"ma/marrakech\",\n        \"custom\"\n      ],\n      \"enumTitles\": [\n        \"Paris, France\",\n        \"London, UK\",\n        \"New York, USA\",\n        \"Rome, Italy\",\n        \"Barcelona, Spain\",\n        \"Amsterdam, Netherlands\",\n        \"Berlin, Germany\",\n        \"Vienna, Austria\",\n        \"Prague, Czech Republic\",\n        \"Lisbon, Portugal\",\n        \"Athens, Greece\",\n        \"Istanbul, Turkey\",\n        \"Dubai, UAE\",\n        \"Bangkok, Thailand\",\n        \"Tokyo, Japan\",\n        \"Singapore\",\n        \"Sydney, Australia\",\n        \"Los Angeles, USA\",\n        \"San Francisco, USA\",\n        \"Las Vegas, USA\",\n        \"Miami, USA\",\n        \"Edinburgh, UK\",\n        \"Dublin, Ireland\",\n        \"Copenhagen, Denmark\",\n        \"Stockholm, Sweden\",\n        \"Budapest, Hungary\",\n        \"Krakow, Poland\",\n        \"Dubrovnik, Croatia\",\n        \"Cairo, Egypt\",\n        \"Marrakesh, Morocco\",\n        \"Custom (enter city and country below)\"\n      ],\n      \"prefill\": \"fr/paris\",\n      \"sectionCaption\": \"Destination\",\n      \"sectionDescription\": \"A destination is required for mode=search. Product modes use productIds or productUrls instead.\"\n    },\n    \"customCity\": {\n      \"title\": \"Custom city\",\n      \"type\": \"string\",\n      \"description\": \"City name or Booking.com city slug (e.g. 'kuala-lumpur', 'Porto'). Used when destination=custom.\",\n      \"editor\": \"textfield\"\n    },\n    \"customCountry\": {\n      \"title\": \"Custom country\",\n      \"type\": \"string\",\n      \"description\": \"Two-letter country code or country name (e.g. 'my', 'Portugal'). Used when destination=custom.\",\n      \"editor\": \"textfield\"\n    },\n    \"query\": {\n      \"title\": \"Search query\",\n      \"type\": \"string\",\n      \"description\": \"Optional free-text search inside the destination, e.g. 'Eiffel', 'Louvre', 'food tour' (mode=search).\",\n      \"editor\": \"textfield\",\n      \"sectionCaption\": \"Filters\",\n      \"sectionDescription\": \"Server-side filters narrow the result set. Category, price and minimum review count are verified after fetch for accuracy.\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Result order (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"trending\",\n        \"lowest_price\",\n        \"highest_weighted_rating\"\n      ],\n      \"enumTitles\": [\n        \"Trending (top picks)\",\n        \"Lowest price first\",\n        \"Best reviewed first\"\n      ],\n      \"default\": \"trending\",\n      \"prefill\": \"trending\"\n    },\n    \"minRating\": {\n      \"title\": \"Minimum rating\",\n      \"type\": \"string\",\n      \"description\": \"Minimum guest rating on Booking.com's 5-point scale (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"4.5\",\n        \"4.0\",\n        \"3.5\",\n        \"3.0\"\n      ],\n      \"enumTitles\": [\n        \"Any rating\",\n        \"4.5 and up\",\n        \"4.0 and up\",\n        \"3.5 and up\",\n        \"3.0 and up\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"freeCancellationOnly\": {\n      \"title\": \"Free cancellation only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only activities with free cancellation (mode=search).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"skipTheLineOnly\": {\n      \"title\": \"Skip-the-line only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only activities labelled skip the line (mode=search).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"wheelchairAccessibleOnly\": {\n      \"title\": \"Wheelchair accessible only\",\n      \"type\": \"boolean\",\n      \"description\": \"Keep only activities labelled wheelchair accessible (mode=search).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"timeOfDay\": {\n      \"title\": \"Time of day\",\n      \"type\": \"string\",\n      \"description\": \"Filter by start time (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"morning\",\n        \"afternoon\",\n        \"evening\"\n      ],\n      \"enumTitles\": [\n        \"Any time\",\n        \"Morning (before 12:00)\",\n        \"Afternoon (12:00-18:00)\",\n        \"Evening and night (after 18:00)\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"guideLanguage\": {\n      \"title\": \"Guide language\",\n      \"type\": \"string\",\n      \"description\": \"Keep activities available with a guide in this language (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"en\",\n        \"fr\",\n        \"es\",\n        \"it\",\n        \"de\",\n        \"ru\",\n        \"pt\",\n        \"ja\",\n        \"ar\",\n        \"nl\"\n      ],\n      \"enumTitles\": [\n        \"Any language\",\n        \"English\",\n        \"French\",\n        \"Spanish\",\n        \"Italian\",\n        \"German\",\n        \"Russian\",\n        \"Portuguese\",\n        \"Japanese\",\n        \"Arabic\",\n        \"Dutch\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"category\": {\n      \"title\": \"Category\",\n      \"type\": \"string\",\n      \"description\": \"Keep activities in this category. Applied after fetch and verified against each product's own categories (mode=search).\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"\",\n        \"Tours\",\n        \"Museums\",\n        \"Nature & outdoor\",\n        \"Entertainment & tickets\",\n        \"Food & drink\",\n        \"Services & rentals\"\n      ],\n      \"enumTitles\": [\n        \"Any category\",\n        \"Tours\",\n        \"Museums, arts & culture\",\n        \"Nature & outdoor\",\n        \"Entertainment & tickets\",\n        \"Food & drink\",\n        \"Services & rentals\"\n      ],\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"minPrice\": {\n      \"title\": \"Minimum price\",\n      \"type\": \"number\",\n      \"description\": \"Keep activities at or above this representative price (mode=search).\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"maxPrice\": {\n      \"title\": \"Maximum price\",\n      \"type\": \"number\",\n      \"description\": \"Keep activities at or below this representative price (mode=search).\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"minReviews\": {\n      \"title\": \"Minimum review count\",\n      \"type\": \"integer\",\n      \"description\": \"Keep activities with at least this many guest reviews (mode=search).\",\n      \"minimum\": 0,\n      \"maximum\": 1000000\n    },\n    \"startDate\": {\n      \"title\": \"Start date\",\n      \"type\": \"string\",\n      \"description\": \"Optional availability window start in YYYY-MM-DD format (mode=search or availability).\",\n      \"editor\": \"textfield\"\n    },\n    \"endDate\": {\n      \"title\": \"End date\",\n      \"type\": \"string\",\n      \"description\": \"Optional availability window end in YYYY-MM-DD format (mode=search or availability).\",\n      \"editor\": \"textfield\"\n    },\n    \"productIds\": {\n      \"title\": \"Product IDs or URLs\",\n      \"type\": \"array\",\n      \"description\": \"Booking.com attraction IDs (e.g. 'PRe4kSVWXdrD') or product URLs. Used by productDetails, availability and reviews modes.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": [],\n      \"sectionCaption\": \"Product modes\",\n      \"sectionDescription\": \"Use productIds or productUrls for productDetails, availability and reviews. A destination is not required for these modes.\"\n    },\n    \"productUrls\": {\n      \"title\": \"Product URLs\",\n      \"type\": \"array\",\n      \"description\": \"One or more Booking.com attraction product URLs. Used by productDetails, availability and reviews modes.\",\n      \"editor\": \"requestListSources\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"url\": {\n            \"type\": \"string\",\n            \"title\": \"Product URL\",\n            \"description\": \"A public Booking.com attraction product URL.\"\n          }\n        }\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"availabilityDate\": {\n      \"title\": \"Availability date\",\n      \"type\": \"string\",\n      \"description\": \"Date for time-slot availability in YYYY-MM-DD format. Defaults to tomorrow (mode=availability or includeAvailability).\",\n      \"editor\": \"textfield\"\n    },\n    \"includeCalendar\": {\n      \"title\": \"Include availability calendar\",\n      \"type\": \"boolean\",\n      \"description\": \"Also fetch available dates and cheapest-price groups for the startDate/endDate range (mode=availability or productDetails).\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeReviews\": {\n      \"title\": \"Include reviews\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch guest reviews for each product. Adds one or more requests per product.\",\n      \"default\": false,\n      \"prefill\": false,\n      \"sectionCaption\": \"Enrichment and output\",\n      \"sectionDescription\": \"Optional enrichments add requests per product. The daily prefill keeps them off.\"\n    },\n    \"reviewSortBy\": {\n      \"title\": \"Review sort\",\n      \"type\": \"string\",\n      \"description\": \"Review order when includeReviews or mode=reviews is active.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"most_relevant\",\n        \"newest\",\n        \"oldest\",\n        \"highest_rating\",\n        \"lowest_rating\"\n      ],\n      \"enumTitles\": [\n        \"Most relevant\",\n        \"Newest first\",\n        \"Oldest first\",\n        \"Highest rating\",\n        \"Lowest rating\"\n      ],\n      \"default\": \"most_relevant\",\n      \"prefill\": \"most_relevant\"\n    },\n    \"maxReviewsPerProduct\": {\n      \"title\": \"Max reviews per product\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum guest reviews to include per product.\",\n      \"default\": 10,\n      \"minimum\": 1,\n      \"maximum\": 50,\n      \"prefill\": 10\n    },\n    \"includeAvailability\": {\n      \"title\": \"Include availability\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch time slots for each product in search or product modes. Adds one request per product.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"includeDetails\": {\n      \"title\": \"Include full product details\",\n      \"type\": \"boolean\",\n      \"description\": \"Fetch the full product record (all photos, inclusions, accessibility, additional info) for each search result. Adds one request per product.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"maxResults\": {\n      \"title\": \"Maximum results\",\n      \"type\": \"integer\",\n      \"description\": \"Maximum records to return (attractions, products, reviews products or destinations depending on mode).\",\n      \"default\": 50,\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"prefill\": 3\n    },\n    \"language\": {\n      \"title\": \"Content language\",\n      \"type\": \"string\",\n      \"description\": \"Language for names and descriptions. Prices use the selected currency.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"en\",\n        \"fr\",\n        \"de\",\n        \"es\",\n        \"it\",\n        \"pt\",\n        \"nl\",\n        \"ru\",\n        \"ja\",\n        \"ar\"\n      ],\n      \"enumTitles\": [\n        \"English\",\n        \"French\",\n        \"German\",\n        \"Spanish\",\n        \"Italian\",\n        \"Portuguese\",\n        \"Dutch\",\n        \"Russian\",\n        \"Japanese\",\n        \"Arabic\"\n      ],\n      \"default\": \"en\",\n      \"prefill\": \"en\"\n    },\n    \"currency\": {\n      \"title\": \"Currency\",\n      \"type\": \"string\",\n      \"description\": \"Currency for representative prices.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"EUR\",\n        \"USD\",\n        \"GBP\",\n        \"CHF\",\n        \"SEK\",\n        \"DKK\",\n        \"NOK\",\n        \"PLN\",\n        \"CZK\",\n        \"HUF\",\n        \"TRY\",\n        \"AED\",\n        \"AUD\",\n        \"CAD\",\n        \"JPY\",\n        \"SGD\",\n        \"THB\",\n        \"BRL\",\n        \"MYR\",\n        \"INR\"\n      ],\n      \"enumTitles\": [\n        \"Euro\",\n        \"US dollar\",\n        \"British pound\",\n        \"Swiss franc\",\n        \"Swedish krona\",\n        \"Danish krone\",\n        \"Norwegian krone\",\n        \"Polish zloty\",\n        \"Czech koruna\",\n        \"Hungarian forint\",\n        \"Turkish lira\",\n        \"UAE dirham\",\n        \"Australian dollar\",\n        \"Canadian dollar\",\n        \"Japanese yen\",\n        \"Singapore dollar\",\n        \"Thai baht\",\n        \"Brazilian real\",\n        \"Malaysian ringgit\",\n        \"Indian rupee\"\n      ],\n      \"default\": \"EUR\",\n      \"prefill\": \"EUR\"\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Booking.com Things-to-Do Price & Rating Snapshot\n\nTurn a destination into a clean table of bookable tours, tickets and activities: price, currency, rating on both Booking's 5-point scale and a familiar 0–10 scale, review counts, duration, cancellation policy, categories, photos and addresses. Search any city, or paste product URLs/IDs to pull one record per activity.\n\nNo account, no cookies and no proxy setup are needed. The actor reads Booking.com's public attractions data directly and returns one JSON record per activity.\n\n## What this actor does\n\n- **Five modes** - search a destination, fetch product details, check availability, read reviews, or list the destination catalogue\n- **Any destination** - 30 popular cities plus custom city/country input\n- **Prices and ratings** - public and discounted prices, Booking's 0-5 rating plus a 0-10 compatibility field, and review counts\n- **Activity detail** - duration, cancellation policy, categories, photos, addresses, guide languages, inclusions and supplier\n- **Filters** - rating, free cancellation, skip-the-line, wheelchair access, time of day, guide language, category, price and review count\n- **Optional enrichment** - reviews, availability calendars and full product details\n- **Empty fields are omitted** - never `null`, blank or placeholder values\n\n## Modes\n\n| Mode | What it returns |\n|---|---|\n| `search` | Activities for a destination, with optional filters and pagination (default) |\n| `productDetails` | Full records for specific product IDs or URLs |\n| `availability` | Time slots for one date, plus an optional available-dates calendar |\n| `reviews` | Guest reviews for specific products, with sorting and a per-product cap |\n| `destinations` | The Booking.com city catalogue with ufi, country and product count |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `search` | One of the five modes above |\n| `destination` | select | `fr/paris` | 30 popular cities or `custom` |\n| `customCity` | text | – | City name or slug, e.g. `kuala-lumpur` |\n| `customCountry` | text | – | Two-letter code or country name, e.g. `my` |\n| `query` | text | – | Free-text search inside the destination |\n| `sortBy` | select | `trending` | `trending`, `lowest_price`, `highest_weighted_rating` |\n| `minRating` | select | any | `4.5`, `4.0`, `3.5` or `3.0` on Booking's 5-point scale |\n| `freeCancellationOnly` | boolean | false | Keep free-cancellation activities |\n| `skipTheLineOnly` | boolean | false | Keep skip-the-line activities |\n| `wheelchairAccessibleOnly` | boolean | false | Keep wheelchair-accessible activities |\n| `timeOfDay` | select | any | Morning, afternoon or evening start |\n| `guideLanguage` | select | any | Guide language filter |\n| `category` | select | any | Tours, museums, nature, entertainment, food, services |\n| `minPrice` / `maxPrice` | number | – | Representative-price bounds |\n| `minReviews` | integer | – | Minimum guest-review count |\n| `startDate` / `endDate` | text | – | Availability window in `YYYY-MM-DD` |\n| `productIds` | string list | `[]` | Booking product IDs or product URLs |\n| `productUrls` | URL list | `[]` | Product URLs (merged with `productIds`) |\n| `availabilityDate` | text | tomorrow | Date for `availability` mode |\n| `includeCalendar` | boolean | false | Fetch available dates and cheapest-price groups |\n| `includeReviews` | boolean | false | Attach reviews to each product |\n| `reviewSortBy` | select | `most_relevant` | Review order |\n| `maxReviewsPerProduct` | integer | 10 | 1–50 |\n| `includeAvailability` | boolean | false | Attach time slots to each product |\n| `includeDetails` | boolean | false | Fetch full details (all photos, inclusions, accessibility) per search result |\n| `maxResults` | integer | 50 | 1–1,000; the daily prefill uses 3 |\n| `language` | select | `en` | Content language for names and descriptions |\n| `currency` | select | `EUR` | Currency for representative prices |\n\n### Examples\n\nSmallest daily run:\n\n```json\n{ \"destination\": \"fr/paris\", \"maxResults\": 3 }\n```\n\nFiltered city search:\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"it/rome\",\n  \"minRating\": \"4.5\",\n  \"freeCancellationOnly\": true,\n  \"sortBy\": \"lowest_price\",\n  \"maxResults\": 40\n}\n```\n\nCustom city:\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"custom\",\n  \"customCity\": \"kuala-lumpur\",\n  \"customCountry\": \"my\",\n  \"maxResults\": 20\n}\n```\n\nProduct details by URL or ID:\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productIds\": [\n    \"PRe4kSVWXdrD\",\n    \"https://www.booking.com/attractions/fr/pre4ksvwxdrd-seine-river-sightseeing-cruise.html\"\n  ]\n}\n```\n\nAvailability for one date, plus the calendar:\n\n```json\n{\n  \"mode\": \"availability\",\n  \"productIds\": [\"PRe4kSVWXdrD\"],\n  \"availabilityDate\": \"2026-12-15\",\n  \"startDate\": \"2026-12-01\",\n  \"endDate\": \"2026-12-31\",\n  \"includeCalendar\": true\n}\n```\n\n## Output per record type\n\nEvery record includes the fields the source provides; empty values are omitted, never sentinel-filled.\n\n- Identity: `recordType`, `id`, `name`, `slug`, `url`, `sourceUrl`, `city`, `cityName`, `destinationUfi`, `destinationName`, `destinationCountry`\n- Price: `price`, `currency`, `pricePublicAmount`, `priceDiscountAmount`, `priceDiscountPercentage`\n- Ratings: `rating` (0–10), `ratingOutOf5`, `ratingScale`, `reviewCount`, `reviewCountAll`, `photosCount`, `ratingCategoryBreakdown`\n- Duration: `duration`, `durationValue`, `durationMin`, `durationMax`\n- Policy: `freeCancellation`, `cancellationPolicy`, `availableFrom`, `bookingWindowDays`, `isBookable`\n- Taxonomy: `type`, `categories`, `tags`, `labels`, `primaryLabel`, `flags`, `highlights`, `itinerary`\n- Copy: `shortDescription`, `description`, `additionalInfo`; `whatsIncluded`, `notIncluded`, `uniqueSellingPoints` and `accessibility` are lists\n- Languages: `guideLanguages`, `audioLanguages`\n- Media: `photoUrl`, `photoCaption`, `photos`\n- Location: `address`, `countryCode`, `countryName`, `postalCode`, `latitude`, `longitude`, `locationType`, `locationInstructions`, `departurePoint`, `meetingPoint`\n- Commerce: `supplier`, `externalSellerUrl`, `poweredBy`, `operatedBy`, `timeZone`\n- Optional: `reviews`, `reviewSummary`, `timeSlots`, `availabilityDate`, `availableDates`, `cheapestPrices`\n- `scrapedAt`\n\n**Rating scales:** Booking's attractions API reports 0–5. This actor keeps the original `rating` field at 0–10 for compatibility, and also emits `ratingOutOf5` and `ratingScale`, so you can use either without guessing.\n\n## Use cases\n\n- **Travel planning** - compare tours, tickets and activities across a destination\n- **Price monitoring** - track public and discounted activity prices over time\n- **Market research** - map a city's attraction supply, categories and ratings\n- **Review analysis** - export guest reviews for sentiment and complaint research\n- **Availability checks** - inspect time slots and calendars for specific dates\n\n## FAQ\n\n**Do I need a Booking.com account?**\nNo. The actor reads public listing data and needs no login, cookie or API key.\n\n**Do I need a proxy?**\nNo. It connects directly and switches to a working connection automatically only if one is needed. No proxy setup is required.\n\n**Can I use any city?**\nYes. Pick one of the 30 popular cities or set `destination` to `custom` and enter a city name and country. Cities with no attractions inventory return a clean empty result with a status message.\n\n**Why are some fields missing on a record?**\nBooking.com does not publish every detail for every activity. The actor omits fields the source does not have instead of writing `0`, `\"N/A\"` or an empty string.\n\n**Why is `category` applied after fetching?**\nBooking's category parameter is broader than its own product taxonomy. The actor fetches the page, then verifies each product's own type/categories/tags, so a category filter is accurate rather than approximate.\n\n**How many results can I get?**\n`maxResults` supports up to 1,000. The source may have thousands of activities in a large city; the status message reports when the cap was reached.\n\n**How fresh is the data?**\nEach run reads Booking.com live, so prices, ratings and availability reflect the request time.\n\n**Is this affiliated with Booking.com?**\nNo. This is an independent third-party actor that reads publicly available Booking.com pages and data. It is not affiliated with or endorsed by Booking.com.\n\n## Data source and limitations\n\nThe actor reads Booking.com's public attractions listing, product, review, availability and destination endpoints. There is no official free public API for this data; the official Booking.com Demand API is partner-only and requires credentials. This actor uses the same public web data a browser sees, with no account.\n\nKnown limits:\n\n- Availability and review enrichment add one or more requests per product; they are off by default and off in the daily prefill.\n- Category, price and minimum-review filters are verified after fetch because the source's server-side parameters are not strict.\n- Some activities have no rating, duration or cancellation data because the source does not publish it.\n- Availability is date-specific. A product with no time slots on the requested date may still be bookable on another date; use the calendar fields to see available dates.\n- Large city catalogues can exceed 1,000 activities; raise `maxResults` or partition by category, date or price.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "booking-com-things-to-do-price-and-rating-snapshot",
      "title": "Booking.com Things-to-Do Price & Rating Snapshot",
      "description": "Get Booking.com tours, tickets and activities for a destination with price, rating, reviews, duration, cancellation, categories, photos and optional availability or reviews. Search any city or look up product URLs and IDs.",
      "version": "1.1",
      "input": {
        "title": "Booking.com Attractions Scraper Input",
        "description": "Choose a mode, a destination (or product URLs/IDs) and optional filters. The actor reads Booking.com's public attractions data with no account, cookies or proxy setup.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "What to fetch. Search lists activities for a destination; productDetails looks up specific products; availability returns time slots; reviews returns guest reviews; destinations lists the city catalogue.",
            "editor": "select",
            "enum": [
              "search",
              "productDetails",
              "availability",
              "reviews",
              "destinations"
            ],
            "enumTitles": [
              "Search by destination",
              "Product details by URL or ID",
              "Availability and time slots",
              "Reviews",
              "Destination catalogue"
            ],
            "default": "search",
            "prefill": "search"
          },
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "City to search. Pick a popular destination or choose Custom and enter a city slug and country code below. Used by mode=search.",
            "editor": "select",
            "enum": [
              "fr/paris",
              "gb/london",
              "us/new-york",
              "it/rome",
              "es/barcelona",
              "nl/amsterdam",
              "de/berlin",
              "at/vienna",
              "cz/prague",
              "pt/lisbon",
              "gr/athens",
              "tr/istanbul",
              "ae/dubai",
              "th/bangkok",
              "jp/tokyo",
              "sg/singapore",
              "au/sydney",
              "us/los-angeles",
              "us/san-francisco",
              "us/las-vegas",
              "us/miami",
              "gb/edinburgh",
              "ie/dublin",
              "dk/copenhagen",
              "se/stockholm",
              "hu/budapest",
              "pl/krakow",
              "hr/dubrovnik",
              "eg/cairo",
              "ma/marrakech",
              "custom"
            ],
            "enumTitles": [
              "Paris, France",
              "London, UK",
              "New York, USA",
              "Rome, Italy",
              "Barcelona, Spain",
              "Amsterdam, Netherlands",
              "Berlin, Germany",
              "Vienna, Austria",
              "Prague, Czech Republic",
              "Lisbon, Portugal",
              "Athens, Greece",
              "Istanbul, Turkey",
              "Dubai, UAE",
              "Bangkok, Thailand",
              "Tokyo, Japan",
              "Singapore",
              "Sydney, Australia",
              "Los Angeles, USA",
              "San Francisco, USA",
              "Las Vegas, USA",
              "Miami, USA",
              "Edinburgh, UK",
              "Dublin, Ireland",
              "Copenhagen, Denmark",
              "Stockholm, Sweden",
              "Budapest, Hungary",
              "Krakow, Poland",
              "Dubrovnik, Croatia",
              "Cairo, Egypt",
              "Marrakesh, Morocco",
              "Custom (enter city and country below)"
            ],
            "prefill": "fr/paris",
            "sectionCaption": "Destination",
            "sectionDescription": "A destination is required for mode=search. Product modes use productIds or productUrls instead."
          },
          "customCity": {
            "title": "Custom city",
            "type": "string",
            "description": "City name or Booking.com city slug (e.g. 'kuala-lumpur', 'Porto'). Used when destination=custom.",
            "editor": "textfield"
          },
          "customCountry": {
            "title": "Custom country",
            "type": "string",
            "description": "Two-letter country code or country name (e.g. 'my', 'Portugal'). Used when destination=custom.",
            "editor": "textfield"
          },
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Optional free-text search inside the destination, e.g. 'Eiffel', 'Louvre', 'food tour' (mode=search).",
            "editor": "textfield",
            "sectionCaption": "Filters",
            "sectionDescription": "Server-side filters narrow the result set. Category, price and minimum review count are verified after fetch for accuracy."
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Result order (mode=search).",
            "editor": "select",
            "enum": [
              "trending",
              "lowest_price",
              "highest_weighted_rating"
            ],
            "enumTitles": [
              "Trending (top picks)",
              "Lowest price first",
              "Best reviewed first"
            ],
            "default": "trending",
            "prefill": "trending"
          },
          "minRating": {
            "title": "Minimum rating",
            "type": "string",
            "description": "Minimum guest rating on Booking.com's 5-point scale (mode=search).",
            "editor": "select",
            "enum": [
              "",
              "4.5",
              "4.0",
              "3.5",
              "3.0"
            ],
            "enumTitles": [
              "Any rating",
              "4.5 and up",
              "4.0 and up",
              "3.5 and up",
              "3.0 and up"
            ],
            "default": "",
            "prefill": ""
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Keep only activities with free cancellation (mode=search).",
            "default": false,
            "prefill": false
          },
          "skipTheLineOnly": {
            "title": "Skip-the-line only",
            "type": "boolean",
            "description": "Keep only activities labelled skip the line (mode=search).",
            "default": false,
            "prefill": false
          },
          "wheelchairAccessibleOnly": {
            "title": "Wheelchair accessible only",
            "type": "boolean",
            "description": "Keep only activities labelled wheelchair accessible (mode=search).",
            "default": false,
            "prefill": false
          },
          "timeOfDay": {
            "title": "Time of day",
            "type": "string",
            "description": "Filter by start time (mode=search).",
            "editor": "select",
            "enum": [
              "",
              "morning",
              "afternoon",
              "evening"
            ],
            "enumTitles": [
              "Any time",
              "Morning (before 12:00)",
              "Afternoon (12:00-18:00)",
              "Evening and night (after 18:00)"
            ],
            "default": "",
            "prefill": ""
          },
          "guideLanguage": {
            "title": "Guide language",
            "type": "string",
            "description": "Keep activities available with a guide in this language (mode=search).",
            "editor": "select",
            "enum": [
              "",
              "en",
              "fr",
              "es",
              "it",
              "de",
              "ru",
              "pt",
              "ja",
              "ar",
              "nl"
            ],
            "enumTitles": [
              "Any language",
              "English",
              "French",
              "Spanish",
              "Italian",
              "German",
              "Russian",
              "Portuguese",
              "Japanese",
              "Arabic",
              "Dutch"
            ],
            "default": "",
            "prefill": ""
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Keep activities in this category. Applied after fetch and verified against each product's own categories (mode=search).",
            "editor": "select",
            "enum": [
              "",
              "Tours",
              "Museums",
              "Nature & outdoor",
              "Entertainment & tickets",
              "Food & drink",
              "Services & rentals"
            ],
            "enumTitles": [
              "Any category",
              "Tours",
              "Museums, arts & culture",
              "Nature & outdoor",
              "Entertainment & tickets",
              "Food & drink",
              "Services & rentals"
            ],
            "default": "",
            "prefill": ""
          },
          "minPrice": {
            "title": "Minimum price",
            "type": "number",
            "description": "Keep activities at or above this representative price (mode=search).",
            "minimum": 0,
            "maximum": 100000
          },
          "maxPrice": {
            "title": "Maximum price",
            "type": "number",
            "description": "Keep activities at or below this representative price (mode=search).",
            "minimum": 0,
            "maximum": 100000
          },
          "minReviews": {
            "title": "Minimum review count",
            "type": "integer",
            "description": "Keep activities with at least this many guest reviews (mode=search).",
            "minimum": 0,
            "maximum": 1000000
          },
          "startDate": {
            "title": "Start date",
            "type": "string",
            "description": "Optional availability window start in YYYY-MM-DD format (mode=search or availability).",
            "editor": "textfield"
          },
          "endDate": {
            "title": "End date",
            "type": "string",
            "description": "Optional availability window end in YYYY-MM-DD format (mode=search or availability).",
            "editor": "textfield"
          },
          "productIds": {
            "title": "Product IDs or URLs",
            "type": "array",
            "description": "Booking.com attraction IDs (e.g. 'PRe4kSVWXdrD') or product URLs. Used by productDetails, availability and reviews modes.",
            "editor": "stringList",
            "default": [],
            "prefill": [],
            "sectionCaption": "Product modes",
            "sectionDescription": "Use productIds or productUrls for productDetails, availability and reviews. A destination is not required for these modes."
          },
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "One or more Booking.com attraction product URLs. Used by productDetails, availability and reviews modes.",
            "editor": "requestListSources",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "title": "Product URL",
                  "description": "A public Booking.com attraction product URL."
                }
              }
            },
            "default": [],
            "prefill": []
          },
          "availabilityDate": {
            "title": "Availability date",
            "type": "string",
            "description": "Date for time-slot availability in YYYY-MM-DD format. Defaults to tomorrow (mode=availability or includeAvailability).",
            "editor": "textfield"
          },
          "includeCalendar": {
            "title": "Include availability calendar",
            "type": "boolean",
            "description": "Also fetch available dates and cheapest-price groups for the startDate/endDate range (mode=availability or productDetails).",
            "default": false,
            "prefill": false
          },
          "includeReviews": {
            "title": "Include reviews",
            "type": "boolean",
            "description": "Fetch guest reviews for each product. Adds one or more requests per product.",
            "default": false,
            "prefill": false,
            "sectionCaption": "Enrichment and output",
            "sectionDescription": "Optional enrichments add requests per product. The daily prefill keeps them off."
          },
          "reviewSortBy": {
            "title": "Review sort",
            "type": "string",
            "description": "Review order when includeReviews or mode=reviews is active.",
            "editor": "select",
            "enum": [
              "most_relevant",
              "newest",
              "oldest",
              "highest_rating",
              "lowest_rating"
            ],
            "enumTitles": [
              "Most relevant",
              "Newest first",
              "Oldest first",
              "Highest rating",
              "Lowest rating"
            ],
            "default": "most_relevant",
            "prefill": "most_relevant"
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "type": "integer",
            "description": "Maximum guest reviews to include per product.",
            "default": 10,
            "minimum": 1,
            "maximum": 50,
            "prefill": 10
          },
          "includeAvailability": {
            "title": "Include availability",
            "type": "boolean",
            "description": "Fetch time slots for each product in search or product modes. Adds one request per product.",
            "default": false,
            "prefill": false
          },
          "includeDetails": {
            "title": "Include full product details",
            "type": "boolean",
            "description": "Fetch the full product record (all photos, inclusions, accessibility, additional info) for each search result. Adds one request per product.",
            "default": false,
            "prefill": false
          },
          "maxResults": {
            "title": "Maximum results",
            "type": "integer",
            "description": "Maximum records to return (attractions, products, reviews products or destinations depending on mode).",
            "default": 50,
            "minimum": 1,
            "maximum": 1000,
            "prefill": 3
          },
          "language": {
            "title": "Content language",
            "type": "string",
            "description": "Language for names and descriptions. Prices use the selected currency.",
            "editor": "select",
            "enum": [
              "en",
              "fr",
              "de",
              "es",
              "it",
              "pt",
              "nl",
              "ru",
              "ja",
              "ar"
            ],
            "enumTitles": [
              "English",
              "French",
              "German",
              "Spanish",
              "Italian",
              "Portuguese",
              "Dutch",
              "Russian",
              "Japanese",
              "Arabic"
            ],
            "default": "en",
            "prefill": "en"
          },
          "currency": {
            "title": "Currency",
            "type": "string",
            "description": "Currency for representative prices.",
            "editor": "select",
            "enum": [
              "EUR",
              "USD",
              "GBP",
              "CHF",
              "SEK",
              "DKK",
              "NOK",
              "PLN",
              "CZK",
              "HUF",
              "TRY",
              "AED",
              "AUD",
              "CAD",
              "JPY",
              "SGD",
              "THB",
              "BRL",
              "MYR",
              "INR"
            ],
            "enumTitles": [
              "Euro",
              "US dollar",
              "British pound",
              "Swiss franc",
              "Swedish krona",
              "Danish krone",
              "Norwegian krone",
              "Polish zloty",
              "Czech koruna",
              "Hungarian forint",
              "Turkish lira",
              "UAE dirham",
              "Australian dollar",
              "Canadian dollar",
              "Japanese yen",
              "Singapore dollar",
              "Thai baht",
              "Brazilian real",
              "Malaysian ringgit",
              "Indian rupee"
            ],
            "default": "EUR",
            "prefill": "EUR"
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Booking.com Things-to-Do Price & Rating Snapshot Output",
        "description": "Booking.com activity records with identity, pricing, ratings, reviews, duration, cancellation policy, categories, photos, addresses and optional availability.",
        "properties": {
          "activities": {
            "type": "string",
            "title": "Booking.com activities",
            "description": "Dataset containing all scraped Booking.com activities.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "readme": "# Booking.com Things-to-Do Price & Rating Snapshot\n\nTurn a destination into a clean table of bookable tours, tickets and activities: price, currency, rating on both Booking's 5-point scale and a familiar 0–10 scale, review counts, duration, cancellation policy, categories, photos and addresses. Search any city, or paste product URLs/IDs to pull one record per activity.\n\nNo account, no cookies and no proxy setup are needed. The actor reads Booking.com's public attractions data directly and returns one JSON record per activity.\n\n## What this actor does\n\n- **Five modes** - search a destination, fetch product details, check availability, read reviews, or list the destination catalogue\n- **Any destination** - 30 popular cities plus custom city/country input\n- **Prices and ratings** - public and discounted prices, Booking's 0-5 rating plus a 0-10 compatibility field, and review counts\n- **Activity detail** - duration, cancellation policy, categories, photos, addresses, guide languages, inclusions and supplier\n- **Filters** - rating, free cancellation, skip-the-line, wheelchair access, time of day, guide language, category, price and review count\n- **Optional enrichment** - reviews, availability calendars and full product details\n- **Empty fields are omitted** - never `null`, blank or placeholder values\n\n## Modes\n\n| Mode | What it returns |\n|---|---|\n| `search` | Activities for a destination, with optional filters and pagination (default) |\n| `productDetails` | Full records for specific product IDs or URLs |\n| `availability` | Time slots for one date, plus an optional available-dates calendar |\n| `reviews` | Guest reviews for specific products, with sorting and a per-product cap |\n| `destinations` | The Booking.com city catalogue with ufi, country and product count |\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | select | `search` | One of the five modes above |\n| `destination` | select | `fr/paris` | 30 popular cities or `custom` |\n| `customCity` | text | – | City name or slug, e.g. `kuala-lumpur` |\n| `customCountry` | text | – | Two-letter code or country name, e.g. `my` |\n| `query` | text | – | Free-text search inside the destination |\n| `sortBy` | select | `trending` | `trending`, `lowest_price`, `highest_weighted_rating` |\n| `minRating` | select | any | `4.5`, `4.0`, `3.5` or `3.0` on Booking's 5-point scale |\n| `freeCancellationOnly` | boolean | false | Keep free-cancellation activities |\n| `skipTheLineOnly` | boolean | false | Keep skip-the-line activities |\n| `wheelchairAccessibleOnly` | boolean | false | Keep wheelchair-accessible activities |\n| `timeOfDay` | select | any | Morning, afternoon or evening start |\n| `guideLanguage` | select | any | Guide language filter |\n| `category` | select | any | Tours, museums, nature, entertainment, food, services |\n| `minPrice` / `maxPrice` | number | – | Representative-price bounds |\n| `minReviews` | integer | – | Minimum guest-review count |\n| `startDate` / `endDate` | text | – | Availability window in `YYYY-MM-DD` |\n| `productIds` | string list | `[]` | Booking product IDs or product URLs |\n| `productUrls` | URL list | `[]` | Product URLs (merged with `productIds`) |\n| `availabilityDate` | text | tomorrow | Date for `availability` mode |\n| `includeCalendar` | boolean | false | Fetch available dates and cheapest-price groups |\n| `includeReviews` | boolean | false | Attach reviews to each product |\n| `reviewSortBy` | select | `most_relevant` | Review order |\n| `maxReviewsPerProduct` | integer | 10 | 1–50 |\n| `includeAvailability` | boolean | false | Attach time slots to each product |\n| `includeDetails` | boolean | false | Fetch full details (all photos, inclusions, accessibility) per search result |\n| `maxResults` | integer | 50 | 1–1,000; the daily prefill uses 3 |\n| `language` | select | `en` | Content language for names and descriptions |\n| `currency` | select | `EUR` | Currency for representative prices |\n\n### Examples\n\nSmallest daily run:\n\n```json\n{ \"destination\": \"fr/paris\", \"maxResults\": 3 }\n```\n\nFiltered city search:\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"it/rome\",\n  \"minRating\": \"4.5\",\n  \"freeCancellationOnly\": true,\n  \"sortBy\": \"lowest_price\",\n  \"maxResults\": 40\n}\n```\n\nCustom city:\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"custom\",\n  \"customCity\": \"kuala-lumpur\",\n  \"customCountry\": \"my\",\n  \"maxResults\": 20\n}\n```\n\nProduct details by URL or ID:\n\n```json\n{\n  \"mode\": \"productDetails\",\n  \"productIds\": [\n    \"PRe4kSVWXdrD\",\n    \"https://www.booking.com/attractions/fr/pre4ksvwxdrd-seine-river-sightseeing-cruise.html\"\n  ]\n}\n```\n\nAvailability for one date, plus the calendar:\n\n```json\n{\n  \"mode\": \"availability\",\n  \"productIds\": [\"PRe4kSVWXdrD\"],\n  \"availabilityDate\": \"2026-12-15\",\n  \"startDate\": \"2026-12-01\",\n  \"endDate\": \"2026-12-31\",\n  \"includeCalendar\": true\n}\n```\n\n## Output per record type\n\nEvery record includes the fields the source provides; empty values are omitted, never sentinel-filled.\n\n- Identity: `recordType`, `id`, `name`, `slug`, `url`, `sourceUrl`, `city`, `cityName`, `destinationUfi`, `destinationName`, `destinationCountry`\n- Price: `price`, `currency`, `pricePublicAmount`, `priceDiscountAmount`, `priceDiscountPercentage`\n- Ratings: `rating` (0–10), `ratingOutOf5`, `ratingScale`, `reviewCount`, `reviewCountAll`, `photosCount`, `ratingCategoryBreakdown`\n- Duration: `duration`, `durationValue`, `durationMin`, `durationMax`\n- Policy: `freeCancellation`, `cancellationPolicy`, `availableFrom`, `bookingWindowDays`, `isBookable`\n- Taxonomy: `type`, `categories`, `tags`, `labels`, `primaryLabel`, `flags`, `highlights`, `itinerary`\n- Copy: `shortDescription`, `description`, `additionalInfo`; `whatsIncluded`, `notIncluded`, `uniqueSellingPoints` and `accessibility` are lists\n- Languages: `guideLanguages`, `audioLanguages`\n- Media: `photoUrl`, `photoCaption`, `photos`\n- Location: `address`, `countryCode`, `countryName`, `postalCode`, `latitude`, `longitude`, `locationType`, `locationInstructions`, `departurePoint`, `meetingPoint`\n- Commerce: `supplier`, `externalSellerUrl`, `poweredBy`, `operatedBy`, `timeZone`\n- Optional: `reviews`, `reviewSummary`, `timeSlots`, `availabilityDate`, `availableDates`, `cheapestPrices`\n- `scrapedAt`\n\n**Rating scales:** Booking's attractions API reports 0–5. This actor keeps the original `rating` field at 0–10 for compatibility, and also emits `ratingOutOf5` and `ratingScale`, so you can use either without guessing.\n\n## Use cases\n\n- **Travel planning** - compare tours, tickets and activities across a destination\n- **Price monitoring** - track public and discounted activity prices over time\n- **Market research** - map a city's attraction supply, categories and ratings\n- **Review analysis** - export guest reviews for sentiment and complaint research\n- **Availability checks** - inspect time slots and calendars for specific dates\n\n## FAQ\n\n**Do I need a Booking.com account?**\nNo. The actor reads public listing data and needs no login, cookie or API key.\n\n**Do I need a proxy?**\nNo. It connects directly and switches to a working connection automatically only if one is needed. No proxy setup is required.\n\n**Can I use any city?**\nYes. Pick one of the 30 popular cities or set `destination` to `custom` and enter a city name and country. Cities with no attractions inventory return a clean empty result with a status message.\n\n**Why are some fields missing on a record?**\nBooking.com does not publish every detail for every activity. The actor omits fields the source does not have instead of writing `0`, `\"N/A\"` or an empty string.\n\n**Why is `category` applied after fetching?**\nBooking's category parameter is broader than its own product taxonomy. The actor fetches the page, then verifies each product's own type/categories/tags, so a category filter is accurate rather than approximate.\n\n**How many results can I get?**\n`maxResults` supports up to 1,000. The source may have thousands of activities in a large city; the status message reports when the cap was reached.\n\n**How fresh is the data?**\nEach run reads Booking.com live, so prices, ratings and availability reflect the request time.\n\n**Is this affiliated with Booking.com?**\nNo. This is an independent third-party actor that reads publicly available Booking.com pages and data. It is not affiliated with or endorsed by Booking.com.\n\n## Data source and limitations\n\nThe actor reads Booking.com's public attractions listing, product, review, availability and destination endpoints. There is no official free public API for this data; the official Booking.com Demand API is partner-only and requires credentials. This actor uses the same public web data a browser sees, with no account.\n\nKnown limits:\n\n- Availability and review enrichment add one or more requests per product; they are off by default and off in the daily prefill.\n- Category, price and minimum-review filters are verified after fetch because the source's server-side parameters are not strict.\n- Some activities have no rating, duration or cancellation data because the source does not publish it.\n- Availability is date-specific. A product with no time slots on the requested date may still be bookable on another date; use the calendar fields to see available dates.\n- Large city catalogues can exceed 1,000 activities; raise `maxResults` or partition by category, date or price.\n",
      "defaultRunOptions": {
        "build": "latest",
        "timeoutSecs": 1800,
        "memoryMbytes": 512
      },
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Booking.com Attractions",
          "fields": {
            "type": "object",
            "properties": {
              "recordType": {
                "type": "string",
                "description": "attraction, destination or review-bearing product"
              },
              "id": {
                "type": "string",
                "description": "Booking.com product ID (PR...) or destination ufi as text"
              },
              "ufi": {
                "type": "integer",
                "description": "Destination ufi (destination records)"
              },
              "name": {
                "type": "string",
                "description": "Attraction or destination name"
              },
              "slug": {
                "type": "string",
                "description": "Booking.com product slug"
              },
              "url": {
                "type": "string",
                "description": "Canonical Booking.com URL"
              },
              "sourceUrl": {
                "type": "string",
                "description": "Canonical source URL"
              },
              "shortDescription": {
                "type": "string"
              },
              "description": {
                "type": "string"
              },
              "additionalInfo": {
                "type": "string"
              },
              "price": {
                "type": "number",
                "description": "Representative (discounted) price"
              },
              "currency": {
                "type": "string",
                "description": "ISO 4217 currency"
              },
              "pricePublicAmount": {
                "type": "number",
                "description": "Public/list price"
              },
              "priceDiscountAmount": {
                "type": "number"
              },
              "priceDiscountPercentage": {
                "type": "number"
              },
              "rating": {
                "type": "number",
                "description": "Guest rating on the legacy 0-10 scale"
              },
              "ratingOutOf5": {
                "type": "number",
                "description": "Guest rating on Booking's 0-5 scale"
              },
              "ratingScale": {
                "type": "string"
              },
              "reviewCount": {
                "type": "integer"
              },
              "reviewCountAll": {
                "type": "integer"
              },
              "photosCount": {
                "type": "integer"
              },
              "ratingCategoryBreakdown": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "duration": {
                "type": "string",
                "description": "Human-readable duration label"
              },
              "durationValue": {
                "type": "string",
                "description": "ISO 8601 duration"
              },
              "durationMin": {
                "description": "Minimum duration if variable"
              },
              "durationMax": {
                "description": "Maximum duration if variable"
              },
              "freeCancellation": {
                "type": "boolean"
              },
              "cancellationPolicy": {
                "type": "object"
              },
              "availableFrom": {
                "type": "string"
              },
              "bookingWindowDays": {
                "type": "integer"
              },
              "isBookable": {
                "type": "boolean"
              },
              "type": {
                "type": "string",
                "description": "Primary taxonomy type"
              },
              "categories": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "tags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "labels": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "primaryLabel": {
                "type": "string"
              },
              "flags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "highlights": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "itinerary": {
                "type": "object"
              },
              "guideLanguages": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "audioLanguages": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "accessibility": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "whatsIncluded": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "notIncluded": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "uniqueSellingPoints": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "restrictions": {
                "type": "string"
              },
              "healthSafety": {
                "type": "string"
              },
              "photoUrl": {
                "type": "string",
                "description": "Primary photo URL"
              },
              "photoCaption": {
                "type": "string"
              },
              "photos": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "address": {
                "type": "string"
              },
              "city": {
                "type": "string",
                "description": "Destination city slug"
              },
              "cityName": {
                "type": "string"
              },
              "destinationUfi": {
                "type": "integer"
              },
              "destinationName": {
                "type": "string"
              },
              "destinationCountry": {
                "type": "string"
              },
              "destinationProductCount": {
                "type": "integer"
              },
              "countryCode": {
                "type": "string"
              },
              "countryName": {
                "type": "string"
              },
              "postalCode": {
                "type": "string"
              },
              "latitude": {
                "type": "number"
              },
              "longitude": {
                "type": "number"
              },
              "locationType": {
                "type": "string"
              },
              "locationInstructions": {
                "type": "string"
              },
              "departurePoint": {
                "type": "string"
              },
              "meetingPoint": {
                "type": "string"
              },
              "supplier": {
                "type": "object"
              },
              "externalSellerUrl": {
                "type": "string"
              },
              "poweredBy": {
                "type": "string"
              },
              "operatedBy": {
                "type": "string"
              },
              "timeZone": {
                "type": "string"
              },
              "reviews": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "reviewSummary": {
                "type": "object"
              },
              "timeSlots": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "availabilityDate": {
                "type": "string"
              },
              "availableDates": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "cheapestPrices": {
                "type": "array",
                "items": {
                  "type": "object"
                }
              },
              "productCount": {
                "type": "integer",
                "description": "Destination catalogue product count"
              },
              "continentId": {
                "type": "integer"
              },
              "citySlug": {
                "type": "string"
              },
              "imageUrl": {
                "type": "string"
              },
              "scrapedAt": {
                "type": "string",
                "description": "UTC ISO-8601 collection timestamp"
              }
            }
          },
          "views": {
            "overview": {
              "title": "Attractions",
              "transformation": {
                "fields": [
                  "name",
                  "price",
                  "currency",
                  "rating",
                  "reviewCount",
                  "freeCancellation",
                  "duration",
                  "type",
                  "cityName",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "name": {
                    "label": "Attraction",
                    "format": "text"
                  },
                  "price": {
                    "label": "Price",
                    "format": "number"
                  },
                  "currency": {
                    "label": "Currency",
                    "format": "text"
                  },
                  "rating": {
                    "label": "Rating (0-10)",
                    "format": "number"
                  },
                  "reviewCount": {
                    "label": "Reviews",
                    "format": "number"
                  },
                  "freeCancellation": {
                    "label": "Free Cancel",
                    "format": "text"
                  },
                  "duration": {
                    "label": "Duration",
                    "format": "text"
                  },
                  "type": {
                    "label": "Type",
                    "format": "text"
                  },
                  "cityName": {
                    "label": "City",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  }
                }
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.1.1",
    "imageDigest": "09aaa28a149b705fc1f10b1bc400c81d049fafe6059dd51937c376fe04b4a383",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.1"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.01147
    }
  }
}