saga.co.uk APIwww.saga.co.uk ↗
Search and retrieve Saga UK holiday excursions with destination filters, pricing, flight details, meal info, and excursion counts via 3 structured endpoints.
curl -X GET 'https://api.parse.bot/scraper/5d2201b0-91b3-49b3-a526-b8b52619db87/search_excursions?page=1&per_page=3&destination=Spain' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for holiday excursions by destination with pagination. Returns paginated listings with full details including pricing, flights, accommodation, and excursion counts.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| sort_by | string | Sort order: 'DepartureDate' or 'Price'. |
| per_page | integer | Results per page (max 50). |
| passengers | integer | Number of passengers (1-4). |
| destination | string | Filter by destination name (e.g. 'Spain', 'Italy', 'Japan', 'India'). Use get_destinations to see available options. Empty string returns all destinations. |
| holiday_type | string | Filter by holiday type: 'Escorted Tours' or 'Hotel Stays'. Empty string returns all types. |
{
"type": "object",
"fields": {
"page": "integer, current page number",
"total": "integer, total number of matching results",
"results": "array of excursion objects with id, name, code, url, destinations, holiday_types, images, departure, pricing, promotions, and metadata",
"per_page": "integer, results per page",
"total_pages": "integer, total number of pages"
},
"sample": {
"data": {
"page": 1,
"total": 55,
"results": [
{
"id": 528547709,
"url": "https://holiday.saga.co.uk/holidays/europe/canary-island-hopping",
"code": "SECAH",
"name": "Canary Island Hopping",
"images": [
{
"alt": "Old streets and houses of Santa Cruz, La Palma, Spain",
"url": "https://a.storyblok.com/f/250263/1376x480/f03b7df1b5/1e79b70f-e2f4-4b62-8219-5c6ade1fe3c5.jpg"
}
],
"pricing": {
"currency": "GBP",
"group_price": 2216.55,
"single_price": 2216.55,
"group_was_price": 2595,
"insurance_price": 72,
"single_was_price": 2595
},
"metadata": {
"pace": 2,
"meals": [
"28 meals:",
"14 breakfasts",
"14 dinners"
],
"tour_only": false,
"departure_points": [
"London Gatwick Airport",
"Manchester International Airport"
],
"has_solo_departures": false,
"insurance_available": true,
"number_of_excursions": 3,
"accommodation_summary": "14 nights in hotels"
},
"departure": {
"date": "2026-05-18T00:00:00",
"nights": 14,
"board_basis": "Multiple",
"duration_days": 15,
"tour_end_date": "2026-05-22",
"booking_status": "SoldOut",
"inbound_flight": {
"date": "2026-06-01T12:30:00",
"carrier": "BA",
"departure_point": "Tenerife South Airport"
},
"solo_available": false,
"outbound_flight": {
"date": "2026-05-18T07:25:00",
"carrier": "BA",
"departure_point": "London Gatwick Airport"
},
"tour_start_date": "2026-05-18",
"places_remaining": 0,
"percent_available": 37
},
"promotions": [
{
"name": "Save 15%",
"value": 378.45,
"description": "On selected tours for a limited time only, subject to availability"
}
],
"hotel_names": [],
"destinations": [
"Europe",
"Spain",
"Canary Islands",
"Tenerife",
"Portugal",
"Porto Santo"
],
"holiday_types": [
"Escorted Tours"
],
"product_types": [
"Escorted Group Tours"
],
"special_interests": []
}
],
"per_page": 3,
"total_pages": 19
},
"status": "success"
}
}About the saga.co.uk API
The Saga UK Holidays API gives developers structured access to holiday excursion listings from saga.co.uk across 3 endpoints. Use search_excursions to query holidays by destination, sort order, and passenger count, returning paginated results with full pricing, flight, and accommodation data. get_excursion_details retrieves per-listing metadata including departure points, meals, pace, and promotion details by product code.
What the API covers
The API surfaces holiday excursion listings from Saga's tour and hotel-stay catalogue. get_destinations returns every bookable destination name alongside a holiday count per destination and the global min/max price range in GBP — useful for building filter UIs or validating destination strings before running a search.
Searching and filtering excursions
search_excursions accepts destination (e.g. 'Japan', 'Spain'), holiday_type ('Escorted Tours' or 'Hotel Stays'), passengers (1–4), sort_by ('DepartureDate' or 'Price'), and pagination controls page and per_page (max 50). Responses include total, total_pages, and an array of result objects each carrying id, code, name, url, destinations, images, departure, pricing, and promotions.
Excursion detail fields
get_excursion_details takes a code (e.g. 'SECAH') and optional passengers count. The response expands the listing into a metadata object covering accommodation_summary, departure_points, meals, number_of_excursions, pace, and board_basis. Pricing is broken out into group_price, single_price, was (original) prices, insurance_price, and currency. The departure object includes date, duration_days, nights, flights, and booking_status. Active promotions are listed with name, description, and value.
Data scope and freshness
All three endpoints reflect the live Saga holiday catalogue. Prices are denominated in GBP. The promotions array on detail and search results lets you surface active offers without a separate request.
- Build a destination price-comparison tool using min/max prices from
get_destinationsand per-listinggroup_pricefromsearch_excursions. - Display escorted tour listings filtered by destination and sorted by departure date for a travel aggregator.
- Show single-traveller pricing alongside group pricing using the
single_pricefield fromget_excursion_details. - Surface active promotions for specific holidays by reading the
promotionsarray fromget_excursion_details. - Generate a destination catalogue with holiday counts and price ranges using
get_destinationsfor a travel landing page. - Filter holidays by meal type and excursion count using
mealsandnumber_of_excursionsfrom the detail metadata. - Alert users when a holiday is available for 1–4 passengers by checking
booking_statusand adjusting thepassengersparam.
| 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 | 250 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 Saga have an official public developer API?+
What does `get_excursion_details` return beyond what appears in search results?+
get_excursion_details adds fields not present in search results: accommodation_summary, departure_points, meals, number_of_excursions, pace, board_basis, insurance_price, and the full flights object inside departure. Search results carry enough to list and compare; the detail endpoint carries enough to build a full product page.Can I filter search results by departure date range or price range?+
search_excursions endpoint supports sorting by DepartureDate or Price and filtering by destination, holiday_type, and passengers, but does not currently accept a departure date range or explicit min/max price as filter parameters. You can use get_destinations to get the global price bounds. To add date-range or price-range filtering, you can fork this API on Parse and revise the endpoint to include those parameters.Does the API cover Saga cruise holidays or insurance products?+
How should I get valid destination names for the `destination` filter?+
get_destinations first. It returns an array of objects each with a name string and a count of available holidays. Pass the name value directly as the destination parameter in search_excursions. Using an unlisted name will return zero results.