← All agencies

Feed status · checked 2026-07-09

Chicago Transit Authority (CTA)

Based on the feed this agency publishes

36.3 / 100

down 0.4 since 2026-07-08

Ahead of 9% of all tracked agencies and 18% of large agencies. Operates in Illinois.

Expires in 22 daysNo realtime feed

A data-quality and completeness lens to help an agency improve its GTFS feed. Not an official compliance determination from any transit program. New to this? How to read your scorecard. Interactive view of this scorecard. Rubric v1.1, validator 8.0.1.

Checked for changes 15 minutes ago; last changed 17 days ago.

Measured 3 of 4 score categories from the agency's own feed.

How we measured this

Confidence in this measurement: medium.

Confidence describes how much the pipeline could measure this run, not the feed itself. It never changes the grade.

Top things to fix

Fix 01

Re-export with a validity window that reaches at least 60 days out.Likely your export tool

Service data runs out in 22 day(s). When the calendar runs out, trip planners stop showing this agency. Fixing it now is calmer than after riders notice.

⏱ One export setting.worth about +58 points

Agencies here usually clear this within about 1 week (based on 61 observed fixes).

Fix 02

Review the rule documentation for 'equal_shape_distance_diff_coordinates' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed.

Equal shape distance diff coordinates (flagged by the MobilityData validator). See the linked rule for what this affects.

⏱ Varies.worth about +24 points

Fix 03

Populate trip_headsign to match what the bus displays.Likely your export tool

94420 of 94420 trips have no headsign. Riders at the stop can't tell which direction a bus is going.

⏱ Usually a bulk edit in your scheduling software.worth about +15 points

Close the loop on each fix. Read the guide, make the change in your tool, and let the next run verify it — the scorecard shows the fix; the agency publishes it.

  1. Re-export with a validity window that reaches at least 60 days out. · Read the fix guide

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Prove it cleared. The next scorecard run re-checks this automatically and, once it is gone, mints a dated receipt. Self-check a feed before you publish.

  2. Review the rule documentation for 'equal_shape_distance_diff_coordinates' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed.

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Prove it cleared. The next scorecard run re-checks this automatically and, once it is gone, mints a dated receipt. Self-check a feed before you publish.

  3. Populate trip_headsign to match what the bus displays. · Read the fix guide

    Make the change. Make this change in whatever tool produces your feed, then re-export.

    Prove it cleared. The next scorecard run re-checks this automatically and, once it is gone, mints a dated receipt. Self-check a feed before you publish.

Send your vendor a fix request

You may not control the GTFS export yourself. Copy this and send it to whoever runs your scheduling software export. It names each fix with the validator notice and a guide link.

Send the agency a note

Supporting this agency? Copy this and email it to them. It names what lapsed, why it matters to riders, and the one setting to change.

Score by category

Correctness26.0 / 100

The MobilityData validator flagged 12 kinds of issue across 161717 instances (102962 error, 1635 warning, 57120 informational).

Freshness21.7 / 100

Service data runs out in 22 day(s). Publish an updated feed soon or riders will lose trip planning.

Rider experience62.5 / 100

100% of stops state wheelchair accessibility (99% marked accessible, 1% marked not accessible). This measures what the feed publishes, not whether a stop is physically usable. Fare data is not published.

Accessibility100 / 100

100% of stops state accessibility (99% marked accessible). Reflects what the feed states, not verified physical usability.

Realtime qualityNot yet measured

Not scored yet. Nothing here counts against the grade.

Routes and stops

Each route is drawn once, using the longest shape its trips follow; stops are the dots.

Skip to route and stop data

Basemap: OpenFreeMap, © OpenStreetMap contributors. Routes and stops: this agency's GTFS feed.

