Royal Caribbean Cruise Pricing Scraper avatar

Royal Caribbean Cruise Pricing Scraper

Pricing

Pay per event

Go to Apify Store
Royal Caribbean Cruise Pricing Scraper

Royal Caribbean Cruise Pricing Scraper

🚒 Extract Royal Caribbean sailings, itineraries, ships, ports, live cabin prices, taxes, and direct booking links for fare alerts and travel analysis.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Extract Royal Caribbean sailings, itineraries, ships, ports, taxes, cabin prices, and direct booking links from the cruise line's public inventory.

Royal Caribbean Cruise Pricing Scraper turns grouped cruise-search results into one clean record per sailing. Use it to compare Interior, Outside, Balcony, and Suite prices, build fare alerts, publish cruise inventory, or study routes over time.

  • 🚒 Get ship, route, destination, departure port, and cruise duration.
  • πŸ’΅ Compare all public cabin-category prices in one row.
  • πŸ“… Filter by sailing date, destination, departure port, ship, or nights.
  • πŸ”— Keep direct Royal Caribbean product and booking URLs.
  • ⚑ Run an HTTP-only workflow without a browser or login.

What does Royal Caribbean Cruise Pricing Scraper do?

The Actor queries Royal Caribbean's anonymous cruise-search service and paginates grouped itineraries. It then expands each group into individual sailing records.

Every record preserves its cruise group and itinerary IDs while adding the actual sailing date, cabin-price map, taxes, ship, port sequence, and booking link. That structure is useful for both one-time exports and scheduled price snapshots.

Who is it for?

Travel agencies

Export available sailings and cabin prices for client research, quote preparation, and internal dashboards.

Cruise affiliates and comparison sites

Feed structured Royal Caribbean inventory into searchable landing pages while retaining source product URLs.

Fare-alert products

Schedule the Actor daily or weekly, compare records by sailingId, and notify customers when a cabin category changes price.

Market analysts

Track deployment by ship, destination, departure port, cruise duration, and sailing month without manually browsing hundreds of results.

Why use this Royal Caribbean scraper?

Royal Caribbean's website groups many sailing dates under one itinerary card. Manual comparison becomes slow when you need repeatable, exportable data.

This Actor provides:

  • one stable record per individual sailing;
  • normalized cabin-price fields and a complete dynamic price map;
  • source-supported search filters;
  • bounded pagination and retries;
  • JSON, CSV, Excel, XML, RSS, and API dataset access through Apify;
  • reliable scheduling, webhooks, integrations, and monitoring.

What Royal Caribbean data can I extract?

FieldDescription
cruiseGroupIdRoyal Caribbean grouped cruise result ID
sailingIdStable itinerary-and-date sailing ID
itineraryCodeSource itinerary/package code
itineraryNamePublic itinerary title
destinationNameDestination region
shipNameRoyal Caribbean ship
departurePortNameEmbarkation port and region
nightsCruise duration
sailDate, startDate, endDateSailing dates
interiorPriceInterior cabin price, when offered
outsidePriceOutside/Ocean View price, when offered
balconyPriceBalcony cabin price, when offered
suitePriceDeluxe/Suite cabin price, when offered
cabinPricesEvery source cabin category with currency and code
taxesAndFeesSource-reported taxes and fees
taxesAndFeesIncludedWhether the displayed fare includes those fees
itineraryDay-by-day port calls and activities
productUrl, bookingUrlDirect Royal Caribbean links
scrapedAtUTC extraction timestamp

How to scrape Royal Caribbean cruise prices

  1. Open the Actor input page.
  2. Optionally enter destination, departure-port, or ship codes.
  3. Add a sailing date or cruise-duration range if needed.
  4. Set Maximum sailings to a small value for the first run.
  5. Click Start.
  6. Preview the dataset, then export it or connect an integration.

No Royal Caribbean account, API key, or browser session is required for the public cruise-search scope.

Input

A broad Bahamas search:

{
"destinationCodes": ["BAHAM"],
"maxItems": 25
}

Cruises departing Miami in a date window:

{
"departurePortCodes": ["MIA"],
"startDate": "2026-10-01",
"endDate": "2027-03-31",
"minNights": 3,
"maxNights": 7,
"maxItems": 100
}

A selected ship:

{
"shipCodes": ["WN"],
"maxItems": 50
}

Filter codes

