Real Time Transit Information (RTTI)
The Real Time Transit Information Open API is a read-only REST (Representational State Transfer) API.
-
The API default is to return XML data, however, it can return JSON if the content-type: application/JSON or accept: application/JSON is set in the http request header.
-
The API will require a unique API key to request for data.
-
The API key will authorize to offer a maximum of 1,000 requests per day for use of the Data. This is to prevent malicious users from abusing our service. This might change and is open for discussion.
-
The API will provide services for Stops, Buses, Stop Estimates, and Route details.
-
Route url site will be https://api.translink.ca.
Query Types and Parameters
There are two main types of queries, ID queries and Filter queries.
ID Queries
ID queries return a single result. They specify the ID of the desired resource.
E.g.
https://api.translink.ca/RTTIAPI/V1/stops/55612?apiKey=[APIKey]
Filter Queries
Filter queries specify the results by passing in URL parameters. You can, for example, filter bus results according to a given stop number and route number. E.g.
https://api.translink.ca/RTTIAPI/V1/stops?apiKey=[APIKey]&lat=49.187706&long=-122.850060
Mandatory Parameter
The API key (apikey) is a mandatory parameter that is required in every request. Failure to provide a valid or active API key will result in a 403 HTTP response.
XML or JSON Specification
You can choose to either have the result set delivered as XML or JSON. This is done by specifying the "content-type" or "accept" in the http header as "application/XML" or "application/JSON". If this is left out of the http request, the result set will return XML.
RTTI API Reference
Stops
Stops are locations where buses provide scheduled service.
Parameter
ApiKey (string) | Your ApiKey received during registration |
Identity
StopNo (int) | A five-digit stop number |
Filters
Lat (decimal) | The latitude of your search (must be combined with long) |
Long (decimal) | The longitude of your search (must be combined with lat) |
Radius (int) | If present, will search a radius for stops (must be combined with lat and long). Default 500. Maximum 2000. |
RouteNo (string) | If present, will search for stops specific to route |
Response Fields
Stops | The element containing the list of stops |
Stop | The element containing the stop information |
StopNo | The 5-digtal stop number |
Name | The stop name |
BayNo | The bay number, if applicable |
City | The city in which the stop is located |
OnStreet | The street name the stop is located on |
AtStreet | The intersecting street of the stop |
Latitude | The latitude of the stop |
Longitude | The longitude of the stop |
WheelchairAccess | Specifies wheelchair accessible stop. 1 indicates stop is wheelchair accessible |
Distance | Distance away from the search location |
Routes | The list of routes that the stop services |
Error Codes
10001 | Invalid API key |
10002 | Database connection error |
1001 | Invalid stop number |
1002 | Stop number not found |
1003 | Unknown stop check error |
1004 | Unknown get stop error |
1011 | Invalid latitude/longitude |
1012 | No stops found |
1013 | Unknown get stops error |
1014 | Radius too large |
1015 | Invalid route number |
Examples
https://api.translink.ca/rttiapi/v1/stops/55612?apikey=[APIKey]
- Returns stop details for stop 55612https://api.translink.ca/rttiapi/v1/stops?apikey=[APIKey]&lat=49.187706&long=-122.850060
- Returns stops near latitude/longitude coordinates, radius is defaulted to 500 metershttps://api.translink.ca/rttiapi/v1/stops?apikey=[APIKey]&lat=49.187706&long=-122.850060&routeNo=590
- Returns stops near latitude/longitude coordinates, radius is defaulted to 500 meters and filtered to only show stops serving route 590https://api.translink.ca/rttiapi/v1/stops?apikey=[APIKey]&lat=49.248523&long=-123.108800&radius=500
- Returns stops near latitude/longitude coordinates, radius is 500 meters
Stop Estimates
Gets the next bus estimates for a particular stop. Returns schedule data if estimates are not available.
Parameter
ApiKey (string) | Your ApiKey received during registration |
Identity
StopNo (int) | A five-digit stop number |
Filters
Count (int) | The number of buses to return. Default 6 |
TimeFrame (int) | The search time frame in minutes. Default 120 |
RouteNo (string) | If present, will search for stops specific to route |
Response Fields
NextBuses | The element containing the list of next buses |
NextBus | The element containing the next bus information |
RouteNo | The bus route number |
RouteName | The bus route name |
Direction | The direction of the route at the specific stop |
RouteMap | The element containing the route map information |
Href | The location of the route map file in KMZ format |
Schedules | The element containing the list of schedules |
Schedule | The element containing the schedule information |
Pattern | The pattern of the specific trip |
Destination | The destination of the trip |
ExpectedLeaveTime | The expected departure time of the trip at the specific stop |
ExpectedCountdown | The expected departure time in minutes |
ScheduleStatus | The status of the trip. * indicates scheduled time. - indicates delay. + indicates bus is running ahead of schedule |
CancelledTrip | Indicates if trip is cancelled |
CancelledStop | Indicates if stop is cancelled |
AddedTrip | Indicates if trip is added |
AddedStop | Indicates if stop is added |
LastUpdate | The last updated time of the trip |
Error Codes
10001 | Invalid API key |
10002 | Database connection error |
3001 | Invalid stop number |
3002 | Stop number not found |
3003 | Unknown get estimates error |
3004 | Invalid route |
3005 | No stop estimates found |
3006 | Invalid time frame |
3007 | Invalid count |
Examples
https://api.translink.ca/rttiapi/v1/stops/60980/estimates?apikey=[APIKey]
- Returns the next 6 buses for each route to service the stop in the next 24 hourshttps://api.translink.ca/rttiapi/v1/stops/60980/estimates?apikey=[APIKey]&count=3&timeframe=120
- Returns the next 3 buses for each route to service the stop in the next 2 hours metershttps://api.translink.ca/rttiapi/v1/stops/60980/estimates?apikey=[APIKey]&count=3&timeframe=120&routeNo=050
- Returns the next 3 buses to service the stop in the next 2 hours for route 50https://api.translink.ca/rttiapi/v1/stops/60980/estimates?apikey=[APIKey]&routeNo=050
- Returns the next 6 buses to service the stop in the next 24 hours for route 50
Buses
Use the buses request to retrieve vehicle information of all or a filtered set of buses.
Parameter
ApiKey (string) | Your ApiKey received during registration |
Identity
BusNo (int) | A vehicle id |
Filters
StopNo (int) | If present, will search for buses for stop id specified |
RouteNo (string) | If present, will search for stops specific to route |
Response Fields
Buses | The element containing the list of buses |
Bus | The element containing the bus information |
VehicleNo | The vehicle number of the bus |
TripId | The id of the trip the bus currently running |
RouteNo | The route number of the vehicle |
Direction | The direction of the trip |
Pattern | The pattern of the trip |
Latitude | The latitude of the vehicle location |
Longitude | The longitude of the vehicle location |
RecordedTime | The recorded time of the last location of the vehicle |
RouteMap | The element containing the route map information |
Href | The location of the route map file for the vehicle in KMZ format |
Error Codes
10001 | Invalid API key |
10002 | Database connection error |
2001 | Invalid bus number |
2002 | Bus number not found |
2003 | Unknown get bus error |
2011 | No buses found |
2012 | Unknown get buses by stop error |
2013 | Unknown get buses by route error |
2014 | Invalid stop number |
2015 | Invalid route number |
2016 | Stop number not found |
2017 | Route number not found |
2018 | Unknown get buses by stop and route error |
Examples
https://api.translink.ca/rttiapi/v1/buses/7196?apikey=[APIKey]
- Returns details for bus id 7196 if active, otherwise a 404 will be returnedhttps://api.translink.ca/rttiapi/v1/buses?apikey=[APIKey]
- Returns details for all active buseshttps://api.translink.ca/rttiapi/v1/buses?apikey=[APIKey]&stopNo=53987
- Returns all active buses serving stop 53987https://api.translink.ca/rttiapi/v1/buses?apikey=[APIKey]&stopNo=53987&routeNo=210
- Returns all active buses serving stop 53987 and route 210https://api.translink.ca/rttiapi/v1/buses?apikey=[APIKey]&routeNo=099
- Returns all active buses serving route 99https://api.translink.ca/rttiapi/v1/buses?apikey=[APIKey]&routeNo=9999
- Returns a 404 error, "Invalid route number specified. Please use a valid active route id."
Routes
Routes are a sequenced pattern of service.
Parameter
ApiKey (string) | Your ApiKey received during registration |
Identity
RouteNo (string) | A bus route number |
Filters
StopNo (int) | If present, will search for routes passing through this stop |
Response Fields
Route | The element containing the route information |
RouteNo | The bus route number |
Name | The name of the route |
OperatingCompany | The operating company of the route |
Patterns | The list of patterns for the route |
Pattern | The element containing the pattern information |
PatternNo | The pattern number |
Destination | The destination of the pattern |
RouteMap | The element containing the route map information |
Href | The location of the route map file for the specific pattern |
Direction | The direction of the pattern |
Error Codes
10001 | Invalid API key |
10002 | Database connection error |
4002 | Route number not found |
4003 | Unknown get route error |
4004 | Invalid route number |
4011 | Invalid stop number |
4012 | Stop number not found |
4013 | Unknown error |
4014 | No routes found |
Examples
https://api.translink.ca/rttiapi/v1/routes/351?apikey=[APIKey]
- Returns details for route 351https://api.translink.ca/rttiapi/v1/routes?apikey=[APIKey]&stopNo=55385
- Returns routes serving stop 55385
Status
Gets the bus location and real-time schedule information update status.
Parameter
ApiKey (string) | Your ApiKey received during registration |
Identity
Service | A service name. "Location" for bus location information, "schedule" for real-time schedule information, and "all" for both services. |
Response Fields
Statuses | The element containing the list of statuses |
Status | The element containing the status information |
Name | The name of the service ("Location" or "Schedule") |
Value | The status of the service ("Online" or "Offline") |
Error Codes
10001 | Invalid API key |
10002 | Database connection error |
5001 | Invalid service name |
Examples
https://api.translink.ca/rttiapi/v1/status/all?apikey=[APIKey]
- Returns status of location and schedule updateshttps://api.translink.ca/rttiapi/v1/status/location?apikey=[APIKey]
- Returns status of location updateshttps://api.translink.ca/rttiapi/v1/status/schedule?apikey=[APIKey]
- Returns status of schedule updates