Routes in Chicago Transit Authority (CTA)'s feed
RouteTypeLine color
1 Bronzeville/Union StationBusgray
10 Obama Presidential Center/Museum of Science & Industry ExpressBusred
100 Jeffery Manor ExpressBusred
103 West 103rdBusgray
106 East 103rdBusgray
108 Halsted/95thBusgray
11 LincolnBusgray
111 111th/King DriveBusgray
111A Pullman ShuttleBusgray
112 Vincennes/111thBusgray
115 Pullman/115thBusgray
119 Michigan/119thBusgray
12 RooseveltBusgreen
120 Ogilvie/Streeterville ExpressBusred
121 Union/Streeterville ExpressBusred
124 Navy PierBusgray
125 Water Tower ExpressBusred
126 JacksonBusgray
130 Museum CampusBusgray
134 Stockton/LaSalle ExpressBusred
135 Clarendon/LaSalle ExpressBusred
136 Sheridan/LaSalle ExpressBusred
143 Stockton/Michigan ExpressBusred
146 Inner Lake Shore/Michigan ExpressBusred
147 Outer DuSable Lake Shore ExpressBusred
148 Clarendon/Michigan ExpressBusred
15 Jeffery LocalBusgray
151 SheridanBusgray
152 AddisonBusgray
155 DevonBusgray
156 LaSalleBusgray
157 Streeterville/TaylorBusgray
165 West 65thBusgray
169 69th/UPS ExpressBusgray
171 U. of Chicago/Hyde ParkBusgray
172 U. of Chicago/KenwoodBusgray
18 16th/18thBusgray
192 University of Chicago Hospitals ExpressBusgray
2 Hyde Park ExpressBusred
20 MadisonBusgreen
201 Central/RidgeBusgray
206 Evanston CirculatorBusgray
21 CermakBusgray
22 ClarkBusgray
24 WentworthBusgray
26 South Shore ExpressBusred
28 Stony IslandBusgray
29 StateBusgray
3 King DriveBusgray
30 South ChicagoBusgray
31 31stBusgray
34 South MichiganBusgreen
35 31st/35thBusgray
36 BroadwayBusgray
37 SedgwickBusgray
39 PershingBusgray
4 Cottage GroveBusgreen
43 43rdBusgray
44 Wallace/RacineBusgray
47 47thBusgreen
48 South DamenBusgray
49 WesternBusgreen
49B North WesternBusgray
50 DamenBusgray
51 51stBusgray
52 KedzieBusgray
52A South KedzieBusgray
53 PulaskiBusgreen
53A South PulaskiBusgray
54 CiceroBusgreen
54A North Cicero/Skokie Blvd.Busgray
54B South CiceroBusgray
55 GarfieldBusgreen
55A 55th/AustinBusgray
55N 55th/NarragansettBusgray
56 MilwaukeeBusgray
57 LaramieBusgray
59 59th/61stBusgray
6 Jackson Park ExpressBusred
60 Blue Island/26thBusgreen
62 ArcherBusgray
62H Archer/HarlemBusgray
63 63rdBusgreen
63W West 63rdBusgray
65 GrandBusgray
66 ChicagoBusgreen
67 67th/69th/71stBusgray
68 Northwest HighwayBusgray
7 HarrisonBusgray
70 DivisionBusgray
71 71st/South ShoreBusgray
72 NorthBusgreen
73 ArmitageBusgray
74 FullertonBusgray
75 74th/75thBusgray
76 DiverseyBusgray
77 BelmontBusgreen
78 MontroseBusgray
79 79thBusgreen
8 HalstedBusgray
80 Irving ParkBusgray
81 LawrenceBusgreen
81W West LawrenceBusgray
82 Kimball/HomanBusgreen
84 PetersonBusgray
85 CentralBusgray
85A North CentralBusgray
86 Narragansett/RidgelandBusgray
87 87thBusgray
88 HigginsBusgray
8A South HalstedBusgray
9 AshlandBusgreen
90 HarlemBusgray
91 AustinBusgray
92 FosterBusgray
93 California/DodgeBusgray
94 CaliforniaBusgray
95 95thBusgreen
96 LuntBusgray
97 SkokieBusgray
Blue LineSubway / metroteal
Brown LineSubway / metrobrown
Green LineSubway / metrogreen
J14 Jeffery JumpBusteal
N5 South Shore Night BusBusgray
Orange LineSubway / metrored
Purple LineSubway / metropurple
Pink LineSubway / metropink
Red LineSubway / metrored
X4 Cottage Grove ExpressBusred
X49 Western ExpressBusred
X9 Ashland ExpressBusred
Yellow LineSubway / metroyellow

This feed has 11177 stops.