The source uses compact codes rather than free-text labels. Common examples include:

  • Destinations: BAHAM (Bahamas), ALCAN (Alaska), AUSTL (Australia & New Zealand), BERMU (Bermuda).
  • Departure ports: MIA (Miami), FLL (Fort Lauderdale), PCN (Port Canaveral), SEA (Seattle), STH (Southampton).
  • Ships: UT (Utopia of the Seas), WN (Wonder of the Seas), AN (Anthem of the Seas), OV (Ovation of the Seas).

Codes are validated structurally and sent to Royal Caribbean's source filters. An unknown but well-formed code naturally returns no matching sailings.

Output example

{
"cruiseGroupId": "VY03LAX-1965471073",
"sailingId": "VY03X045_2026-10-05",
"itineraryCode": "VY03X045",
"itineraryName": "Ensenada Cruise",
"destinationName": "Mexico",
"shipName": "Voyager of the Seas",
"departurePortName": "Los Angeles, California",
"nights": 3,
"sailDate": "2026-10-05",
"currency": "USD",
"interiorPrice": 250.02,
"outsidePrice": 278.52,
"balconyPrice": 345.52,
"suitePrice": 660.52,
"taxesAndFees": 127.52,
"taxesAndFeesIncluded": true,
"productUrl": "https://www.royalcaribbean.com/itinerary/...",
"bookingUrl": "https://www.royalcaribbean.com/booking/landing?...",
"scrapedAt": "2026-07-18T03:30:00.000Z"
}

Prices reflect the public USA/USD shopping context used by this Actor. They can change between runs and are not a reservation or fare guarantee.

Pagination and result limits

pageSize controls how many grouped itineraries the Actor requests at once. Each group can contain several individual sailings, and maxItems applies to the emitted sailing records.

The Actor stops exactly at the requested maximum. Use 10–25 items for a quick sample and increase the limit for production exports.

How much does it cost to scrape Royal Caribbean cruises?

The Actor uses pay-per-event pricing: a $0.005 run-start charge plus a tiered charge for each sailing saved.

Apify tierPrice per sailing1,000 sailings plus start
Free$0.000057387about $0.0624
Bronze$0.000049902about $0.0549
Silver$0.000038923about $0.0439
Gold$0.000029941about $0.0349
Platinum$0.000019961about $0.0250
Diamond$0.000013973about $0.0190

The displayed Apify pricing table is authoritative. Higher subscription tiers receive lower per-sailing prices. Because this is an HTTP-only Actor, there is no browser overhead, and direct requests are the default.

Before a larger run, use a small maxItems value to estimate your total charge from the run console.

Fare monitoring workflow

  1. Choose a ship, departure port, destination, or date window.
  2. Save the configuration as an Apify task.
  3. Schedule it daily or weekly.
  4. Export each dataset to your database or spreadsheet.
  5. Match records by sailingId and compare cabin fields.
  6. Trigger an alert when a preferred category drops below your threshold.

Keep scrapedAt to distinguish snapshots and currency to avoid comparing unlike values.

Data quality notes

  • Prices are captured exactly as returned by the public cruise-search endpoint.
  • Missing cabin fields mean that category was not offered in that source response.
  • suitePrice maps Royal Caribbean's DELUXE top-level category for consistent comparison.
  • Taxes and fee inclusion are stored separately to prevent misleading totals.
  • Product and booking URLs are converted to absolute Royal Caribbean URLs.
  • Duplicate sailing IDs are removed within each run.

Tips for reliable runs

  • Start with one filter family and a low result limit.
  • Use official source codes shown in the Royal Caribbean search experience.
  • Keep date windows bounded for focused monitoring.
  • Avoid launching many overlapping runs against the same inventory.
  • Enable an Apify proxy only if direct requests are blocked in your environment.
  • Review the run log if the source changes its GraphQL schema.

Integrations

Google Sheets

Send new dataset items to a sheet, then use formulas to compare cabin fields across snapshots.

Slack or email alerts

Connect a webhook to your fare-difference service and notify agents when a selected sailing changes.

Airtable or a CRM

Store upcoming sailings as inventory records for sales and customer follow-up workflows.

Data warehouses

Load datasets into BigQuery, Snowflake, or PostgreSQL and model fare history by sailingId and scrapedAt.

Zapier and Make

Use Apify's integrations to route completed runs into no-code automations without maintaining scraper infrastructure.

Apify API usage with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/royal-caribbean-cruise-pricing-scraper').call({
departurePortCodes: ['MIA'],
maxItems: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Apify API usage with Python

