← All agencies

Feed status · checked 2026-09-05

Edmonton Transit Service (ETS)

Based on the official feed source on file

Service mode Tram + Bus

90.7 / 100

First scorecard for this agency

Catalogued in Alberta, Canada.

Covers 84 daysStation pathways

One regional export covering Edmonton Transit Service plus the St. Albert, Strathcona County, Spruce Grove, Fort Saskatchewan and Beaumont services that connect to it. Counted as one feed record.

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.3, validator 8.0.1.

Measured 4 of 4 score categories from the official feed URL on file.

How we measured this

Confidence in this measurement: high.

  • All four score categories were measured this run.
  • Realtime was sampled in one bounded window of 9 snapshots.
  • The feed was downloaded from the official feed URL on file.

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

Remove retired stops from the export, or add them back to the trips that should serve them.Likely your export tool

Some stops exist in the feed but no trip ever stops at them. Riders may walk to a stop where no transit vehicle is scheduled to arrive.

⏱ A review pass in your scheduling software.worth about +8 points in its category

Fix 02

Pick a darker/lighter route_text_color for the flagged routes.

Some route colors don't contrast with their text color. Route badges get hard to read, most of all for riders with low vision.

⏱ One field per route.worth about +4 points in its category

Fix 03

Drop the short name from route_long_name and keep the long name descriptive, like 'Downtown via 5th Ave'.

Some route long names repeat the route's short name inside them. Apps show both names together, so riders see the number twice, like '5 5 Downtown'.

⏱ One field per flagged route.worth about +4 points in its category

Finding handoff

Move one finding to a recheck

Select one finding. Copy the request, make the change in the feed-producing tool, then compare the next complete run.

Feed evidence
Some stops exist in the feed but no trip ever stops at them.
Next action
Remove retired stops from the export, or add them back to the trips that should serve them.
Recheck
Publish the changed feed at the same URL. On the next complete, comparable scorecard run, confirm that this finding is no longer reported.
Copy handoff text
How to make and check these changes

Check the result on the published feed. Read the guide, make the change in your tool, and use the next comparable run to see whether the finding is still reported. Only an action or ticket record can attribute who made the change.

  1. Remove retired stops from the export, or add them back to the trips that should serve them. · Read the fix guide

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

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. Self-check a feed before you publish.

  2. Pick a darker/lighter route_text_color for the flagged routes. · Read the fix guide

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

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. Self-check a feed before you publish.

  3. Drop the short name from route_long_name and keep the long name descriptive, like 'Downtown via 5th Ave'.

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

    Check the result. The next scorecard run checks this finding again. If a comparable check no longer reports it, the feed's clearance log records that result. This confirms feed state, not who made the change. Self-check a feed before you publish.

Rider view: what this feed publishes

A quick read of rider-facing information in this feed.

Schedule visibility
The feed's last published service date is in 84 days.
Published accessibility data
Accessibility information is stated for 93.9% of stops and 100% of trips. This measures published data, not whether stops or vehicles are physically usable.
Fare information
Fare information is published using GTFS Fares v2.
Realtime information
Live-arrival data covered 90.6% of scheduled trips in the sampled window.

Important: This does not rate service reliability. Riders should confirm current service alerts, fares, and accessibility accommodations with the transit operator before traveling.

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.

Score by category

Correctness82.5 / 100

The MobilityData validator flagged 6 kinds of issue across 270 instances (0 error, 267 warning, 3 informational).

Freshness100.0 / 100

Service data covers the next 84 days.

Rider experience91.0 / 100

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

Accessibility96.2 / 100

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

2 accessibility depth signals

  • 32 route badge(s) pair a color and text color below the WCAG 4.5:1 contrast bar (Capital, 202, 204, 205, 401, and more).

    Consider: Adjust route_color or route_text_color so each pair clears 4.5:1. Often switching the text between black and white is enough.

  • 6100 stop name(s) use abbreviations or symbols a screen reader may mispronounce, with no spoken form set ("50 Street & 122 Avenue", "Wayne Gretzky Drive S & 118 Avenue", "73 Street & 111 Avenue", and more).

    Consider: Add tts_stop_name with the spoken form, e.g. 'Main Street and Second Avenue', for the affected stops.

Opportunities to strengthen the data, not deductions from the sub-score above. States what the second accessibility lens can check from the feed, not verified physical usability.

FaresFares v2

Fares are applied to trips.

Realtime quality95.2 / 100

Sampled 9 times: 3 of 3 configured feeds healthy; 90.6% of scheduled trips had live predictions; 90.2% of vehicles on their route; predictions ran a median of 0s behind schedule.

Routes and stops

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

This feed has 6791 stops.

Skip to route and stop data

