Skip to main content

gtfs-analyzer

GTFS Schedule validation and feed-quality analysis for Python, powered by the Rust engine of GTFS Analyzer. The package runs the same pipeline as the web app, the CLI, the Rust crates, and the gtfs-sdk npm package, so a feed gets the same findings and scores everywhere. Validation happens in-process; the feed is never uploaded.

  • 616 rules across GTFS Schedule, GTFS-Flex, Fares v2, and GTFS-JP
  • Spec / Interop / Quality / Analytics classification, per-feed scores, and a publishability verdict
  • One abi3 wheel per platform for CPython 3.9+ (Linux x86_64, macOS arm64, Windows x86_64); other platforms build from the source distribution, which needs a Rust toolchain

Installation

pip install gtfs-analyzer

Usage

from gtfs_analyzer import validate_gtfs

result = validate_gtfs("feed.zip")

print(result["validation_status"])            # "COMPLETE" or "PARTIAL"
print(result["reports"]["r1"]["publishable"])  # publishability verdict
print(result["metrics"]["overall_score"])

for notice in result["notices"]:
    print(notice["rule_id"], notice["severity"], notice["file"], notice["line"])

validate_gtfs(feed, *, today=None, config=None, include_name_index=False, lang="en")

Argument Meaning
feed Path to a GTFS ZIP (str or pathlib.Path) or the ZIP as bytes
today Reference date for calendar checks: YYYYMMDD int or "YYYY-MM-DD" / "YYYYMMDD" string. Defaults to the local date. Pin it for reproducible results.
config Optional mapping of engine settings, e.g. {"disabled_rule_ids": ["TRP_020"]}. Unknown keys are rejected.
include_name_index Include the stop/route name lookup table (large; omitted by default)
lang Language of title, message, and remediation: "en" (default), "fr", "ja", or "tr", as the CLI's --lang. Missing entries fall back to English.

The returned dict is the engine's result object:

Key Content
validation_status COMPLETE, or PARTIAL when a limit stopped part of the analysis (see partial)
notices Findings with rule_id, severity, rule_class, file, line, field, observed_value, expected_value, message, remediation
reports Report views r1–r9; r1 holds the publishability verdict
metrics Scores and feed statistics (service window, trip counts, notice counts per class)
capped_totals True counts for rules whose notices were capped
agency_breakdown Per-rule finding counts by agency (agencies, rules)
feed_summary Agency contacts from agency.txt (up to 100, plus agency_count) and the publisher fields of feed_info.txt
partial Present only for PARTIAL results: what was skipped and why

Texts follow lang; use rule_id, not the message text, for program logic. The rule reference describes every rule.

Errors

  • gtfs_analyzer.ValidationError: the feed could not be validated at all, for example an unreadable ZIP. The message starts with the error code (ZipUnreadable: ...) and follows lang.
  • ValueError: invalid today, config, or lang.
  • TypeError: feed, today, config, or lang has the wrong type.

A feed with errors is not an exception: its findings are in notices.

Versioning

The package version is the engine version. gtfs_analyzer.__version__, the CLI, and the Rust crates of the same version produce the same results.

MIT licensed.

Metadata

Release files for gtfs-analyzer 0.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gtfs-analyzer 0.16.0
File Size Uploaded
gtfs_analyzer-0.16.0.tar.gz 977.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for gtfs-analyzer 0.16.0
File Interpreter ABI Platform
gtfs_analyzer-0.16.0-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
gtfs_analyzer-0.16.0-cp39-abi3-manylinux_2_34_x86_64.whl CPython 3.9 abi3 Linux glibc 2.34+ x86-64 Details
gtfs_analyzer-0.16.0-cp39-abi3-macosx_11_0_arm64.whl CPython 3.9 abi3 macOS 11.0+ ARM64 Details

Total release size: 7.9 MB

Release files / gtfs_analyzer-0.16.0.tar.gz

Download URL gtfs_analyzer-0.16.0.tar.gz
Size 977.2 kB
Tags Source
SHA-256 checksum
How to use checksums
50f05d5ab998c82d3feab515e887964deaa303e5a349367d9441d50d383e1b19
BLAKE2b-256 checksum
How to use checksums
e33cac30696c9fa06f51f9f70f1d486ecaa217e2b89136f6e69088b5855c5563
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / gtfs_analyzer-0.16.0-cp39-abi3-win_amd64.whl

Download URL gtfs_analyzer-0.16.0-cp39-abi3-win_amd64.whl
Size 2.4 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
af7f18da411bdfc615b83f42e2898000eb497e22f5475e5d3a91c761209e6d0d
BLAKE2b-256 checksum
How to use checksums
53cd7255a2fb1ac3260ce25b8194d52db1919c1b9f276e4ad0657d7117342261
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / gtfs_analyzer-0.16.0-cp39-abi3-manylinux_2_34_x86_64.whl

Download URL gtfs_analyzer-0.16.0-cp39-abi3-manylinux_2_34_x86_64.whl
Size 2.4 MB
Tags CPython 3.9 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
c5a7ada6b3999d26b2592101e88d8c532ec113c25926cc0b1b6fdde90dfb4505
BLAKE2b-256 checksum
How to use checksums
50b6648b0dc5bf792be1022f39294fe2cba8da4318072cb1dd1e33600cf4e7a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / gtfs_analyzer-0.16.0-cp39-abi3-macosx_11_0_arm64.whl

Download URL gtfs_analyzer-0.16.0-cp39-abi3-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.9 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
30680da069a603290054f9cb879c071b1e919eb75a6f5de45bd16720c5ce56fb
BLAKE2b-256 checksum
How to use checksums
36d83df8887555c0e479553c9a0eced18c9ba8b20883f6dc483f9b672e9af63e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.16.0 This release

4 release files

0.15.0

4 release files

0.14.0

4 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page