Crociere APIcrociere.com ↗
Search cruise itineraries on crociere.com, retrieve departure dates, cabin prices by type, and fare inclusions. 3 endpoints covering the full Italian cruise catalogue.
What is the Crociere API?
The crociere.com API exposes 3 endpoints that cover the Italian cruise marketplace: search itineraries with filters for destination, ship, departure port, cruise line, and date range; retrieve the full filter vocabulary of destinations, ports, and companies; and pull every bookable departure of a specific cruise with per-cabin-type pricing and fare breakdowns. The search_cruises endpoint returns a paginated catalogue with EUR-per-person prices.
curl -X GET 'https://api.parse.bot/scraper/62cde6ff-7a6d-4a6a-ba9c-cdafe20fb11f/search_cruises?sort=PRICE_ASC&page_size=5&destination_id=g-173' \ -H 'X-API-Key: $PARSE_API_KEY'
Searches the cruise catalogue and returns one page of cruise offers (one row per cruise itinerary with its cheapest upcoming departure, 'price_from' in EUR per person for the cheapest cabin). All filters are optional and combine with AND; omit everything to search the whole catalogue (about 13,000 cruises). Filter ids come from list_search_filters: destination_id accepts a region group id (e.g. g-173) or a single destination id (e.g. 35); departure_port_id, company_id, ship_id and stop_port_id accept comma-separated numeric ids. The site applies min_nights/max_nights to the trip length in days (nights + 1), so a 7-night cruise matches 6-8 but not 7-7. Paging is caller controlled via page (1-based, default 1) and page_size (default 25, clamped to 50); total_count is the site's total for the filters and has_more tells whether a further page exists. Sort BEST_SELLER (default) is the site's popularity order. One request per call.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| sort | string | Result ordering. |
| month | string | Departure month, YYYY-MM. Alternative to date_from/date_to. |
| date_to | string | Latest departure date, ISO YYYY-MM-DD. |
| ship_id | string | Comma-separated ship ids from list_search_filters.companies[*].ships[*].ship_id. |
| date_from | string | Earliest departure date, ISO YYYY-MM-DD. |
| page_size | integer | Cruises per page, clamped to 50. |
| company_id | string | Comma-separated cruise line ids from list_search_filters.companies[*].company_id (e.g. 5 = MSC Crociere). |
| max_nights | integer | Upper bound of the site's duration filter. |
| min_nights | integer | Lower bound of the site's duration filter (see description for the days/nights offset). |
| stop_port_id | string | Comma-separated port ids (same vocabulary as departure_port_id) that the itinerary must call at. |
| destination_id | string | Destination filter: a region group id (form g-<n>, e.g. g-173 = Mediterraneo e le sue Isole) or a single destination id (e.g. 35 = Mediterraneo) from list_search_filters.destinations[*].destination_id / children[*].destination_id. Comma-separated ids allowed. |
| departure_port_id | string | Comma-separated departure port ids from list_search_filters.departure_ports[*].port_id (e.g. 443,463 for Genova and Savona). |
{
"type": "object",
"fields": {
"page": "integer, requested page",
"cruises": "array of cruise offers: cruise_id (integer, use in get_cruise_departures), title, company_name, ship_name, ship_rating (0-5 float, 0 when unrated), ship_review_count, departure_port, departure_date (ISO, cheapest departure), other_departure_dates (ISO list, may be empty), duration_nights, price_from (number, EUR per person), taxes, taxes_excluded, cabin_group_code (int/ext/balc/suite of the quoted cabin), itinerary (ordered port names), destinations (destination_id string + name + principal flag), advantages (site perk labels, Italian), promotion (short promo label or null), full_board, flight_included, departs_from_italy, other_departure_ports (same itinerary from other ports: cruise_id, port_id, port_name), url, ship_image_url, itinerary_map_url",
"currency": "ISO currency code of all prices (EUR)",
"has_more": "boolean, whether page+1 exists",
"page_size": "integer, effective page size",
"total_count": "integer, site-reported number of cruises matching the filters"
},
"sample": {
"data": {
"page": 1,
"cruises": [
{
"url": "https://www.crociere.com/f-11606575-msc-msc-sinfonia-mediterraneo",
"taxes": 0,
"title": "Italia, Spagna, Francia",
"currency": "€",
"cruise_id": 11606575,
"itinerary": [
"Genova",
"Livorno",
"Civitavecchia - Roma",
"Valencia",
"Barcellona",
"Marsiglia",
"Genova"
],
"promotion": null,
"ship_name": "MSC Sinfonia",
"advantages": [
"Bambini gratis fino a 12 anni",
"Mini Club bambini gratis"
],
"full_board": true,
"price_from": 319,
"ship_is_new": false,
"ship_rating": 4.263157844543457,
"company_name": "MSC Crociere",
"destinations": [
{
"name": "Mediterraneo",
"principal": true,
"destination_id": "35"
}
],
"departure_date": "2026-12-01",
"departure_port": "Genova",
"ship_image_url": "https://media.crociere.com/images/compagnies/gd/msc/msc-sinfonia/msc-sinfonia.webp",
"taxes_excluded": false,
"duration_nights": 7,
"flight_included": false,
"cabin_group_code": "int",
"itinerary_map_url": "https://media.crociere.com/images/carteIgemoe/img/300_200/it/11606575.webp",
"ship_review_count": 494,
"departs_from_italy": true,
"other_departure_dates": [
"2026-11-10",
"2026-11-24"
],
"other_departure_ports": [
{
"port_id": 17,
"cruise_id": 11606568,
"port_name": "Marsiglia"
}
]
}
],
"currency": "EUR",
"has_more": false,
"page_size": 5,
"total_count": 3
},
"status": "success"
}
}About the Crociere API
Searching the Cruise Catalogue
The search_cruises endpoint accepts up to eight optional filter parameters that combine with AND logic. You can filter by company_id (comma-separated cruise line ids), ship_id, month (YYYY-MM format), or an explicit date_from/date_to range in ISO YYYY-MM-DD. Results are paginated — page_size is clamped to 50 — and each row in the cruises array includes cruise_id, title, company_name, ship_name, ship_rating (a 0–5 float), and price_from in EUR per person for the cheapest upcoming departure. The total_count field gives the site-reported count of matching itineraries, and has_more signals whether a next page exists.
Filter Vocabulary
Before filtering, call list_search_filters to resolve valid ids. It returns destinations as region groups with child destinations (each child carrying destination_id, name, is_country, and is_river), a departure_ports array with port_id and a top boolean flag, and a companies array where each cruise line lists its ships with ship_id, commissioning_year, capacity, and is_new. The endpoint also returns sort_options — the accepted sort codes for search_cruises.sort — and duration_ranges_nights bucket labels. total_cruises gives the live catalogue size.
Departure-Level Pricing
Pass any cruise_id from a search result to get_cruise_departures to retrieve every bookable sailing of that itinerary. Each entry in the departures array includes departure_date (ISO), operator_reference, sold_out, filling_rate (null when unpublished), and best_price. Cabin-type breakdowns cover interior, outside, balcony, and suite categories, each with its own best price and a list of fares that include their specific inclusions. departure_count reports the total number of departures returned.
The Crociere API is a managed, monitored endpoint for crociere.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when crociere.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 crociere.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 price-tracking tool that monitors EUR-per-person prices across cabin types for specific itineraries using
get_cruise_departures. - Aggregate MSC Crociere departures by filtering
search_cruiseswith the MSCcompany_id(e.g. 5) and a date range. - Populate a destination-based cruise search UI using region and child destination ids from
list_search_filters. - Identify which sailings are filling up by reading the
filling_ratefield fromget_cruise_departuresdepartures. - Filter cruises by river itineraries using
is_riverflags on child destinations returned bylist_search_filters. - Display the newest ships in a cruise line's fleet by checking the
is_newandcommissioning_yearfields from thecompaniesarray. - Compare cheapest available fares across multiple departure ports by iterating
departure_portsfromlist_search_filtersand running parallel searches.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.
Does crociere.com offer an official developer API?+
What does `get_cruise_departures` return beyond a single best price?+
departure_date, operator_reference, sold_out status, filling_rate (null when the site does not publish it), and best_price. It also breaks down pricing by cabin type — interior, outside, balcony, and suite — with the best price per type and a list of named fares with their inclusions.Can I filter searches to river cruises only?+
list_search_filters endpoint marks child destinations with is_river: true, so you can identify river destination ids and pass them to search_cruises as a destination filter to narrow results to river itineraries.Does the API return cruise reviews or user ratings?+
ship_rating (a 0–5 float at the ship level) from search_cruises, but individual user reviews, review counts, and text content are not covered. You can fork the API on Parse and revise it to add an endpoint targeting review data.Is there a way to retrieve cabin availability or specific cabin inventory?+
get_cruise_departures, but granular cabin inventory counts are not exposed. You can fork the API on Parse and revise it to add the missing endpoint.