The route and stop data is ready below. Load the map only when you want the geographic view. It uses additional data.

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

  • 001A (teal)
  • 001B (teal)
  • 002 (teal)
  • 003 (teal)
  • 004 (teal)
  • 005 (teal)
  • 006 (teal)
  • 007 (teal)
  • 008 (teal)
  • 009 (teal)
  • Capital (teal)
  • Metro (red)
  • Valley (green)
  • 031 (orange)
  • 051 (teal)
  • 052 (teal)
  • 053 (teal)
  • 054 (teal)
  • 055 (teal)
  • 056 (teal)
  • CapRep (teal)
  • 101 (teal)
  • 102 (teal)
  • 103 (teal)
  • 104 (teal)
  • 106 (teal)
  • 107 (teal)
  • 108 (teal)
  • 109 (teal)
  • 110X (orange)
  • 111 (teal)
  • 112 (teal)
  • 113 (teal)
  • 114 (teal)
  • 116 (teal)
  • 117 (teal)
  • 118 (teal)
  • 119 (teal)
  • 120X (orange)
  • 121 (teal)
  • 122 (teal)
  • 124 (teal)
  • 127 (teal)
  • 128 (teal)
  • 130X (orange)
  • 140X (orange)
  • 150X (orange)
  • 201 (black)
  • 202 (brown)
  • 203 (black)
  • 204 (teal)
  • 205 (teal)
  • 208 (pink)
  • 211 (purple)
  • 401 (orange)
  • 403 (purple)
  • 404 (yellow)
  • 411 (gray)
  • 413 (teal)
  • 414 (pink)
  • 415 (green)
  • 420 (teal)
  • 430 (gray)
  • 430S (gray)
  • 431 (brown)
  • 432 (pink)
  • 433 (gray)
  • 433S (teal)
  • 440 (red)
  • 440S (red)
  • 441 (yellow)
  • 441S (red)
  • 442 (pink)
  • 442S (pink)
  • 443 (white)
  • 443S (white)
  • 450 (teal)
  • 451 (purple)
  • 451S (purple)
  • 500X (orange)
  • 501 (teal)
  • 502 (teal)
  • 503 (teal)
  • 504 (teal)
  • 505 (teal)
  • 506 (teal)
  • 507 (teal)
  • 508 (teal)
  • 509A (teal)
  • 509B (teal)
  • 511 (teal)
  • 512 (teal)
  • 513 (teal)
  • 514 (teal)
  • 515 (teal)
  • 516 (teal)
  • 517 (teal)
  • 518 (teal)
  • 519 (teal)
  • 521 (teal)
  • 523 (teal)
  • 524 (teal)
  • 525 (teal)
  • 526 (teal)
  • 527 (teal)
  • 540 (teal)
  • 560 (teal)
  • 589 (yellow)
  • 610 (teal)
  • 611 (teal)
  • 612 (teal)
  • 613 (teal)
  • 614 (teal)
  • 615 (teal)
  • 616 (teal)
  • 617 (teal)
  • 618 (teal)
  • 620 (teal)
  • 621 (teal)
  • 622 (teal)
  • 623 (teal)
  • 625 (teal)
  • 626 (teal)
  • 627 (teal)
  • 628 (teal)
  • 630 (teal)
  • 631 (teal)
  • 632 (teal)
  • 633 (teal)
  • 634 (teal)
  • 635 (teal)
  • 636 (teal)
  • 638 (teal)
  • 642 (teal)
  • 646 (teal)
  • 647 (teal)
  • 650 (teal)
  • 651 (teal)
  • 652 (teal)
  • 653 (teal)
  • 654 (teal)
  • 655 (teal)
  • 656 (teal)
  • 657 (teal)
  • 658 (teal)
  • 659 (teal)
  • 660 (teal)
  • 661 (teal)
  • 662 (teal)
  • 663 (teal)
  • 664 (teal)
  • 665 (teal)
  • 667 (teal)
  • 668 (teal)
  • 669 (teal)
  • 671 (teal)
  • 673 (teal)
  • 674 (teal)
  • 678 (teal)
  • 681 (teal)
  • 682 (teal)
  • 683 (teal)
  • 684 (teal)
  • 685 (teal)
  • 691 (teal)
  • 692 (teal)
  • 700X (orange)
  • 701 (teal)
  • 702 (teal)
  • 703 (teal)
  • 704 (teal)
  • 705 (teal)
  • 706 (teal)
  • 707 (teal)
  • 708 (teal)
  • 709 (teal)
  • 712 (teal)
  • 713 (teal)
  • 715 (teal)
  • 716 (teal)
  • 717 (teal)
  • 718 (teal)
  • 719 (teal)
  • 721 (teal)
  • 722 (teal)
  • 723 (teal)
  • 724 (teal)
  • 727 (teal)
  • 729 (teal)
  • 747 (teal)
  • 900X (orange)
  • 901 (teal)
  • 902 (teal)
  • 903 (teal)
  • 904 (teal)
  • 905 (teal)
  • 906 (teal)
  • 907 (teal)
  • 908 (teal)
  • 909 (teal)
  • 910X (orange)
  • 912 (teal)
  • 913 (teal)
  • 914 (teal)
  • 915 (teal)
  • 916 (teal)
  • 917 (teal)
  • 918A (teal)
  • 918B (teal)
  • 919 (teal)
  • 920X (orange)
  • 921 (teal)
  • 922 (teal)
  • 923 (teal)
  • 924 (teal)
  • 925 (teal)
  • 926 (teal)
  • 930X (orange)
  • A12 (yellow)
  • A13 (black)
  • A14 (teal)
  • A21 (brown)
  • A22 (gray)
  • A23 (black)
  • A24 (orange)
  • A3 (green)
  • A31 (teal)
  • A32 (pink)
  • A33 (green)
  • A4 (orange)
  • A5 (teal)
  • A6 (brown)
  • A7 (pink)
  • A8 (green)
  • A9 (blue)
  • F1 (teal)
  • 600 (green)
  • 610 (black)
  • 611 (red)
  • 1 (yellow)
  • 10 (purple)
