Discover/gardasee API
live

gardasee APIgardasee.de ↗

Query Lake Garda bus lines 164, 482, 483, 484 timetables. Get departures by stop, arrival times, service-day filters, and seasonal validity codes.

Endpoint health
verified 1h ago
find_departures
get_timetable
2/2 passing latest checkself-healing
Endpoints
2
Updated
2h ago

What is the gardasee API?

The gardasee.de API exposes the published Peschiera–Malcesine–Riva del Garda bus timetable booklet across 2 endpoints, covering lines 164, 482, 483, and 484. Use find_departures to retrieve every run calling at a named stop with downstream arrival times, or get_timetable to pull the complete set of printed tables including ordered stop lists, run-by-run departure columns, and validity windows as ISO dates.

This call costs5 credits / call— charged only on success
Try it
ISO date YYYY-MM-DD of travel. Selects the Monday-Saturday or Sunday/holiday table and applies seasonal highlight periods and Saturday validity codes. Omitted = no date filtering.
Comma-separated bus line numbers to keep, e.g. 164,483 (the booklet contains 164, 482, 483, 484). Omitted = all lines.
Destination stop name or substring; only runs reaching a matching later stop are returned and arrivals is restricted to those stops. Omitted = all later stops of each run are listed.
Restrict to one travel direction. Omitted = both directions.
Departure stop name or substring, e.g. Bardolino.
Restrict to one of the two table kinds. Omitted = both (or the one implied by date).
→ api.parse.bot/scraper/a6a76532-c2f5-4e07-8526-1009c36ea131/<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/a6a76532-c2f5-4e07-8526-1009c36ea131/find_departures?date=2026-10-03&line=164%2C483&to_stop=Peschiera&from_stop=Bardolino' \
  -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 gardasee-de-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: Lake Garda bus timetable SDK — find departures, then fetch the full table."""
from parse_apis.gardasee_de_api import Gardasee, Direction, ServiceDays, InputNotFound

client = Gardasee()

# Find departures from Bardolino toward Peschiera on a specific date.
try:
    schedule = client.departure_schedules.find(
        from_stop="Bardolino",
        to_stop="Peschiera",
        date="2026-10-03",
        direction=Direction.TO_PESCHIERA,
    )
except InputNotFound:
    print("No matching stop found")
    raise

print(f"Departures from {schedule.from_stop} on {schedule.date}:")
for dep in schedule.departures[:5]:
    stops = ", ".join(f"{a.stop} {a.time}" for a in dep.arrivals)
    print(f"  {dep.departure_time} line {dep.line} -> {stops}")
    if dep.validity_text:
        print(f"    note: {dep.validity_text}")

# Use direction and service_days from a departure to fetch the full timetable.
first_dep = schedule.departures[0]
timetable = client.timetables.fetch(
    service_days=first_dep.service_days,
    direction=first_dep.direction,
)

for table in timetable.tables:
    print(f"\n{table.route}  ({table.valid_from} to {table.valid_to})")
    print(f"  Stops: {' > '.join(table.stops[:6])}...")
    for run in table.runs[:3]:
        times = [f"{st.stop}: {st.time}" for st in run.stop_times[:4] if st.time]
        print(f"  Run {run.run_index} (line {run.line}): {', '.join(times)}")

# Legend codes explain validity and note annotations.
for code, text in list(timetable.legend.items())[:3]:
    print(f"  {code} = {text}")

print("exercised: departure_schedules.find / timetables.fetch")
All endpoints · 2 totalmissing one? ·

