Service status
This page shows whether configured feed URLs are responding, whether scheduled scoring completed, and whether the bounded European beta criteria are met. Direct liveness checks and the mirror-assisted daily run are reported separately because they measure different things. Machine-readable at /api/v1/status.json, /api/v1/run-status.json, and /api/v1/global-coverage.json.
Monitoring status and schedule
The schedule is the service commitment. The liveness record shows what the pipeline observed at each configured feed URL. Machine-readable at /api/v1/status.json.
Current feed URL liveness
As of , direct liveness state covers 2009 current feed records.
- Checking clean
- 1891 (latest direct check succeeded)
- Recent check failure
- 14 (1–29 consecutive direct checks failed)
- Flagged unreachable
- 104 (30 or more consecutive direct checks failed)
Currently checking clean: 94.1% of tracked feed records.
The latest direct checks range from 1.3 to 10.6 hours old. The median is 1.5 hours.
Direct liveness calls each configured feed URL without a mirror. The daily full scoring run can use the Mobility Database mirror, so the liveness counts here and the run totals below answer different questions.
Scheduled checks
Each feed belongs to one of two direct-liveness tiers. A separate full validation is scheduled once daily for every registered feed. The latest-run section below records what that daily work completed.
| Check | Cadence | Applies to |
|---|---|---|
| Priority | one direct liveness check every 3 hours | feeds with measured realtime data, and any feed in the expiry danger or recovery window (expiring soon, or recently lapsed) |
| Standard | one direct liveness check in each 6-hour period, on a stable per-feed schedule that spreads requests across the period | every other tracked feed |
| Full Validation | one full validation each day | every registered feed |
When a check fails
The scorecard keeps the last successful evidence available and makes the degraded state visible:
- If a fetch fails, the last successful scorecard remains available. The pipeline recalculates only its calendar-based freshness and expiry fields. It never rewrites an older snapshot.
- A feed whose calendar has been past its expiry date for more than 365 days is labeled 'stale' rather than 'lapsed', which changes how it is described but not whether it is served.
- A configured feed URL is labeled 'unreachable' after 30 consecutive direct checks fail (roughly a week at standard cadence). This is separate from an expired calendar.
- These observations do not guarantee an agency's GTFS host will stay online. The status page records what the pipeline observed and when.
This section is generated from the same liveness state used by the intraday refresh. It reports only observations the pipeline recorded.
Latest full scoring run
This section reports one completed scoring run. It separates all attempted records from records that remain in the current catalog and shows the age of each published score. Machine-readable at /api/v1/run-status.json.
Run summary
Run completed Recorded 1 days ago (2026-08-21 14:16 UTC). The run attempted 2179 feed records across 32 shards. The current catalog contains 2009 feed records.
The badge describes this scoring run, not agency feed availability. Current direct-URL liveness is reported above.
- Scored (fresh data this run)
- 1483
- Reused (feed unchanged since last check)
- 624
- Unreachable (all attempted records)
- 72
- Unreachable records still in the current catalog
- 32
- Fell back to the Mobility Database mirror
- 128
- Validator cache hits
- 1155
Show per-shard breakdown
| Shard | Scored | Reused | Unreachable | Mirrored | Cache hit | Wall clock |
|---|---|---|---|---|---|---|
| 0 | 44 | 23 | 2 | 4 | 31 | 966s |
| 1 | 46 | 22 | 1 | 4 | 35 | 1150s |
| 10 | 43 | 24 | 1 | 7 | 35 | 1066s |
| 11 | 51 | 15 | 2 | 4 | 39 | 1207s |
| 12 | 54 | 14 | 0 | 3 | 38 | 1136s |
| 13 | 49 | 17 | 2 | 5 | 37 | 1208s |
| 14 | 42 | 25 | 1 | 2 | 35 | 1151s |
| 15 | 45 | 19 | 4 | 4 | 37 | 1152s |
| 16 | 41 | 22 | 5 | 0 | 31 | 1070s |
| 17 | 46 | 20 | 2 | 4 | 34 | 1536s |
| 18 | 44 | 23 | 1 | 3 | 34 | 1132s |
| 19 | 51 | 14 | 3 | 2 | 37 | 1196s |
| 2 | 45 | 20 | 4 | 5 | 35 | 1862s |
| 20 | 53 | 13 | 2 | 4 | 40 | 1532s |
| 21 | 51 | 13 | 4 | 4 | 39 | 1243s |
| 22 | 48 | 18 | 2 | 3 | 38 | 1120s |
| 23 | 48 | 18 | 2 | 4 | 39 | 1488s |
| 24 | 50 | 17 | 1 | 6 | 41 | 1128s |
| 25 | 43 | 22 | 3 | 1 | 39 | 1392s |
| 26 | 45 | 21 | 2 | 4 | 35 | 770s |
| 27 | 38 | 29 | 1 | 4 | 32 | 1149s |
| 28 | 45 | 19 | 4 | 5 | 38 | 1271s |
| 29 | 49 | 18 | 1 | 3 | 41 | 1293s |
| 3 | 43 | 21 | 4 | 5 | 35 | 977s |
| 30 | 41 | 22 | 5 | 7 | 31 | 1724s |
| 31 | 47 | 18 | 3 | 5 | 34 | 1405s |
| 4 | 46 | 21 | 1 | 6 | 38 | 1266s |
| 5 | 44 | 23 | 1 | 2 | 30 | 1199s |
| 6 | 48 | 15 | 5 | 4 | 38 | 1151s |
| 7 | 48 | 20 | 0 | 4 | 35 | 1300s |
| 8 | 46 | 20 | 2 | 6 | 36 | 1016s |
| 9 | 49 | 18 | 1 | 4 | 38 | 1322s |
Feed records unreachable this run
The pipeline could not fetch or validate these currently published feeds in that run; each continues to show its last successful scorecard. A feed host outage is one possible cause, but this evidence does not diagnose why a check failed.
- Advance Transit (AT)
- Beach Cities Transit
- Bethesda Circulator
- Casco Bay Lines
- Catalina Express
- City of Lompoc Transit (COLT)
- Elk Grove Transit
- Express Arrow
- Réseau urbain Rubis
- Hawai'i Mass Transit Agency (Hele-On Bus)
- Jamestown S'klallam
- JAUNT Inc
- Kansas City Area Transportation Authority (KCATA)
- Lakes Region Explorer
- Mountain Express (MtnExp)
- Cuyahoga Valley Scenic Railroad
- Réseau urbain Tanéo
- Niagara Frontier Transportation Authority (NFTA)
- Puget Sound Express
- Rabbit Transit
- Rapid Kuantan
- San Clemente Trolley
- Santa Clarita Transit
- Santa Rosa CityBus
- Selah Transit
- Shreveport and Bossier City
- Tideline Water Taxi
- Torrance Transit
- Transfort – City of Fort Collins (Transfort)
- Transvilles (Valenciennes)
- Tri Delta Transit
- Xpress
40 additional records were part of this run's attempted set but are outside the current published catalog. They remain in the run totals without being named or linked here.
Catalog freshness
Age of the most recent successful score behind each current scorecard. A score can be older than this run when its source was unchanged or could not be fetched.
Show snapshot-age table
| Snapshot age | Feed scorecards |
|---|---|
| under 1 day | 112 |
| 1-2 days | 1327 |
| 3-7 days | 21 |
| over 7 days | 549 |
Built from the run-status API, refreshed after each completed scoring run. See how to read a scorecard for what the grades themselves mean.
European beta readiness
Not ready The reviewed cohort currently contains 528 GTFS Schedule feed records across 26 countries.
This is a bounded European GTFS Schedule beta gate based on feed records with reviewed reuse evidence. It is not a claim of coverage for all European public transport, and it does not assess NeTEx coverage.
Readiness criteria
| Measure | Current | Threshold | Status |
|---|---|---|---|
| Reviewed European GTFS Schedule feed records | 528 | at least 250 | Met |
| Countries represented | 26 | at least 12 | Met |
| Largest single-country share | 50.6% | at most 40% | Not met |
| Scorecards retrieved within the inclusive seven-day window | 99.6% | at least 95% | Met |
| Translation publication measured | 100% | at least 100% | Met |
| Valid portable country and subdivision pair | 100% | at least 100% | Met |
| Feed identity reviewed | 100% | at least 100% | Met |
| Feature finder discloses its feed-record denominator | Yes | equals Yes | Met |
Exceptions
| Reason | Count |
|---|---|
| Scorecard is older than the seven-day freshness window | 2 |
A feed record can appear under more than one reason. The JSON lists the affected record identifiers.
Read the auditable global coverage JSON or the global expansion methodology. Counts are feed records, not agencies, operators, routes, or services.