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.
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.
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'
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")
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.
| Param | Type | Description |
|---|---|---|
| date | string | 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. |
| line | string | Comma-separated bus line numbers to keep, e.g. 164,483 (the booklet contains 164, 482, 483, 484). Omitted = all lines. |
| to_stop | string | 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. |
| direction | string | Restrict to one travel direction. Omitted = both directions. |
| from_stoprequired | string | Departure stop name or substring, e.g. Bardolino. |
| service_days | string | Restrict to one of the two table kinds. Omitted = both (or the one implied by date). |
{
"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.
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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- 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.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 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.