Chicago Metra commuter rail — real-time train arrivals, vehicle tracking, service alerts, and schedule info for all 11 Metra lines serving the Chicago metropolitan area. Use when the user asks about Metra trains, Chicago commuter rail, or specific Metra lines and stations.
Real-time Chicago Metra commuter rail data — train arrivals (GTFS-RT protobuf), vehicle positions, service alerts, schedule info, and fare calculation for all 11 Metra lines serving the six-county northeastern Illinois region. Requires a free API key for all feeds.
Metra uses standard GTFS-RT protobuf feeds served from a single base URL with Bearer token authentication. No proprietary extensions — clean standard GTFS-RT.
METRA_API_KEY)Get a free key at: https://metra.com/developers
| Feed | Endpoint | Description |
|---|---|---|
| Trip Updates | GET /gtfs/public/tripupdates | Real-time arrival/departure predictions |
| Vehicle Positions | GET /gtfs/public/positions | GPS locations of active trains |
| Alerts | GET /gtfs/public/alerts | Service alerts, delays, construction notices |
Base URL: https://gtfspublic.metrarr.com
Authentication: Authorization: Bearer {METRA_API_KEY} header.
Data updates every 30 seconds. No need to poll more frequently.
| Feed | URL |
|---|---|
| GTFS Static (zip) | https://schedules.metrarail.com/gtfs/schedule.zip |
| Published timestamp | https://schedules.metrarail.com/gtfs/published.txt |
Static schedule updates regularly (sometimes within 24 hours). New scheduled updates publish at 3:00 AM.
scripts/metra.mjsMain entry point. Supports these commands:
# Train arrivals
node scripts/metra.mjs arrivals --station "Union Station"
node scripts/metra.mjs arrivals --station "Naperville" --line BNSF
node scripts/metra.mjs arrivals --station "Ogilvie"
node scripts/metra.mjs arrivals --station "Millennium Station" --line ME
# Vehicle tracking
node scripts/metra.mjs vehicles --line BNSF
node scripts/metra.mjs vehicles --line UP-N
node scripts/metra.mjs vehicles --line ME
# Service alerts
node scripts/metra.mjs alerts
node scripts/metra.mjs alerts --line BNSF
node scripts/metra.mjs alerts --line RI
# Routes and stops
node scripts/metra.mjs routes
node scripts/metra.mjs stops --search "downers grove"
node scripts/metra.mjs stops --line BNSF
node scripts/metra.mjs stops --near 41.8781,-87.6298
node scripts/metra.mjs route-info --line UP-NW
# Fares
node scripts/metra.mjs fares
node scripts/metra.mjs fares --from "Union Station" --to "Naperville"
# Schedule
node scripts/metra.mjs schedule --station "Naperville"
node scripts/metra.mjs schedule --station "Ogilvie" --line UP-N
# Maintenance
node scripts/metra.mjs refresh-gtfs
All Metra feeds require authentication:
METRA_API_KEYOn first use, run node scripts/metra.mjs refresh-gtfs to download and extract the static GTFS data (routes, stops, schedules) to ~/.metra/gtfs/. Refresh periodically or when Metra updates their schedule.
| Line Code | Line Name | Color | Downtown Terminal | Outer Terminal |
|---|---|---|---|---|
| BNSF | BNSF Railway | Orange | Union Station (CUS) | Aurora |
| ME | Metra Electric | Teal | Millennium Station | University Park / South Chicago / Blue Island |
| HC | Heritage Corridor | Purple | Union Station (CUS) | Joliet |
| MD-N | Milwaukee District North | Light Green | Union Station (CUS) | Fox Lake |
| MD-W | Milwaukee District West | Light Green | Union Station (CUS) | Elburn / Big Timber |
| NCS | North Central Service | Gold | Union Station (CUS) | Antioch |
| RI | Rock Island | Red | LaSalle Street Station | Joliet |
| SWS | SouthWest Service | Dark Purple | Union Station (CUS) | Manhattan |
| UP-N | Union Pacific North | Dark Green | Ogilvie Transportation Center (OTC) | Kenosha |
| UP-NW | Union Pacific Northwest | Blue | Ogilvie Transportation Center (OTC) | Harvard / McHenry |
| UP-W | Union Pacific West | Blue | Ogilvie Transportation Center (OTC) | Elburn |
| Ticket Type | Zones 1-2 | Zones 1-2-3 | Zones 1-2-3-4 | Zones 2-3-4 (no downtown) |
|---|---|---|---|---|
| One-Way | $3.75 | $5.50 | $6.75 | $3.75 |
| Day Pass | $7.50 | $11.00 | $13.50 | $7.50 |
| Day Pass 5-Pack | $35.75 | $52.25 | $64.25 | $35.75 |
| Monthly Pass | $75.00 | $110.00 | $135.00 | $75.00 |
Special Passes:
Monthly Passes are valid for unlimited rides on weekdays between selected zones and systemwide on weekends.
--line to filter by specific Metra line code (BNSF, UP-N, etc.)METRA_API_KEY is not set, all commands print a helpful message with the signup URLWhen presenting transit info to the user:
| Endpoint | Data Sent | Data Received |
|---|---|---|
gtfspublic.metrarr.com/gtfs/public/tripupdates | API key (Bearer header, HTTPS) | Trip updates (Protobuf) |
gtfspublic.metrarr.com/gtfs/public/positions | API key (Bearer header, HTTPS) | Vehicle positions (Protobuf) |
gtfspublic.metrarr.com/gtfs/public/alerts | API key (Bearer header, HTTPS) | Service alerts (Protobuf) |
schedules.metrarail.com/gtfs/schedule.zip | None (GET only) | GTFS static data (ZIP) |
schedules.metrarail.com/gtfs/published.txt | None (GET only) | Schedule publish timestamp (text) |
All API calls use HTTPS. The API key is passed as a Bearer token in the Authorization header. No other user data is transmitted.
~/.metra/gtfs/; no data is written elsewhereThis skill reads publicly available transit data from Metra's official GTFS-RT feeds. The API key is used only for Metra API authentication. The skill does not access, store, or transmit any personal information beyond the API key configured by the user.