Norwegian (NCL) Scraper - Complete Cruise Data Extractor
Pricing
from $2.00 / 1,000 results
Norwegian (NCL) Scraper - Complete Cruise Data Extractor
Norwegian Cruise Line (NCL) data extractor - 6 markets, 20 destinations, with optional detail enrichment (images, ports). Per-cabin pricing, session rotation, residential proxy handling. Ideal for travel APIs and price comparison platforms.
Norwegian Cruise Line (NCL) Scraper — Complete Cruise Data Extractor
Extract cruise listings, itineraries, and cabin-level pricing from Norwegian Cruise Line across 10 international markets. Built for travel agencies, price comparison sites, affiliate marketers, and analysts.
Why Choose This Scraper?
- ✅ Extract from 10 NCL markets (US, UK, Canada, Australia, Italy, Germany, France, Spain, Netherlands, Brazil) with local-currency pricing
- ✅ Complete cruise data with cabin-level pricing across every tier (Interior, Ocean View, Balcony, Mini-Suite, Suite, The Haven)
- ✅ Filter by 20 destination regions (Caribbean, Alaska, Mediterranean, Northern Europe, Hawaii, and more)
- ✅ Multiple fare tiers per cabin captured (standard vs. promotional) without overwriting
- ✅ Optional detail enrichment for richer ports, imagery, and direct source URLs per itinerary
Use Cases
- Travel agencies & OTAs — track NCL pricing against competitors daily
- Affiliate/comparison sites — populate NCL inventory with deep-links
- Price analysts — monitor NCL fare curves for forecasting
- Internal benchmarking — cruise lines comparing against NCL positioning
Supported Markets
| Region | Market | Output Currency |
|---|---|---|
en_US | United States | USD |
en_GB | United Kingdom | GBP |
en_CA | Canada | CAD |
en_AU | Australia | AUD |
it_IT | Italy | EUR |
de_DE | Germany | EUR |
fr_FR | France | EUR |
es_ES | Spain | EUR |
nl_NL | Netherlands | EUR |
pt_BR | Brazil | BRL |
Prices are returned in the market's local currency. Each run validates the returned currency against the selected region and skips any sailing whose currency does not match.
Input
| Parameter | Type | Description | Default |
|---|---|---|---|
region* | string | Market to scrape | it_IT |
maxRows | number | Maximum number of cruises to save (1–5000) | 100 |
destinations | string[] | Filter by destination code (multi-select) | All |
enrichDetails | boolean | Fetch detail endpoint per itinerary to enrich images/ports and add source_url | false |
maxConcurrency | number | Maximum concurrent requests (1–200) | 10 |
maxRequestRetries | number | Retries for failed requests (1–10) | 3 |
requestHandlerTimeoutSecs | number | Request timeout in seconds (10–300) | 30 |
useApifyProxy | boolean | Use Apify RESIDENTIAL proxy (disable only if providing a custom proxyUrl) | true |
apifyProxyCountryCode | string | Two-letter country code to pin Apify Proxy (e.g. GB, US). Empty = derive from region | Auto |
apifyProxyGroups | string | Apify Proxy groups, comma-separated (e.g. RESIDENTIAL) | — |
proxyUrl | string | Custom proxy URL (use only if useApifyProxy=false). Must be geo-matched to the region country | — |
Proxy required — a geo-matched proxy is needed for every market. Both Apify
RESIDENTIAL and per-country datacenter proxies work. Either enable useApifyProxy
(the proxy country is derived from the region) or provide a geo-matched proxyUrl.
Destination Codes
| Code | Destination |
|---|---|
AFRICA | Africa |
ALASKA | Alaska |
ASIA | Asia |
AUSTRALIA | Australia & New Zealand |
BAHAMAS | Bahamas |
BERMUDA | Bermuda |
CANADA_NEW_ENGL | Canada & New England |
CARIBBEAN | Caribbean |
EXTRAORDINARY_JOURNEYS | Extraordinary Journeys |
GREEK_ISLES | Greek Isles |
HAWAII | Hawaii |
MEDITERRANEAN | Mediterranean |
MEXICAN_RIVIERA | Mexico |
NORTHERN_EUROPE | Northern Europe |
PACIFIC_COASTAL | Pacific Coastal |
PANAMA_CANAL | Panama Canal |
SOUTH_AMERICA | South America |
SOUTH_PACIFIC | South Pacific |
TRANSATLANTIC | Transatlantic |
WEEKEND | Weekend |
Lowercase slug forms are also accepted (e.g.
alaska,caribbean).
Cabin Codes
| Code | Cabin Type |
|---|---|
INSIDE | Interior (Inside stateroom) |
OCEANVIEW | Ocean View / Outside |
BALCONY | Balcony |
MINISUITE | Mini-Suite |
SUITE | Suite |
HAVEN | The Haven (ship-within-a-ship suites) |
Output
Each record is a single sailing with:
- Cruise and itinerary identifiers (
cruiseId,itineraryId) - Ship name, departure and arrival ports, sailing dates, duration (nights)
- Lowest available per-person price with currency (
price.amount,price.currency) - Ports of call with day indicators (
portsList[].portName,portsList[].dayIndicator) - Dynamic per-cabin price fields:
price_{CURRENCY}_{CABIN}(e.g.price_EUR_INSIDE,price_EUR_BALCONY) - Additional fare tiers per cabin captured with a disambiguated suffix
- Service charges and port charges (where available)
source_url— direct link to the sailing page for deep-linking / affiliate tracking (present only on detail-enriched runs, i.e. whenenrichDetailsis on)platformandregion— for multi-market deduplication
Sample Output
The source_url field below appears only on detail-enriched runs (enrichDetails: true).
{"cruiseId": "1234567","itineraryId": "EU7_ROME_BARCELONA","platform": "ncl-it_IT","region": "it_IT","title": "Norwegian Epic 7 nights","shipName": "Norwegian Epic","departureDate": "2026-09-12","arrivalDate": "2026-09-19","duration": "7","price": {"amount": "1299","currency": "EUR"},"price_EUR_INSIDE": "1299","price_EUR_OCEANVIEW": "1499","price_EUR_BALCONY": "1799","price_EUR_MINISUITE": "2199","price_EUR_SUITE": "3299","price_EUR_HAVEN": "4899","portsList": [{ "portName": "Rome (Civitavecchia)", "dayIndicator": "Day 1" },{ "portName": "Naples", "dayIndicator": "Day 2" },{ "portName": "Barcelona", "dayIndicator": "Day 7" }],"source_url": "https://www.ncl.com/it/it/..."}
Runtime & Cost
- Typical run: a few minutes for the default 100 rows on a single market
- Larger sweeps: scale
maxRows(up to 5000) and concurrency for a fuller catalog - Detail enrichment: enabling
enrichDetailsadds one request per unique itinerary — richer ports/imagery, but slower - Proxy: required on all markets (Apify RESIDENTIAL by default, or a geo-matched custom proxy)
Usage
{"region": "it_IT","maxRows": 500,"destinations": ["MEDITERRANEAN", "CARIBBEAN"],"useApifyProxy": true}
Notes
- NCL prices are per-person
- Each run pins the proxy country to the selected region and drops any sailing whose returned currency does not match the market
- Multiple fare tiers for the same cabin (e.g. standard vs. promotional) are kept side-by-side rather than overwritten
- For affiliate tracking, append your affiliate parameters to
source_urlon the consuming side
Related Actors
Looking to build a full cruise pricing dataset? Pair this with:
- Royal Caribbean Scraper — 6 markets, per-cabin pricing
- Disney Cruise Line Scraper — 5 markets, destination filtering
- Celebrity Cruises Scraper — 8 markets, service charges included
- Carnival Cruises Scraper — 2 markets, high volume
- MSC / Costa / Princess / Holland America Scrapers — full coverage
Support
Issues or custom requests? Email support@track.cruises.