Routes in Edmonton Transit Service (ETS)'s feed
RouteTypeLine color
001A Downtown - CapilanoBusteal
001B Downtown - CapilanoBusteal
002 West Edmonton Mall - Stadium - ClareviewBusteal
003 Westmount - StadiumBusteal
004 Lewis Farms - University - CapilanoBusteal
005 Westmount - Downtown - ColiseumBusteal
006 Davies - SouthgateBusteal
007 West Edmonton Mall - DowntownBusteal
008 Abbottsfield - Downtown - UniversityBusteal
009 Southgate - Eaux ClairesBusteal
Capital Capital LineTram / light railteal
Metro Metro LineTram / light railred
Valley Valley LineTram / light railgreen
031 Leger - UniversityBusorange
051 Castle Downs - UniversityBusteal
052 Northgate - West Edmonton MallBusteal
053 West Clareview - Mill WoodsBusteal
054 West Edmonton Mall - West ClareviewBusteal
055 Meadows - Southgate - West Edmonton MallBusteal
056 Meadows - Leger - West Edmonton MallBusteal
CapRep Capital Line Replacement ServiceBusteal
101 Stadium - AbbottsfieldBusteal
102 Kingsway - Coliseum - AbbottsfieldBusteal
103 Eaux Claires - Castle Downs - KingswayBusteal
104 Coliseum - East ClareviewBusteal
106 Dunvegan - Northgate - BelvedereBusteal
107 Belvedere - West ClareviewBusteal
108 Belvedere - East ClareviewBusteal
109 Northgate - Castle Downs - HudsonBusteal
110X Eaux Claires - DowntownBusorange
111 Concordia - WestmountBusteal
112 Castle Downs - Eaux ClairesBusteal
113 West Clareview - NorthgateBusteal
114 West Clareview - ColiseumBusteal
116 Abbottsfield - East ClareviewBusteal
117 Eaux Claires - West ClareviewBusteal
118 Eaux Claires - West ClareviewBusteal
119 Eaux Claires - West ClareviewBusteal
120X Eaux Claires - Government CentreBusorange
121 Clareview - Fraser - EvergreenBusteal
122 Eaux Claires - Lago Lindo - KlarvattenBusteal
124 Westmount - Eaux ClairesBusteal
127 Northgate - White Oaks Square - Castle DownsBusteal
128 Northgate - LondonderryBusteal
130X Baturyn - Eaux Claires - Government CentreBusorange
140X Palisades - Kingsway ExpressBusorange
150X Rapperswill - Gov'T CentreBusorange
201 Downtown Edmonton LoopBusblack
202 Kingsway Tc Via NaitBusbrown
203 Uofa Via WestmountBusblack
204 Uofa ExpressBusteal
205 West EdmontonBusteal
208 Government Centre ExpressBuspink
211 Downtown Edmonton ExpressBuspurple
401 Ordze - DowntownBusorange
403 Ordze - Government CentreBuspurple
404 Ordze - University Of AlbertaBusyellow
411 Bethel - DowntownBusgray
413 Bethel - Government CentreBusteal
414 Bethel - University Of AlbertaBuspink
415 Bethel - NaitBusgreen
420 Bethel - Millennium PlaceBusteal
430 Bethel - Emerald HillsBusgray
430S School SpecialBusgray
431 Bethel - Emerald HillsBusbrown
432 Bethel - SummerwoodBuspink
433 Bethel - ClarkdaleBusgray
433S School SpecialBusteal
440 Bethel - Heritage HillsBusred
440S School SpecialBusred
441 Bethel - Ordze - RegencyBusyellow
441S School SpecialBusred
442 Bethel - NottinghamBuspink
442S School SpecialBuspink
443 Bethel - Ordze - Glen AllanBuswhite
443S School SpecialBuswhite
450 Bethel - Centre In The ParkBusteal
451 Bethel - Ordze - WoodbridgeBuspurple
451S School SpecialBuspurple
460 CambrianBuspink (no shape in feed)
500X Meadows - MacewanBusorange
501 Davies - CapilanoBusteal
502 Davies - South CampusBusteal
503 Davies - Millbourne - WoodvaleBusteal
504 Meadows - DaviesBusteal
505 Davies - Pylypow IndustrialBusteal
506 Davies - Meadows - MapleBusteal
507 Tamarack - SouthgateBusteal
508 Meadows - Mill WoodsBusteal
509A Mill Woods - MillbourneBusteal
509B Mill Woods - MillbourneBusteal
511 Mill Woods - DowntownBusteal
512 Mill Woods - South Edmonton CommonBusteal
513 Mill Woods - KnottwoodBusteal
514 Mill Woods - MillhurstBusteal
515 Mill Woods - MeadowsBusteal
516 Mill Woods - Laurel - MeadowsBusteal
517 Mill Woods - SouthwoodBusteal
518 Mill Woods - Century ParkBusteal
519 Mill Woods - Century ParkBusteal
521 Mill Woods - Century ParkBusteal
523 Mill Woods - DowntownBusteal
524 Bonnie Doon - HolyroodBusteal
525 Bonnie Doon - RitchieBusteal
526 Mill Woods - Millbourne WoodvaleBusteal
527 Mill Woods - MillbourneBusteal
540 Beaumont To EdmontonBusteal
560 Spruce Grove - Downtown EdmontonBusteal
589 Edmonton Waste Management Centre - ColiseumBusyellow
610 O'Leary - Lago LindoBusteal
611 Cardinal Leger - Lago LindoBusteal
612 O'Leary - BrintnellBusteal
613 O'Leary - RapperswillBusteal
614 O'Leary - Queen E. - BaturynBusteal
615 Hudson - St. Carlo AcutisBusteal
616 Mary Butterworth - Lago Lindo - KlarvattenBusteal
617 Mary Butterworth - Eaux ClairesBusteal
618 Sir John Thompson - RapperswillBusteal
620 J.J. Bowlen - Lazerte - BrintnellBusteal
621 M.E. Lazerte - Crystallina NeraBusteal
622 Stadium - Concordia UniversityBusteal
623 O'Leary - Crystallina NeraBusteal
625 O'Leary - PalisadesBusteal
626 O'Leary - Cy BeckerBusteal
627 Eastglen - BannermanBusteal
628 Steele Heights - Cy BeckerBusteal
630 Austin O'Brien - Silver BerryBusteal
631 Austin O'Brien - MapleBusteal
632 Capilano-Vimy RidgeBusteal
633 Austin O'Brien - Coliseum - ClareviewBusteal
634 Mcnally - TamarackBusteal
635 Mcnally - Silver BerryBusteal
636 Mcnally - DaviesBusteal
638 Lakewood - OrchardsBusteal
642 Lakewood - Mill WoodsBusteal
646 Elder Dr. Whiskeyjack - Mill WoodsBusteal
647 Elder Dr. Whiskeyjack - LaurelBusteal
650 Riverbend School - LegerBusteal
651 Avalon - SouthgateBusteal
652 Strathcona - SouthgateBusteal
653 Strathcona - DaviesBusteal
654 Strathcona - Belgravia - Windsor ParkBusteal
655 Strathcona - South CampusBusteal
656 Allendale - StrathconaBusteal
657 Leger - Strathcona HsBusteal
658 Fr. M. Mccaffery - RutherfordBusteal
659 Fr. M. Mccaffery - MacewanBusteal
660 Century Park - Harry AinlayBusteal
661 Harry Ainlay - Mill WoodsBusteal
662 Harry Ainlay - Louis St. Laurent - Century ParkBusteal
663 Fr. M. Mccaffery - ChappelleBusteal
664 Walker - A. Anderson - M. MccafferyBusteal
665 Charlesworth - Dr. Anne AndersonBusteal
667 Century Park - Dr. Anne AndersonBusteal
668 Chappelle - Dr. Anne AndersonBusteal
669 Keswick - Fr. M. MccafferyBusteal
671 Alex Janvier - WemBusteal
673 Hillcrest - WemBusteal
674 H.E. Beriault - Lewis FarmsBusteal
678 Jasper Place - Alex Janvier - Lewis FarmsBusteal
681 Ross Sheppard - A. Macdonald - Lewis FarmsBusteal
682 Archbishop Macdonald - LegerBusteal
683 Arch Macdonald - Ross Sheppard - Castle DownsBusteal
684 Archbishop Macdonald - Ross Sheppard - Lago LindoBusteal
685 Ross Sheppard - A. Macdonald - Lewis FarmsBusteal
691 Amiskwaciy - KingswayBusteal
692 Victoria School - WemBusteal
700X Century Park - Heritage ValleyBusorange
701 Southgate - KingswayBusteal
702 Southgate - South CampusBusteal
703 Leger - South CampusBusteal
704 Southgate - SouthparkBusteal
705 Century Park - SouthgateBusteal
706 Leger - SouthgateBusteal
707 Century Park - SouthgateBusteal
708 Century Park - SouthgateBusteal
709 Century Park - SouthgateBusteal
712 Century Park - YellowbirdBusteal
713 Century Park - Twin BrooksBusteal
715 Leger - Century ParkBusteal
716 Leger - Century ParkBusteal
717 Leger - Century ParkBusteal
718 Leger - Century ParkBusteal
719 Century Park - ChappelleBusteal
721 Century Park - Rutherford - DesrochersBusteal
722 Century Park - Rutherford - AllardBusteal
723 University - ParkallenBusteal
724 Leger - Brander Gardens - South CampusBusteal
727 Heritage Valley - ChappelleBusteal
729 Leger - Century ParkBusteal
747 Century Park - Edmonton International AirportBusteal
900X Lewis Farms - DowntownBusorange
901 Jasper Place - DowntownBusteal
902 Nait - UniversityBusteal
903 Jasper Place - KingswayBusteal
904 West Edmonton Mall - WestmountBusteal
905 Northgate - WestmountBusteal
906 West Edmonton Mall - WestmountBusteal
907 West Edmonton Mall - WestmountBusteal
908 Jasper Place - WestmountBusteal
909 Jasper Place - WestmountBusteal
910X West Lymburn - Lessard - South CampusBusorange
912 Lewis Farms - Jasper PlaceBusteal
913 West Edmonton Mall - Jamieson PlaceBusteal
914 West Edmonton Mall - Jasper PlaceBusteal
915 West Edmonton Mall - Jasper PlaceBusteal
916 West Edmonton Mall - Lewis FarmsBusteal
917 West Edmonton Mall - Lewis FarmsBusteal
918A West Edmonton Mall - LessardBusteal
918B West Edmonton Mall - LessardBusteal
919 Lewis Farms - SecordBusteal
920X Lewis Farms - University ExpressBusorange
921 Jasper Place - Westview VillageBusteal
922 Lewis Farms - RosenthalBusteal
923 West Edmonton Mall - OleskiwBusteal
924 Jasper Place - Rio TerraceBusteal
925 West Edmonton Mall - Jasper PlaceBusteal
926 Lewis Farms - StillwaterBusteal
930X The Grange - South CampusBusorange
A12 Campbell - AkinsdaleBusyellow
A13 Akinsdale - CampbellBusblack
A14 Sturgeon Hospital - St Albert NorthBusteal
A21 Heritage Lakes - RielBusbrown
A22 Riel - Heritage LakesBusgray
A23 Heritage Lakes - RielBusblack
A24 The GardensBusorange
A3 RiversideBusgreen
A31 Heritage Lakes - The GardensBusteal
A32 Akinsdale - Campbell - Pineview - Forest LawnBuspink
A33 Sturgeon - Forest Lawn - Woodlands - BraesideBusgreen
A4 Lacombe - Deer RidgeBusorange
A5 Deer Ridge - LacombeBusteal
A6 Deer Ridge - North RidgeBusbrown
A7 Sturgeon Hospital - Erin Ridge - OakmontBuspink
A8 Oakmont - Erin Ridge - Sturgeon HospitalBusgreen
A9 Sturgeon - Kingswood - WoodlandsBusblue
F1 Farmers Market ShuttleBusteal
600 Fort SaskatchewanBusgreen
610 WestparkBusblack
611 DowntownBusred
1 Leduc - Nisku - EdmontonBusyellow
10 Leduc - Nisku - EiaBuspurple
List every stop
  • Abbottsfield Transit Centre
  • Abbottsfield Transit Centre
  • 50 Street & 122 Avenue
  • Wayne Gretzky Drive S & 118 Avenue
  • 73 Street & 111 Avenue
  • 101 Street & 104 Avenue
  • 38 Street & 114 Avenue
  • Rossdale Road & 96 Avenue
  • 97 Street & 109A Avenue
  • 96 Street & 111 Avenue
  • 102 Street & 111 Avenue
  • 84 Street & 118 Avenue
  • Alex Taylor Road & Jasper Avenue
  • 90 Street & 118 Avenue
  • 48 Street & 114 Avenue
  • 32 Street & 111 Avenue
  • 40 Street & 114 Avenue
  • 54 Street & 118 Avenue
  • 102 Street & 111 Avenue
  • 68 Street & 118 Avenue
  • Fort Road & Mount Lawn Road
  • 107 Street & Jasper Avenue
  • 54 Street & 121 Avenue
  • 48 Street & 121 Avenue
  • 46 Street & 114 Avenue
  • 95 Street & 108 Avenue
  • 97 Street & 118 Avenue
  • Wayne Gretzky Drive S & 112 Avenue
  • 124 Street & 111 Avenue
  • 80 Street & 118 Avenue
  • Bellamy Hill & 98 Avenue
  • 34 Street & Abbottsfield Road
  • 124 Street & 103 Avenue
  • 97 Street & 120 Avenue
  • 101 Street & 105 Avenue
  • 95 Street & 102A Avenue
  • Kingsway & 111 Avenue
  • 44 Street & 121 Avenue
  • Abbottsfield Road & 119 Avenue
  • 95 Street & 115 Avenue
  • 82 Street & 125 Avenue
  • 38 Street & 108 Avenue
  • 103 Street & 118 Avenue
  • 38 Street & 106 Avenue
  • 62 Street & 112 Avenue
  • 101 Street & 103 Avenue
  • 40 Street & 121 Avenue
  • Groat Road & 118 Avenue
  • 34 Street & 116A Avenue
  • 32 Street & Abbottsfield Road
  • Bellamy Hill & 99 Avenue
  • 50 Street & 121 Avenue
  • 38 Street & 109 Avenue
  • 105 Street & 118 Avenue
  • 46 Street & 118 Avenue
  • 121 Street & Jasper Avenue
  • St Albert Trail & 114 Avenue
  • 76 Street & 118 Avenue
  • 88 Street & 112 Avenue
  • 84 Street & 110 Avenue
  • 92 Street & Norwood Boulevard
  • 109 Street & Jasper Avenue
  • Abbottsfield Road & 120 Avenue
  • 54 Street & 123 Avenue
  • 109 Street & 110 Avenue
  • 45 Street & 118 Avenue
  • 87 Street & Jasper Avenue
  • 103 Street & 118 Avenue
  • 82 Street & 112 Avenue
  • 64 Street & 118 Avenue
  • 122 Street & Jasper Avenue
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • 109 Street & 103 Avenue
  • 109 Street & 103 Avenue
  • Central Lions Recreation Centre
  • St Albert Trail & 113 Avenue
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Transit Centre
  • Kingsway RAH Station
  • Kingsway RAH Station
  • NAIT - Blatchford Market Station
  • NAIT - Blatchford Market Station
  • MacEwan Station
  • MacEwan Station
  • 99 Street & Jasper Avenue
  • 85 Street & 118 Avenue
  • 113 Street & 111 Avenue
  • 99 Street & 103A Avenue
  • 62 Street & 118 Avenue
  • 97 Street & 120 Avenue
  • 123 Street & Jasper Avenue
  • 97 Street & 111 Avenue
  • 95 Street & 111 Avenue
  • 106 Street & 111 Avenue
  • 97 Street & 103A Avenue
  • 76 Street & 118 Avenue
  • 109 Street & 104 Avenue
  • 97 Street & 103A Avenue
  • 95 Street & 103A Avenue
  • 95 Street & 107 Avenue
  • 103 Street & 103 Avenue
  • 105 Street & 103 Avenue
  • 82 Street & 112 Avenue
  • 108 Street & 103 Avenue
  • 107 Street & 111 Avenue
  • 59 Street & 118 Avenue
  • 102 Street & 104 Avenue
  • 82 Street & 114 Avenue
  • 124 Street & 107 Avenue
  • 104 Street & 104 Avenue
  • 82 Street & 118 Avenue
  • 82 Street & 117 Avenue
  • Fort Road & 122 Avenue
  • 97 Street & 103A Avenue
  • 95 Street & 103A Avenue
  • 95 Street & 117 Avenue
  • 106 Street & 103 Avenue
  • 96 Street & 103A Avenue
  • 86 Street & 122 Avenue
  • 82 Street & 115 Avenue
  • 50 Street & 114 Avenue
  • 101 Street & MacDonald Drive
  • 75 Street & Fort Road
  • 54 Street & 121 Avenue
  • 95 Street & 111 Avenue
  • 61 Street & 118 Avenue
  • 95 Street & 114 Avenue
  • 106 Street & 114 Avenue
  • 74 Street & 112 Avenue
  • 32 Street & 118 Avenue
  • 66 Street & 118 Avenue
  • 105 Street & 122 Avenue
  • Groat Road & 107 Avenue
  • 95 Street & 109 Avenue
  • 95 Street & 115 Avenue
  • 88 Street & 112 Avenue
  • 73 Street & 111 Avenue
  • 97 Street & 106 Avenue
  • 36 Street & 121 Avenue
  • 95 Street & 108A Avenue
  • 95 Street & 116 Avenue
  • 34 Street & 116A Avenue
  • 89 Street & Rowland Road
  • 43 Street & 118 Avenue
  • 38 Street & 118 Avenue
  • 34 Street & 114 Avenue
  • 50 Street & 123 Avenue
  • 90 Street & Jasper Avenue
  • 42 Street & 118 Avenue
  • 82 Street & 112 Avenue
  • 97 Street & 110 Avenue
  • 57 Street & 118 Avenue
  • 90 Street & Jasper Avenue
  • 69 Street & 118 Avenue
  • 42 Street & 121 Avenue
  • 95 Street & Jasper Avenue
  • 95 Street & 113 Avenue
  • McDougall Hill & Grierson Hill
  • 111 Street & 111 Avenue
  • 40 Street & 121 Avenue
  • 97 Street & 107 Avenue
  • 82 Street & 122 Avenue
  • 97 Street & Jasper Avenue
  • 73 Street & 112 Avenue
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • Coliseum Transit Centre
  • 64 Street & 112 Avenue
  • 97 Street & 111 Avenue
  • 95 Street & Jasper Avenue
  • 106 Street & 117 Avenue
  • 55 Street & 118 Avenue
  • 106 Street & 113 Avenue
  • 106 Street & 117 Avenue
  • 50 Street & 112 Avenue
  • 38 Street & 121 Avenue
  • 82 Street & 118 Avenue
  • 101 Street & 111 Avenue
  • 82 Street & 118 Avenue
  • 70 Street & 118 Avenue
  • 101 Street & 117 Avenue
  • 55 Street & 112 Avenue
  • 86 Street & 114 Avenue
  • 124 Street & Stony Plain Road
  • 34 Street & 119 Avenue
  • 124 Street & 102 Avenue
  • 101 Street & 102 Avenue
  • 82 Street & Jasper Avenue
  • 41 Street & 118 Avenue
  • 100 Street & 102 Avenue
  • 95 Street & 103A Avenue
  • 93 Street & Jasper Avenue
  • 97 Street & 107 Avenue
  • 102 Street & MacDonald Drive
  • 88 Street & 118 Avenue
  • 46 Street & 121 Avenue
  • Thornton Court & Jasper Avenue
  • 103 Street & 122 Avenue
  • 95 Street & 117 Avenue
  • 82 Street & 120 Avenue
  • 47 Street & 118 Avenue
  • 100 Street & Jasper Avenue
  • 95 Street & 122 Avenue
  • 95 Street & 122 Avenue
  • 86 Street & 112 Avenue
  • 40 Street & 114 Avenue
  • 95 Street & 111 Avenue
  • 124 Street & 114 Avenue
  • 60 Street & 112 Avenue
  • 105 Street & Jasper Avenue
  • 122 Street & 111 Avenue
  • 110 Street & 111 Avenue
  • 53 Street & 118 Avenue
  • 54 Street & 120 Avenue
  • 46 Street & 114 Avenue
  • 86 Street & 114 Avenue
  • 97 Street & 122 Avenue
  • 97 Street & 103 Avenue
  • 69 Street & 112 Avenue
  • 32 Street & 107A Avenue
  • 124 Street & 111 Avenue
  • 97 Street & 108 Avenue
  • 66 Street & 118 Avenue
  • Fort Road & 121 Avenue
  • 97 Street & 118 Avenue
  • 95 Street & 118 Avenue
  • 101 Street & 116 Avenue
  • 100 Street & 102A Avenue
  • Wayne Gretzky Drive S & 118 Avenue
  • 97 Street & 108 Avenue
  • 34 Street & 118 Avenue
  • 38 Street & 110 Avenue
  • Government Transit Centre
  • Government Transit Centre
  • and 6541 more (see the full list on the map or in the GeoJSON)

