Overview

The TransLink API provides developers with access to data from Metro Vancouver's public transportation network. Operated by TransLink, the regional transportation authority, the API supports a range of applications from real-time passenger information systems to complex urban planning tools. Developers can retrieve current vehicle locations, predict arrival times, access static schedule data, and obtain fare details, enabling the creation of custom transit applications and services.

The API is primarily designed for developers seeking to integrate Vancouver's transit information into web or mobile applications, academic researchers analyzing transportation patterns, and businesses building location-aware services. It offers data feeds that align with industry standards such as the General Transit Feed Specification (GTFS), which facilitates interoperability with other transit data platforms and tools. For instance, the GTFS format is a recognized standard for public transportation schedules and associated geographic information, utilized by many transit agencies globally, including MTA in New York City.

Key use cases for the TransLink API include developing real-time bus and SkyTrain tracking applications, creating personalized journey planners, or building dashboards for operational monitoring. The API's access model provides a free tier for most developer use cases, requiring registration for an API key. This approach aims to foster innovation within the developer community by lowering the barrier to entry for accessing public transit data. The developer portal offers documentation and code samples in languages such as C#, Java, PHP, and Python to assist with integration efforts.

The TransLink API is a resource for anyone requiring up-to-date and historical public transit data for the Vancouver metropolitan area. It supports efforts to improve passenger experience, optimize transit operations, and contribute to smart city initiatives by making transportation data accessible and actionable.

Key features

  • GTFS Data Feed: Provides static schedule information, route data, stop locations, and other foundational transit data in the General Transit Feed Specification (GTFS) format. This format is widely adopted for public transportation data, facilitating integration with various mapping and transit planning tools.
  • Real-time Vehicle Positions API: Offers current geographic coordinates for buses and SkyTrain vehicles, allowing developers to display real-time vehicle locations on maps. This supports applications focused on live tracking and operational awareness.
  • Estimated Times of Arrival API: Delivers predicted arrival and departure times for buses and SkyTrain at specific stops. This feature is crucial for passenger information systems that help users plan their journeys more effectively.
  • Fares API: Provides access to fare information for different routes and travel zones within the TransLink network. This enables the development of applications that can calculate trip costs or display fare options to users.
  • Static Schedule Data API: Supplements the GTFS feed by offering programmatic access to scheduled stop times and route details. This can be used for building route planners or displaying fixed schedule information.

Pricing

The TransLink API operates on a tiered access model, with a free tier available for most developer use cases upon registration. Specific details for higher usage or commercial agreements are not publicly listed but can be inquired about directly through TransLink's developer portal.

TransLink API Pricing Summary (As of 2026-05-28)
Tier Features Cost
Free Developer Access Access to all core APIs (GTFS, Real-time, ETA, Fares, Static Schedule) for development and non-commercial use. Rate limits apply. Free
Commercial / High Volume Custom agreements for commercial applications or higher request volumes. Specific terms negotiated directly. Contact Vendor

For detailed terms and conditions regarding API usage and potential commercial agreements, developers should refer to the official TransLink API documentation.

Common integrations

  • Mapping and Geolocation Services: Integrating with platforms like Google Maps Platform or ArcGIS allows for visualizing real-time vehicle positions, plotting routes, and displaying transit stops on interactive maps.
  • Mobile Application Development: Developers can integrate the TransLink API into iOS and Android applications to provide users with real-time transit information, journey planning, and service alerts.
  • Data Analytics and Visualization Tools: Combining TransLink data with tools like Tableau or Power BI can enable analysis of transit performance, ridership patterns, and operational efficiency for urban planners and researchers.
  • Smart City Platforms: The API can feed into broader smart city initiatives, contributing transportation data for integrated urban management systems.

Alternatives

  • MTA (New York City): Offers API access to public transit data for New York City, including real-time train and bus data, schedules, and service alerts.
  • TfL (Transport for London): Provides a comprehensive suite of APIs for London's transportation network, covering real-time bus, tube, and rail information, as well as road network data.
  • Chicago Transit Authority (CTA): Offers developer resources for accessing real-time bus and train tracking, schedule data, and service updates for Chicago's public transit system.

Getting started

To begin using the TransLink API, developers must first register for an API key on the official TransLink developer portal. Once an API key is obtained, it can be included in request headers or query parameters for authentication. The following Python example demonstrates how to make a request to the Estimated Times of Arrival API to retrieve predictions for a specific stop.


import requests
import json

API_KEY = "YOUR_API_KEY_HERE"
STOP_NO = "50868" # Example: Commercial-Broadway Station (B/W Broadway & Commercial)
COUNT = "3" # Number of predictions to retrieve

url = f"http://api.translink.ca/rttiapi/v1/stops/{STOP_NO}/estimates?apikey={API_KEY}&count={COUNT}"

headers = {
    "Accept": "application/json"
}

try:
    response = requests.get(url, headers=headers)
    response.raise_for_status() # Raise an HTTPError for bad responses (4xx or 5xx)
    data = response.json()

    if data and "Estimates" in data:
        print(f"Estimates for Stop {STOP_NO}:")
        for estimate in data["Estimates"]:
            route_no = estimate.get("RouteNo")
            route_name = estimate.get("RouteName")
            schedules = estimate.get("Schedules", [])

            print(f"  Route: {route_no} - {route_name}")
            for schedule in schedules:
                destination = schedule.get("Destination")
                expected_leave_time = schedule.get("ExpectedLeaveTime")
                expected_countdown = schedule.get("ExpectedCountdown")
                print(f"    Destination: {destination}, Expected Leave: {expected_leave_time} ({expected_countdown} min)")
    else:
        print("No estimates found or unexpected data format.")

except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")
except json.JSONDecodeError:
    print("Failed to decode JSON response.")

This Python script sends a GET request to the TransLink Real-time Transit Information (RTTI) API for stop estimates. It includes the API key and specifies the stop number and the desired number of predictions. The response, formatted in JSON, is then parsed to display route numbers, destinations, and estimated departure times. Developers can find detailed API endpoints and parameters in the TransLink API documentation.