pickthebus

API for agents and developers

Everything on the site is also plain JSON, static and free to use under the ODbL with attribution ("Data: pickthebus.com, from official open timetables"). No key, no rate limit beyond fair use.

EndpointReturns
/api/v1/cities.jsonEvery city: id, name, country, coordinates, population, its main bus stops, nearby airports, its pickthetrain id
/api/v1/routes.jsonEvery city pair with a direct bus across a border: buses a day (the busier direction), fastest minutes, whether a night bus runs, the operators
/api/v1/from/{city}.jsonEvery direct destination abroad from one city, each with all its buses: dep/arr (local minutes after midnight; plus = days later), dur, op + opUrl, line, the stops, via, night, days and on (one character per day of the window from window.start: 1 = leaves that day). depOn/arrOn: times that differ on a date (the night the clocks change).
/api/v1/live/{date}.jsonEvery international bus on the road that UTC day, for the live map: runs = [trip, start minute, then per stop: stop index, minutes to arrive, minutes stopped], stops in /api/v1/live/stops.json as [lon, lat]
/api/v1/meta.jsonWhen the timetables were last checked, the window they cover, the build date
/api/v1/sources.jsonEvery timetable source: operator, what it covers, licence, the publisher's page and the date of each file the site uses

City ids are lowercase slugs, the same as pickthetrain's where both have the city: zurich, new-york, frankfurt. Example: /api/v1/from/zurich.json. Human pages: /bus/{from}-to-{to}/ for the busier pairs (else /bus/?from=&to=) and /from/{city}/. See also llms.txt and intents.md.