Princess Scraper - Complete Cruise Data Extractor
by sercul
Why Choose This Scraper? ✅ Extract from 2 Princess domains (US, UK) ✅ Complete cruise data with pricing & itineraries ✅ Filter by all destination regi...
Opens on Apify.com
About Princess Scraper - Complete Cruise Data Extractor
Why Choose This Scraper? ✅ Extract from 2 Princess domains (US, UK) ✅ Complete cruise data with pricing & itineraries ✅ Filter by all destination regions ✅ TypeScript reliability ✅ Apify/custom proxy support
What does this actor do?
Princess Scraper - Complete Cruise Data Extractor is a web scraping and automation tool available on the Apify platform. It's designed to help you extract data and automate tasks efficiently in the cloud.
Key Features
- Cloud-based execution - no local setup required
- Scalable infrastructure for large-scale operations
- API access for integration with your applications
- Built-in proxy rotation and anti-blocking measures
- Scheduled runs and webhooks for automation
How to Use
- Click "Try This Actor" to open it on Apify
- Create a free Apify account if you don't have one
- Configure the input parameters as needed
- Run the actor and download your results
Documentation
Princess Cruises Scraper Apify actor for scraping cruise data from Princess Cruises website. ## Features - Fetches cruise itineraries and pricing data from Princess Cruises API - Supports multiple regions: USA, UK - Handles pagination and batch pricing requests - Extracts lowest available prices (prioritizes Interior cabins) - Includes cabin availability information - Retry logic with exponential backoff ## API Structure The scraper makes two main API calls. Note: Different endpoints and formats for different regions! ### 1. Itineraries API US Market: - GET https://gw.api.princess.com/pcl-web/api/cruisesearch/v1/product?pageSize=500 UK Market: - GET https://gw.api.princess.com/pcl-web/internal/resdb/p1.0/products?agencyCountry=GB&cruiseType=C&voyageStatus=A&webDisplay=Y&promoFilter=all&light=false Returns: - Product/itinerary IDs - Cruise IDs (individual sailings) - Ship information - Port details - Sailing dates and durations ### 2. Pricing API All Markets (same endpoint): - POST https://gw.api.princess.com/pcl-web/internal/caps/pc/pricing/v1/cruises Returns: - Prices per cabin category - Availability status - Guest pricing details - Promotional information Pricing Format Differences: - US: Uses averageGuestPrice field directly - UK: Uses guests[0].fare field (no averageGuestPrice) - US: Has igvtIncluded and rcfeIncluded flags - UK: Has tfpeIncluded flag instead ## Data Mapping - itineraryId = products.id (from first API) - cruiseId = cruises.id (from both APIs) - price.amount = Lowest categories[].averageGuestPrice (prioritizes "IB" Interior category) - stateroomPricing = ALL categories[] with prices (IB, O5, DH, C2, S9, etc.) ### Cabin Categories Extracted The scraper extracts all available cabin types with their prices, availability, and cabin counts: US Market Codes: - IB, IF, IE - Interior (Inside cabins) - O5, OB, OC - Oceanview - DH - Deluxe Balcony - BA, BB - Balcony - C2 - Club Class Mini-Suite - MC - Mini-Suite - S9, S8, S7 - Suite UK Market Codes: - IF - Interior - OF - Oceanview - BF, BE - Balcony - ME - Mini-Suite - S6, S4 - Suite Each cabin type includes: - Price per person - Currency - Availability (e.g., "9+", "2", "1") - Number of available cabins Note: Pricing is extracted from averageGuestPrice (US/AUS) or guests[0].fare (UK). ## Configuration ### Input Parameters - region (required): Locale to scrape - en_US or en_GB - maxRows (optional): Maximum number of results (default: 500) - maxRequestRetries (optional): Number of retries for failed requests (default: 5) - requestHandlerTimeoutSecs (optional): Request timeout in seconds (default: 30) - useApifyProxy (optional): Use Apify proxy (default: false) - proxyUrl (optional): Custom proxy URL (format: http://user:pass@proxy.com:port) - apifyProxyGroups (optional): Apify proxy groups (default: ["RESIDENTIAL"]) - apifyProxyCountryCode (optional): Proxy country code (e.g., US, GB, AU) - auto-matches region if not set ### Output Schema Output format matches Royal Caribbean and NCL standard for compatibility with unified data handlers: json { "cruiseId": "1542", "itineraryId": "MLR070", "title": "Mexican Riviera", "description": "Mexican Riviera", "shipName": "Royal Princess", "shipId": "RP", "departurePort": { "name": "Los Angeles, California", "code": "LAX" }, "arrivalPort": { "name": "Los Angeles, California", "code": "LAX" }, "departureDate": "2025-11-29", "arrivalDate": "2025-12-06", "duration": "7 nights", "price": { "amount": "229", "currency": "USD" }, "portsOfCall": [ { "name": "Los Angeles, California", "day": "Day 1" }, { "name": "Cabo San Lucas, Mexico", "day": "Day 2" } ], "availabilityStatus": "9+", "destinationNames": ["Los Angeles, California", "Cabo San Lucas, Mexico", ...], // Dynamic pricing fields for all cabin categories "price_USD_IB": "229", "classification_USD_IB": "Interior", "roomTypeId_USD_IB": "IB", "availability_USD_IB": "9+", "availableCabins_USD_IB": "13", "price_USD_O5": "569", "classification_USD_O5": "Oceanview", "roomTypeId_USD_O5": "O5", "availability_USD_O5": "9+", "availableCabins_USD_O5": "11", "price_USD_DH": "799", "classification_USD_DH": "Deluxe Balcony", "roomTypeId_USD_DH": "DH", "availability_USD_DH": "9+", "availableCabins_USD_DH": "13", "price_USD_C2": "699", "classification_USD_C2": "Club Class Mini-Suite", "roomTypeId_USD_C2": "C2", "availability_USD_C2": "9+", "availableCabins_USD_C2": "14", "price_USD_S9": "2629", "classification_USD_S9": "Suite", "roomTypeId_USD_S9": "S9", "availability_USD_S9": "1", "availableCabins_USD_S9": "1", // ... (more dynamic fields as available) "platform": "princess-en-US", "company": "princess", "region": "US", "locale": "en-US", "currency": "USD", "date": "2025-11-24T...", "source_url": "https://www.princess.com/itinerary-details/?voyageCode=1542" } ## Development ### Local Setup bash # Install dependencies npm install # Run locally npm run start:dev # Build npm run build # Lint npm run lint ### Deploy to Apify bash # Login to Apify apify login # Push to Apify apify push ## Implementation Details ### Region-Specific Configuration US Market (USA): - Itineraries: /pcl-web/api/cruisesearch/v1/product - Booking Company: PC - Home City: LAX - Border Countries: CA, PR, MX, VI, BM, UN - DSM Region: 09, District: 0D - Pricing uses averageGuestPrice UK Market (GBR): - Itineraries: /pcl-web/internal/resdb/p1.0/products?agencyCountry=GB... - Booking Company: PO (not PC!) - Home City: LON - Border Countries: GB, GI, MT, IE - DSM Region: R0, District: 00 - Pricing uses guests[0].fare - Has creditCardChargeFeesFlag and internationalFaxFlag ### Price Selection Logic The scraper prioritizes Interior cabin categories (IB for US, IF for UK) as they typically offer the lowest price. If not available, it selects the category with the lowest price across all cabin types. Supports both US pricing format (averageGuestPrice) and UK format (guests[0].fare). ### Batch Processing - Fetches all itineraries in one request (up to 500) - Fetches pricing in batches of 50 cruises at a time - Implements delays between batches to avoid rate limiting ### Error Handling - Retry logic with exponential backoff for failed requests - Skips cruises without pricing data - Continues processing on partial failures - Detailed error logging for debugging ## Notes - Princess Cruises API uses YYYYMMDD date format, converted to ISO format in output - Session ID is generated for each scraper run - Ship names are mapped from ship codes - Port names are mapped from port codes
Common Use Cases
Market Research
Gather competitive intelligence and market data
Lead Generation
Extract contact information for sales outreach
Price Monitoring
Track competitor pricing and product changes
Content Aggregation
Collect and organize content from multiple sources
Ready to Get Started?
Try Princess Scraper - Complete Cruise Data Extractor now on Apify. Free tier available with no credit card required.
Start Free TrialActor Information
- Developer
- sercul
- Pricing
- Paid
- Total Runs
- 69
- Active Users
- 3
Related Actors
Google Maps Reviews Scraper
by compass
Google Maps Scraper
by compass
Tripadvisor Reviews Scraper
by maxcopell
Apartments.com Scraper 🏡
by epctex
Apify provides a cloud platform for web scraping, data extraction, and automation. Build and run web scrapers in the cloud.
Learn more about ApifyNeed Professional Help?
Couldn't solve your problem? Hire a verified specialist on Fiverr to get it done quickly and professionally.
Trusted by millions | Money-back guarantee | 24/7 Support