Shore Excursions Group APIshoreexcursionsgroup.com ↗
Access cruise port excursion data from shoreexcursionsgroup.com — pricing, highlights, review scores, activity levels, and restrictions across worldwide ports.
What is the Shore Excursions Group API?
The Shore Excursions Group API covers 5 endpoints that expose excursion listings, pricing, and detailed tour metadata across cruise ports worldwide. Starting with list_destinations, you can traverse the full catalog from destination regions down to individual tour pages, retrieving fields like sale_price, score, activity_level, highlights, and restrictions for each excursion without building any navigation logic yourself.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/09f2ca20-4932-4381-9a12-d66b71170376/list_destinations' \ -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 shoreexcursionsgroup-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.
"""Shore Excursions Group API — discover cruise port excursions worldwide."""
from parse_apis.shore_excursions_group_api import ShoreExcursions, NotFoundError_
client = ShoreExcursions()
# List all cruise destination regions
for dest in client.destinations.list(limit=5):
print(dest.name, dest.url)
# List ports in Alaska by region slug
for port in client.ports.list(region_slug="alaska-shore-excursions", limit=5):
print(port.name, port.port_slug)
# Drill into a specific port's excursion summaries via constructible Port
port = client.port(port_slug="juneau-excursion-tours")
for exc in port.excursions(limit=3):
print(exc.shore_name, exc.price, exc.sale_price)
# Get full details for the first excursion summary
summary = port.excursions(limit=1).first()
if summary:
try:
detail = summary.details()
print(detail.shore_name, detail.score, detail.activity_level)
print(detail.shore_excursion_duration, detail.restrictions)
except NotFoundError_ as exc:
print(f"Tour not found: {exc}")
# Fetch complete details for multiple excursions at once
for full in port.excursions_full(max_excursions=2, limit=2):
print(full.shore_name, full.score, full.shore_excursion_type)
print("exercised: destinations.list / ports.list / port.excursions / summary.details / port.excursions_full")
List all available destination regions (e.g., Alaska, Caribbean, Europe). Each destination includes a name and URL; the URL's trailing slug is the region_slug for list_region_ports. Returns all regions in one response with no pagination.
No input parameters required.
{
"type": "object",
"fields": {
"destinations": "array of destination objects with name and url",
"destination_count": "integer total number of destinations"
},
"sample": {
"data": {
"destinations": [
{
"url": "https://www.shoreexcursionsgroup.com/alaska-shore-excursions",
"name": "Alaska"
},
{
"url": "https://www.shoreexcursionsgroup.com/caribbean-shore-excursions",
"name": "Caribbean"
}
],
"destination_count": 18
},
"status": "success"
}
}About the Shore Excursions Group API
Navigating the Catalog
The API is structured as a three-level hierarchy. list_destinations returns all available destination regions (such as Alaska, Caribbean, or Europe) with their names and URL slugs. Pass a region_slug from those results into list_region_ports to get every port within that region, including each port's name, url, and port_slug. Those port_slug values feed directly into the excursion-level endpoints.
Listing and Detailing Excursions
list_port_excursions takes a port_slug and returns a summary array for every excursion at that port, including shore_name, price, sale_price, and savings alongside the excursion's URL. For full tour data, pass any tour URL to get_excursion_details, which returns highlights (array of strings), restrictions, activity_level, score (numeric, out of 5.0 or null), and sale pricing fields. The get_port_excursions_full endpoint fetches complete detail records for all excursions at a port in one call; the optional limit parameter caps how many full records are fetched, which matters for ports with large catalogs.
Pricing and Review Data
Every excursion object from the detail endpoints includes both the original price and sale_price when applicable, along with a savings string. Review scores are returned as a numeric score out of 5.0; the field is null when no score is available for that tour. Activity difficulty is exposed as the activity_level string, making it straightforward to filter excursions by physical demand.
Coverage and Scope
The API covers the public catalog on shoreexcursionsgroup.com. Destination and port coverage reflects whatever regions and ports the site currently lists. Since get_port_excursions_full fetches one detail page per excursion, response time scales with the number of tours at a port; use the limit parameter when you need faster partial results.
The Shore Excursions Group API is a managed, monitored endpoint for shoreexcursionsgroup.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when shoreexcursionsgroup.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 shoreexcursionsgroup.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 itinerary planner that surfaces available excursions and current prices for each port of call.
- Track sale prices and savings amounts across multiple ports to alert travelers to discounts.
- Aggregate review scores by activity level to recommend excursions based on physical fitness level.
- Compare excursion counts and price ranges across competing destination regions for travel research.
- Filter out excursions with age or accessibility restrictions from a results list before presenting to users.
- Populate a port guide app with tour highlights and activity descriptions sourced from detailed excursion records.
- Monitor catalog size changes at specific ports by periodically calling list_port_excursions and comparing excursion_count.
| 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 shoreexcursionsgroup.com have an official developer API?+
What does get_excursion_details return beyond basic pricing?+
price, sale_price, and savings, the endpoint returns an array of highlights strings, a restrictions field covering accessibility and age rules, an activity_level string describing difficulty, a numeric score out of 5.0 (or null), and the port_name and shore_name for the tour.Does the API expose the number of reviews behind each score, or written review text?+
score field per excursion but does not expose individual review counts or review text. You can fork it on Parse and revise to add an endpoint that fetches per-review data from individual tour pages.How does get_port_excursions_full differ from calling list_port_excursions and then get_excursion_details separately?+
get_port_excursions_full automates that loop and returns complete detail objects — including highlights, restrictions, activity_level, and score — for all excursions at a port in one response. Use the optional limit integer parameter to cap the number of full records returned when you only need a subset.