SkillAgentSearch skills...

CheckRoyalCaribbeanPrice

A price tracker script that checks if you have cheapest price for beverage package, excursions, etc on Royal Caribbean or Celebrity cruises. Python, Windows Binary, or docker

Install / Use

/learn @jdeath/CheckRoyalCaribbeanPrice
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

CheckRoyalCaribbeanPrice

Checks if you have the cheapest price for your Royal Caribbean and Celebrity Cruises purchases (beverage packages, excursions, internet, etc.).

  • ✅ Automatically checks your purchased packages (no need to enter them manually)
  • ✅ Alerts you if a lower price is available (email, ntfy, Home Assistant, etc)
  • ✅ Finds deals specific to each passenger (loyalty or casino status, age-based or room specials) where other "royal price trackers" only find publicly available (often higher) prices
  • ✅ Shows currently assigned cabin in Royal's backend system (likely the room you will get if purchased a GTY "We choose your room")
  • ✅ Shows the payment balance Royal's backend system thinks they are owed (does not include TA's take!) and estimated final payment date
  • ✅ Supports multiple Royal and Celebrity accounts or linked cruises
  • ✅ Handles all currencies (checks each item based on the currency used to purchase it)
  • ✅ Can automatically check cabin prices for any cruise you booked, using loyalty/senior/resident discounts
  • ✅ Can create a "watchlist" to check prices of items you have not purchased (thanks @jhedlund)
  • ✅ Can also watchlist cabin prices with just a booking URL (no login required, supports discounts)
  • ✅ Can display active sitewide promotions (flash sales, percentage-off deals) for each sailing
  • ✅ Runs on Windows, macOS, Linux, Docker, iOS, and Home Assistant.
  • ✅ Completely open source, free to use or modify.
  • ✅ Separate BrowseRoyalCaribbeanPrice.py script lets you look up any cruise's addon prices, cabin prices, onboard activity schedule, MDR menus, and dress codes. No setup/account required!

⚠️ This is not a hack. All API calls and data are publicly available. The script simply automates what you can do on the Royal Caribbean website.

Stargazers repo roster for @jdeath/CheckRoyalCaribbeanPrice

If the code saved you money or correctly predicted your cabin number, star the repo and/or post your success on r/RoyalCaribbean !

Install (Windows 10/11 Option) - Python Not Required!

  1. Download CheckRoyalCaribbeanPrice.exe . Link points to the latest release
  2. Move downloaded file to a folder and click CheckRoyalCaribbeanPrice.exe file on your computer
    • Note: If no config file is found, code will ask to download a simple config file for you and name it correctly. type "y" and hit enter to download
  3. Edit downloaded config.yaml (using NotePad) with your user/password. Do not change the spacing before the - lines. # means comment and everything to the right will be ignored
  4. The downloaded configuration file will log the output to "output.txt", this avoids requiring to keep the output on screen.
  5. Click CheckRoyalCaribbeanPrice.exe again and watch the magic!
  6. After confirmed working, you can add more options into config.yaml and review the automation/notification section below if you want to run it automatically a couple times a day!
  7. To keep output on screen, go to folder you put CheckRoyalCaribbeanPrice.exe, type cmd and hit enter in the location field. A dos prompt window should open up. Type CheckRoyalCaribbeanPrice.exe in the dos prompt:

<img src="https://github.com/jdeath/CheckRoyalCaribbeanPrice/blob/main/images/Screenshot%202026-03-16%20071344.png" height="120"> <img src="https://github.com/jdeath/CheckRoyalCaribbeanPrice/blob/main/images/Screenshot%202026-03-16%20071642.png" height="120">

  1. Optional: For advanced users, you can compile the .exe yourself (because you do not trust files from the internet) with: pyinstaller -F --collect-all apprise --collect-all bs4 CheckRoyalCaribbeanPrice.py

Install (Recommended Option, any Operating System Windows/Linux/Mac, and you can edit code to your liking)

  1. Install python3 (3.12 works fine) https://www.python.org/downloads/
  2. Download the CheckRoyalCaribbeanPrice.py from this repo or git clone https://github.com/jdeath/CheckRoyalCaribbeanPrice.git
  3. pip install requests Apprise bs4

Install (iOS / iPhone or Android)