from apify_client import ApifyClient
client = ApifyClient(token='YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/royal-caribbean-cruise-pricing-scraper').call(run_input={
'destinationCodes': ['BAHAM'],
'maxItems': 25,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Apify API usage with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~royal-caribbean-cruise-pricing-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"shipCodes":["WN"],"maxItems":25}'

Fetch results after the run succeeds:

$curl "https://api.apify.com/v2/datasets/DATASET_ID/items?clean=true&format=json"

Use with Apify MCP and Claude

Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/royal-caribbean-cruise-pricing-scraper"

Claude Desktop

Add this server in Claude Desktop Settings β†’ Developer β†’ Edit Config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=automation-lab/royal-caribbean-cruise-pricing-scraper"
}
}
}

Cursor

Open Settings β†’ Tools & MCP β†’ New MCP Server and use the same mcpServers JSON configuration.

VS Code

Open MCP: Add Server from the command palette, select HTTP, and enter the Apify MCP URL above.

Example prompts:

  • β€œRun the Royal Caribbean cruise price scraper for Miami departures and return 25 sailings.”
  • β€œExtract Wonder of the Seas sailings, then summarize the cheapest Balcony fares.”
  • β€œCompare Interior and Suite prices for Bahamas cruises in the exported dataset.”

Keep Apify tokens in environment variables or your client's secure authentication flow rather than committed configuration files.

Scheduling and webhooks

Save a tested input as an Apify task, choose a cron schedule, and attach a webhook for ACTOR.RUN.SUCCEEDED. The webhook can pass the dataset ID to your downstream comparison job.

For price monitoring, keep the same filter scope between runs. Otherwise, additions caused by a wider search can look like inventory changes.

Proxy support

Direct HTTP is used by default and normally works for this public endpoint. The optional proxyConfiguration field accepts Apify Proxy or custom proxy URLs.

A proxy is a fallback, not a requirement. Proxies can add bandwidth cost and may change response latency. Use stable sessions and conservative schedules rather than aggressive concurrency.

Limitations

  • The Actor covers public cruise-search inventory, not logged-in bookings, casino offers, loyalty discounts, excursions, drinks, Wi-Fi, or passenger data.
  • Output availability and prices depend on Royal Caribbean's current public response.
  • The initial release uses a coherent USA/USD market context; it does not claim arbitrary currency conversion.
  • The source can rename filters, cabin categories, or GraphQL fields.
  • A completed scrape is not a fare hold, quote, or reservation.

This Actor accesses public cruise-search data without authentication. Web scraping laws and contractual requirements vary by jurisdiction and use case.

Use the data responsibly, respect applicable terms and rate limits, avoid personal data, and obtain legal advice for regulated or high-volume commercial use. Do not use the Actor to interfere with the website or misrepresent live availability.

Troubleshooting

The run returns zero records

Check that the codes exist and that the date ranges overlap available inventory. Remove filters one family at a time to identify an over-constrained combination.

A code is rejected

Codes may contain only letters, numbers, and periods. Enter Royal Caribbean source codes such as MIA, not full free-text names.

The endpoint temporarily fails

The Actor retries bounded transient failures. Try again later or enable an Apify proxy configuration if your route is blocked.

A cabin price is missing

That top-level category was not included for that sailing in the public response. Inspect cabinPrices for every category the source returned.

FAQ

Does it need a Royal Caribbean login?

No. It extracts the public cruise-search scope anonymously.

Can it track a cruise I already booked?

It can monitor the matching public sailing fare, but it cannot access your booking, paid amount, or account-specific offers.

Are taxes included in the cabin prices?

Check taxesAndFeesIncluded. The separate taxesAndFees field preserves the source amount so your application can label prices correctly.

Can I export to CSV or Excel?

Yes. Open the run dataset and choose CSV, Excel, JSON, XML, RSS, or another Apify export format.

How often should I schedule it?

Daily or weekly is typical for fare monitoring. Choose a frequency proportionate to your use case and avoid unnecessary overlapping runs.

Combine this Actor with other Automation Labs travel workflows:

Only public, relevant Automation Labs links are listed here. Availability may differ by account or publication status.

Start extracting Royal Caribbean fares

Choose a small source-supported filter, keep the first maxItems low, and run the Actor. The resulting sailing-level dataset is ready for export, scheduling, analysis, and fare-alert integrations.