cta

Chicago CTA transit — real-time L train arrivals, bus predictions, service alerts, and route info. Use when the user asks about Chicago public transit, L train schedules, CTA bus times, service alerts, or nearby stops.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "cta" with this command: npx skills add brianleach/cta

CTA Chicago Transit

Real-time Chicago CTA transit data — L train arrivals, bus predictions, service alerts, and route information. Requires free API keys for train and bus data; alerts work without any keys.

When to Use

  • User asks about CTA, L train, Blue Line, Red Line, Brown Line, or any Chicago rail line
  • User asks about Chicago bus routes, bus tracker, or train tracker
  • User asks "when is the next train" or "is the Red Line running" in a Chicago context
  • User mentions specific CTA stations (O'Hare, Midway, Clark/Lake, Belmont, etc.)
  • User asks about CTA fares, Ventra, or how to ride Chicago transit
  • User asks about CTA service alerts, delays, or detours
  • User asks about nearby stops or route information in Chicago

Data Sources

CTA uses 3 proprietary REST APIs. Train Tracker and Bus Tracker require free API keys. Customer Alerts is open access.

Train Tracker API (requires CTA_TRAIN_API_KEY)

Get a free key at: https://www.transitchicago.com/developers/traintrackerapply/

EndpointDescription
Arrivals by station (mapid)Train arrivals at a parent station
Arrivals by stop (stpid)Train arrivals at a directional stop
Train positions (rt)Live positions of all trains on a line
Follow a run (runnumber)Track a specific train run

Data refreshes approximately once per minute. Daily limit: 50,000 requests per key.

Bus Tracker API v2 (requires CTA_BUS_API_KEY)

Get a free key at: https://www.transitchicago.com/developers/bustracker/

EndpointDescription
Predictions by stopBus arrival predictions at a stop
Predictions by vehiclePredictions for a specific bus
Vehicle locationsLive bus positions on a route
Routes listAll active bus routes
Route directionsAvailable directions for a route
Stops for route/directionAll stops along a route

Bus data updates approximately every 30 seconds.

Customer Alerts API (NO key required)

EndpointDescription
Route statusesCurrent status of all routes
All alertsAll active service alerts
Alerts by routeAlerts filtered by route
Alerts by stationAlerts filtered by station

GTFS Static Feed

FeedFormatURL
GTFS Static (zip)ZIPhttps://www.transitchicago.com/downloads/sch_data/google_transit.zip

Used for stop names, route info, and schedule lookups. Same stop IDs used across all APIs.

Implementation

Quick Start: Use the helper scripts

The scripts in this skill's scripts/ directory handle fetching, parsing, and presenting CTA data.

Script: scripts/cta.mjs

Main entry point. Supports these commands:

# L train arrivals
node scripts/cta.mjs arrivals --station "Clark/Lake"
node scripts/cta.mjs arrivals --mapid 40380
node scripts/cta.mjs arrivals --stop 30070
node scripts/cta.mjs arrivals --stop-search "ohare"
node scripts/cta.mjs arrivals --stop-search "belmont" --route Red

# Bus predictions
node scripts/cta.mjs bus-arrivals --stop 456
node scripts/cta.mjs bus-arrivals --stop 456 --route 22
node scripts/cta.mjs bus-arrivals --stop-search "michigan"

# Vehicle tracking
node scripts/cta.mjs vehicles --route Red
node scripts/cta.mjs bus-vehicles --route 22

# Service alerts
node scripts/cta.mjs alerts
node scripts/cta.mjs alerts --route Red

# Routes and stops
node scripts/cta.mjs routes
node scripts/cta.mjs bus-routes
node scripts/cta.mjs stops --search "belmont"
node scripts/cta.mjs stops --near 41.8781,-87.6298 --radius 0.3
node scripts/cta.mjs route-info --route Red
node scripts/cta.mjs route-info --route 22

# Maintenance
node scripts/cta.mjs refresh-gtfs

Setup: API Keys

Train and bus commands require free API keys:

  1. Train Tracker key: Apply at https://www.transitchicago.com/developers/traintrackerapply/
  2. Bus Tracker key: Apply at https://www.transitchicago.com/developers/bustracker/
  3. Set environment variables: CTA_TRAIN_API_KEY and CTA_BUS_API_KEY

Alert commands work without any keys.

Setup: GTFS Static Data

On first use, run node scripts/cta.mjs refresh-gtfs to download and extract the static GTFS data (routes, stops, schedules) to ~/.cta/gtfs/. This only needs to be refreshed when CTA updates their schedule.

L Train Lines Reference

Route CodeLineTerminals
RedRed LineHoward ↔ 95th/Dan Ryan
BlueBlue LineO'Hare ↔ Forest Park
BrnBrown LineKimball ↔ Loop
GGreen LineHarlem/Lake ↔ Ashland/63rd or Cottage Grove
OrgOrange LineMidway ↔ Loop
PPurple LineLinden ↔ Howard (Express to Loop weekdays)
PinkPink Line54th/Cermak ↔ Loop
YYellow LineDempster-Skokie ↔ Howard

Key Bus Routes Reference

RouteNameNotes
22ClarkMajor north-south corridor
36BroadwayNorth Side lakefront
77BelmontMajor east-west crosstown
151SheridanLakefront express
146Inner Drive/Michigan ExpressLoop to north lakefront
8HalstedLong north-south route
9AshlandMajor north-south corridor
49WesternLongest route in system
66ChicagoMajor east-west route
7979thMajor south side east-west

CTA Fares Reference (2026)

Fare TypePrice
Regular (Ventra/contactless)$2.50
Bus transfer$0.25
Rail-to-rail transferFree within 2 hours
Reduced fare$1.25
1-Day Pass$5.00
3-Day Pass$15.00
7-Day Pass$20.00
30-Day Pass$75.00

Payment via Ventra card, Ventra app, or contactless bank card. Transfers valid for 2 hours.

Tips for Users

  • Station IDs are in the 4xxxx range (parent stations); stop IDs in the 3xxxx range (directional)
  • Use --station or --stop-search for name-based lookups; use --mapid for exact station IDs
  • Alerts always work — no API key needed — so check alerts first if something seems wrong
  • Train data refreshes ~1 minute; bus data refreshes ~30 seconds
  • For the Loop, trains may show as arriving from different directions depending on the line

Error Handling

  • If CTA_TRAIN_API_KEY is not set, train commands print a helpful message with the signup URL
  • If CTA_BUS_API_KEY is not set, bus commands print a helpful message with the signup URL
  • Alert commands always work (no key required)
  • Invalid station/stop searches show "No matching station found" with suggestions
  • Network errors and API error responses produce friendly messages

Response Formatting

When presenting transit info to the user:

  • Lead with the most actionable info (next arrival time, active alerts)
  • Show times in 12-hour format with AM/PM
  • Include line color AND destination (e.g., "Red Line toward 95th/Dan Ryan")
  • For trains: show "Due" for imminent arrivals, minutes for upcoming
  • For bus predictions, show estimated minutes until arrival
  • If there are active service alerts for the route being queried, always mention them

External Endpoints

EndpointData SentData Received
https://lapi.transitchicago.com/api/1.0/ttarrivals.aspxAPI key (query param, HTTPS)Train arrivals (JSON)
https://lapi.transitchicago.com/api/1.0/ttpositions.aspxAPI key (query param, HTTPS)Train positions (JSON)
https://lapi.transitchicago.com/api/1.0/ttfollow.aspxAPI key (query param, HTTPS)Train run details (JSON)
https://www.ctabustracker.com/bustime/api/v2/*API key (query param, HTTPS)Bus predictions/positions (JSON)
https://www.transitchicago.com/api/1.0/routes.aspxNone (GET only)Route statuses (JSON)
https://www.transitchicago.com/api/1.0/alerts.aspxNone (GET only)Service alerts (JSON)
https://www.transitchicago.com/downloads/sch_data/google_transit.zipNone (GET only)GTFS static data (ZIP)

All API calls use HTTPS. API keys are passed as query parameters to CTA's official APIs. No other user data is transmitted.

Security & Privacy

  • API keys required — Train and Bus Tracker APIs require free developer keys passed as URL query parameters
  • No user data transmitted — requests contain only API keys and route/stop identifiers, no personal information
  • Local storage only — GTFS static data is cached locally at ~/.cta/gtfs/; no data is written elsewhere
  • No telemetry — this skill does not phone home or collect usage data
  • Input handling — stop names and route IDs from user input are used only for local filtering, never interpolated into shell commands

Trust Statement

This skill reads publicly available transit data from CTA's official APIs. API keys are used only for CTA API authentication. The skill does not access, store, or transmit any personal information beyond the API keys configured by the user.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Charging Ledger

充电记录账本 - 从截图提取充电信息并记录,支持按周、月查询汇总。**快速暗号**: 充电记录、充电账本、充电汇总。**自然触发**: 记录充电、查询充电费用、充电统计。

Registry SourceRecently Updated
General

qg-skill-sync

从团队 Git 仓库同步最新技能到本机 OpenClaw。支持首次设置、定时自动更新、手动同步和卸载。当用户需要同步技能、设置技能同步、安装或更新团队技能,或提到「技能同步」「同步技能」时使用。

Registry SourceRecently Updated
General

Ad Manager

广告投放管理 - 自动管理广告投放、优化ROI、生成报告。适合:营销人员、电商运营。

Registry SourceRecently Updated