Discover/Garda Voyager API
live

Garda Voyager APIgardavoyager.com ↗

Query live departure times, remaining seats, and per-party pricing for Garda Voyager Lake Garda experiences by date via a single REST endpoint.

Endpoint health
verified 2h ago
get_booking_availability
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the Garda Voyager API?

The Garda Voyager API exposes 1 endpoint — get_booking_availability — that returns 10 structured fields for any experience on gardavoyager.com, including departure times, live seat counts, per-party pricing, and day-level availability status for a requested calendar date. Pass an experience_slug, a date in ISO format, and an optional party breakdown (adults, children, infants) to get the full booking calendar record for that day without placing a reservation.

This call costs2 credits / call— charged only on success
Try it
Calendar date to read, ISO YYYY-MM-DD, interpreted in the experience's local timezone (Europe/Rome).
Number of adult participants (0-30) used to price the calendar.
Number of infant participants (0-30). At least one participant across all categories is required.
Number of child participants (0-30) used to price the calendar; the child age band is reported in `pricing_categories`.
Last path segment of the experience page URL on the site (the part after /en/experience-at-lake-garda/), e.g. lake-garda-cruise-from-peschiera-462. Lower-case letters, digits and hyphens.
→ api.parse.bot/scraper/7d4aeb14-1e2e-471d-8bab-b56a302ec8bc/<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/7d4aeb14-1e2e-471d-8bab-b56a302ec8bc/get_booking_availability?date=2026-10-10&experience_slug=lake-garda-cruise-from-peschiera-462' \
  -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 gardavoyager-com-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: check Lake Garda experience availability and inspect departures."""
from parse_apis.gardavoyager_com_api import GardaVoyager, ExperienceNotFound

client = GardaVoyager()

# Check availability for a known cruise on a specific date with a custom party.
try:
    avail = client.availabilities.check(
        experience_slug="lake-garda-cruise-from-peschiera-462",
        date="2026-10-04",
        adults=2,
        children=1,
    )
except ExperienceNotFound:
    print("Experience not found — check the slug")
    raise SystemExit

print(avail.experience_title, "|", avail.day_status)
print("Duration:", avail.duration_text)
print("Cancellation:", avail.cancellation_policy)
print("Party:", avail.participants.adults, "adults,", avail.participants.children, "children")
print("Pricing categories:", ", ".join(avail.pricing_categories))

# Walk departures when the day is available.
if avail.date_availability_readable:
    for dep in avail.departures:
        print(
            dep.start_time,
            dep.total_price_text,
            f"({dep.availability_count} seats left)",
        )
        for cat in dep.price_per_category:
            print(f"  {cat.category}: {cat.unit_price_text}")
else:
    print("No departures on", avail.date)

print("exercised: availabilities.check")
All endpoints · 1 totalmissing one? ·

Returns the booking calendar status of one Gardavoyager experience for one calendar date and one party composition. The result is a single day record: experience title, the public booking link the experience page points to, the day's availability status and a `departures` array with one entry per departure time offered that day, each carrying the live total price for the requested party (plus the per-category unit prices), the remaining seat count, the already-booked count and the minimum party size. `date_availability_readable` is true only when at least one departure is listed for that exact date; a date the calendar shows as not operating returns a successful result with `day_status` NOT_AVAILABLE and an empty `departures` array (this experience operates on selected days only, typically Sundays). Prices are the calendar's own figures in EUR for the party sent; counts default to two adults when no participant counts are given. Three round trips per call (experience page, product definition, month calendar). An unknown slug returns a not-found input error; nothing is submitted or booked.

