Discover/IDOS API
live

IDOS APIidos.cz

Search Czech train, bus, and tram connections via IDOS.cz. Get departure/arrival times, duration, carriers, transfers, and segment-level journey details.

Endpoint health
verified 3d ago
search_connections
1/1 passing latest checkself-healing
Endpoints
1
Updated
26d ago

What is the IDOS API?

The IDOS.cz API provides one endpoint — search_connections — that queries Czech public transport timetables and returns up to 3 connections per call, each containing departure time, arrival time, total duration, number of transfers, and a full segments array breaking down every leg of the journey by transport type, carrier, and station.

Try it
Arrival station name (must match IDOS station name exactly, e.g. 'Brno hl.n.', 'Praha hl.n.', 'Ostrava hl.n.').
Travel date in D.M.YYYY format (e.g. '3.5.2026'). Omitting defaults to today.
Departure station name (must match IDOS station name exactly, e.g. 'Praha hl.n.', 'Olomouc město', 'Brno hl.n.').
Departure time in HH:MM format (e.g. '10:00'). Omitting defaults to current time. Use to paginate through later connections.
Station type code for the arrival station.
Station type code for the departure station.
If true, only show direct connections without transfers. May return zero results on routes with no direct service.
api.parse.bot/scraper/35759a92-49ba-47ec-8bc2-ce5761e995f1/<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/35759a92-49ba-47ec-8bc2-ce5761e995f1/search_connections?to=Brno+hl.n.&date=12.7.2026&from=Praha+hl.n.&time=10%3A00&to_code=100003&from_code=100003&direct_only=False' \
  -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 idos-cz-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.

"""IDOS.cz Transport Connections — search Czech public transport routes."""
from parse_apis.idos_cz_transport_connections_api import Idos, ConnectionNotFound

client = Idos()

# Search for connections from Praha to Brno at 10:00
result = client.connectionsearches.search(
    from_station="Praha hl.n.",
    to_station="Brno hl.n.",
    time="10:00",
)
print(f"Route: {result.from_} → {result.to}, found {result.connections_count} connections")

# Inspect connection details — segments, carriers, delays
for conn in result.connections:
    print(f"  {conn.departure_time}–{conn.arrival_time} ({conn.total_duration}, {conn.num_transfers} transfers)")
    for seg in conn.segments:
        stations_str = " → ".join(s.name for s in seg.stations)
        print(f"    [{seg.type}] {seg.line_name} | {seg.carrier} | {stations_str}")
        if seg.delay_info:
            print(f"      ⚠ {seg.delay_info}")

# Direct-only search — filter to connections without transfers
direct = client.connectionsearches.search(
    from_station="Praha hl.n.",
    to_station="Brno hl.n.",
    time="08:00",
    direct_only="True",
)
print(f"\nDirect connections: {direct.connections_count}")

# Typed error handling
try:
    bad = client.connectionsearches.search(
        from_station="NonexistentStation123",
        to_station="Brno hl.n.",
    )
except ConnectionNotFound as exc:
    print(f"No connections found: {exc}")

print("Exercised: connectionsearches.search (with time, direct_only, error handling)")
All endpoints · 1 totalmissing one? ·

Search for transport connections between two stations on the IDOS.cz timetable. Returns connections with detailed segments showing each leg of the journey including transport type, carrier, stations, timing, and live delay information. Typically returns 3 connections per request; use the time parameter to paginate forward through later departures.

Input
ParamTypeDescription
tostringArrival station name (must match IDOS station name exactly, e.g. 'Brno hl.n.', 'Praha hl.n.', 'Ostrava hl.n.').
datestringTravel date in D.M.YYYY format (e.g. '3.5.2026'). Omitting defaults to today.
fromstringDeparture station name (must match IDOS station name exactly, e.g. 'Praha hl.n.', 'Olomouc město', 'Brno hl.n.').
timestringDeparture time in HH:MM format (e.g. '10:00'). Omitting defaults to current time. Use to paginate through later connections.
to_codestringStation type code for the arrival station.
from_codestringStation type code for the departure station.
direct_onlybooleanIf true, only show direct connections without transfers. May return zero results on routes with no direct service.
Response
{
  "type": "object",
  "fields": {
    "to": "string - arrival station name",
    "date": "string - travel date or 'today' if not specified",
    "from": "string - departure station name",
    "time": "string - departure time filter or 'now' if not specified",
    "connections": "array of connection objects, each with id, departure_time, arrival_time, date, total_duration, num_transfers, and segments array detailing each leg",
    "search_info": "string - search description from the site",
    "connections_count": "integer - number of connections found"
  },
  "sample": {
    "data": {
      "to": "Brno hl.n.",
      "date": "today",
      "from": "Praha hl.n.",
      "time": "10:00",
      "connections": [
        {
          "id": "563329983",
          "date": "11.6. čt",
          "segments": [
            {
              "type": "train",
              "carrier": "Dopravní podnik hl.m. Prahy, a.s.",
              "stations": [
                {
                  "name": "Hlavní nádraží",
                  "time": "10:27"
                },
                {
                  "name": "Nádraží Holešovice",
                  "time": "10:32"
                }
              ],
              "line_name": "Metro C",
              "delay_info": "",
              "line_description": "metro (Háje >> Letňany)"
            },
            {
              "type": "railjet",
              "carrier": "České dráhy, a.s.",
              "stations": [
                {
                  "name": "Praha-Holešovice",
                  "time": "10:36"
                },
                {
                  "name": "Brno hl.n.",
                  "time": "13:13"
                }
              ],
              "line_name": "Ex3 (rj 251 Vindobona)",
              "delay_info": "Aktuální zpoždění 8 minut",
              "walk_before": "Přesun asi 4 min",
              "line_description": "railjet (Berlin Hbf (tief) >> Villach Hbf)"
            }
          ],
          "arrival_time": "13:13",
          "num_transfers": 1,
          "departure_time": "10:27",
          "total_duration": "2 hod 46 min"
        }
      ],
      "search_info": "Spojení Praha hl.n. » Brno hl.n. 11.6.2026",
      "connections_count": 3
    },
    "status": "success"
  }
}

