Discover/Ticketcrociere API
live

Ticketcrociere APIticketcrociere.it ↗

Search cruise departures from ticketcrociere.it by company, ship, port, destination, price, and duration. Returns itinerary and pricing data via 2 endpoints.

Endpoint health
monitored
list_search_filters
search_cruises
Checks pendingself-healing
Endpoints
2
Updated
1h ago

What is the Ticketcrociere API?

The ticketcrociere.it API exposes 2 endpoints that cover cruise departure search across the Italian market. The search_cruises endpoint returns paginated departure records — up to 10 per page — filterable by company, ship, port, destination area, country, departure month, and price band. A companion list_search_filters endpoint returns the full filter vocabulary with IDs needed to drive those searches.

This call costs1 credit / call— charged only on success
Try it
Comma-separated departure months in YYYYMM form (from periods[*].id), e.g. 202612 or 202701,202702.
Cruise length band in nights (durations[*].id).
Comma-separated departure port ids (from ports[*].id).
Comma-separated ship ids (from ships[*].id).
Comma-separated cruise company ids (from companies[*].id), e.g. 2 or 1,2. Narrows the returned lists to that selection.
Comma-separated country ids (from countries[*].id).
Per-person starting price band in EUR (price_ranges[*].id).
Comma-separated destination area ids (from destinations[*].id).
→ api.parse.bot/scraper/81f095a9-a362-4b97-b3aa-2ddf8607e4c7/<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/81f095a9-a362-4b97-b3aa-2ddf8607e4c7/list_search_filters?company_ids=1' \
  -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 ticketcrociere-it-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: ticketcrociere cruise search — browse filters, then search departures."""
from parse_apis.ticketcrociere_it_api import (
    Ticketcrociere, SortOrder, PriceRange, InputFormatInvalid,
)

client = Ticketcrociere()

# Fetch the full filter vocabulary (companies, destinations, ports, etc.)
filters = client.filter_catalogs.get()
for company in filters.companies:
    print(company.id, company.name)

# Pick the first company and search its cheapest short cruises
company = filters.companies[0]
for cruise in client.cruises.search(
    company_ids=company.id,
    price_range=PriceRange.EUR_0_500,
    sort=SortOrder.PRICE_ASC,
    limit=5,
):
    print(cruise.title, cruise.nights, "nights", cruise.price_from_eur, "EUR")
    print("  stops:", " → ".join(cruise.itinerary_stops))

# Drill into one Mediterranean departure — guard against bad filter input
try:
    med = client.cruises.search(
        destination_ids=filters.destinations[0].id,
        sort=SortOrder.DEPARTURE_ASC,
        limit=1,
    ).first()
except InputFormatInvalid as e:
    print("bad filter value:", e.message)
    med = None
if med is not None:
    print(med.title, "|", med.departure_date_text)
    print("sold out:", med.sold_out, "ship:", med.ship_name)
    if med.detail_url is not None:
        print("details:", med.detail_url)

print("exercised: filter_catalogs.get / cruises.search")
All endpoints · 2 totalmissing one? ·