List every stop
  • Jackson & Austin Terminal
  • Jackson & Leamington
  • 1900 W Van Buren
  • North Ave & Nordica
  • Kedzie & 77th Street
  • Kedzie & 72nd Street
  • Kedzie & Marquette Rd
  • Kedzie & 66th Street
  • Kedzie & 65th Street
  • Kedzie & 64th Street
  • North Ave & Neva
  • Kedzie & 64th Street
  • Kedzie & 65th Street
  • Kedzie & 66th Street
  • Kedzie & Marquette Rd
  • Kedzie & 71st Street
  • Kedzie & 72nd Street
  • Kedzie & 73rd Street
  • Harlem & North Ave
  • Kedzie & 77th Street
  • Kedzie & 78th Street
  • Kedzie & 79th Street
  • Kedzie & 80th Street
  • Kedzie & 81st Street
  • Kedzie & 82nd Street
  • Kedzie & 83rd Street
  • Kedzie & 84th Street
  • Kedzie & 85th Street
  • 8600 S Kedzie
  • Kedzie & 87th Street
  • Kedzie & 88th Street
  • Kedzie & 89th Street
  • Kedzie & 90th Street
  • Kedzie & 91st Street
  • Kedzie & 92nd Street
  • Kedzie & 93rd Street
  • Kedzie & 94th Street
  • Kedzie & 95th Street
  • Kedzie & 96th Street
  • Harlem & Wabansia
  • Kedzie & 97th Street
  • Kedzie & 98th Street
  • Kedzie & 99th Street
  • Kedzie & 100th Street
  • Kedzie & 101st Street
  • Kedzie & 102nd Street
  • Kedzie & 103rd Street
  • Kedzie & 104th Street
  • Kedzie & 105th Street
  • Kedzie & 106th Street
  • Wabansia & Neva
  • Kedzie & 108th Street
  • Kedzie & 109th Street
  • Kedzie & 110th Street
  • Kedzie & 111th Street
  • Kedzie & 112th Street
  • Kedzie & 113th Street
  • Kedzie & 114th Street
  • Kedzie & 115th Street
  • 115th Street & Spaulding
  • 115th Street & Homan
  • 115th Street & St. Louis
  • 115th Street & Central Park
  • 115th Street & Lawndale
  • 115th Street & Hamlin
  • 115th Street & Springfield Terminal
  • 67th Street & Oglesby Terminal
  • 67th Street & Stony Island
  • 67th Street & Blackstone
  • 67th Street & Dorchester
  • 67th Street & Kenwood
  • 67th Street & Kimbark
  • 67th Street & Woodlawn
  • 67th Street & Minerva
  • 67th Street & University
  • 67th Street & Greenwood
  • 67th Street & Ellis
  • 67th Street & Ingleside
  • 67th Street & Drexel
  • 67th Street & Cottage Grove
  • 67th Street & Langley
  • 67th Street & St. Lawrence
  • Rhodes & 67th Street
  • Rhodes & 68th Street
  • Keefe & South Chicago
  • 69th Street & Perry
  • 69th Street & Wentworth
  • 69th Street & Princeton
  • 69th Street & Harvard
  • 69th Street & Stewart
  • 69th Street & Normal
  • 69th Street & Lowe
  • 69th Street & Union
  • 69th Street & Halsted
  • 69th Street & Peoria
  • 69th Street & Morgan
  • Van Buren & Damen
  • 69th Street & Aberdeen
  • 69th Street & Racine
  • 69th Street & Throop
  • 69th Street & Loomis
  • 69th Street & Laflin
  • 69th Street & Ashland
  • 69th Street & Paulina
  • Howard & Sheridan
  • 69th Street & Wood
  • 69th Street & Wolcott
  • 69th Street & Damen
  • 69th Street & Hoyne
  • 69th Street & Bell
  • 69th Street & Oakley
  • Western & 69th Street
  • 71st Street & Campbell
  • 71st Street & Rockwell
  • Sheridan & Birchwood
  • 71st Street & California
  • 71st Street & Spaulding
  • 71st Street & Homan
  • 71st Street & St. Louis
  • 71st Street & Central Park
  • 71st Street & Lawndale
  • 71st Street & Hamlin
  • 71st Street & Springfield
  • 71st Street & Pulaski
  • 71st Street & Springfield
  • 71st Street & Hamlin
  • 71st Street & Lawndale
  • 3600 W 71st Street
  • 71st Street & St. Louis
  • 71st Street & Homan
  • 71st Street & Spaulding
  • Sheridan & Jarvis
  • 71st Street & Kedzie
  • 71st Street & Albany
  • 71st Street & Washtenaw
  • 71st Street & Rockwell
  • 71st Street & Campbell
  • Western & 71st Street
  • 69th Street & Oakley
  • 69th Street & Bell
  • Sheridan & Sherwin
  • 69th Street & Hoyne
  • 69th Street & Damen
  • 69th Street & Wolcott
  • 69th Street & Wood
  • 69th Street & Paulina
  • 69th Street & Laflin
  • Sheridan & Chase
  • 69th Street & Loomis
  • 69th Street & Throop
  • 69th Street & Racine
  • 69th Street & Aberdeen
  • 69th Street & Morgan
  • 69th Street & Peoria
  • 69th Street & Halsted
  • 69th Street & Union
  • Sheridan & Touhy
  • 69th Street & Lowe
  • 69th Street & Normal
  • 69th Street & Stewart
  • 69th Street & Harvard
  • 69th Street & Princeton
  • 69th Street & Wentworth
  • 69th Street & Perry
  • 69th Red Line Station
  • 69th Street & State
  • Sheridan & Estes
  • Rhodes & 68th Street
  • Rhodes & 67th Street
  • 67th Street & St. Lawrence
  • 67th Street & Langley
  • 67th Street & Cottage Grove
  • 67th Street & Drexel
  • 67th Street & Ingleside
  • 67th Street & Ellis
  • 67th Street & Greenwood
  • 67th Street & University
  • 67th Street & Minerva
  • 67th Street & Woodlawn
  • 67th Street & Kimbark
  • 67th Street & Kenwood
  • 67th Street & Dorchester
  • 67th Street & Blackstone
  • 67th Street & Stony Island
  • La Rabida Hospital
  • Cicero & Pensacola Terminal
  • Sheridan & Lunt
  • Cicero & Cullom
  • Cicero & Belle Plaine
  • Cicero & Irving Park/Milwaukee
  • Cicero & Byron
  • Cicero & Grace
  • Cicero & Waveland
  • Cicero & Addison
  • Cicero & Cornelia
  • Sheridan & Morse
  • Cicero & Roscoe
  • Cicero & School
  • Cicero & George
  • Cicero & Diversey
  • Cicero & Wrightwood
  • Cicero & Dickens
  • Cicero & Armitage
  • Cicero & Cortland
  • Cicero & Grand
  • Cicero & Wabansia
  • Cicero & North Ave
  • Cicero & Le Moyne
  • Sheridan & Pratt
  • Cicero & Hirsch
  • Cicero & Potomac
  • Cicero & Thomas
  • Cicero & Iowa
  • Cicero & Huron
  • Cicero & Hubbard
  • Cicero & Lake (Green Line)
  • Cicero & Adams
  • Cicero & Jackson
  • Cicero & Van Buren
  • Sheridan & North Shore
  • Cicero & Congress
  • Cicero & Harrison
  • Cicero Blue Line Station
  • Cicero & Polk
  • Cicero & Fifth Avenue
  • Cicero & Roosevelt
  • Cicero & 13th Street
  • Cicero & 14th Street
  • Cicero & 15th Street
  • Cicero & 18th Street
  • Cicero & 21st Place (Pink Line)
  • Cicero & Cermak
  • Cicero & 24th Place Terminal
  • Sheridan & Loyola (Red Line)
  • Cicero & Cermak (Pink Line)
  • Cicero & 21st Street
  • Cicero & 18th Street
  • Cicero & 16th Street
  • Cicero & 15th Street
  • Cicero & 14th Street
  • Sheridan & Arthur
  • Cicero & 13th Street
  • Cicero & Fifth Avenue
  • Cicero & Polk
  • Cicero & Lexington (Blue Line)
  • Cicero & Harrison
  • Cicero & Congress Parkway
  • Cicero & Van Buren
  • Sheridan & Broadway/Devon
  • Cicero & Madison
  • and 10927 more (see the full list on the map or in the GeoJSON)

