{
  "data": {
    "id": "omOFbmXA6vxSUIWfn",
    "actId": "aGnG4rQ2ykpjOw44W",
    "userId": "zq8lKbpLzTjGDayPC",
    "startedAt": "2026-10-20T18:13:55.905Z",
    "finishedAt": "2026-10-20T18:16:48.010Z",
    "status": "SUCCEEDED",
    "meta": {
      "origin": "CLI"
    },
    "stats": {
      "durationMillis": 172012,
      "runTimeSecs": 172.012,
      "computeUnits": 0.19112444444444446,
      "imageSizeBytes": 6085193216
    },
    "options": {
      "useCache": true,
      "betaPackages": false,
      "memoryMbytes": 4096,
      "diskMbytes": 8192
    },
    "createdByOrganizationMemberUserId": "GK9YjZRyQZVzOdoH5",
    "exitCode": 0,
    "inputSchema": "{\n  \"title\": \"Expedia Hotel Rate & Guest Rating Finder Input\",\n  \"description\": \"Search Expedia hotels by destination or by hotel/search URL and return live rates, exact star class, guest ratings, review counts, address, amenities, and optional room rates with cancellation policies.\",\n  \"type\": \"object\",\n  \"schemaVersion\": 1,\n  \"properties\": {\n    \"mode\": {\n      \"title\": \"Mode\",\n      \"type\": \"string\",\n      \"description\": \"Search by destination, or scrape Expedia hotel and search URLs/IDs.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"search\",\n        \"urls\"\n      ],\n      \"enumTitles\": [\n        \"Search by destination\",\n        \"Scrape URLs or hotel IDs\"\n      ],\n      \"default\": \"search\",\n      \"prefill\": \"search\",\n      \"sectionCaption\": \"Search\"\n    },\n    \"destination\": {\n      \"title\": \"Destination\",\n      \"type\": \"string\",\n      \"description\": \"City, area, landmark, airport, or hotel name to search (mode=search). Examples: New York, London, Tokyo, Times Square.\",\n      \"editor\": \"textfield\",\n      \"prefill\": \"New York\"\n    },\n    \"destinationId\": {\n      \"title\": \"Destination ID\",\n      \"type\": \"string\",\n      \"description\": \"Optional Expedia region ID to skip destination lookup (mode=search). Use only if you already know the region ID.\",\n      \"editor\": \"textfield\"\n    },\n    \"startUrls\": {\n      \"title\": \"Hotel or search URLs\",\n      \"type\": \"array\",\n      \"description\": \"Expedia hotel pages, Hotel-Search links, share links, or bare hotel IDs such as h17117062 or 17117062 (mode=urls).\",\n      \"editor\": \"stringList\",\n      \"items\": {\n        \"type\": \"string\"\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"checkIn\": {\n      \"title\": \"Check-in date\",\n      \"type\": \"string\",\n      \"description\": \"YYYY-MM-DD. Leave empty to use 30 days from today.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"checkOut\": {\n      \"title\": \"Check-out date\",\n      \"type\": \"string\",\n      \"description\": \"YYYY-MM-DD. Leave empty to use 2 nights after check-in.\",\n      \"editor\": \"textfield\",\n      \"default\": \"\",\n      \"prefill\": \"\"\n    },\n    \"adults\": {\n      \"title\": \"Adults per room\",\n      \"type\": \"integer\",\n      \"description\": \"Adult guests per room (1-14).\",\n      \"default\": 2,\n      \"prefill\": 2,\n      \"minimum\": 1,\n      \"maximum\": 14\n    },\n    \"childrenAges\": {\n      \"title\": \"Children ages\",\n      \"type\": \"array\",\n      \"description\": \"One age (0-17) per child. Leave empty for no children.\",\n      \"editor\": \"stringList\",\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"rooms\": {\n      \"title\": \"Rooms\",\n      \"type\": \"integer\",\n      \"description\": \"Number of rooms (1-8).\",\n      \"default\": 1,\n      \"prefill\": 1,\n      \"minimum\": 1,\n      \"maximum\": 8\n    },\n    \"maxItems\": {\n      \"title\": \"Maximum hotels\",\n      \"type\": \"integer\",\n      \"description\": \"Hard cap on hotel records (1-1000). Expedia returns up to 500 per request; larger caps use nextSubSet pagination.\",\n      \"default\": 20,\n      \"prefill\": 1,\n      \"minimum\": 1,\n      \"maximum\": 1000,\n      \"sectionCaption\": \"Limits\"\n    },\n    \"sortBy\": {\n      \"title\": \"Sort by\",\n      \"type\": \"string\",\n      \"description\": \"Order of the hotel search results.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"recommended\",\n        \"priceLowToHigh\",\n        \"priceHighToLow\",\n        \"distance\",\n        \"guestRating\",\n        \"starRating\"\n      ],\n      \"enumTitles\": [\n        \"Recommended\",\n        \"Price: low to high\",\n        \"Price: high to low\",\n        \"Distance from downtown\",\n        \"Guest rating\",\n        \"Star rating\"\n      ],\n      \"default\": \"recommended\",\n      \"prefill\": \"recommended\",\n      \"sectionCaption\": \"Filters\"\n    },\n    \"starRatings\": {\n      \"title\": \"Star ratings\",\n      \"type\": \"array\",\n      \"description\": \"Only these star classes (1-5). Leave empty for all stars.\",\n      \"editor\": \"select\",\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"1\",\n          \"2\",\n          \"3\",\n          \"4\",\n          \"5\"\n        ],\n        \"enumTitles\": [\n          \"1 star\",\n          \"2 stars\",\n          \"3 stars\",\n          \"4 stars\",\n          \"5 stars\"\n        ]\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"minGuestRating\": {\n      \"title\": \"Minimum guest rating\",\n      \"type\": \"string\",\n      \"description\": \"Minimum guest review score on Expedia's 10-point scale.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"7+\",\n        \"8+\",\n        \"9+\"\n      ],\n      \"enumTitles\": [\n        \"Any rating\",\n        \"7+ (Good)\",\n        \"8+ (Very good)\",\n        \"9+ (Wonderful)\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"minPrice\": {\n      \"title\": \"Minimum nightly price\",\n      \"type\": \"number\",\n      \"description\": \"Minimum nightly price in USD. Hotels without a nightly price are skipped when a price limit is set.\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"maxPrice\": {\n      \"title\": \"Maximum nightly price\",\n      \"type\": \"number\",\n      \"description\": \"Maximum nightly price in USD. Hotels without a nightly price are skipped when a price limit is set.\",\n      \"minimum\": 0,\n      \"maximum\": 100000\n    },\n    \"propertyType\": {\n      \"title\": \"Property type\",\n      \"type\": \"string\",\n      \"description\": \"Restrict results to a type of place.\",\n      \"editor\": \"select\",\n      \"enum\": [\n        \"any\",\n        \"hotels\",\n        \"vacationRentals\",\n        \"hotel\",\n        \"motel\",\n        \"resort\",\n        \"apartment\",\n        \"hostel\",\n        \"bedAndBreakfast\",\n        \"guesthouse\",\n        \"villa\",\n        \"vacationHome\",\n        \"lodge\",\n        \"cottage\",\n        \"cabin\"\n      ],\n      \"enumTitles\": [\n        \"Any type\",\n        \"Hotels\",\n        \"Vacation rentals\",\n        \"Hotel\",\n        \"Motel\",\n        \"Resort\",\n        \"Apartment or condo\",\n        \"Hostel\",\n        \"Bed & breakfast\",\n        \"Guesthouse\",\n        \"Villa\",\n        \"Vacation home\",\n        \"Lodge\",\n        \"Cottage\",\n        \"Cabin\"\n      ],\n      \"default\": \"any\",\n      \"prefill\": \"any\"\n    },\n    \"amenities\": {\n      \"title\": \"Amenities\",\n      \"type\": \"array\",\n      \"description\": \"Only hotels with all selected amenities. Leave empty for no amenity filter.\",\n      \"editor\": \"select\",\n      \"items\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"wifi\",\n          \"pool\",\n          \"gym\",\n          \"parking\",\n          \"breakfast\",\n          \"petFriendly\",\n          \"spa\",\n          \"restaurant\",\n          \"airConditioning\",\n          \"kitchen\",\n          \"hotTub\",\n          \"airportShuttle\",\n          \"washerDryer\",\n          \"balcony\",\n          \"evCharging\"\n        ],\n        \"enumTitles\": [\n          \"WiFi\",\n          \"Pool\",\n          \"Gym\",\n          \"Parking\",\n          \"Breakfast\",\n          \"Pet friendly\",\n          \"Spa\",\n          \"Restaurant\",\n          \"Air conditioning\",\n          \"Kitchen\",\n          \"Hot tub\",\n          \"Airport shuttle\",\n          \"Washer and dryer\",\n          \"Balcony\",\n          \"EV charging\"\n        ]\n      },\n      \"default\": [],\n      \"prefill\": []\n    },\n    \"freeCancellationOnly\": {\n      \"title\": \"Free cancellation only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return properties with a fully refundable rate.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"availableOnly\": {\n      \"title\": \"Available only\",\n      \"type\": \"boolean\",\n      \"description\": \"Only return properties with rooms available for the selected dates.\",\n      \"default\": false,\n      \"prefill\": false\n    },\n    \"propertyName\": {\n      \"title\": \"Property name\",\n      \"type\": \"string\",\n      \"description\": \"Filter by property name, for example Marriott or Hilton.\",\n      \"editor\": \"textfield\"\n    },\n    \"includePropertyDetails\": {\n      \"title\": \"Include property details\",\n      \"type\": \"boolean\",\n      \"description\": \"Add exact star class, address, coordinates, full amenities, policies, and gallery images. This fetches one property page per hotel (mode=search).\",\n      \"default\": true,\n      \"prefill\": false,\n      \"sectionCaption\": \"Enrichment\"\n    },\n    \"includeRoomRates\": {\n      \"title\": \"Include room rates\",\n      \"type\": \"boolean\",\n      \"description\": \"Add room types, live nightly rates, payment policy, and cancellation policy for each hotel. This makes one extra request per hotel.\",\n      \"default\": false,\n      \"prefill\": false\n    }\n  },\n  \"required\": [\n    \"mode\"\n  ]\n}",
    "readme": "# Expedia Hotel Rate & Guest Rating Finder\n\nSearch Expedia hotels by destination or paste hotel and search links, and get live nightly and total rates, exact star class, guest ratings, review counts, address and coordinates, amenities, photos, and optional room-by-room rates with cancellation policies. Results come back as clean JSON or CSV — no API key, login, or proxy setup required.\n\n## What this actor does\n\n- **Two modes:** `search` for a destination, or `urls` for Expedia hotel pages, Hotel-Search links, share links, and bare hotel IDs.\n- **Live rates:** nightly price, total stay price with taxes and fees, original strike-through price, and currency.\n- **Quality signals:** guest rating and review count from the search card, plus exact star class (including half-stars) from the property page.\n- **Property detail:** address, latitude/longitude, amenity highlights, policies, check-in/check-out times, description, photo gallery, and FAQs.\n- **Optional room data:** room types, individual rate plans, payment timing, refundability, and cancellation policy text.\n- **Filters:** sort order, star class, guest rating, nightly price, property type, amenities, free cancellation, availability, and property name.\n- Every field is omitted when Expedia does not provide it — the dataset never contains `null`, empty strings, or sentinel rows.\n\n## Output per hotel\n\n- `type` — always `hotel_expedia`\n- `hotelId` — Expedia property identifier\n- `name` — hotel name\n- `url` — Expedia hotel page\n- `price` — legacy nightly price text (e.g. `$751 nightly`)\n- `totalPrice` — legacy total price text (e.g. `$1,833 total`)\n- `pricePerNight`, `priceTotal`, `priceStrikethrough` — numeric prices\n- `priceCurrency` — currency code (USD on expedia.com)\n- `rating` — legacy guest rating text (0–10)\n- `guestRating` — numeric guest rating\n- `ratingText` — label such as `Excellent` or `Wonderful`\n- `reviewCount` — legacy review count text\n- `guestReviewCount` — numeric review count\n- `starRating` — exact star class, half-stars possible\n- `neighborhood` — area shown on the hotel card\n- `address` — `full`, `street`, `city`, `region`, `postalCode`, `country`\n- `latitude`, `longitude` — property coordinates\n- `amenities` — amenity highlights from the property page\n- `topAmenities` — amenities highlighted on the search card\n- `imageUrl`, `images` — main photo and gallery\n- `badges` — labels such as `VIP Access`\n- `freeCancellation` — whether a refundable rate exists\n- `cancellationPolicy` — policy text for the cheapest or first rate\n- `roomRates` — room types and rate plans, each with `roomName`, `ratePlanId`, `pricePerNight`, `priceTotal`, `priceCurrency`, `paymentPolicy`, `cancellationPolicy`, `refundable`, `available`, `roomsLeft`\n- `checkInTime`, `checkOutTime` — property policy times\n- `propertyDescription` — overview or editorial description\n- `propertyType` — property type when shown\n- `policies`, `importantInfo` — policy and fee text\n- `faqs` — property questions and answers\n- `description` — short card tagline when Expedia shows one\n- `destination`, `resolvedDestination`, `regionId` — search destination and Expedia resolution\n- `checkIn`, `checkOut`, `adults`, `rooms`, `childrenAges` — search parameters used\n- `searchUrl`, `searchPosition`, `isSponsored`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` for a destination, or `urls` for links and IDs. |\n| `destination` | string | – | City, area, landmark, airport, or hotel name (mode=search). Prefilled with `New York` for the daily example. |\n| `destinationId` | string | – | Optional Expedia region ID to skip destination lookup (mode=search). |\n| `startUrls` | array | `[]` | Hotel pages, Hotel-Search links, share links, or bare IDs such as `h17117062` (mode=urls). |\n| `checkIn` | string | – | `YYYY-MM-DD`; empty uses 30 days from today. |\n| `checkOut` | string | – | `YYYY-MM-DD`; empty uses 2 nights after check-in. |\n| `adults` | integer | `2` | Adults per room, 1–14. |\n| `childrenAges` | array | `[]` | One age (0–17) per child; numbers or quoted strings are accepted. |\n| `rooms` | integer | `1` | Number of rooms, 1–8. |\n| `maxItems` | integer | `20` | Hotel record cap, 1–1000. Expedia returns up to 500 per request; larger caps use pagination. |\n| `sortBy` | string | `recommended` | `recommended`, `priceLowToHigh`, `priceHighToLow`, `distance`, `guestRating`, or `starRating`. |\n| `starRatings` | array | `[]` | Star classes 1–5; empty includes all. |\n| `minGuestRating` | string | `any` | `any`, `7+`, `8+`, or `9+`. |\n| `minPrice` | number | – | Minimum nightly price in USD. |\n| `maxPrice` | number | – | Maximum nightly price in USD. |\n| `propertyType` | string | `any` | `any`, `hotels`, `vacationRentals`, `hotel`, `motel`, `resort`, `apartment`, `hostel`, `bedAndBreakfast`, `guesthouse`, `villa`, `vacationHome`, `lodge`, `cottage`, or `cabin`. |\n| `amenities` | array | `[]` | Only hotels with all selected amenities. |\n| `freeCancellationOnly` | boolean | `false` | Only fully refundable properties. |\n| `availableOnly` | boolean | `false` | Only properties with availability for the dates. |\n| `propertyName` | string | – | Filter by hotel name, for example Marriott. |\n| `includePropertyDetails` | boolean | `true` | Add exact stars, address, coordinates, amenity highlights, policies, and gallery. |\n| `includeRoomRates` | boolean | `false` | Add room types, rate plans, payment, and cancellation policies. |\n\n### Example: weekend rates in New York\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"New York\",\n  \"checkIn\": \"2026-11-10\",\n  \"checkOut\": \"2026-11-12\",\n  \"adults\": 2,\n  \"maxItems\": 20,\n  \"starRatings\": [\"4\", \"5\"],\n  \"sortBy\": \"priceLowToHigh\",\n  \"includePropertyDetails\": true\n}\n```\n\n### Example: family stay with two rooms\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"Orlando, Florida\",\n  \"checkIn\": \"2026-12-20\",\n  \"checkOut\": \"2026-12-27\",\n  \"adults\": 2,\n  \"childrenAges\": [\"5\", \"9\"],\n  \"rooms\": 2,\n  \"maxItems\": 30,\n  \"freeCancellationOnly\": true,\n  \"includeRoomRates\": true\n}\n```\n\n### Example: exact hotel with room rates\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    \"https://www.expedia.com/New-York-Hotels-PUBLIC.h17117062.Hotel-Information\",\n    \"h19681371\"\n  ],\n  \"checkIn\": \"2026-11-10\",\n  \"checkOut\": \"2026-11-12\",\n  \"includeRoomRates\": true\n}\n```\n\n### Example: reuse an Expedia search link\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    \"https://www.expedia.com/Hotel-Search?destination=London&startDate=2026-11-20&endDate=2026-11-22&adults=2&rooms=1&star=40\"\n  ],\n  \"maxItems\": 50,\n  \"includePropertyDetails\": true\n}\n```\n\n## Use cases\n\n- **Rate shopping** — compare nightly and total prices for the same dates and occupancy.\n- **Revenue and pricing analysis** — track star class, guest ratings, and rate spreads across a market.\n- **Travel planning** — shortlist hotels by refundability, amenities, and location.\n- **Market research** — snapshot a city's hotel inventory, ratings, and price distribution.\n- **Property monitoring** — rerun the same hotel or search link to watch rates and policies over time.\n- **Data enrichment** — join hotel IDs, coordinates, ratings, and addresses to an existing travel dataset.\n\n## FAQ\n\n**Does this actor need an API key, login, or proxy?**\nNo. It reads public Expedia hotel pages and selects a working connection automatically. Just fill in the input and run it.\n\n**How many hotels can one run return?**\nExpedia returns up to 500 hotels per search request. The actor follows the result cursor to fetch deeper pages, up to the 1,000-hotel `maxItems` cap. A destination that genuinely has fewer properties returns fewer rows.\n\n**Why do some records have no star rating or address?**\nThose fields come from the individual property page. They are present when `includePropertyDetails` is on and Expedia returns the page. If a property page is temporarily unavailable, the record still carries the search-card fields and the missing values are omitted rather than fabricated.\n\n**Why do I need to enable room rates separately?**\nRoom types and rate plans require one extra Expedia read per hotel. Leave `includeRoomRates` off for a fast, cheap search; turn it on when you need payment timing and cancellation policy text.\n\n**Are prices per night or for the whole stay?**\nBoth are returned. `pricePerNight` is the nightly amount; `priceTotal` is the stay total including taxes and fees. The legacy `price` and `totalPrice` strings mirror what Expedia displayed.\n\n**What does the guest rating scale mean?**\n`guestRating` is Expedia's own score out of 10. `ratingText` is the label Expedia shows, such as Wonderful or Excellent.\n\n**Can I get review text with this actor?**\nNo. This actor returns the guest rating and review count shown on the property, not individual review text. That keeps runs fast and focused on rates and ratings.\n\n**Are all Expedia regional sites supported?**\nNo. This actor reads expedia.com and returns USD prices. Regional Expedia domains and other currencies are not part of this version.\n\n**What happens if Expedia blocks the run?**\nThe actor retries with fresh sessions and fails with a clear status instead of returning an empty dataset or placeholder rows.\n\n**Is this affiliated with Expedia?**\nNo. This is an independent third-party actor that reads publicly visible Expedia hotel data.\n\n## Limitations\n\n- Review text, regional Expedia sites/currencies, and hotel brand colors are not part of this actor.\n- App share links are accepted when they resolve to a hotel, but public app links often expire; hotel pages, search links, and IDs are the reliable inputs.\n- `maxItems` is capped at 1,000. Expedia returns 500 per request and may show fewer real hotels than its matched count because of ads and placeholders.\n",
    "actorDefinition": {
      "actorSpecification": 1,
      "name": "expedia-hotel-rate-and-guest-rating-finder",
      "title": "Expedia Hotel Rate & Guest Rating Finder",
      "description": "Search Expedia hotels by destination or URL for live nightly and total rates, exact star class, guest ratings, review counts, address, amenities, and optional room rates with cancellation policies.",
      "version": "1.0",
      "buildTag": "latest",
      "minMemoryMbytes": 2048,
      "meta": {
        "templateId": "python-playwright"
      },
      "input": {
        "title": "Expedia Hotel Rate & Guest Rating Finder Input",
        "description": "Search Expedia hotels by destination or by hotel/search URL and return live rates, exact star class, guest ratings, review counts, address, amenities, and optional room rates with cancellation policies.",
        "type": "object",
        "schemaVersion": 1,
        "properties": {
          "mode": {
            "title": "Mode",
            "type": "string",
            "description": "Search by destination, or scrape Expedia hotel and search URLs/IDs.",
            "editor": "select",
            "enum": [
              "search",
              "urls"
            ],
            "enumTitles": [
              "Search by destination",
              "Scrape URLs or hotel IDs"
            ],
            "default": "search",
            "prefill": "search",
            "sectionCaption": "Search"
          },
          "destination": {
            "title": "Destination",
            "type": "string",
            "description": "City, area, landmark, airport, or hotel name to search (mode=search). Examples: New York, London, Tokyo, Times Square.",
            "editor": "textfield",
            "prefill": "New York"
          },
          "destinationId": {
            "title": "Destination ID",
            "type": "string",
            "description": "Optional Expedia region ID to skip destination lookup (mode=search). Use only if you already know the region ID.",
            "editor": "textfield"
          },
          "startUrls": {
            "title": "Hotel or search URLs",
            "type": "array",
            "description": "Expedia hotel pages, Hotel-Search links, share links, or bare hotel IDs such as h17117062 or 17117062 (mode=urls).",
            "editor": "stringList",
            "items": {
              "type": "string"
            },
            "default": [],
            "prefill": []
          },
          "checkIn": {
            "title": "Check-in date",
            "type": "string",
            "description": "YYYY-MM-DD. Leave empty to use 30 days from today.",
            "editor": "textfield",
            "default": "",
            "prefill": ""
          },
          "checkOut": {
            "title": "Check-out date",
            "type": "string",
            "description": "YYYY-MM-DD. Leave empty to use 2 nights after check-in.",
            "editor": "textfield",
            "default": "",
            "prefill": ""
          },
          "adults": {
            "title": "Adults per room",
            "type": "integer",
            "description": "Adult guests per room (1-14).",
            "default": 2,
            "prefill": 2,
            "minimum": 1,
            "maximum": 14
          },
          "childrenAges": {
            "title": "Children ages",
            "type": "array",
            "description": "One age (0-17) per child. Leave empty for no children.",
            "editor": "stringList",
            "default": [],
            "prefill": []
          },
          "rooms": {
            "title": "Rooms",
            "type": "integer",
            "description": "Number of rooms (1-8).",
            "default": 1,
            "prefill": 1,
            "minimum": 1,
            "maximum": 8
          },
          "maxItems": {
            "title": "Maximum hotels",
            "type": "integer",
            "description": "Hard cap on hotel records (1-1000). Expedia returns up to 500 per request; larger caps use nextSubSet pagination.",
            "default": 20,
            "prefill": 1,
            "minimum": 1,
            "maximum": 1000,
            "sectionCaption": "Limits"
          },
          "sortBy": {
            "title": "Sort by",
            "type": "string",
            "description": "Order of the hotel search results.",
            "editor": "select",
            "enum": [
              "recommended",
              "priceLowToHigh",
              "priceHighToLow",
              "distance",
              "guestRating",
              "starRating"
            ],
            "enumTitles": [
              "Recommended",
              "Price: low to high",
              "Price: high to low",
              "Distance from downtown",
              "Guest rating",
              "Star rating"
            ],
            "default": "recommended",
            "prefill": "recommended",
            "sectionCaption": "Filters"
          },
          "starRatings": {
            "title": "Star ratings",
            "type": "array",
            "description": "Only these star classes (1-5). Leave empty for all stars.",
            "editor": "select",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            },
            "default": [],
            "prefill": []
          },
          "minGuestRating": {
            "title": "Minimum guest rating",
            "type": "string",
            "description": "Minimum guest review score on Expedia's 10-point scale.",
            "editor": "select",
            "enum": [
              "any",
              "7+",
              "8+",
              "9+"
            ],
            "enumTitles": [
              "Any rating",
              "7+ (Good)",
              "8+ (Very good)",
              "9+ (Wonderful)"
            ],
            "default": "any",
            "prefill": "any"
          },
          "minPrice": {
            "title": "Minimum nightly price",
            "type": "number",
            "description": "Minimum nightly price in USD. Hotels without a nightly price are skipped when a price limit is set.",
            "minimum": 0,
            "maximum": 100000
          },
          "maxPrice": {
            "title": "Maximum nightly price",
            "type": "number",
            "description": "Maximum nightly price in USD. Hotels without a nightly price are skipped when a price limit is set.",
            "minimum": 0,
            "maximum": 100000
          },
          "propertyType": {
            "title": "Property type",
            "type": "string",
            "description": "Restrict results to a type of place.",
            "editor": "select",
            "enum": [
              "any",
              "hotels",
              "vacationRentals",
              "hotel",
              "motel",
              "resort",
              "apartment",
              "hostel",
              "bedAndBreakfast",
              "guesthouse",
              "villa",
              "vacationHome",
              "lodge",
              "cottage",
              "cabin"
            ],
            "enumTitles": [
              "Any type",
              "Hotels",
              "Vacation rentals",
              "Hotel",
              "Motel",
              "Resort",
              "Apartment or condo",
              "Hostel",
              "Bed & breakfast",
              "Guesthouse",
              "Villa",
              "Vacation home",
              "Lodge",
              "Cottage",
              "Cabin"
            ],
            "default": "any",
            "prefill": "any"
          },
          "amenities": {
            "title": "Amenities",
            "type": "array",
            "description": "Only hotels with all selected amenities. Leave empty for no amenity filter.",
            "editor": "select",
            "items": {
              "type": "string",
              "enum": [
                "wifi",
                "pool",
                "gym",
                "parking",
                "breakfast",
                "petFriendly",
                "spa",
                "restaurant",
                "airConditioning",
                "kitchen",
                "hotTub",
                "airportShuttle",
                "washerDryer",
                "balcony",
                "evCharging"
              ],
              "enumTitles": [
                "WiFi",
                "Pool",
                "Gym",
                "Parking",
                "Breakfast",
                "Pet friendly",
                "Spa",
                "Restaurant",
                "Air conditioning",
                "Kitchen",
                "Hot tub",
                "Airport shuttle",
                "Washer and dryer",
                "Balcony",
                "EV charging"
              ]
            },
            "default": [],
            "prefill": []
          },
          "freeCancellationOnly": {
            "title": "Free cancellation only",
            "type": "boolean",
            "description": "Only return properties with a fully refundable rate.",
            "default": false,
            "prefill": false
          },
          "availableOnly": {
            "title": "Available only",
            "type": "boolean",
            "description": "Only return properties with rooms available for the selected dates.",
            "default": false,
            "prefill": false
          },
          "propertyName": {
            "title": "Property name",
            "type": "string",
            "description": "Filter by property name, for example Marriott or Hilton.",
            "editor": "textfield"
          },
          "includePropertyDetails": {
            "title": "Include property details",
            "type": "boolean",
            "description": "Add exact star class, address, coordinates, full amenities, policies, and gallery images. This fetches one property page per hotel (mode=search).",
            "default": true,
            "prefill": false,
            "sectionCaption": "Enrichment"
          },
          "includeRoomRates": {
            "title": "Include room rates",
            "type": "boolean",
            "description": "Add room types, live nightly rates, payment policy, and cancellation policy for each hotel. This makes one extra request per hotel.",
            "default": false,
            "prefill": false
          }
        },
        "required": [
          "mode"
        ]
      },
      "output": {
        "actorOutputSchemaVersion": 1,
        "title": "Expedia Hotel Rate & Guest Rating Finder Output",
        "description": "Expedia hotel records with live nightly and total rates, exact star class, guest rating and review count, address and coordinates, amenities, images, and optional room rates and cancellation policies.",
        "properties": {
          "hotels": {
            "type": "string",
            "title": "Expedia hotels",
            "description": "Dataset containing all scraped Expedia hotels.",
            "template": "{{links.apiDefaultDatasetUrl}}/items"
          }
        }
      },
      "dockerfile": "../Dockerfile",
      "readme": "# Expedia Hotel Rate & Guest Rating Finder\n\nSearch Expedia hotels by destination or paste hotel and search links, and get live nightly and total rates, exact star class, guest ratings, review counts, address and coordinates, amenities, photos, and optional room-by-room rates with cancellation policies. Results come back as clean JSON or CSV — no API key, login, or proxy setup required.\n\n## What this actor does\n\n- **Two modes:** `search` for a destination, or `urls` for Expedia hotel pages, Hotel-Search links, share links, and bare hotel IDs.\n- **Live rates:** nightly price, total stay price with taxes and fees, original strike-through price, and currency.\n- **Quality signals:** guest rating and review count from the search card, plus exact star class (including half-stars) from the property page.\n- **Property detail:** address, latitude/longitude, amenity highlights, policies, check-in/check-out times, description, photo gallery, and FAQs.\n- **Optional room data:** room types, individual rate plans, payment timing, refundability, and cancellation policy text.\n- **Filters:** sort order, star class, guest rating, nightly price, property type, amenities, free cancellation, availability, and property name.\n- Every field is omitted when Expedia does not provide it — the dataset never contains `null`, empty strings, or sentinel rows.\n\n## Output per hotel\n\n- `type` — always `hotel_expedia`\n- `hotelId` — Expedia property identifier\n- `name` — hotel name\n- `url` — Expedia hotel page\n- `price` — legacy nightly price text (e.g. `$751 nightly`)\n- `totalPrice` — legacy total price text (e.g. `$1,833 total`)\n- `pricePerNight`, `priceTotal`, `priceStrikethrough` — numeric prices\n- `priceCurrency` — currency code (USD on expedia.com)\n- `rating` — legacy guest rating text (0–10)\n- `guestRating` — numeric guest rating\n- `ratingText` — label such as `Excellent` or `Wonderful`\n- `reviewCount` — legacy review count text\n- `guestReviewCount` — numeric review count\n- `starRating` — exact star class, half-stars possible\n- `neighborhood` — area shown on the hotel card\n- `address` — `full`, `street`, `city`, `region`, `postalCode`, `country`\n- `latitude`, `longitude` — property coordinates\n- `amenities` — amenity highlights from the property page\n- `topAmenities` — amenities highlighted on the search card\n- `imageUrl`, `images` — main photo and gallery\n- `badges` — labels such as `VIP Access`\n- `freeCancellation` — whether a refundable rate exists\n- `cancellationPolicy` — policy text for the cheapest or first rate\n- `roomRates` — room types and rate plans, each with `roomName`, `ratePlanId`, `pricePerNight`, `priceTotal`, `priceCurrency`, `paymentPolicy`, `cancellationPolicy`, `refundable`, `available`, `roomsLeft`\n- `checkInTime`, `checkOutTime` — property policy times\n- `propertyDescription` — overview or editorial description\n- `propertyType` — property type when shown\n- `policies`, `importantInfo` — policy and fee text\n- `faqs` — property questions and answers\n- `description` — short card tagline when Expedia shows one\n- `destination`, `resolvedDestination`, `regionId` — search destination and Expedia resolution\n- `checkIn`, `checkOut`, `adults`, `rooms`, `childrenAges` — search parameters used\n- `searchUrl`, `searchPosition`, `isSponsored`, `scrapedAt`\n\n## Input\n\n| Field | Type | Default | Description |\n|---|---|---|---|\n| `mode` | string | `search` | `search` for a destination, or `urls` for links and IDs. |\n| `destination` | string | – | City, area, landmark, airport, or hotel name (mode=search). Prefilled with `New York` for the daily example. |\n| `destinationId` | string | – | Optional Expedia region ID to skip destination lookup (mode=search). |\n| `startUrls` | array | `[]` | Hotel pages, Hotel-Search links, share links, or bare IDs such as `h17117062` (mode=urls). |\n| `checkIn` | string | – | `YYYY-MM-DD`; empty uses 30 days from today. |\n| `checkOut` | string | – | `YYYY-MM-DD`; empty uses 2 nights after check-in. |\n| `adults` | integer | `2` | Adults per room, 1–14. |\n| `childrenAges` | array | `[]` | One age (0–17) per child; numbers or quoted strings are accepted. |\n| `rooms` | integer | `1` | Number of rooms, 1–8. |\n| `maxItems` | integer | `20` | Hotel record cap, 1–1000. Expedia returns up to 500 per request; larger caps use pagination. |\n| `sortBy` | string | `recommended` | `recommended`, `priceLowToHigh`, `priceHighToLow`, `distance`, `guestRating`, or `starRating`. |\n| `starRatings` | array | `[]` | Star classes 1–5; empty includes all. |\n| `minGuestRating` | string | `any` | `any`, `7+`, `8+`, or `9+`. |\n| `minPrice` | number | – | Minimum nightly price in USD. |\n| `maxPrice` | number | – | Maximum nightly price in USD. |\n| `propertyType` | string | `any` | `any`, `hotels`, `vacationRentals`, `hotel`, `motel`, `resort`, `apartment`, `hostel`, `bedAndBreakfast`, `guesthouse`, `villa`, `vacationHome`, `lodge`, `cottage`, or `cabin`. |\n| `amenities` | array | `[]` | Only hotels with all selected amenities. |\n| `freeCancellationOnly` | boolean | `false` | Only fully refundable properties. |\n| `availableOnly` | boolean | `false` | Only properties with availability for the dates. |\n| `propertyName` | string | – | Filter by hotel name, for example Marriott. |\n| `includePropertyDetails` | boolean | `true` | Add exact stars, address, coordinates, amenity highlights, policies, and gallery. |\n| `includeRoomRates` | boolean | `false` | Add room types, rate plans, payment, and cancellation policies. |\n\n### Example: weekend rates in New York\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"New York\",\n  \"checkIn\": \"2026-11-10\",\n  \"checkOut\": \"2026-11-12\",\n  \"adults\": 2,\n  \"maxItems\": 20,\n  \"starRatings\": [\"4\", \"5\"],\n  \"sortBy\": \"priceLowToHigh\",\n  \"includePropertyDetails\": true\n}\n```\n\n### Example: family stay with two rooms\n\n```json\n{\n  \"mode\": \"search\",\n  \"destination\": \"Orlando, Florida\",\n  \"checkIn\": \"2026-12-20\",\n  \"checkOut\": \"2026-12-27\",\n  \"adults\": 2,\n  \"childrenAges\": [\"5\", \"9\"],\n  \"rooms\": 2,\n  \"maxItems\": 30,\n  \"freeCancellationOnly\": true,\n  \"includeRoomRates\": true\n}\n```\n\n### Example: exact hotel with room rates\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    \"https://www.expedia.com/New-York-Hotels-PUBLIC.h17117062.Hotel-Information\",\n    \"h19681371\"\n  ],\n  \"checkIn\": \"2026-11-10\",\n  \"checkOut\": \"2026-11-12\",\n  \"includeRoomRates\": true\n}\n```\n\n### Example: reuse an Expedia search link\n\n```json\n{\n  \"mode\": \"urls\",\n  \"startUrls\": [\n    \"https://www.expedia.com/Hotel-Search?destination=London&startDate=2026-11-20&endDate=2026-11-22&adults=2&rooms=1&star=40\"\n  ],\n  \"maxItems\": 50,\n  \"includePropertyDetails\": true\n}\n```\n\n## Use cases\n\n- **Rate shopping** — compare nightly and total prices for the same dates and occupancy.\n- **Revenue and pricing analysis** — track star class, guest ratings, and rate spreads across a market.\n- **Travel planning** — shortlist hotels by refundability, amenities, and location.\n- **Market research** — snapshot a city's hotel inventory, ratings, and price distribution.\n- **Property monitoring** — rerun the same hotel or search link to watch rates and policies over time.\n- **Data enrichment** — join hotel IDs, coordinates, ratings, and addresses to an existing travel dataset.\n\n## FAQ\n\n**Does this actor need an API key, login, or proxy?**\nNo. It reads public Expedia hotel pages and selects a working connection automatically. Just fill in the input and run it.\n\n**How many hotels can one run return?**\nExpedia returns up to 500 hotels per search request. The actor follows the result cursor to fetch deeper pages, up to the 1,000-hotel `maxItems` cap. A destination that genuinely has fewer properties returns fewer rows.\n\n**Why do some records have no star rating or address?**\nThose fields come from the individual property page. They are present when `includePropertyDetails` is on and Expedia returns the page. If a property page is temporarily unavailable, the record still carries the search-card fields and the missing values are omitted rather than fabricated.\n\n**Why do I need to enable room rates separately?**\nRoom types and rate plans require one extra Expedia read per hotel. Leave `includeRoomRates` off for a fast, cheap search; turn it on when you need payment timing and cancellation policy text.\n\n**Are prices per night or for the whole stay?**\nBoth are returned. `pricePerNight` is the nightly amount; `priceTotal` is the stay total including taxes and fees. The legacy `price` and `totalPrice` strings mirror what Expedia displayed.\n\n**What does the guest rating scale mean?**\n`guestRating` is Expedia's own score out of 10. `ratingText` is the label Expedia shows, such as Wonderful or Excellent.\n\n**Can I get review text with this actor?**\nNo. This actor returns the guest rating and review count shown on the property, not individual review text. That keeps runs fast and focused on rates and ratings.\n\n**Are all Expedia regional sites supported?**\nNo. This actor reads expedia.com and returns USD prices. Regional Expedia domains and other currencies are not part of this version.\n\n**What happens if Expedia blocks the run?**\nThe actor retries with fresh sessions and fails with a clear status instead of returning an empty dataset or placeholder rows.\n\n**Is this affiliated with Expedia?**\nNo. This is an independent third-party actor that reads publicly visible Expedia hotel data.\n\n## Limitations\n\n- Review text, regional Expedia sites/currencies, and hotel brand colors are not part of this actor.\n- App share links are accepted when they resolve to a hotel, but public app links often expire; hotel pages, search links, and IDs are the reliable inputs.\n- `maxItems` is capped at 1,000. Expedia returns 500 per request and may show fewer real hotels than its matched count because of ads and placeholders.\n",
      "storages": {
        "dataset": {
          "actorSpecification": 1,
          "title": "Expedia Hotels",
          "fields": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "Record type, always hotel_expedia"
              },
              "hotelId": {
                "type": "string",
                "description": "Expedia property identifier"
              },
              "name": {
                "type": "string",
                "description": "Hotel name"
              },
              "url": {
                "type": "string",
                "description": "Expedia hotel page URL"
              },
              "price": {
                "type": "string",
                "description": "Legacy nightly price display string (e.g. $751 nightly)"
              },
              "totalPrice": {
                "type": "string",
                "description": "Legacy total stay price display string (e.g. $1,833 total)"
              },
              "pricePerNight": {
                "type": "number",
                "description": "Nightly price in priceCurrency"
              },
              "priceTotal": {
                "type": "number",
                "description": "Total stay price including taxes and fees in priceCurrency"
              },
              "priceStrikethrough": {
                "type": "number",
                "description": "Original or crossed-out price when Expedia shows one"
              },
              "priceCurrency": {
                "type": "string",
                "description": "Currency code for all numeric prices"
              },
              "rating": {
                "type": "string",
                "description": "Legacy guest rating display string (0-10)"
              },
              "guestRating": {
                "type": "number",
                "description": "Guest rating on Expedia's 10-point scale"
              },
              "ratingText": {
                "type": "string",
                "description": "Guest rating label such as Excellent or Wonderful"
              },
              "reviewCount": {
                "type": "string",
                "description": "Legacy review count display string"
              },
              "guestReviewCount": {
                "type": "integer",
                "description": "Number of guest reviews behind the rating"
              },
              "starRating": {
                "type": "number",
                "description": "Exact star class (1-5, half-stars possible)"
              },
              "neighborhood": {
                "type": "string",
                "description": "Neighborhood or area shown on the hotel card"
              },
              "address": {
                "type": "object",
                "description": "Property address",
                "properties": {
                  "full": {
                    "type": "string",
                    "description": "Full address as shown by Expedia"
                  },
                  "street": {
                    "type": "string",
                    "description": "Street address"
                  },
                  "city": {
                    "type": "string",
                    "description": "City"
                  },
                  "region": {
                    "type": "string",
                    "description": "State, province, or region"
                  },
                  "postalCode": {
                    "type": "string",
                    "description": "Postal code"
                  },
                  "country": {
                    "type": "string",
                    "description": "Country"
                  }
                }
              },
              "latitude": {
                "type": "number",
                "description": "Property latitude"
              },
              "longitude": {
                "type": "number",
                "description": "Property longitude"
              },
              "amenities": {
                "type": "array",
                "description": "Amenity highlights from the property page",
                "items": {
                  "type": "string"
                }
              },
              "topAmenities": {
                "type": "array",
                "description": "Amenities highlighted on the search card",
                "items": {
                  "type": "string"
                }
              },
              "imageUrl": {
                "type": "string",
                "description": "Main hotel photo URL"
              },
              "images": {
                "type": "array",
                "description": "Hotel photo URLs",
                "items": {
                  "type": "string"
                }
              },
              "badges": {
                "type": "array",
                "description": "Badges such as VIP Access or member pricing",
                "items": {
                  "type": "string"
                }
              },
              "freeCancellation": {
                "type": "boolean",
                "description": "Whether a free-cancellation rate is available"
              },
              "cancellationPolicy": {
                "type": "string",
                "description": "Cancellation policy text for the cheapest or first rate"
              },
              "roomRates": {
                "type": "array",
                "description": "Room types and rate plans with prices and policies",
                "items": {
                  "type": "object",
                  "properties": {
                    "roomName": {
                      "type": "string",
                      "description": "Room or unit name"
                    },
                    "ratePlanId": {
                      "type": "string",
                      "description": "Expedia rate plan identifier"
                    },
                    "pricePerNight": {
                      "type": "number",
                      "description": "Nightly price"
                    },
                    "priceTotal": {
                      "type": "number",
                      "description": "Total stay price"
                    },
                    "priceCurrency": {
                      "type": "string",
                      "description": "Currency code"
                    },
                    "paymentPolicy": {
                      "type": "string",
                      "description": "Payment timing such as Pay now or Reserve now, pay later"
                    },
                    "cancellationPolicy": {
                      "type": "string",
                      "description": "Cancellation policy for the rate"
                    },
                    "refundable": {
                      "type": "boolean",
                      "description": "Whether the rate is refundable"
                    },
                    "available": {
                      "type": "boolean",
                      "description": "Whether the rate is available"
                    },
                    "roomsLeft": {
                      "type": "integer",
                      "description": "Scarcity count when Expedia shows one"
                    }
                  }
                }
              },
              "checkInTime": {
                "type": "string",
                "description": "Check-in time from the property policies"
              },
              "checkOutTime": {
                "type": "string",
                "description": "Check-out time from the property policies"
              },
              "propertyDescription": {
                "type": "string",
                "description": "Property overview or editorial description"
              },
              "propertyType": {
                "type": "string",
                "description": "Property type when available"
              },
              "policies": {
                "type": "array",
                "description": "Property policy text",
                "items": {
                  "type": "string"
                }
              },
              "importantInfo": {
                "type": "array",
                "description": "Fees, deposits, and important guest information",
                "items": {
                  "type": "string"
                }
              },
              "faqs": {
                "type": "array",
                "description": "Frequently asked questions about the property",
                "items": {
                  "type": "object",
                  "properties": {
                    "question": {
                      "type": "string",
                      "description": "Question"
                    },
                    "answer": {
                      "type": "string",
                      "description": "Answer"
                    }
                  }
                }
              },
              "description": {
                "type": "string",
                "description": "Short card tagline when Expedia shows one"
              },
              "destination": {
                "type": "string",
                "description": "Destination text used for the search, or the property destination"
              },
              "resolvedDestination": {
                "type": "string",
                "description": "Destination name resolved by Expedia (mode=search)"
              },
              "regionId": {
                "type": "string",
                "description": "Expedia region identifier"
              },
              "checkIn": {
                "type": "string",
                "description": "Check-in date used"
              },
              "checkOut": {
                "type": "string",
                "description": "Check-out date used"
              },
              "adults": {
                "type": "integer",
                "description": "Adults per room used"
              },
              "rooms": {
                "type": "integer",
                "description": "Number of rooms used"
              },
              "childrenAges": {
                "type": "array",
                "description": "Children ages used",
                "items": {
                  "type": "integer"
                }
              },
              "searchUrl": {
                "type": "string",
                "description": "Search or property URL used"
              },
              "searchPosition": {
                "type": "integer",
                "description": "Position in Expedia's result list"
              },
              "isSponsored": {
                "type": "boolean",
                "description": "Whether the card is a sponsored result"
              },
              "scrapedAt": {
                "type": "string",
                "description": "ISO timestamp when the record was collected"
              }
            }
          },
          "views": {
            "overview": {
              "title": "Overview",
              "transformation": {
                "fields": [
                  "name",
                  "starRating",
                  "guestRating",
                  "guestReviewCount",
                  "pricePerNight",
                  "priceTotal",
                  "priceCurrency",
                  "neighborhood",
                  "url"
                ]
              },
              "display": {
                "component": "table",
                "properties": {
                  "name": {
                    "label": "Hotel",
                    "format": "text"
                  },
                  "starRating": {
                    "label": "Stars",
                    "format": "number"
                  },
                  "guestRating": {
                    "label": "Guest rating",
                    "format": "number"
                  },
                  "guestReviewCount": {
                    "label": "Reviews",
                    "format": "number"
                  },
                  "pricePerNight": {
                    "label": "Per night",
                    "format": "number"
                  },
                  "priceTotal": {
                    "label": "Total",
                    "format": "number"
                  },
                  "priceCurrency": {
                    "label": "Currency",
                    "format": "text"
                  },
                  "neighborhood": {
                    "label": "Area",
                    "format": "text"
                  },
                  "url": {
                    "label": "URL",
                    "format": "link"
                  }
                }
              }
            },
            "detailed": {
              "title": "Detailed",
              "transformation": {
                "fields": [
                  "type",
                  "hotelId",
                  "name",
                  "url",
                  "starRating",
                  "guestRating",
                  "ratingText",
                  "guestReviewCount",
                  "price",
                  "totalPrice",
                  "pricePerNight",
                  "priceTotal",
                  "priceCurrency",
                  "priceStrikethrough",
                  "freeCancellation",
                  "cancellationPolicy",
                  "roomRates",
                  "neighborhood",
                  "address",
                  "latitude",
                  "longitude",
                  "amenities",
                  "topAmenities",
                  "imageUrl",
                  "images",
                  "badges",
                  "checkInTime",
                  "checkOutTime",
                  "propertyDescription",
                  "propertyType",
                  "policies",
                  "importantInfo",
                  "faqs",
                  "description",
                  "destination",
                  "resolvedDestination",
                  "regionId",
                  "checkIn",
                  "checkOut",
                  "adults",
                  "rooms",
                  "childrenAges",
                  "searchUrl",
                  "searchPosition",
                  "isSponsored",
                  "scrapedAt"
                ]
              },
              "display": {
                "component": "table",
                "properties": {}
              }
            }
          }
        }
      }
    },
    "buildNumber": "1.0.2",
    "imageDigest": "6abc3acc7e39dd08f4907e8bf94ce72fba0f9055f0c28d301c9b6a7d64a5a197",
    "actVersion": {
      "sourceType": "SOURCE_FILES",
      "buildTag": "latest",
      "versionNumber": "1.0"
    },
    "usage": {
      "ACTOR_COMPUTE_UNITS": 0.19112444444444446
    }
  }
}