This will run a stripped down version to work on the free Python iPhone app. As stripped down, it only supports excursion/drink packages etc. It does not support cruise fare price checks. It does not support apprise notifications, so you will have to watch the log to see any price drops. You need to edit the python file directly (directions below) because it does not use the config.yaml file. But allows you to check prices on the go. Works on the ship even without the internet package!

  1. Install Python on your Phone
    • iOS: Get Python From Appstore. https://apps.apple.com/us/app/python-coding-editor-ide-app/id6444399635
      • Free version is fine, no need to make inapp purchases. Some have reported opening files is not longer supported
    • iOS: iSH app and install python3 may also work: https://apps.apple.com/us/app/ish-shell/id1436902243
    • Android: Get pydroid 3 : https://play.google.com/store/apps/details?id=ru.iiec.pydroid3
  2. Download https://raw.githubusercontent.com/jdeath/CheckRoyalCaribbeanPrice/refs/heads/main/PhonePriceCheck.py from the repo to your computer
    • Use a text editor to add your username and password between the "" a few lines down.
    • If you are are using a Celebrity account, remove # before #cruiseLineName = "celebritycruises"
    • Ignore the Edit Config File section below, that only pretains to computer installations
  3. Email yourself the edited PhonePriceCheck.py
    • On your iPhone, save the emailed PhonePriceCheck.py to your files section. This can be done by clicking the attachment, select share, then select saved files
  4. Open Python App (these are iOS instructions, need to modify for Android)
    • Tap the blue hamburger icon on the right side of the screen, just below the adverstisement
    • Tap "Load from File"
    • Select the PhonePriceCheck.py file you downloaded
    • To run: tap the arrow icon at top right of screen (between a bug icon and a ... icon)
  5. Look for any price drops in the output

Install (Home Assistant Addon/App Option)

See directions at: https://github.com/jdeath/homeassistant-addons/tree/main/royalpricecheck

Install (Docker Option - thanks @JDare)

Single Execution (One-time price check)

For a single price check without scheduling:

docker run --rm \
  -v ./config.yaml:/app/config.yaml:ro \
  ghcr.io/jdeath/checkroyalcaribbeanprice:latest \
  check

Scheduled Execution

Option 1: Using Pre-built Image

  1. Create a docker-compose.yml file:
services:
  cruise-price-checker:
    image: ghcr.io/jdeath/checkroyalcaribbeanprice:latest
    container_name: cruise-price-checker
    restart: unless-stopped
    environment:
      # Timezone for cron execution (default: UTC)
      # Examples: America/New_York, America/Chicago, America/Los_Angeles, Europe/London
      # Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      - TZ=America/New_York
      # Cron schedule: 7 AM and 7 PM daily in the specified timezone
      - CRON_SCHEDULE=0 7,19 * * *
    volumes:
      # Mount your config file
      - ./config.yaml:/app/config.yaml:ro
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
  1. Create your config.yaml file (see "Edit Config File" section below)
  2. Run: docker compose up -d

Option 2: Build from Source

  1. Clone this repository: git clone https://github.com/jdeath/CheckRoyalCaribbeanPrice.git
  2. cd CheckRoyalCaribbeanPrice
  3. Create your config.yaml file (see "Edit Config File" section below)
  4. Run: docker compose up -d

The Docker container will run the price checker on the schedule you have defined.

Edit Config File

If a config file is not found, code will prompt if you want it to automatically download a simple config file.

Create your config.yaml file with the below information. Feel free to copy the file SAMPLE-config.yaml to config.yaml. Edit config.yaml and place it in same directory as CheckRoyalCaribbeanPrice.py or CheckRoyalCaribbeanPrice.exe or when running CheckRoyalCaribbeanPrice.py provide the optional argument -c path/to/config.yaml. The spacing/alignment is important. (eg. The - under accountInfo must be 3 spaces over under the 2nd c in account).

accountInfo:
  - username: "user@gmail.com" # Your Royal Caribbean User Name
    password: "pa$$word" # Your Royal Caribbean Password
  - username: "user@gmail.com" # Your Celebrity User Name
    password: "pa$$word" # Your Celebrity Password
    cruiseLine: "celebrity" # Must indicate if celebrity
displayCruisePrices: true # Optional, this will display current price for your booked cruises. Use above discount codes.
minimumSavingAlert: 0.00 # Optional, only alert when savings are >= this amount (per-night/per-day items use total savings per item)
notifyOnError: false # Optional, send Apprise alert if the script fails (default: false)
cruises: # Optional, this allows you to watch the price of a cruise you have not booked yet
  - cruiseURL: "https://www.royalcaribbean.com/checkout/guest-info?sailDate=2025-12-27&shipCode=VI&groupId=VI12BWI-753707406&packageCode=VI12L049&selectedCurrencyCode=USD&country=USA&cabinClassType=OUTSIDE&roomIndex=0&r0a=2&r0c=0&r0b=n&r0r=n&r0s=n&r0q=n&r0t=n&r0d=OUTSIDE&r0D=y&rgVisited=true&r0C=y&r0e=N&r0f=4N&r0g=BESTRATE&r0h=n&r0j=2138&r0w=2&r0B=BD&r0x=AF&r0y=6aa01639-c2d8-4d52-b850-e11c5ecf7146"
    paidPrice: "3833.74"
  - cruiseURL: "https://www.celebritycruises.com/checkout/guest-in
View on GitHub
GitHub Stars45
CategoryDevelopment
Updated7h ago
Forks23

Languages

Python

Security Score

95/100

Audited on Apr 6, 2026

No findings