Over time

Overall score across the last 20 checks — down 0.4 since 2026-07-08.

2026-06-19: 44.72026-06-20: 44.22026-06-21: 43.82026-06-22: 43.42026-06-23: 43.02026-06-24: 42.62026-06-25: 42.22026-06-26: 41.72026-06-27: 41.32026-06-28: 40.92026-06-29: 40.52026-06-30: 40.12026-07-01: 39.72026-07-02: 39.22026-07-04: 38.42026-07-05: 38.02026-07-06: 37.62026-07-07: 37.22026-07-08: 36.72026-07-09: 36.3
Show the numbers
Overall score by check, with the change from the previous check
CheckScoreChange
2026-06-1944.7 first check
2026-06-2044.2 down 0.5
2026-06-2143.8 down 0.4
2026-06-2243.4 down 0.4
2026-06-2343.0 down 0.4
2026-06-2442.6 down 0.4
2026-06-2542.2 down 0.4
2026-06-2641.7 down 0.5
2026-06-2741.3 down 0.4
2026-06-2840.9 down 0.4
2026-06-2940.5 down 0.4
2026-06-3040.1 down 0.4
2026-07-0139.7 down 0.4
2026-07-0239.2 down 0.5
2026-07-0438.4 down 0.8
2026-07-0538.0 down 0.4
2026-07-0637.6 down 0.4
2026-07-0737.2 down 0.4
2026-07-0836.7 down 0.5
2026-07-0936.3 down 0.4

What changed since your last check

What changed in this feed

Overall score fell 0.4 points since 2026-07-08.