Input
ParamTypeDescription
daterequiredstringCalendar date to read, ISO YYYY-MM-DD, interpreted in the experience's local timezone (Europe/Rome).
adultsintegerNumber of adult participants (0-30) used to price the calendar.
infantsintegerNumber of infant participants (0-30). At least one participant across all categories is required.
childrenintegerNumber of child participants (0-30) used to price the calendar; the child age band is reported in `pricing_categories`.
experience_slugrequiredstringLast path segment of the experience page URL on the site (the part after /en/experience-at-lake-garda/), e.g. lake-garda-cruise-from-peschiera-462. Lower-case letters, digits and hyphens.
Response
{
  "type": "object",
  "fields": {
    "date": "the requested date, ISO YYYY-MM-DD",
    "timezone": "IANA timezone the departure times are expressed in",
    "day_status": "calendar status of the whole day: AVAILABLE or NOT_AVAILABLE",
    "departures": "array of departures that day; each has start_time (HH:MM local), status, availability_count (seats remaining), booked_count, closed, min_participants, total_price (number, for the whole party), currency, total_price_text, original_price_text, has_discount and price_per_category (array of category, unit_price_text, category_total_text)",
    "booking_url": "public booking calendar link the experience page opens for 'Book now'",
    "participants": "object with the adults/children/infants counts the prices were computed for",
    "duration_text": "duration of the experience as text",
    "experience_url": "public experience page on the site",
    "experience_title": "name of the experience as shown in the booking calendar",
    "pricing_categories": "array of participant category labels with their age bands",
    "cancellation_policy": "title of the cancellation policy attached to the experience",
    "date_availability_readable": "boolean, true when at least one departure is listed for the exact date"
  },
  "sample": {
    "data": {
      "date": "2026-10-04",
      "timezone": "Europe/Rome",
      "day_status": "AVAILABLE",
      "departures": [
        {
          "closed": false,
          "status": "AVAILABLE",
          "currency": "EUR",
          "start_time": "10:30",
          "total_price": 116,
          "booked_count": 0,
          "has_discount": false,
          "min_participants": 1,
          "total_price_text": "€116.00",
          "availability_count": 32,
          "price_per_category": [
            {
              "category": "Adult",
              "unit_price_text": "€58.00",
              "category_total_text": "€58.00"
            }
          ],
          "original_price_text": "€116.00"
        }
      ],
      "booking_url": "https://widgets.bokun.io/online-sales/52a93856-2a34-4925-b997-aff7bd9a71b8/experience-calendar/1151539",
      "participants": {
        "adults": 2,
        "infants": 0,
        "children": 0
      },
      "duration_text": "4 hours",
      "experience_url": "https://www.gardavoyager.com/en/experience-at-lake-garda/lake-garda-cruise-from-peschiera-462",
      "experience_title": "Lake Garda Cruise from Peschiera",
      "pricing_categories": [
        "Adult (10 - 99)",
        "Child (3 - 9)",
        "Infant (0 - 2)"
      ],
      "cancellation_policy": "Standard Viator policy",
      "date_availability_readable": true
    },
    "status": "success"
  }
}

About the Garda Voyager API

What the API Returns

The get_booking_availability endpoint accepts two required parameters — experience_slug (the last path segment of any experience URL, e.g. lake-garda-cruise-from-peschiera-462) and date (ISO 8601 YYYY-MM-DD) — and returns a single-day record scoped to the Europe/Rome timezone. The top-level day_status field tells you immediately whether the day is AVAILABLE or NOT_AVAILABLE before you iterate the departures array.

Departure-Level Detail

Each object in the departures array carries a start_time in HH:MM local format, a per-departure status, an availability_count for remaining seats, a booked_count, and a closed flag. This lets you build time-slot pickers or trigger alerts when a specific departure reaches a seat threshold, without polling the booking page directly.

Party Composition and Pricing

Optional adults, children, and infants integer parameters (each 0–30, with at least one participant total) control how prices are computed. The response reflects those counts in the participants object and exposes pricing_categories — an array of participant category labels with their corresponding age bands, useful for rendering accurate category labels in a UI. The booking_url field returns the exact deep-link the experience page surfaces for its "Book now" button, so you can hand users directly to the checkout flow.

Reliability & maintenanceVerified

The Garda Voyager API is a managed, monitored endpoint for gardavoyager.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when gardavoyager.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 gardavoyager.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.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
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
  • Display real-time seat availability for Lake Garda cruises on a travel aggregator by polling availability_count per departure.
  • Send automated alerts when availability_count drops below a threshold for a high-demand experience slug.
  • Render a time-slot picker for a specific date using start_time and status from the departures array.
  • Calculate total trip cost for a family by passing adults, children, and infants counts and reading the returned pricing data.
  • Check day_status across a date range to surface the next available day for a particular experience.
  • Pre-populate a booking deep-link using the booking_url field returned with each calendar response.
  • Validate child age-band labels in a booking UI by reading pricing_categories for each experience.
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 Garda Voyager offer an official developer API?+
No. Garda Voyager does not publish a public developer API or documented data access program. This Parse API is the structured programmatic interface available for accessing their booking calendar data.
What does `day_status` tell me and how does it relate to individual departures?+
day_status reflects the calendar-level availability for the whole requested date — either AVAILABLE or NOT_AVAILABLE. Even when day_status is AVAILABLE, individual objects in the departures array may carry their own status and closed flag, so a specific time slot can be full while others on the same day remain open.
Can I retrieve availability for multiple dates or experiences in a single call?+
The endpoint returns one day record per call — one experience_slug and one date per request. Multi-date or multi-experience batch responses are not currently supported. You can fork this API on Parse and revise it to add a batch endpoint that loops over a date range or a list of slugs.
Does the API return reviews, ratings, or experience descriptions?+
Not currently. The API covers booking calendar data: departure times, seat counts, pricing by party composition, day status, and booking URLs. Review text, star ratings, and editorial descriptions are not included. You can fork this API on Parse and revise it to add an endpoint that pulls those fields from the experience page.
How current is the seat availability data?+
The availability_count and booked_count values reflect the state of the public booking calendar at the time the request is made. There is no cached snapshot or scheduled refresh — each call reads the current calendar state for the requested date and experience.
Page content last updated . Spec covers 1 endpoint from gardavoyager.com.
Related APIs in TravelSee all →