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.
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.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/d0df45a4-b7a3-4b3c-a180-f386d959d408/list_ships' \ -H 'X-API-Key: $PARSE_API_KEY'
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")
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.
No input parameters required.
{
"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.
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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- 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.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.