{
  "agency_count": 75,
  "average_score": 63.8,
  "common_fixes": [
    {
      "agencies": 69,
      "code": "scorecard_wheelchair_boarding_unknown",
      "fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "agencies": 61,
      "code": "scorecard_wheelchair_accessible_unknown",
      "fix": "Set wheelchair_accessible on every trip (most small-agency fleets are 100% accessible, so this is often a single default)."
    },
    {
      "agencies": 22,
      "code": "scorecard_missing_headsigns",
      "fix": "Populate trip_headsign to match what the bus displays."
    },
    {
      "agencies": 15,
      "code": "scorecard_feed_expiring_soon",
      "fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "agencies": 14,
      "code": "scorecard_feed_expired",
      "fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "agencies": 12,
      "code": "stop_without_stop_time",
      "fix": "Remove retired stops from the export, or add them back to the trips that should serve them."
    },
    {
      "agencies": 4,
      "code": "missing_required_column",
      "fix": "Review the rule documentation for 'missing_required_column' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "agencies": 2,
      "code": "foreign_key_violation",
      "fix": "Review the rule documentation for 'foreign_key_violation' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "agencies": 2,
      "code": "duplicate_key",
      "fix": "Review the rule documentation for 'duplicate_key' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "agencies": 2,
      "code": "scorecard_no_fare_data",
      "fix": "Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead."
    },
    {
      "agencies": 2,
      "code": "invalid_pickup_drop_off_window",
      "fix": "Review the rule documentation for 'invalid_pickup_drop_off_window' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "agencies": 2,
      "code": "trip_distance_exceeds_shape_distance",
      "fix": "Review the rule documentation for 'trip_distance_exceeds_shape_distance' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "agencies": 2,
      "code": "decreasing_or_equal_stop_time_distance",
      "fix": "Re-generate shape distances in your export; flag to your vendor if it persists."
    },
    {
      "agencies": 2,
      "code": "unknown_column",
      "fix": "Check the flagged column names for misspellings of standard GTFS fields; remove them if they are vendor extras."
    }
  ],
  "expired": {
    "lapsed": 1,
    "stale": 13,
    "total": 14
  },
  "generated_at": "2026-07-09T09:08:55+00:00",
  "grade_distribution": {
    "B": 17,
    "C": 19,
    "D": 14,
    "F": 25
  },
  "members": [
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -578,
      "expiry_status": "stale",
      "grade": "F",
      "id": "potomac-and-rappahannock-transportation-commission-prtc",
      "name": "Potomac and Rappahannock Transportation Commission (PRTC)",
      "needs_attention": true,
      "score": 19.0,
      "shapes_status": "at_risk",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -921,
      "expiry_status": "stale",
      "grade": "F",
      "id": "fredericksburg-regional-transit",
      "name": "Fredericksburg Regional Transit",
      "needs_attention": true,
      "score": 25.8,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -587,
      "expiry_status": "stale",
      "grade": "F",
      "id": "virginia-railway-express-vre",
      "name": "Virginia Railway Express (VRE)",
      "needs_attention": true,
      "score": 28.3,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1888,
      "expiry_status": "stale",
      "grade": "F",
      "id": "harrisonburg-department-of-public-transportation-hdpt",
      "name": "HDPT",
      "needs_attention": true,
      "score": 30.4,
      "shapes_status": "at_risk",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -782,
      "expiry_status": "stale",
      "grade": "F",
      "id": "grtc-transit-system",
      "name": "GRTC Transit System",
      "needs_attention": true,
      "score": 31.7,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1105,
      "expiry_status": "stale",
      "grade": "F",
      "id": "williamsburg-area-transit-authority-wata",
      "name": "Williamsburg Area Transit Authority (WATA)",
      "needs_attention": true,
      "score": 35.1,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -189,
      "expiry_status": "lapsed",
      "grade": "F",
      "id": "brite",
      "name": "Brite",
      "needs_attention": true,
      "score": 35.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 16 day(s)",
      "days_until_expiry": 16,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "potomac-and-rappahannock-transportation-commission-prtc-omniride",
      "name": "Potomac and Rappahannock Transportation Commission (PRTC) Omniride",
      "needs_attention": true,
      "score": 38.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -465,
      "expiry_status": "stale",
      "grade": "F",
      "id": "fredericksburg-regional-transit-2430",
      "name": "Fredericksburg Regional Transit",
      "needs_attention": true,
      "score": 38.6,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1469,
      "expiry_status": "stale",
      "grade": "F",
      "id": "virginia-breeze",
      "name": "Virginia Breeze",
      "needs_attention": true,
      "score": 40.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1470,
      "expiry_status": "stale",
      "grade": "F",
      "id": "pulaski-area-transit-pat",
      "name": "Pulaski Area Transit (PAT)",
      "needs_attention": true,
      "score": 42.6,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1105,
      "expiry_status": "stale",
      "grade": "F",
      "id": "williamsburg-area-transit-authority",
      "name": "Williamsburg Area Transit Authority",
      "needs_attention": true,
      "score": 43.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -1105,
      "expiry_status": "stale",
      "grade": "F",
      "id": "williamsburg-area-transit-authority-901",
      "name": "Williamsburg Area Transit Authority",
      "needs_attention": true,
      "score": 43.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -3842,
      "expiry_status": "stale",
      "grade": "F",
      "id": "valley-metro",
      "name": "Valley Metro",
      "needs_attention": true,
      "score": 46.3,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data has expired",
      "days_until_expiry": -3842,
      "expiry_status": "stale",
      "grade": "F",
      "id": "valley-metro-1239",
      "name": "Valley Metro",
      "needs_attention": true,
      "score": 46.3,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "petersburg-area-transit-2441",
      "name": "Flex",
      "needs_attention": true,
      "score": 46.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 28 day(s)",
      "days_until_expiry": 28,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "mountain-lynx-transit-2447",
      "name": "Flex",
      "needs_attention": true,
      "score": 48.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 30 day(s)",
      "days_until_expiry": 30,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "radford-transit",
      "name": "Radford Transit",
      "needs_attention": true,
      "score": 54.8,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 22 day(s)",
      "days_until_expiry": 22,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "blacksburg-transit",
      "name": "Blacksburg Transit",
      "needs_attention": true,
      "score": 57.4,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "radar-2443",
      "name": "Flex",
      "needs_attention": true,
      "score": 57.9,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 31 day(s)",
      "days_until_expiry": 31,
      "expiry_status": "current",
      "grade": "F",
      "id": "williamsburg-area-transit-authority-2649",
      "name": "Williamsburg Area Transit Authority",
      "needs_attention": true,
      "score": 58.6,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "wintran",
      "name": "WinTran",
      "needs_attention": true,
      "score": 59.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "F",
      "id": "wintran-608",
      "name": "WinTran",
      "needs_attention": true,
      "score": 59.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "mountain-lynx-transit",
      "name": "Mountain Lynx Transit",
      "needs_attention": true,
      "score": 62.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "mountain-lynx-transit-334",
      "name": "Mountain Lynx Transit",
      "needs_attention": true,
      "score": 62.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "farmville-area-bus",
      "name": "Farmville Area Bus",
      "needs_attention": true,
      "score": 64.6,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "farmville-area-bus-461",
      "name": "Farmville Area Bus",
      "needs_attention": true,
      "score": 64.6,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "pony-express",
      "name": "Pony Express",
      "needs_attention": true,
      "score": 66.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 23 day(s)",
      "days_until_expiry": 23,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "pony-express-828",
      "name": "Pony Express",
      "needs_attention": true,
      "score": 66.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 22 day(s)",
      "days_until_expiry": 22,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "greensville-emporia-transit",
      "name": "Greensville Emporia Transit",
      "needs_attention": true,
      "score": 66.9,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 22 day(s)",
      "days_until_expiry": 22,
      "expiry_status": "expiring_soon",
      "grade": "D",
      "id": "greensville-emporia-transit-463",
      "name": "Greensville Emporia Transit",
      "needs_attention": true,
      "score": 66.9,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-export with a validity window that reaches at least 60 days out."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 53 day(s)",
      "days_until_expiry": 53,
      "expiry_status": "current",
      "grade": "C",
      "id": "alexandria-transit-company-dash",
      "name": "Alexandria Transit Company (DASH)",
      "needs_attention": true,
      "score": 71.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "arlington-transit-2434",
      "name": "Flex",
      "needs_attention": true,
      "score": 73.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "pulaski-area-transit-pat-2198",
      "name": "Pulaski Area Transit (PAT)",
      "needs_attention": true,
      "score": 74.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "valley-metro-2437",
      "name": "Flex",
      "needs_attention": true,
      "score": 74.8,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "virginia-regional-transit-2445",
      "name": "Flex",
      "needs_attention": true,
      "score": 76.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "pulaski-area-transit-pat-2442",
      "name": "Flex",
      "needs_attention": true,
      "score": 76.9,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": "Service data expires in 54 day(s)",
      "days_until_expiry": 54,
      "expiry_status": "current",
      "grade": "C",
      "id": "loudoun-county-transit-2411",
      "name": "Flex",
      "needs_attention": true,
      "score": 77.7,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": null,
      "expiry_status": "unknown",
      "grade": "F",
      "id": "jaunt-inc",
      "name": "JAUNT Inc",
      "needs_attention": false,
      "score": 26.2,
      "shapes_status": "not_ready",
      "snapshot_date": "2026-07-08",
      "top_fix": "Add feed_start_date and feed_end_date to feed_info.txt and include calendar end dates in your export."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 26838,
      "expiry_status": "current",
      "grade": "F",
      "id": "valley-metro-2274",
      "name": "Valley Metro",
      "needs_attention": false,
      "score": 33.0,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Re-generate shape distances in your export; flag to your vendor if it persists."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 814,
      "expiry_status": "current",
      "grade": "D",
      "id": "fairfax-connector",
      "name": "Fairfax Connector",
      "needs_attention": false,
      "score": 61.3,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Review the rule documentation for 'block_trips_with_overlapping_stop_times' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 107,
      "expiry_status": "current",
      "grade": "D",
      "id": "hampton-roads-transit-hrt",
      "name": "Hampton Roads Transit (HRT)",
      "needs_attention": false,
      "score": 62.3,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 8940,
      "expiry_status": "current",
      "grade": "D",
      "id": "fairfax-cue-bus-cue-2885",
      "name": "Fairfax CUE Bus (CUE)",
      "needs_attention": false,
      "score": 63.1,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "D",
      "id": "star-transit-2444",
      "name": "Flex",
      "needs_attention": false,
      "score": 66.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Review the rule documentation for 'invalid_pickup_drop_off_window' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 4953,
      "expiry_status": "current",
      "grade": "D",
      "id": "fairfax-cue-bus-cue",
      "name": "Fairfax CUE Bus (CUE)",
      "needs_attention": false,
      "score": 68.3,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 4953,
      "expiry_status": "current",
      "grade": "D",
      "id": "fairfax-cue-bus-cue-484",
      "name": "Fairfax CUE Bus (CUE)",
      "needs_attention": false,
      "score": 68.3,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 326,
      "expiry_status": "current",
      "grade": "C",
      "id": "arlington-transit",
      "name": "Arlington Transit",
      "needs_attention": false,
      "score": 71.1,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Check the service alerts endpoint with your AVL vendor; it should return a fresh GTFS-Realtime protobuf on every request."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "C",
      "id": "petersburg-area-transit",
      "name": "Petersburg Area Transit",
      "needs_attention": false,
      "score": 74.1,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "C",
      "id": "petersburg-area-transit-591",
      "name": "Petersburg Area Transit",
      "needs_attention": false,
      "score": 74.1,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 235,
      "expiry_status": "current",
      "grade": "C",
      "id": "blackstone-area-bus-service",
      "name": "Blackstone Area Bus Service",
      "needs_attention": false,
      "score": 74.8,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 235,
      "expiry_status": "current",
      "grade": "C",
      "id": "blackstone-area-bus-service-235",
      "name": "Blackstone Area Bus Service",
      "needs_attention": false,
      "score": 74.8,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 261,
      "expiry_status": "current",
      "grade": "C",
      "id": "loudoun-county-transit",
      "name": "Loudoun County Transit",
      "needs_attention": false,
      "score": 74.8,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "C",
      "id": "radford-transit-2415",
      "name": "Radford Transit",
      "needs_attention": false,
      "score": 75.5,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 295,
      "expiry_status": "current",
      "grade": "C",
      "id": "four-county-transit-2448",
      "name": "Flex",
      "needs_attention": false,
      "score": 75.7,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "C",
      "id": "star-transit-819",
      "name": "STAR Transit",
      "needs_attention": false,
      "score": 78.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "C",
      "id": "cortran",
      "name": "Flex",
      "needs_attention": false,
      "score": 78.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "C",
      "id": "williamsburg-area-transit-authority-2438",
      "name": "Flex",
      "needs_attention": false,
      "score": 78.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "C",
      "id": "bay-transit-2439",
      "name": "Flex",
      "needs_attention": false,
      "score": 78.6,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 83,
      "expiry_status": "current",
      "grade": "B",
      "id": "altavista-community-transit-system",
      "name": "Altavista Community Transit System",
      "needs_attention": false,
      "score": 80.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 83,
      "expiry_status": "current",
      "grade": "B",
      "id": "altavista-community-transit-system-882",
      "name": "Altavista Community Transit System",
      "needs_attention": false,
      "score": 80.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "graham-transit",
      "name": "Graham Transit",
      "needs_attention": false,
      "score": 80.2,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "graham-transit-611",
      "name": "Graham Transit",
      "needs_attention": false,
      "score": 80.2,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 84,
      "expiry_status": "current",
      "grade": "B",
      "id": "mountain-empire-transit",
      "name": "Flex",
      "needs_attention": false,
      "score": 80.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "B",
      "id": "bay-transit",
      "name": "Bay Transit",
      "needs_attention": false,
      "score": 80.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 115,
      "expiry_status": "current",
      "grade": "B",
      "id": "bay-transit-224",
      "name": "Bay Transit",
      "needs_attention": false,
      "score": 80.5,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 295,
      "expiry_status": "current",
      "grade": "B",
      "id": "four-county-transit",
      "name": "Four County Transit",
      "needs_attention": false,
      "score": 80.9,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 175,
      "expiry_status": "current",
      "grade": "B",
      "id": "greater-lynchburg-transit-co",
      "name": "Greater Lynchburg Transit Co.",
      "needs_attention": false,
      "score": 81.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 175,
      "expiry_status": "current",
      "grade": "B",
      "id": "greater-lynchburg-transit-co-381",
      "name": "Greater Lynchburg Transit Co.",
      "needs_attention": false,
      "score": 81.4,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 114,
      "expiry_status": "current",
      "grade": "B",
      "id": "virginia-regional-transit",
      "name": "Virginia Regional Transit",
      "needs_attention": false,
      "score": 83.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 114,
      "expiry_status": "current",
      "grade": "B",
      "id": "virginia-regional-transit-621",
      "name": "Virginia Regional Transit",
      "needs_attention": false,
      "score": 83.2,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "bristol-virginia-transit",
      "name": "Bristol Virginia Transit",
      "needs_attention": false,
      "score": 84.0,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "bristol-virginia-transit-238",
      "name": "Bristol Virginia Transit",
      "needs_attention": false,
      "score": 84.0,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 83,
      "expiry_status": "current",
      "grade": "B",
      "id": "danville-transit",
      "name": "Flex",
      "needs_attention": false,
      "score": 85.0,
      "shapes_status": null,
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "radar",
      "name": "RADAR",
      "needs_attention": false,
      "score": 86.5,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    },
    {
      "annual_trips": null,
      "attention_reason": null,
      "days_until_expiry": 207,
      "expiry_status": "current",
      "grade": "B",
      "id": "radar-832",
      "name": "RADAR",
      "needs_attention": false,
      "score": 86.5,
      "shapes_status": "ready",
      "snapshot_date": "2026-07-09",
      "top_fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops."
    }
  ],
  "needs_attention": 38,
  "rollup": {
    "id": "virginia",
    "name": "Virginia agencies"
  },
  "schema_version": "1.7",
  "shapes_readiness": {
    "at_risk": 2,
    "not_measured": 53,
    "not_ready": 1,
    "ready": 19,
    "total": 75
  },
  "state_percentile": 80
}
