CruiseFeed API: Real-Time Cruise Data & Pricing (REST) avatar

CruiseFeed API: Real-Time Cruise Data & Pricing (REST)

Pricing

from $5.00 / 1,000 cruise/ship records

Go to Apify Store
CruiseFeed API: Real-Time Cruise Data & Pricing (REST)

CruiseFeed API: Real-Time Cruise Data & Pricing (REST)

Always-on REST API for normalized cruise inventory from 60+ lines (MSC, Royal Caribbean, Carnival, Norwegian, Princess, Disney and more): ships, sailing dates, itineraries, ports of call, lead-in pricing and price history. Query it live on demand - no batch run. Unofficial; public data only.

Pricing

from $5.00 / 1,000 cruise/ship records

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

1

Bookmarked

4

Total users

1

Monthly active users

a day ago

Last modified

Share

CruiseFeed API – Real-Time Cruise Data & Pricing (Standby REST API)

An always-on REST API for normalized cruise inventory – cruise lines, ships, sailing dates, day-by-day itineraries, ports of call and lead-in pricing – across 60+ cruise lines, in one clean schema. It runs on Apify in Standby mode, so you query it live like an API instead of running a batch job. Every record carries a stable opaque id and the same shape across every line.

It's built for travel-tech use cases – OTAs, cruise-comparison sites, travel agencies and data aggregators – that need broad, fresh cruise inventory on demand. The data is public cruise inventory only – no personal data.

Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by any cruise line or travel brand. Cruise line and ship names are trademarks of their respective owners and are used here only to describe the data the Actor returns.

How it works (Standby)

This Actor is a live HTTP API, not a one-off run. Start it once and it stays warm; then send normal GET requests to its Standby URL:

https://<username>--cruise-data-api.apify.actor/<endpoint>
  • Authentication is handled by Apify. Send your Apify token as Authorization: Bearer <APIFY_TOKEN> or ?token=<APIFY_TOKEN>. From the Standby tab on this page you can also try every endpoint right in the browser, no token setup required.
  • Billing is pay-per-event (see Billing).
  • The interactive endpoint reference is on the Standby tab (rendered from the Actor's OpenAPI schema).
# Caribbean sailings under $1,200, live
curl "https://<username>--cruise-data-api.apify.actor/cruises?region=Caribbean&max_price=1200&limit=10" \
-H "Authorization: Bearer $APIFY_TOKEN"
# one ship by IMO number, with full specs
curl "https://<username>--cruise-data-api.apify.actor/ships/9839419" \
-H "Authorization: Bearer $APIFY_TOKEN"

Endpoints

MethodPathDescription
GET/cruisesList & filter sailings (the workhorse)
GET/cruises.csvSame filters, streamed as CSV
GET/cruises/{id}One sailing, enriched with its ship
GET/cruises/{id}/historyPrice & availability history
GET/changesRecent price changes (fare-drop alerts)
GET/shipsList & filter ships (specs, capacity, build)
GET/ships/{ship_id}One ship by IMO number
GET/cruise-linesDistinct cruise line names
GET/portsDistinct departure ports
GET/statsCatalogue totals

Each cruise carries a lead-in price_amount, plus a fares array that holds the per-cabin-class breakdown when the source publishes more than one cabin fare — it's empty when the line quotes only a single "from" price.

Machine-readable spec & Postman

  • OpenAPI: openapi.yaml — kept in lock-step with the live API.
  • Postman: cruisefeed.postman_collection.json — import it, set the apiKey variable, and every request is pre-wired. It targets the direct hosted API at https://api.cruisefeed.io (auth: Authorization: Bearer <key>), which is the same data as this Actor via a different front door.
  • Interactive docs: https://api.cruisefeed.io/docs

Filters for GET /cruises

cruise_line · ship_name · embark_port · region (partial) · departure_from · departure_to · min_price · max_price · min_nights · max_nights · round_trip · dedupe (default true) · sort (default departure_date) · limit (1–500, default 50) · offset.

Example: list cruises

Request

curl "https://<username>--cruise-data-api.apify.actor/cruises?cruise_line=MSC%20Cruises&max_price=1500&min_nights=5&limit=1" \
-H "Authorization: Bearer $APIFY_TOKEN"

Response

{
"items": [
{
"id": "cru_4f2a9c1b7e3d5068",
"cruise_line": "MSC Cruises",
"ship_name": "MSC World Europa",
"title": "7-Night Western Mediterranean",
"departure_date": "2026-09-12",
"return_date": "2026-09-19",
"duration_days": 8,
"nights": 7,
"round_trip": true,
"embark_port": "Barcelona",
"disembark_port": "Barcelona",
"region": "Western Mediterranean",
"sea_days": 2,
"port_count": 4,
"price_amount": 799,
"price_currency": "EUR",
"price_per_night": 114.14,
"taxes_and_fees": 189.5,
"obc_amount": 50,
"sold_out": false,
"itinerary": [
{ "seq": 1, "port": "Barcelona", "date_raw": "12 Sep", "is_embark": true, "is_disembark": false },
{ "seq": 2, "port": "Marseille", "date_raw": "13 Sep", "is_embark": false, "is_disembark": false }
],
"booking_url": "https://www.msccruises.com/en-gb/...",
"scraped_at": "2026-06-28T04:12:00Z"
}
],
"total": 1843,
"limit": 1,
"offset": 0
}

CSV export

curl "https://<username>--cruise-data-api.apify.actor/cruises.csv?region=Caribbean&max_price=1200" \
-H "Authorization: Bearer $APIFY_TOKEN" -o cruises.csv

Price-drop tracking

# fares that changed since a date (great for deal alerts)
curl "https://<username>--cruise-data-api.apify.actor/changes?since=2026-06-20&cruise_line=MSC%20Cruises" \
-H "Authorization: Bearer $APIFY_TOKEN"

Ship metadata

# search ships by name
curl "https://<username>--cruise-data-api.apify.actor/ships?q=world%20europa" \
-H "Authorization: Bearer $APIFY_TOKEN"
# one ship by IMO (tonnage, decks, cabins, capacity, builder, sister ships)
curl "https://<username>--cruise-data-api.apify.actor/ships/9839419" \
-H "Authorization: Bearer $APIFY_TOKEN"

The single-cruise endpoint (GET /cruises/{id}) returns a ship object inline, so you get the vessel's specs alongside the sailing in one call.

Billing

Pay-per-event, charged through Apify:

  • Per record returned by the list/search endpoints (/cruises, /ships, /changes, CSV rows).
  • One record for single-record lookups (one cruise, one ship, one history document) and for reference lists (/cruise-lines, /ports, /stats).
  • A small fixed Actor start fee when a Standby instance spins up.

On the free tier, list endpoints return a 5-record sample per page so you can evaluate the data before committing. See the Pricing section on this page for current rates.

Data schema

FieldTypeNotes
idstringOpaque, source-agnostic id (unique per sailing)
cruise_line, ship_name, titlestringNormalized names
departure_date, return_datedateYYYY-MM-DD (may be null for product-level sailings)
duration_days, nightsinteger
round_tripboolean
embark_port, disembark_port, regionstring
ship_code, destination_codestringLine-specific codes, when exposed
sea_days, port_countintegerDays at sea / ports of call on the itinerary
price_amount, price_currency, price_per_nightnumberLead-in fare (may be null)
taxes_and_fees, taxes_currencynumber/stringTaxes & fees when itemized
obc_amountnumberBundled onboard credit, when advertised
sold_outbooleanListed but no longer bookable
faresarrayPer-cabin-class breakdown (partial across lines)
itineraryarray{ seq, port, date_raw, is_embark, is_disembark } per stop
booking_url, detail_url, image_urlstringDeep links and a representative image
scraped_atdatetimeISO 8601

The /ships endpoints add vessel specs: IMO, operator, year built, capacity, gross tonnage, length/beam, decks, cabins, builder, class, sister ships and flag.

Use cases

  • OTAs & cruise booking sites – power on-site search and listings with broad, fresh inventory instead of scraping each line.
  • Travel agencies & host networks – one searchable dataset across every line.
  • Aggregators & travel-tech – a normalized cruise feed as a product input.
  • Deal & content sites – programmatic listing pages and fare-drop alerts from /changes and price history.

FAQ

How fresh is the data? Inventory and prices are refreshed regularly; each record includes a scraped_at timestamp, and price history is available for change tracking via /changes and /cruises/{id}/history.

What formats? JSON for every endpoint, plus CSV via /cruises.csv.

Does it include personal data? No – public cruise inventory facts only (lines, ships, sailings, itineraries, ports, lead-in prices).

Is it official? No. It is an independent, unofficial Actor and is not affiliated with any cruise line. Brand names are used only to describe the data.

Support

Questions, bugs or feature requests? Use the Issues tab on this Actor's page.