Over time

This is the first scorecard for this agency. A trend and a "what changed" summary appear here once it has been checked more than once.

Everything we checked

10 findings, ordered by severity.

Show every finding
  • Warning416 instances

    416 of 6791 stops don't say whether a wheelchair user can board there.

    Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all.

    Fix: Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops. (A column in stops.txt; your scheduling software likely has it.)

    Finding code: scorecard_wheelchair_boarding_unknown · Read the fix guide · See GTFS Schedule reference (opens the GTFS Schedule reference on an external site)

  • Warning261 instances

    Some stops exist in the feed but no trip ever stops at them.

    Riders may walk to a stop where no transit vehicle is scheduled to arrive.

    Fix: Remove retired stops from the export, or add them back to the trips that should serve them. (A review pass in your scheduling software.)

    Finding code: stop_without_stop_time · Read the fix guide · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Warning11 instances

    11 of 117 trips scheduled during the sampling window had no live predictions.

    Riders on those trips get schedule times labeled as live. Caltrans asks that every trip you run shows up in TripUpdates.

    Fix: Ask your AVL vendor to check that every vehicle assignment reaches TripUpdates. School-day and tripper runs are the ones most often left out. (A vendor data-mapping question.)

    Finding code: scorecard_rt_trip_coverage · Read the fix guide · See GTFS-Realtime reference (opens the GTFS-Realtime reference on an external site)

  • Warning3 instances

    Some route colors don't contrast with their text color.

    Route badges get hard to read, most of all for riders with low vision.

    Fix: Pick a darker/lighter route_text_color for the flagged routes. (One field per route.)

    Finding code: route_color_contrast · Read the fix guide · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Warning3 instances

    Some route long names repeat the route's short name inside them.

    Apps show both names together, so riders see the number twice, like '5 5 Downtown'.

    Fix: Drop the short name from route_long_name and keep the long name descriptive, like 'Downtown via 5th Ave'. (One field per flagged route.)

    Finding code: route_long_name_contains_short_name · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info305 instances

    This feed maps paths inside its stations. It includes step-free routes with an elevator.

    Riders can be routed through the station, and wheelchair users can see whether a step-free route exists.

    Fix: No action needed. (None.)

    Finding code: scorecard_station_pathways

  • Info1 instance

    Some files contain columns that are not part of the GTFS spec.

    Harmless to riders, but apps ignore these columns and they can hide typos in real column names.

    Fix: Check the flagged column names for misspellings of standard GTFS fields; remove them if they are vendor extras. (A quick look at the flagged files.)

    Finding code: unknown_column · Read the fix guide · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info1 instance

    The feed includes a file that is not part of the GTFS spec.

    Apps ignore files they don't know, and a stray file can hide a misspelled standard file name.

    Fix: Check the flagged file name for a typo of a standard GTFS file. Remove it if it is a vendor extra. (A quick look at the flagged file.)

    Finding code: unknown_file · Read the fix guide · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info1 instance

    Unused station (flagged by the MobilityData validator).

    See the linked rule for what this affects.

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

    Finding code: unused_station · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

  • Info1 instance

    feed_info.txt has no technical contact (feed_contact_email or feed_contact_url).

    App makers and state data programs have nobody to email when they spot a problem. Small errors then sit in the feed for months.

    Fix: Add feed_contact_email to feed_info.txt. (One field.)

    Finding code: scorecard_no_feed_contact · Read the fix guide · See MobilityData GTFS Validator rules (opens the validator rules on an external site)