Returns the vocabulary accepted by search_cruises: companies, ships (with their company), destination areas (sea or river), countries, departure ports, departure months, price bands and duration bands, each with the exact id to pass to search_cruises. One round trip. With no inputs it returns the full catalogue; passing the same filter inputs that search_cruises accepts narrows every list to the values still compatible with that selection (the site's contextual search menu), so e.g. passing one company id returns only that company's ships, ports and months. Lists are ordered as the site presents them. Unknown ids are accepted upstream and simply yield the unfiltered or empty lists.

Input
ParamTypeDescription
periodsstringComma-separated departure months in YYYYMM form (from periods[*].id), e.g. 202612 or 202701,202702.
durationstringCruise length band in nights (durations[*].id).
port_idsstringComma-separated departure port ids (from ports[*].id).
ship_idsstringComma-separated ship ids (from ships[*].id).
company_idsstringComma-separated cruise company ids (from companies[*].id), e.g. 2 or 1,2. Narrows the returned lists to that selection.
country_idsstringComma-separated country ids (from countries[*].id).
price_rangestringPer-person starting price band in EUR (price_ranges[*].id).
destination_idsstringComma-separated destination area ids (from destinations[*].id).
Response
{
  "type": "object",
  "fields": {
    "ports": "array of {id, name, slug, country}; id is the value for port_ids",
    "ships": "array of {id, name, slug, company_id, company_name}; id is the value for ship_ids",
    "periods": "array of {id, name}; id is YYYYMM for the periods input, name is the Italian month label",
    "companies": "array of {id, name, slug}; id is the value for company_ids",
    "countries": "array of {id, name, slug}; id is the value for country_ids",
    "durations": "array of {id, name}; id is the value for duration",
    "destinations": "array of {id, name, slug, type}; type is 'Marittime' (sea) or 'Fluviali' (river); id is the value for destination_ids",
    "price_ranges": "array of {id, name}; id is the value for price_range"
  },
  "sample": {
    "data": {
      "ports": [
        {
          "id": "10",
          "name": "Ancona",
          "slug": "ancona",
          "country": "Italia"
        }
      ],
      "ships": [
        {
          "id": "24",
          "name": "MSC Armonia",
          "slug": "msc-armonia",
          "company_id": "2",
          "company_name": "MSC crociere"
        }
      ],
      "periods": [
        {
          "id": "202610",
          "name": "ottobre 2026"
        }
      ],
      "companies": [
        {
          "id": "2",
          "name": "MSC crociere",
          "slug": "msc-crociere"
        }
      ],
      "countries": [
        {
          "id": "262",
          "name": "Italia",
          "slug": "italia"
        }
      ],
      "durations": [
        {
          "id": "7_10",
          "name": "Da 7 a 10 notti"
        }
      ],
      "destinations": [
        {
          "id": "8",
          "name": "Mediterraneo",
          "slug": "mediterraneo",
          "type": "Marittime"
        },
        {
          "id": "48",
          "name": "Rodano",
          "slug": "rodano",
          "type": "Fluviali"
        }
      ],
      "price_ranges": [
        {
          "id": "0_500",
          "name": "Da 0 a 500 EUR"
        }
      ]
    },
    "status": "success"
  }
}

About the Ticketcrociere API

What the API Covers

The API surfaces cruise departure listings from ticketcrociere.it, an Italian cruise booking platform. Each departure record in search_cruises maps to a specific sailing date of an itinerary and includes fields such as itinerary_code, departure_code, company and ship identity, departure port, destination, price, duration, and availability status (a null itinerary_code signals sold-out inventory). The endpoint returns total_count and total_pages alongside each page so you can walk the full result set.

Filtering and Pagination

search_cruises accepts any combination of company_ids, ship_ids, port_ids, destination_ids, country_ids, periods (YYYYMM month codes), duration (a night-band id), and a price_range band. All filters combine with AND. Multi-value filters accept comma-separated ids — for example company_ids=1,2 to match either company. Results are sorted via the sort parameter and paginated at a fixed page_size of 10; set page to walk forward, and check has_more to know whether more pages exist.

Filter Vocabulary via list_search_filters

list_search_filters is the companion endpoint that returns every accepted filter value with its id, name, and often a slug. It covers eight collections: companies, ships (each carrying its company_id and company_name), destinations (typed as Marittime for sea routes or Fluviali for river cruises), countries, ports (each with a country field), periods (Italian-labeled month names mapped to YYYYMM ids), durations, and price_ranges. You can pass the same subset of filters to list_search_filters to get a narrowed vocabulary — useful for building cascading UI dropdowns or validating filter combinations before calling search_cruises.

Language and Scope

Label fields such as period names and destination type strings (Marittime, Fluviali) are in Italian, reflecting the source platform. Coverage is limited to departures listed on ticketcrociere.it at the time of the request; the dataset represents the Italian cruise retail market as indexed by that site.

Reliability & maintenance

The Ticketcrociere API is a managed, monitored endpoint for ticketcrociere.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when ticketcrociere.it 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 ticketcrociere.it 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?+
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 fare tracker that monitors price changes across specific ships or companies using search_cruises with ship_ids and company_ids.
  • Generate departure calendars by iterating periods filter values returned from list_search_filters and querying each month in turn.
  • Compare Mediterranean vs. river cruise inventory by filtering destinations on type Marittime vs. Fluviali.
  • Identify sold-out sailings by checking for null itinerary_code in departure records returned by search_cruises.
  • Feed a cruise recommendation engine with departure, port, destination, duration, and price data from paginated search_cruises results.
  • Populate cascading search UI dropdowns by passing active selections to list_search_filters to get contextually narrowed company, ship, and port lists.
  • Aggregate departure counts by port or company across all pages using total_count from search_cruises responses.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 req/min

Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does ticketcrociere.it offer an official developer API?+
Ticketcrociere.it does not publish a documented public developer API. This Parse API provides structured access to the departure and filter data available on the site.
What does a single record in the `cruises` array actually contain?+
Each element represents one departure date of an itinerary. It includes an itinerary_code (null when the departure is sold out), a departure_code, company and ship identifiers, the departure port, destination, duration, per-person starting price, and the departure date. One itinerary with multiple sailing dates will appear as multiple separate records.
How does the `list_search_filters` endpoint behave when filters are passed to it?+
When you supply filter parameters such as company_ids or destination_ids, the endpoint narrows each returned collection to only the values that remain valid given those constraints. This lets you progressively refine a filter set — for example, passing a company_ids value will return only the ships and ports associated with that company rather than the full catalogue.
Does the API return full itinerary details such as port call schedules, cabin categories, or onboard amenities?+
Not currently. The API covers departure-level data (date, ship, port, destination, duration, price, availability) and the filter vocabulary. Full itinerary descriptions, cabin-level pricing breakdowns, and onboard amenity details are not included. You can fork this API on Parse and revise it to add an endpoint that retrieves those details for a specific itinerary code.
Is there a limit to how many results can be retrieved in one call?+
search_cruises returns a fixed page size of 10 departures per request. The response includes total_pages and has_more so you can iterate through the full result set page by page using the page parameter. There is no single-call option to return all matching departures at once.
Page content last updated . Spec covers 2 endpoints from ticketcrociere.it.
Related APIs in TravelSee all →