Overview

Transport for Paris, managed by Île-de-France Mobilités (IDFM), provides a suite of APIs and datasets designed to offer programmatic access to public transportation information across the Île-de-France region. This includes Paris and its surrounding areas, encompassing a network of metro, RER, tram, and bus lines. The primary objective is to facilitate the development of applications and services that enhance urban mobility and provide critical information to residents and visitors.

The APIs are suitable for developers building mobile transit applications that require real-time updates on arrivals, departures, and service disruptions. Urban planners can utilize the historical and static data for research into traffic patterns, infrastructure development, and demographic analysis. Smart city initiatives can integrate this data to build intelligent transportation systems, optimize public services, and inform policy decisions. Additionally, the journey planning API supports route optimization tools, helping users find the most efficient travel paths through the complex transit network.

IDFM's offerings include both static data, typically provided in General Transit Feed Specification (GTFS) format, and real-time data, often available as GTFS-Realtime (GTFS-RT). GTFS is a common format for public transportation schedules and associated geographic information, enabling interoperability across different transit data consumers as defined by Google's GTFS reference. GTFS-RT extends this by providing dynamic updates on vehicle positions, service alerts, and trip updates according to the GTFS-Realtime specification. Access to most datasets and APIs is provided with a free tier, making it accessible for independent developers and smaller projects, while commercial use may necessitate specific agreements.

Developer experience is supported through a dedicated portal, offering clear API documentation and guidance on data formats. The use of standard data formats like GTFS and GTFS-RT aims to simplify integration efforts for developers familiar with these specifications. While many APIs are readily available, some may require registration and API key management for access and usage tracking, ensuring responsible consumption of resources.

Key features

  • Real-time transit data (GTFS-RT): Provides live updates on vehicle positions, estimated arrival times, and service alerts for metro, RER, tram, and bus lines.
  • Static transit data (GTFS): Offers comprehensive schedules, route definitions, stop locations, and fare information for the entire Île-de-France public transport network.
  • Journey planning API: Enables users to calculate optimal routes between two points, considering various transport modes, real-time conditions, and user preferences.
  • Disruption information: Delivers immediate notifications regarding service interruptions, delays, and planned maintenance, allowing developers to integrate real-time service status into their applications.
  • Developer portal and documentation: Centralized access to API references, data schemas, and guides for integrating with IDFM's transit data.
  • Standard data formats: Utilizes industry-standard GTFS and GTFS-RT formats, promoting interoperability and reducing integration complexity.

Pricing

Transport for Paris (Île-de-France Mobilités) offers a tiered access model, primarily providing free access for most data and API usage. Commercial applications or high-volume data consumption may require specific agreements.

Tier Description Cost (as of 2026-05-28) Details
Free Access Access to most public datasets and APIs Free Suitable for personal projects, academic research, and initial development. Usage limits may apply.
Commercial Use High-volume data access, commercial applications Contact for pricing Requires specific agreements with Île-de-France Mobilités. Refer to the official API page for contact details.

Common integrations

  • Mobile mapping applications: Integrate real-time transit data and journey planning capabilities into navigation apps.
  • Smart city dashboards: Display public transport status and performance metrics for urban management.
  • Urban planning tools: Utilize static GTFS data for analyzing transit network efficiency and accessibility.
  • Personalized travel assistants: Develop applications that provide customized transit alerts and recommendations based on user preferences.
  • Public display systems: Power digital signage at stations and public spaces with live arrival/departure information.

Alternatives

  • Moovit API: Offers global public transit data, journey planning, and real-time information, often used for mobile applications.
  • Google Maps Platform Transit API: Provides transit data and routing as part of the broader Google Maps ecosystem, with extensive global coverage.
  • OpenTripPlanner: An open-source multi-modal trip planner that can integrate GTFS data for routing and analysis, suitable for self-hosted solutions.

Getting started

To access the Transport for Paris APIs, developers typically need to register on the Île-de-France Mobilités developer portal to obtain an API key. Once registered, you can make requests to the various API endpoints. The following example demonstrates how to fetch data using a simple HTTP GET request, assuming you have an API key. For this example, we'll use a placeholder for an API key and a hypothetical endpoint for real-time departures.

This Python example uses the requests library to query a real-time departure endpoint. Replace YOUR_API_KEY with your actual key obtained from the IDFM developer portal.


import requests

API_KEY = "YOUR_API_KEY"  # Replace with your actual API key
BASE_URL = "https://opendata.stif.info/api/v1"

# Example: Fetch real-time departures for a specific stop
# This is a hypothetical endpoint structure; refer to the official docs for exact paths.
stop_id = "STIF:StopPoint:Q:DR:48820:" # Example stop ID for a Paris metro station
endpoint = f"{BASE_URL}/departures/stop/{stop_id}"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Accept": "application/json"
}

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

    print(f"Real-time departures for stop {stop_id}:")
    if data and "departures" in data:
        for departure in data["departures"]:
            line_name = departure.get("lineName", "N/A")
            destination = departure.get("destination", "N/A")
            expected_time = departure.get("expectedDepartureTime", "N/A")
            print(f"  Line: {line_name}, Destination: {destination}, Expected: {expected_time}")
    else:
        print("No departure data found or unexpected response format.")

except requests.exceptions.HTTPError as http_err:
    print(f"HTTP error occurred: {http_err} - {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}")

For detailed information on specific API endpoints, required parameters, and data formats, consult the official API reference documentation provided by Île-de-France Mobilités.