Overview

Transport for Greater Manchester (TfGM) offers a suite of open data APIs designed to provide programmatic access to a wide range of public transport and mobility information within the Greater Manchester area. Established in 2011, these data resources support a variety of use cases, from the development of consumer-facing travel applications to detailed urban planning research and academic studies of city mobility patterns. Developers can integrate real-time bus and tram schedules, vehicle locations, bike hire availability, car park occupancy, and even road sensor data into their own platforms.

The TfGM open data initiative focuses on providing comprehensive and current information to foster innovation in transport solutions. Key data feeds include General Transit Feed Specification (GTFS) data for static schedule information and real-time data using the Service Interface for Real-time Information (SIRI) standard, alongside custom APIs for specific datasets. This multi-format approach allows developers to choose the most appropriate data structure for their application needs. Access to the APIs typically requires registration for an API key, which is provided free of charge.

TfGM's data offerings are particularly valuable for scenarios requiring localized, granular transport information for Greater Manchester. For instance, developers building navigation apps can use the real-time bus and tram data to provide accurate arrival predictions, while researchers might analyze historical bike hire trends to inform infrastructure planning. The availability of road sensor data also enables analysis of traffic flow and environmental factors. The platform is best suited for projects focused specifically on the Greater Manchester region, offering a depth of local data comparable to similar initiatives like Transport for London's (TfL) open data for the capital.

The developer experience is supported by clear documentation that outlines API endpoints, data formats, and usage guidelines, assisting both novice and experienced developers in integrating the data effectively. By offering these resources freely, TfGM aims to encourage the creation of services that enhance public transport use and improve urban mobility across its operational area.

Key features

  • Bus Data API: Provides real-time bus locations, schedule adherence, and static route information for all bus services operating in Greater Manchester.
  • Tram Data API: Offers real-time tram movements, predicted arrival times, and network status updates for the Metrolink tram system.
  • Bike Hire Data API: Supplies current availability of bikes and docking stations for the local cycle hire scheme.
  • Car Park Data API: Delivers real-time occupancy levels for various car parks across the region.
  • Road Sensor Data API: Accesses data from road-side sensors, potentially including traffic counts or environmental readings.
  • GTFS Data Feeds: Static schedule data provided in the General Transit Feed Specification format, widely used for public transport planning applications.
  • SIRI Data Feeds: Real-time operational data available through the Service Interface for Real-time Information standard, suitable for dynamic information displays.
  • API Key Access: Secure access to data streams requiring registration for individual API keys, ensuring controlled usage.

Pricing

As of 2026-05-28, all Transport for Greater Manchester (TfGM) data APIs are free to use. Developers can register for an API key without incurring any costs for accessing the data feeds. This aligns with TfGM's open data policy to promote innovation and public access to transport information.

Service Cost Notes
Bus Data API Free Requires API key registration
Tram Data API Free Requires API key registration
Bike Hire Data API Free Requires API key registration
Car Park Data API Free Requires API key registration
Road Sensor Data API Free Requires API key registration
GTFS Data Feeds Free Publicly available, no API key needed for static files
SIRI Data Feeds Free Requires API key registration

For the most current pricing and terms of use, refer to the official TfGM Open Data page.

Common integrations

TfGM's open data APIs are designed for integration into various applications and systems. Typical integrations leverage the real-time and static data feeds to power transport-related services.

  • Public Transport Apps: Developers integrate bus and tram APIs to display real-time arrival predictions, vehicle locations, and route planning features within mobile or web applications.
  • Urban Planning Tools: Researchers and city planners utilize historical and real-time data, including road sensor and bike hire data, to analyze mobility patterns, traffic congestion, and infrastructure needs.
  • Digital Signage Systems: Real-time tram and bus data can be integrated into digital displays at stations, stops, or public venues to provide up-to-date travel information.
  • Academic Research Platforms: Universities and research institutions use the comprehensive datasets for studies on transport efficiency, environmental impact, and smart city initiatives.
  • Mapping and Navigation Services: Enhance existing mapping platforms with live public transport overlays and dynamic routing capabilities for Greater Manchester.

For detailed information on integrating specific data feeds, consult the TfGM API documentation.

Alternatives

  • Transport for London (TfL) Open Data: Offers a wide array of public transport data for the London area, including Tube, bus, and rail, similar in scope but geographically focused on the capital.
  • Traveline API: Provides comprehensive public transport timetable data for journeys across the UK, useful for national-scale journey planning applications.
  • MaaS Global (Whim): A Mobility-as-a-Service (MaaS) platform that integrates various transport options (public transport, taxis, car/bike share) into a single app, offering a different approach to urban mobility.

Getting started

To begin using the Transport for Greater Manchester (TfGM) APIs, you will typically need to register for an API key. The following example demonstrates how to make a basic request to a hypothetical TfGM API endpoint using Python's requests library, assuming you have obtained an API key.

First, ensure you have the requests library installed:

pip install requests

Then, you can use a Python script to fetch data. This example illustrates fetching real-time bus data, though the specific endpoint and parameters would depend on the exact API you intend to use. Always refer to the official TfGM API documentation for the correct endpoints and required parameters for each service.

import requests
import json

# Replace with your actual API Key obtained from TfGM
API_KEY = "YOUR_TFGM_API_KEY"

# Example endpoint for real-time bus data (this is a placeholder, check docs for actual URL)
# For example, a real endpoint might be for a specific bus route or stop
# Consult the TfGM API documentation for the correct endpoint and parameters.
API_ENDPOINT = "https://api.tfgm.com/odata/Bus/Route/192/Live"

headers = {
    "Ocp-Apim-Subscription-Key": API_KEY,
    "Accept": "application/json"
}

print(f"Attempting to fetch data from: {API_ENDPOINT}")

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

    data = response.json()
    print("Successfully fetched data:")
    print(json.dumps(data, indent=2))

    # Example: Print details of the first few buses if available
    if data and 'value' in data and len(data['value']) > 0:
        print("\nFirst 3 bus entries:")
        for i, bus in enumerate(data['value'][:3]):
            print(f"  Bus {i+1}:")
            print(f"    Vehicle Ref: {bus.get('VehicleRef', 'N/A')}")
            print(f"    Line Name: {bus.get('LineName', 'N/A')}")
            print(f"    Destination: {bus.get('DestinationName', 'N/A')}")
            print(f"    Expected Arrival: {bus.get('ExpectedArrivalTime', 'N/A')}")
    else:
        print("No bus data found or 'value' key is missing.")

except requests.exceptions.HTTPError as http_err:
    print(f"HTTP error occurred: {http_err}")
    print(f"Response content: {response.text}")
except requests.exceptions.ConnectionError as conn_err:
    print(f"Connection error occurred: {conn_err}")
except requests.exceptions.Timeout as timeout_err:
    print(f"Timeout error occurred: {timeout_err}")
except requests.exceptions.RequestException as req_err:
    print(f"An unexpected error occurred: {req_err}")
except json.JSONDecodeError:
    print(f"Failed to decode JSON from response: {response.text}")


Remember to replace "YOUR_TFGM_API_KEY" with the actual key you obtain after registering on the TfGM Open Data portal and to verify the specific API endpoint and required headers for the data you wish to access.