About the IDOS API

What the API Returns

The search_connections endpoint accepts a departure station (from) and arrival station (to), both of which must match IDOS station names exactly — for example Praha hl.n., Brno hl.n., or Olomouc město. You can also supply a date in D.M.YYYY format and a time in HH:MM format; omitting either defaults to the current date and time. Optional from_code and to_code parameters allow you to disambiguate stations that share a name across different transport modes or localities.

Connection and Segment Data

Each connection object in the connections array includes id, departure_time, arrival_time, date, total_duration, and num_transfers. The nested segments array describes individual legs of the journey, covering the transport mode (train, bus, tram), carrier name, origin and destination stations for that leg, scheduled times, and live delay information where available. The top-level response also includes search_info (a human-readable description of the search) and connections_count.

Filtering and Pagination

Setting direct_only to true restricts results to connections with no transfers; note that some routes have no direct service and the array may return empty. To page through later departures, pass the time parameter set to a value after the last returned departure time — the endpoint does not expose an offset or page number parameter.

Reliability & maintenanceVerified

The IDOS API is a managed, monitored endpoint for idos.cz — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when idos.cz 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 idos.cz 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
3d 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
  • Build a trip-planning widget that shows train and bus options between any two Czech cities with live delay indicators
  • Compare total journey durations across multiple departure times on a given route using repeated search_connections calls
  • Filter for direct-only connections on intercity routes by setting direct_only: true and surfacing carrier names to travelers
  • Aggregate num_transfers data across routes to identify the most transfer-heavy corridors in the Czech rail network
  • Automate daily commute alerts by querying search_connections for a fixed origin/destination pair and monitoring departure_time shifts
  • Populate a route comparison table with total_duration and segments data to help users choose between train and bus options
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does IDOS.cz have an official public developer API?+
IDOS.cz does not publish a documented public developer API. The platform is a consumer-facing Czech public transport timetable service operated by CHAPS spol. s r.o., without a documented developer tier or OAuth-based programmatic access.
What does the `segments` array inside each connection contain?+
Each segment represents one leg of a multi-part journey and includes the transport mode (train, bus, tram), the carrier name, the boarding and alighting stations for that leg, scheduled departure and arrival times, and live delay information where the source exposes it. A direct connection will have a single segment; a connection with two transfers will have three.
How do I retrieve connections later in the day, since only ~3 results are returned per call?+
Pass the time parameter set to a time after the last departure_time in the current response. There is no page offset parameter, so incrementing the time value is the intended way to walk forward through the timetable.
Does the API cover intermediate stops along a segment, or only the endpoints of each leg?+
Currently the API exposes the origin and destination stations for each segment, along with timing and carrier data. Intermediate stop lists within a single segment are not included in the response. You can fork this API on Parse and revise it to add an intermediate-stops endpoint if your use case requires full stop sequences.
Are station names for `from` and `to` case-sensitive, and what happens with ambiguous names?+
Station names must match IDOS naming conventions exactly — for example Praha hl.n. rather than Praha hlavni nadrazi. The optional from_code and to_code parameters exist specifically to disambiguate stations that share a display name across different transport contexts or regions.
Page content last updated . Spec covers 1 endpoint from idos.cz.
Related APIs in TravelSee all →
bahn.de API
Access data from bahn.de.
bahn.com API
Search German train schedules and stations, find connections between destinations, and compare ticket prices across Deutsche Bahn routes. Get real-time station information and transit association details to plan your train journey efficiently.
trainline.eu API
Search for train stations and routes across the UK and Europe, then find and compare available journeys with schedules and pricing. Book your ideal train trip by accessing real-time travel options directly from Trainline.com.
omio.com API
Search and compare train, bus, and flight trips across multiple providers in real-time, with detailed pricing breakdowns and the ability to view fares across different dates. Find the best deals by exploring popular destinations, autocompleting location searches, and analyzing price variations to plan your ideal journey.
thetrainline.com API
Search UK train stations and find the cheapest fares across date ranges, then generate direct booking links to complete your purchase on Trainline.com. Get real-time journey information to compare prices and book your tickets in seconds.
flightconnections.com API
Search for flights with detailed information about pricing, schedules, and layover options to find the best travel connections for your trips. Compare multiple flight choices and their costs in one convenient search.
trenitalia.com API
Search for trains across Italy, check real-time train status and delays, view station departure and arrival boards, and find available tickets all in one place. Get live traffic information and detailed train itineraries to plan your journey with complete visibility into schedules and service disruptions.
enquiry.indianrail.gov.in API
Search for trains between Indian stations, check schedules, and look up station details to plan your rail journeys. Get real-time train information with support for captcha-protected searches to ensure reliable access to Indian Railways data.