Go APIdisneycruise.disney.go.com ↗
Access Disney Cruise Line shore excursions across all ports and destinations. Get prices, duration, age restrictions, and activity details via 3 endpoints.
What is the Go API?
The Disney Cruise Line Port Adventures API exposes shore excursion data across all Disney Cruise Line destinations through 3 endpoints. Use list_excursions to search and filter the full catalog by port, destination slug, or keyword, returning prices, activity levels, experience types, and audience suitability per excursion. Use get_excursion_details for full per-excursion data including duration, age restrictions, and know-before-you-go preparation notes.
curl -X GET 'https://api.parse.bot/scraper/6a59f532-990b-4d09-996f-a021bbe8a568/list_excursions?destination=all' \ -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 disneycruise-disney-go-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: Disney Cruise Line Shore Excursions — browse ports, search excursions, drill into details."""
from parse_apis.disney_cruise_line_shore_excursions_api import (
DisneyCruise,
Destination,
ExcursionNotFound,
)
client = DisneyCruise()
# List Caribbean ports — limit caps total items fetched
for port in client.ports.list(destination=Destination.CARIBBEAN, limit=5):
print(port.name, port.destinations)
# Search excursions by keyword, take the first match
excursion = client.excursionsummaries.search(
destination=Destination.CARIBBEAN, query="snorkel", limit=1
).first()
if excursion:
print(excursion.name, excursion.port, excursion.price_display)
# Drill into the full detail via the summary's navigation op
detail = excursion.details()
print(detail.duration, detail.age_restriction, detail.prices.adult)
# Typed error handling on a bad ID
try:
bad = client.excursionsummaries.search(query="nonexistent_xyz_999", limit=1).first()
if bad:
bad.details()
except ExcursionNotFound as exc:
print(f"Not found: {exc.excursion_id}")
print("exercised: ports.list / excursionsummaries.search / .details()")
List shore excursions (Port Adventures) with optional filtering by destination, port, or keyword. Returns all matching excursions in a single page. Each result includes name, code, port, prices, experience types, activity level, and audience suitability. Filtering is case-insensitive partial match on port and keyword.
| Param | Type | Description |
|---|---|---|
| port | string | Filter by port name (partial match, case-insensitive). |
| query | string | Search keyword to filter excursions by name, code, port, or experience type (case-insensitive). |
| destination | string | Destination slug to filter by. |
{
"type": "object",
"fields": {
"total": "integer count of matching excursions",
"excursions": "array of excursion summary objects",
"ports_found": "array of port names with matching excursions",
"destinations_queried": "array of destination slugs that were searched"
}
}About the Go API
Endpoints and Coverage
The API covers three core operations: listing all shore excursions with filters (list_excursions), retrieving full details for a single excursion (get_excursion_details), and browsing available ports of call (list_ports). Together they map the complete Port Adventures catalog as published on the Disney Cruise Line website.
Listing and Filtering Excursions
list_excursions accepts three optional parameters — port (partial, case-insensitive match), destination (destination slug), and query (keyword matched against name, code, port, or experience type). The response includes a total count, an excursions array of summary objects, a ports_found array showing which ports matched, and a destinations_queried array. Each excursion summary carries the name, code, adult/child/infant prices, experience_types, activity_level, and audience suitability flags.
Excursion Details
Pass a numeric excursion_id from list_excursions results to get_excursion_details to retrieve the full record. The response adds description, duration, good_for age group labels, image_url, and the direct url to the detail page on disneycruise.disney.go.com. Know-before-you-go preparation information and faceted metadata are also returned.
Port and Destination Structure
list_ports returns ports grouped two ways: ports_by_destination maps each destination slug to its port objects (id and name), and all_ports is a flat deduplicated list where each port carries its associated destinations array. This makes it straightforward to enumerate valid values for the destination and port filters in list_excursions.
The Go API is a managed, monitored endpoint for disneycruise.disney.go.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when disneycruise.disney.go.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 disneycruise.disney.go.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 port-by-port excursion browser showing prices and duration for each stop on a cruise itinerary.
- Compare adult vs. child vs. infant pricing across excursions at a given port using the
pricesfields fromget_excursion_details. - Filter excursions by activity level and audience suitability to surface family-appropriate or adult-only options.
- Populate a destination guide with the full list of ports returned by
list_portsand their associated destination slugs. - Keyword-search the catalog (e.g. 'snorkel' or 'cultural') using the
queryparam inlist_excursionsto group excursions by theme. - Display age restriction and
good_forlabels alongside duration to help travelers with young children pre-select excursions. - Aggregate excursion counts and price ranges per destination for a cruise comparison tool.
| 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.
Does Disney Cruise Line offer an official public developer API for Port Adventures data?+
What does `get_excursion_details` return beyond what `list_excursions` provides?+
get_excursion_details adds fields not present in the listing summary: description (full text), duration, good_for age group labels, image_url, know-before-you-go preparation notes, faceted metadata, and the direct url to the excursion's page. It requires a numeric excursion_id obtained from a list_excursions call.Does the API return availability or booking status for excursions?+
How do I find valid destination slugs to use as filter values?+
list_ports without any parameters. The response includes a destinations array of all available destination slugs and a ports_by_destination object keyed by those slugs. Use those slug values as the destination parameter in list_excursions or a subsequent list_ports call.