Royal Caribbean Cruise Pricing Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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?
| Field | Description |
|---|---|
cruiseGroupId | Royal Caribbean grouped cruise result ID |
sailingId | Stable itinerary-and-date sailing ID |
itineraryCode | Source itinerary/package code |
itineraryName | Public itinerary title |
destinationName | Destination region |
shipName | Royal Caribbean ship |
departurePortName | Embarkation port and region |
nights | Cruise duration |
sailDate, startDate, endDate | Sailing dates |
interiorPrice | Interior cabin price, when offered |
outsidePrice | Outside/Ocean View price, when offered |
balconyPrice | Balcony cabin price, when offered |
suitePrice | Deluxe/Suite cabin price, when offered |
cabinPrices | Every source cabin category with currency and code |
taxesAndFees | Source-reported taxes and fees |
taxesAndFeesIncluded | Whether the displayed fare includes those fees |
itinerary | Day-by-day port calls and activities |
productUrl, bookingUrl | Direct Royal Caribbean links |
scrapedAt | UTC extraction timestamp |
How to scrape Royal Caribbean cruise prices
- Open the Actor input page.
- Optionally enter destination, departure-port, or ship codes.
- Add a sailing date or cruise-duration range if needed.
- Set Maximum sailings to a small value for the first run.
- Click Start.
- 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 tier | Price per sailing | 1,000 sailings plus start |
|---|---|---|
| Free | $0.000057387 | about $0.0624 |
| Bronze | $0.000049902 | about $0.0549 |
| Silver | $0.000038923 | about $0.0439 |
| Gold | $0.000029941 | about $0.0349 |
| Platinum | $0.000019961 | about $0.0250 |
| Diamond | $0.000013973 | about $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
- Choose a ship, departure port, destination, or date window.
- Save the configuration as an Apify task.
- Schedule it daily or weekly.
- Export each dataset to your database or spreadsheet.
- Match records by
sailingIdand compare cabin fields. - 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.
suitePricemaps Royal Caribbean'sDELUXEtop-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 ApifyClientclient = 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().itemsprint(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.
Is it legal to scrape Royal Caribbean cruise data?
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.
Related scrapers
Combine this Actor with other Automation Labs travel workflows:
- Google Maps Scraper for travel-agent and local-tour lead research.
- Booking Scraper for destination accommodation research.
- Tripadvisor Scraper for destination and attraction intelligence.
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.