Skip to main content

AI-ready Python API wrapper for Île de France mobilités open-data API

Project description

pyidfm — Île-de-France Mobilités API

AI-ready Python API wrapper for the Île-de-France Mobilités open-data API. It exposes next-schedule lookups, traffic disruption reports and traffic messages for the Paris / Île-de-France public transport network (Metro, RER, Transilien, Tram, Bus).

The package is designed both as a regular Python library and as a CLI that is easy to drive from an LLM agent.

Part of this codebase (notably the SIRI / Navitia request plumbing in idfm.py and the dataclasses in models.py) is derived from the idfm-api package, with heavy modifications focused on reliability and LLM-friendliness rather than raw feature completeness.

Installation

pip install pyidfm

Or, from a checkout of this repository:

pip install .

API key

Live endpoints (next schedules, traffic reports, messages) require a free API key from the IDFM PRIM platform: https://prim.iledefrance-mobilites.fr/.

Once you have a key, expose it via the IDFM_API_KEY environment variable (every CLI command picks it up automatically) or pass it explicitly with the --apikey option.

export IDFM_API_KEY="your-key-here"

Static datasets

Lines and stops are resolved from local snapshots of the IDFM open-data datasets. They are downloaded on first use, but you can refresh them if required.

pyidfm update-data

CLI usage

The CLI is exposed as pyidfm once installed. Top-level commands:

Command Description
pyidfm update-data Download/refresh the local static datasets.
pyidfm search lines List lines, optionally filtered by transport mode.
pyidfm search stops List stops served by a given line.
pyidfm traffic Next schedules at a stop (live).
pyidfm line-report Traffic disruption reports for a line (live).
pyidfm messages Traffic messages for a line or stop (live).

All commands accept --json to emit machine-readable output, and the top-level --debug flag for verbose logging.

Examples

Find the ID of the RER D:

pyidfm search lines --mode rail

List the stops on a line:

pyidfm search stops C01742

Get the next departures at a stop:

pyidfm traffic --stop-id "STIF:StopArea:SP:43135:"

Get current disruptions on a line:

pyidfm line-report C01742

Python usage

from pyidfm.idfm import IDFMApi
from pyidfm.dataset import Dataset


# Live data (PRIM API key required)
api = IDFMApi(apikey="your-key-here")

stops = api.get_stops("C01742")
for s in stops:
    print(s.name, s.stop_id)

departures = api.get_traffic("STIF:StopArea:SP:43135:")
for d in departures:
    print(d.schedule, d.destination_name, d.direction)

reports = api.get_line_reports("C01742")
for r in reports:
    print(r.name, r.severity, r.effect)

Usage through LLMs

The CLI is the recommended entry point for LLM agents: every command supports --json so output is straightforward to parse, and a typical flow is just three calls — search linessearch stopstraffic (or line-report / messages). See SKILL.md in this repository for the agent skill packaging used during development.

License

MIT — see LICENCE.

The IDFM open-data datasets bundled at runtime are redistributed under the ODbL; the live PRIM API is covered by the Licence Mobilité.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyidfm-0.0.3.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyidfm-0.0.3-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file pyidfm-0.0.3.tar.gz.

File metadata

  • Download URL: pyidfm-0.0.3.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyidfm-0.0.3.tar.gz
Algorithm Hash digest
SHA256 892b255ea523b9f45b68ec9a5d38c6d1af0939620e53d1918057f724ece0ceaa
MD5 f0f2a347f38e0c12c6111fcc25c7f04e
BLAKE2b-256 1f51add5b84f3f94babff5d431f6997c9da65244df86cce4111a62d3e0b846eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyidfm-0.0.3.tar.gz:

Publisher: release.yml on RobinDavid/pyidfm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyidfm-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: pyidfm-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyidfm-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 acff8b3768d1c989e437a7a361290b21bc189ff672b707edc1530b5a3922f7e7
MD5 92ad839af2824bad39a3a583b233d521
BLAKE2b-256 c571d700b22b342ad6bfa41105f2266ac93bc58994f3e845e1d59269d07b90c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyidfm-0.0.3-py3-none-any.whl:

Publisher: release.yml on RobinDavid/pyidfm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page