Beyond the grade

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

  • The feed lists fare products but has no rider_categories.txt to say who each fare is for.

    Consider: Add rider_categories.txt for the fares you already offer. Then point your fare products at those categories.

Conformance mark Awarded

This feed earns the conformance mark: valid, current, and stating wheelchair access on nearly every stop and trip.

GTFS conformance mark for Edmonton Transit Service (ETS)

Valid Met
Passes validation with no errors.
Current Met
Service data covers the next 84 days.
Accessible Met
States wheelchair access on 94% 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.

Can riders use it?

Checks beyond structural validation: places where the feed is valid but a rider still could not travel.

  • 261 of 6581 boardable stops are never served by any trip. Riders see these stops in apps and on the map but can never catch anything there, which erodes trust in the data. Remove stops no route serves, or add the trips that should call at them.

These do not change the grade. They catch trips with no rideable leg and stops no trip serves, the kind of gap a trip planner trips over.

Realtime reliability

The realtime feed responded on 100.0% of 7 checks over the last 1 day, with 18s median lag.

Sampled on a schedule between full scores, so this tracks uptime and freshness over time rather than at a single moment.

Live predictions vs schedule

Arrival predictions ran right on the schedule, and stayed within 0s nine times in ten. They were on time (about a minute early to five late) 98.3% of the time. 90.2% of reported vehicle positions sat on or near the published route shape.