Lists every bus run that calls at a given stop, with the later stops reached on that run and their arrival times. One row per run (one timetable column) that serves the departure stop; when to_stop is given only runs that later reach a matching stop are returned and arrivals is limited to those stops. Stop names are matched as accent- and case-insensitive substrings of the printed stop labels (e.g. 'Peschiera' matches 'Peschiera del Garda', 'Peschiera Stazione Ferroviaria' and 'Peschiera via Bella italia'). Without date, runs from all four tables (Monday-Saturday and Sunday/holiday, both directions) are returned regardless of season; with date the Monday-Saturday or Sunday/holiday table is chosen (Italian national holidays and Easter Monday count as holidays), runs whose seasonal highlight period excludes the date are dropped, and the Saturday-related validity codes are applied (IFXS not on Saturday, IFSA only on non-holiday Saturday, SXS not on Saturday). School-day-only runs (SCO, SXS) are kept and flagged school_days_only=true because the school calendar is not part of the document. Results are sorted by departure time within service_days and direction. Times are printed clock times 'H:MM'. validity_text and note_text are the printed legend text (Italian / English / German); note_text may be null when a note code has no legend in the booklet (e.g. C49). highlight is 'yellow', 'blue' or null and highlight_period is the printed season rule for that colour. One document download per call.

Input
ParamTypeDescription
datestringISO date YYYY-MM-DD of travel. Selects the Monday-Saturday or Sunday/holiday table and applies seasonal highlight periods and Saturday validity codes. Omitted = no date filtering.
linestringComma-separated bus line numbers to keep, e.g. 164,483 (the booklet contains 164, 482, 483, 484). Omitted = all lines.
to_stopstringDestination stop name or substring; only runs reaching a matching later stop are returned and arrivals is restricted to those stops. Omitted = all later stops of each run are listed.
directionstringRestrict to one travel direction. Omitted = both directions.
from_stoprequiredstringDeparture stop name or substring, e.g. Bardolino.
service_daysstringRestrict to one of the two table kinds. Omitted = both (or the one implied by date).
Response
{
  "type": "object",
  "fields": {
    "date": "ISO date echoed from the request, or null when no date was given",
    "legend": "object mapping validity and note codes to their printed legend text",
    "to_stop": "the to_stop value as given, or null",
    "from_stop": "the from_stop value as given",
    "departures": "array of matching runs: service_days, direction, route (printed route heading), line, departure_stop (printed label), departure_time ('H:MM'), arrivals (array of {stop, time} for later stops), validity_code/validity_text, note_code/note_text, highlight ('yellow'|'blue'|null), highlight_period, school_days_only (boolean with date, null without)",
    "highlight_periods": "object with the printed season rules keyed GIALLO (yellow) and AZZURRO (blue)"
  },
  "sample": {
    "data": {
      "date": "2026-10-03",
      "legend": {
        "C38": "PROSEGUE PER PESCHIERA-VERONA / CONTINUES TO PESCHIERA-VERONA / WEITER NACH PESCHIERA-VERONA",
        "SCO": "SCOLASTICA / SCHOOLDAYS / SCHULTAGE",
        "IFSA": "SOLO SABATO FERIALE / ONLY ON NON-HOLIDAY SATURDAYS / NUR AN SAMSTAGEN, DIE KEINE FEIERTAGE SIND"
      },
      "to_stop": "Peschiera",
      "from_stop": "Bardolino",
      "departures": [
        {
          "line": "164",
          "route": "RIVA DEL GARDA – MALCESINE – BRENZONE – TORRI – GARDA – BARDOLINO – LAZISE – PESCHIERA",
          "arrivals": [
            {
              "stop": "Peschiera Stazione Ferroviaria",
              "time": "7:54"
            }
          ],
          "direction": "to_peschiera",
          "highlight": null,
          "note_code": null,
          "note_text": null,
          "service_days": "monday_to_saturday",
          "validity_code": "SCO",
          "validity_text": "SCOLASTICA / SCHOOLDAYS / SCHULTAGE",
          "departure_stop": "Bardolino",
          "departure_time": "7:30",
          "highlight_period": null,
          "school_days_only": true
        },
        {
          "line": "483",
          "route": "RIVA DEL GARDA – MALCESINE – BRENZONE – TORRI – GARDA – BARDOLINO – LAZISE – PESCHIERA",
          "arrivals": [
            {
              "stop": "Peschiera del Garda",
              "time": "20:14"
            },
            {
              "stop": "Peschiera via Bella italia",
              "time": "20:18"
            }
          ],
          "direction": "to_peschiera",
          "highlight": "yellow",
          "note_code": null,
          "note_text": null,
          "service_days": "monday_to_saturday",
          "validity_code": null,
          "validity_text": null,
          "departure_stop": "Bardolino",
          "departure_time": "19:50",
          "highlight_period": "FINO AL 18/10/2026 E DAL 21/03/2027",
          "school_days_only": false
        }
      ],
      "highlight_periods": {
        "GIALLO": "FINO AL 18/10/2026 E DAL 21/03/2027",
        "AZZURRO": "DAL 25/10/2026 AL 14/03/2027"
      }
    },
    "status": "success"
  }
}

