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

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

Pricing

from $7.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 $7.00 / 1,000 cruise/ship records

Rating

0.0

(0)

Developer

VulnV

VulnV

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

1

Monthly active users

3 days 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

Every cruise carries a fares array — the full per-cabin-class price breakdown (interior/oceanview/balcony/suite …) with availability — alongside the lead-in price_amount.

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",
"price_amount": 799,
"price_currency": "EUR",
"price_per_night": 114.14,
"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 }
],
"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
price_amount, price_currency, price_per_nightnumberLead-in fare (may be null)
itineraryarray{ seq, port, date_raw, is_embark, is_disembark } per stop
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.