From the last full realtime sample: how far live arrival predictions sat from the schedule, and whether vehicle positions fell on the route. These feed the realtime score; they change no other category.

Clears the Google and Apple Maps four-week coverage bar. This feed has 84 days of service ahead, clearing the four-week (28-day) window Maps asks for. No validator errors either, so riders keep seeing this agency in their trip planners; warnings lower the grade here but do not remove a feed from Maps.

How this agency maps to the standards

The scorecard is a data-quality lens, not a compliance determination. Its universal references describe good GTFS and useful rider information. Useful references here are GTFS Schedule Best Practices, GTFS-Realtime Best Practices, MobilityData grading scheme, Google Transit publication guidance. Read the full standards crosswalk.

Correctness 82 / 100
GTFS Schedule best practices, checked by the MobilityData validator. MobilityData grading covers stop locations, route names, and colors. Google Transit requires a feed to pass validation for publication.
Freshness 100 / 100
GTFS Schedule best practices call for a dataset that stays current. An expired calendar can remove service from Google Transit and other rider trip planners.
Rider experience 91 / 100
GTFS Best Practices for rider-facing fields. MobilityData grading covers stop names and headsigns.
Realtime quality 95 / 100
GTFS-Realtime best practices: a stable URL, high uptime, and frequent updates.

Show your grade

Put a badge on your agency site or feed README. It updates after each completed scoring check and links back to this scorecard.

Edmonton Transit Service (ETS) GTFS data quality grade: A

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/edmonton-transit-service/2026-09-05.json and never overwritten, pinning the grade, category scores, rubric version, validator version, reader archive profile, and the scored feed's sha256 as they stood on 2026-09-05. Use it in a board packet, a regulatory filing, 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.