About the gardasee API

What the API covers

The API reads the published timetable booklet for four Lake Garda bus lines (164, 482, 483, 484) operating along the eastern shore between Peschiera del Garda and Riva del Garda. Both endpoints return a legend object that maps printed validity and note codes to their Italian text, plus a highlight_periods object with seasonal rules keyed GIALLO (yellow highlight) and AZZURRO (blue highlight).

find_departures

find_departures takes a required from_stop string (full name or substring, e.g. Bardolino) and returns an array of matching bus runs. Each run entry includes line, direction, route (the printed route heading), departure_stop, departure_time, service_days, any applicable notes or validity codes, and an arrivals array listing the later stops on that run with their printed times. Supply to_stop to narrow arrivals to only the destination stop and filter out runs that never reach it. Pass an ISO date via the date parameter to automatically select the Monday–Saturday or Sunday/holiday table and apply seasonal highlight logic. The optional line parameter accepts a comma-separated list such as 164,483 to restrict results to specific lines.

get_timetable

get_timetable returns the full booklet as an array of tables. Each table contains service_days, direction, route, valid_from and valid_to as ISO dates, an ordered stops array of printed stop labels, and a runs array where each entry carries its run_index, line number, departure times per stop, and any attached note or validity codes. Filter with direction or service_days to retrieve a single directional slice. When a date is provided, only tables whose validity window covers that date are returned.

Reliability & maintenanceVerified

The gardasee API is a managed, monitored endpoint for gardasee.de — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when gardasee.de 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 gardasee.de 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
1h ago
Latest check
2/2 endpoints 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
  • Build a journey planner that finds the next bus from Bardolino to Malcesine on a given date using find_departures with from_stop and to_stop.
  • Display a full printed-style timetable grid for line 483 on the get_timetable endpoint filtered by direction.
  • Alert travelers to seasonal schedule differences by surfacing GIALLO and AZZURRO highlight_periods from either endpoint.
  • Determine whether a Sunday/holiday or weekday table applies for a specific travel date by passing the date parameter.
  • List all stops served between Lazise and Garda in sequence using the stops array from get_timetable.
  • Cross-reference validity codes against the legend object to display human-readable service restriction notes.
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 gardasee.de publish an official developer API for this timetable data?+
No. gardasee.de does not publish a public developer API. The timetable data originates from a PDF booklet available on the gardasee.de domain.
How does find_departures behave differently when to_stop is provided versus omitted?+
Without to_stop, the arrivals array for each run lists all downstream stops on that run. When to_stop is given, only runs that eventually reach a matching stop are returned, and arrivals is restricted to that destination stop's entry — making it easy to find direct connections and their arrival times in a single call.
Does the API cover real-time bus positions or live delays?+
No. The API returns the static printed timetable with scheduled departure and arrival times, validity windows, and seasonal rules. Real-time vehicle positions and delay data are not included. You can fork this API on Parse and revise it to add a real-time tracking endpoint if a suitable data source becomes available.
Are bus lines outside 164, 482, 483, and 484 covered?+
Not currently. The API covers exactly the four lines published in this specific timetable booklet: 164, 482, 483, and 484, serving the eastern Lake Garda corridor. You can fork the API on Parse and revise it to add endpoints covering additional booklets or lines.
What do the GIALLO and AZZURRO keys in highlight_periods mean?+
They correspond to the yellow and blue seasonal highlight markers printed in the booklet. The values contain the human-readable Italian rules describing which date ranges or calendar conditions those colour bands apply to, so you can programmatically interpret when a highlighted schedule variant is active.
Page content last updated . Spec covers 2 endpoints from gardasee.de.
Related APIs in TravelSee all →