Discover/NCL API
live

NCL APIncl.com

Access NCL fleet data, cruise itineraries, sailing dates, ports of call, and destination filters via 5 structured endpoints returning real-time availability.

Endpoint health
verified 7d ago
list_ships
list_destinations
search_cruises
get_itinerary_sailings
get_itinerary_details
5/5 passing latest checkself-healing
Endpoints
5
Updated
22d ago

What is the NCL API?

The NCL API provides access to Norwegian Cruise Line's fleet, destinations, and itineraries across 5 endpoints. Use search_cruises to query itineraries with filters for ship, destination, and pagination, or call get_itinerary_details to retrieve full port-of-call schedules, embarkation and disembarkation ports, sailing date ranges, and duration data for any specific itinerary code.

Try it

No input parameters required.

api.parse.bot/scraper/d0df45a4-b7a3-4b3c-a180-f386d959d408/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/d0df45a4-b7a3-4b3c-a180-f386d959d408/list_ships' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace ncl-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: NCL cruise SDK — browse fleet, search itineraries, view sailings."""
from parse_apis.norwegian_cruise_line__ncl__api import NCL, Itinerary, ItineraryNotFound

client = NCL()

# List all ships in the NCL fleet
for ship in client.ships.list(limit=5):
    print(ship.title, ship.code, ship.count)

# List destinations to discover filter codes
for dest in client.destinations.list(limit=5):
    print(dest.title, dest.code, dest.count, dest.ports)

# Search Caribbean itineraries
itinerary = client.itineraries.search(destinations="CARIBBEAN", limit=1).first()
if itinerary:
    print(itinerary.title, itinerary.ship.title, itinerary.combined_price)
    for port in itinerary.ports_of_call:
        print(port.title, port.code)

    # Drill into sailings for this itinerary
    for sailing in itinerary.sailings.list(guests=2, limit=3):
        print(sailing.sail_start_date, sailing.sail_end_date, sailing.package_id)

# Typed error handling on a bad itinerary code
try:
    detail = client.itineraries.get(code="INVALID_CODE_XYZ")
    print(detail.title)
except ItineraryNotFound as exc:
    print(f"Itinerary not found: {exc.itinerary_code}")

print("exercised: ships.list / destinations.list / itineraries.search / sailings.list / itineraries.get")
All endpoints · 5 totalmissing one? ·

List all Norwegian Cruise Line ships currently in the fleet. Returns ship codes, names, and available cruise counts. Each ship entry includes availability status and the number of cruises currently offered on that vessel.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "ships": "array of ship objects with code, title, count, and availability fields"
  },
  "sample": {
    "data": {
      "ships": [
        {
          "code": "AQUA",
          "count": 15,
          "title": "Norwegian Aqua",
          "weight": 0,
          "isSelected": false,
          "isAvailable": true,
          "isPreselected": false,
          "requiresLogin": false
        },
        {
          "code": "GETAWAY",
          "count": 22,
          "title": "Norwegian Getaway",
          "weight": 0,
          "isSelected": false,
          "isAvailable": true,
          "isPreselected": false,
          "requiresLogin": false
        }
      ]
    },
    "status": "success"
  }
}

About the NCL API

Fleet and Destination Lookup

The list_ships endpoint returns every ship currently in the NCL fleet, including each ship's code, display name, and the count of available cruises assigned to it. The list_destinations endpoint returns destination objects that include a code, title, image URL, associated port codes, and cruise count. The codes returned by both endpoints feed directly into the ships and destinations filter parameters of search_cruises.

Searching and Filtering Itineraries

search_cruises accepts comma-separated ships and destinations filter strings, plus integer limit and offset parameters for pagination against the total count returned in the response. Each itinerary object in the itineraries array includes an itinerary code, title, ship reference, port list, pricing fields, and duration. The filters object in the response enumerates all valid filter options currently available — ships, destinations, durations, ports, and date ranges — so you can build dynamic filter UI without a separate metadata call.

Sailing Dates and Full Itinerary Details

get_itinerary_sailings accepts a required itinerary_code and an optional guests count, returning deduplicated sailing objects with sailStartDate, sailEndDate, packageId, and stateroom status. get_itinerary_details returns the complete itinerary record: ship code and name, duration in days and text, the full portsOfCall array with codes and titles, and explicit embarkationPort and disembarkationPort objects — useful when you need to distinguish where a cruise begins versus ends.