Same feed file as 2026-07-08; the published zip did not change.

Subscribe to this feed’s changes (Atom) to hear about grade drops in a reader, with no sign-up.

What changed over time

On 2026-06-19 this feed started at grade F. On 2026-07-01 feed entered the expiry window (30 days of service left). As of 2026-07-09 it holds grade F.

A plain-language history of this feed, newest first.

Everything we checked

Beyond the grade

Opportunities that do not change your grade today: fare detail, on-demand service, and deeper accessibility data.

Some fixes we can make for you

These are the safe mechanical fixes, applied to a copy of your feed. They change only what is certain and leave everything else untouched. Review the diff before you publish.

Run it yourself on your own copy of the feed: scorecard autofix <feed.zip> --out corrected.zip

NTD certification readiness Needs attention

This feed is close to NTD-ready. 1 validator error to resolve. Service data runs out in 22 days; renew before you certify.

Published Ready
Published at a public URL.
Valid Needs attention
1 validator error to resolve.
Current Needs attention
Service data runs out in 22 days; renew before you certify.
agency_id matches your NTD ID Not checked yet
Setting your GTFS agency_id to your five-digit NTD ID is an optional way to line a feed up with its National Transit Database record. FTA links the two on your P-50 form, so it is not a required feed change. We don't have your NTD ID on file, so this is not checked yet.
shapes.txt covers your trips Ready
All 94420 trips have a shape in shapes.txt.

In plain words: if you report to the federal transit database, you have to publish a working, up-to-date feed and confirm it once a year. This box is a heads-up on whether yours looks ready; it is not the official sign-off.

A readiness signal mapping this feed to the FTA National Transit Database GTFS requirement (Report Year 2023 onward: a public, valid, current feed, certified annually on the D-10). Aligning agency_id with your NTD ID lets the feed line up with your NTD record; the July 2025 final rule links the two on the P-50 form rather than requiring that feed change, and requires shapes.txt in the published GTFS: Full Reporters from Report Year 2025, and Reduced, Rural, and Tribal Reporters from Report Year 2026. Not an official determination; your certification is the official check.

Conformance mark Not yet

This feed is close to the conformance mark. 1 validator error to resolve. Service data runs out in 22 days; renew to qualify.

Valid Not yet
1 validator error to resolve.
Current Not yet
Service data runs out in 22 days; renew to qualify.
Accessible Met
States wheelchair access on 100% of stops and 100% of trips.

In plain words: earn this mark when your feed passes validation, has not expired, and says whether nearly every stop and trip is wheelchair accessible.

A pass credential for a feed that is valid, current, and states wheelchair access on nearly every stop and trip. Accessibility here measures what the feed publishes, not whether a stop is physically usable. How the conformance mark works.

At risk for the Google and Apple Maps four-week coverage bar. This feed has 22 days of service left. Maps needs at least four weeks (28 days) of upcoming service, so your agency will fall out of trip planners soon. Re-export with a longer calendar. The feed also carries 102962 validator errors, the other thing Maps checks at onboarding; the findings below name each fix.

How this agency maps to the standards

A data-quality lens, not a compliance determination. Each category shows this feed's score and the standards it relates to: the FTA National Transit Database GTFS requirement, the MobilityData grading scheme, and the Google Transit gate. Read the full standards crosswalk.

Correctness 26 / 100
GTFS Schedule best practices, checked by the MobilityData validator. MobilityData grading: stop locations, route names and colors. Google Transit: a feed must pass validation to stay in Maps.
Freshness 22 / 100
The FTA National Transit Database expectation of a valid, current feed. Google Transit: an expired calendar drops the agency from Maps.
Rider experience 62 / 100
GTFS Best Practices for rider-facing fields. MobilityData grading: stop names and headsigns.
Realtime quality Not yet published
GTFS-Realtime best practices: a stable URL, high uptime, and frequent updates.

Show your grade

Put a live badge on your agency site or feed README. It updates daily and links back to this scorecard.

Chicago Transit Authority (CTA) GTFS data quality grade: F

Prefer a shields.io style? Point a dynamic endpoint badge at the published badge.json.

Cite this record

This page updates on every check. The record below does not: it is the dated file this grade came from, published at https://gtfsscorecard.org/data/artifacts/chicago-transit-authority-cta/2026-07-09.json and never overwritten, pinning the grade, category scores, rubric version, validator version, and the scored feed's sha256 as they stood on 2026-07-09. Use it in a board packet, an NTD narrative, or a research citation instead of linking the live page, whose content will differ on your next visit.

Citing the tool itself rather than one agency's record? Use the repo's CITATION.cff.