Navigazione Laghi APInavigazionelaghi.it ↗
Query Italian lake ferry schedules, ports, and timetable PDFs for Lake Maggiore, Garda, and Como via the Navigazione Laghi API.
What is the Navigazione Laghi API?
The Navigazione Laghi API exposes 3 endpoints covering public boat schedules for the three Italian lakes operated by Navigazione Laghi: Lake Maggiore, Lake Garda, and Lake Como. Use search_connections to retrieve scheduled departures between any two ports on a given date — with per-leg trip numbers, intermediate stops, duration, and number of changes — or call list_ports to retrieve the numeric port IDs you need to build a query.
curl -X GET 'https://api.parse.bot/scraper/e61cac40-ab72-458b-87ee-64353b0af233/list_ports?lake=lago-garda' \ -H 'X-API-Key: $PARSE_API_KEY'
Returns the ports (landing stages) of one lake as shown in the site's journey-search form, each with the numeric port_id that search_connections takes as from_port_id / to_port_id. One round trip; the list is small (about 30 ports per lake) and never empty.
| Param | Type | Description |
|---|---|---|
| lake | string | Which lake's ports to list. |
{
"type": "object",
"fields": {
"lake": "lake code the ports belong to",
"ports": "array of {port_id (string, use as from_port_id/to_port_id), name (display name)}"
},
"sample": {
"data": {
"lake": "lago-garda",
"ports": [
{
"name": "Desenzano",
"port_id": "51"
},
{
"name": "Lazise",
"port_id": "56"
},
{
"name": "Peschiera",
"port_id": "52"
},
{
"name": "Sirmione",
"port_id": "53"
}
]
},
"status": "success"
}
}About the Navigazione Laghi API
Endpoints and What They Return
The list_ports endpoint takes an optional lake parameter and returns an array of port objects, each with a port_id string and a human-readable name. These IDs are the required inputs for search_connections — for example, port_id 52 is Peschiera and 53 is Sirmione on Lake Garda. Each lake has roughly 30 ports, and the list is always non-empty.
search_connections is the core scheduling endpoint. Required inputs are date (ISO format YYYY-MM-DD), from_port_id, and to_port_id. Optional filters include departure_time (an HH:MM string that constrains results to an 8-hour window from that time), no_change (direct connections only), fast_service (includes surcharge *servizio rapido* trips, confirmed to surface extra results on Lake Garda), and vehicles (the site's *veicoli al seguito* option for car-carrying ferries). The response includes total_connections, a full_day boolean indicating whether all three 8-hour windows were merged to give day-wide coverage, and a no_solutions_notice flag when the planner returned no results. Each connection object carries departure_time, arrival_time, duration_minutes, changes, and a legs array; each leg includes a trip number and intermediate stop data.
Timetable Documents
list_timetable_documents returns the official PDFs and purchasing links from Navigazione Laghi's *Tickets and timetables* page. The timetable_periods array lists seasons (typically current summer plus the following winter), each with valid_from, valid_to, a heading title, and a documents sub-array with category labels and direct PDF URLs. The fare_documents array lists fare PDFs including their effective dates as written on the site. The purchase_links array returns labelled URLs for the site's ticket purchase, season-ticket, and rates pages. Pass a valid_on ISO date to filter timetable_periods to only those valid on that date.
The Navigazione Laghi API is a managed, monitored endpoint for navigazionelaghi.it — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when navigazionelaghi.it 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 navigazionelaghi.it 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 an itinerary planner for Lake Garda that shows all direct ferry connections between two ports on a travel date, using
search_connectionswithno_change: true. - Display real-time sailing options for tourists including fast-service surcharge trips by toggling
fast_serviceinsearch_connections. - Surface car-ferry availability on Lake Maggiore by querying
search_connectionswithvehicles: true. - Populate a port-selector dropdown for a booking app by calling
list_portsfor each of the three lakes. - Show links to the current season's official timetable PDFs and fare documents via
list_timetable_documents. - Filter timetable periods to only the schedule valid on a specific holiday date using the
valid_onparameter inlist_timetable_documents. - Determine whether any connections exist between two ports on a given date by checking the
no_solutions_noticeflag in thesearch_connectionsresponse.
| 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.
Does Navigazione Laghi publish an official developer API?+
How does `search_connections` handle a full day of departures versus a specific time window?+
departure_time, the endpoint assembles three consecutive 8-hour windows to cover the full day and sets full_day: true in the response. When you supply a departure_time (HH:MM), results are limited to the 8-hour window starting from that time, and departure_time_from reflects your input. The total_connections field tells you how many connections were found either way.Does the API return real-time vessel positions or live delay information?+
departure_time, arrival_time, duration_minutes, and trip numbers per leg. Live positions and delays are not part of the current endpoint set. You can fork this API on Parse and revise it to add a live-status endpoint if that data becomes available on the source site.Are fare prices returned for individual connections?+
search_connections. That endpoint returns schedule data: times, duration, changes, trip numbers, and intermediate stops. Fare PDFs and their effective dates are available via list_timetable_documents under fare_documents, and purchase_links gives direct URLs to the site's rates and ticketing pages. You can fork this API on Parse and revise it to parse specific fare tables if the source page exposes them in a structured form.