Reliability & maintenanceVerified

The NCL API is a managed, monitored endpoint for ncl.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ncl.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official ncl.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
7d ago
Latest check
5/5 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a cruise comparison tool that filters NCL sailings by ship and destination using codes from list_ships and list_destinations.
  • Display a sailing calendar for a specific itinerary by pulling all departure and arrival dates from get_itinerary_sailings.
  • Generate port-by-port itinerary summaries using the portsOfCall array from get_itinerary_details.
  • Paginate through the full NCL inventory with search_cruises offset and limit params to index cruise pricing data.
  • Track cruise availability and pricing changes over time by polling search_cruises for a given ship or destination filter.
  • Build an embarkation-port lookup showing which cruises depart from a specific port using embarkationPort fields from get_itinerary_details.
  • Map NCL destinations to their associated port codes using the ports field returned by list_destinations.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does Norwegian Cruise Line have an official developer API?+
NCL does not publish a public developer API or documentation portal for third-party access to its itinerary and fleet data.
What does search_cruises return, and how does filtering work?+
search_cruises returns an itineraries array, a total count, and a filters object listing all currently valid filter values. You filter by passing comma-separated ship codes (from list_ships) to the ships parameter, and comma-separated destination codes (from list_destinations) to the destinations parameter. Pagination is controlled via limit and offset against the total field.
Does get_itinerary_sailings return cabin-level pricing for each sailing date?+
It returns sailing objects with sailStartDate, sailEndDate, packageId, title, and status — but does not break down pricing by cabin category or stateroom type per sailing date. The search_cruises and get_itinerary_details endpoints include pricing fields at the itinerary level. You can fork this API on Parse and revise it to add a cabin-pricing endpoint if per-sailing stateroom pricing is needed.
Is shore excursion or onboard amenity data available?+
Not currently. The API covers ships, destinations, itineraries, sailing dates, and ports of call. Shore excursions, dining packages, and onboard amenity details are not included. You can fork this API on Parse and revise it to add endpoints for those data types.
How should I handle pagination when retrieving all NCL itineraries?+
search_cruises returns a total integer alongside each page of results. Increment the offset by your chosen limit value on each request until offset exceeds total. There is no cursor-based pagination; integer offset and limit are the only controls.
Page content last updated . Spec covers 5 endpoints from ncl.com.
Related APIs in TravelSee all →
royalcaribbean.com API
Search and compare Royal Caribbean cruises by destination, ship, itinerary, and price. Access detailed sailing information including port schedules, voyage durations, and fares across all global routes and departure dates.
disneycruise.disney.go.com API
Browse and compare Disney Cruise Line shore excursions across all ports and destinations with detailed information on pricing, duration, age requirements, and activity descriptions. Search by location or keyword to find the perfect Port Adventure for your cruise vacation.
shoreexcursionsgroup.com API
Search and browse shore excursions from ports worldwide, comparing pricing, features, highlights, and customer reviews all in one place. Find the perfect activity for your cruise stop by filtering destinations and ports, then dive into detailed excursion information to plan your next adventure.
expedia.com API
Search for hotels and flights across Expedia while viewing detailed property information to compare prices and amenities for your travel plans. Get comprehensive travel options all from one integration without manually browsing the website.
saga.co.uk API
Search and book holiday excursions from Saga UK with detailed information on destinations, pricing, flights, and meal options. Find the perfect getaway by browsing excursion listings and comparing trip details including cost, duration, and included activities.
cma-cgm.com API
Track shipping routes and vessel schedules across CMA CGM's 280+ shipping lines, including detailed port-to-port rotations, fleet information, and service specifics. Search for specific routes or browse complete shipping schedules to plan logistics and monitor maritime transportation options.
skiplagged.com API
Search for flights across airlines including hidden-city ticketing options, and look up airport information by name or code to find the best travel deals. Access Skiplagged's flight inventory and routing data to discover cheaper itineraries and alternative airport combinations.
yachtbuyer.com API
Search and browse thousands of used and new yachts, boats, and tenders with detailed listings and specifications. Stay informed with the latest maritime news and intelligence while discovering top-rated vessels in the market.