# agents.md · pickthebus

**You are welcome here.** pickthebus exists so an AI agent can answer "is there a direct bus from A to B, with no
change, across a border?" in one call, and hand the traveller the operator's own link. Please use the JSON instead
of scraping the pages.

## Quick start

```
GET https://pickthebus.com/api/v1/from/zurich.json
```

→ every city abroad you can reach from Zurich on one bus, each with every bus: departure and arrival (local minutes
after midnight), duration, operator and its official site (`op`, `opUrl`), the stops, the days it runs (`days`,
`on`), and whether it is an overnight bus (`night`).

```
GET https://pickthebus.com/api/v1/cities.json           # every city id (zurich, new-york, frankfurt)
GET https://pickthebus.com/api/v1/routes.json           # every city pair
```

Full contract: [/intents.md](/intents.md).

## Rules of engagement

- **Send the traveller to the operator.** Every bus carries its operator's official site (`opUrl`). There are no
  prices and no booking here: never invent fares.
- **Open the route, not just the company.** Many buses also carry `book`: the company's own page for that route (FlixBus's
  route page, or RegioJet's search between the bus's two stops). Where `bookDate` is set, add the day as that parameter.
- **Say it's timetable data.** Times come from official open timetables (the operators' own and the Czech national timetable system) and cover 29 Oct to 25 Nov 2026. Tell
  the traveller to check with the operator before they travel.
- **Don't fabricate.** The Twiliner sleeper bus has no open timetable: it has no times here, only the operator's
  link. Door-to-door minutes are estimates (typical transfer times), not a timetable.
- **Direct buses only**, across a border. For journeys with a change, use a journey planner.
