Skip to content
/ cta Public

Python Client for Chicago Transit Authority

Notifications You must be signed in to change notification settings

wd60622/cta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chicago Transit Authority API

The CTA has three public endpoints for tracking CTA trains. This client supports those endpoints.

The CTAClient has methods for each endpoints. Namely,

  • arrivals: Arrival information for a given station(s) or stop(s).
  • follow: Follow specific train by runnumber.
  • locations: Get all trains for a given route(s).

More endpoint specific documentation found here

This API requires a key which can be easily received here. Follow the .env.example file for setting.

Installation

This package is available on pip. Install with:

$ pip install python-cta

Getting Started

from cta import CTAClient
damen_blue_line_mapid = 40590

# Get arrival information for damen blue line station.
cta_client = CTAClient()
arrival_response = cta_client.arrivals(mapid=damen_blue_line_mapid)
df_arrivals = arrival_response.to_frame()
print(df_arrivals)

# Follow specific train
runnumber = df_arrivals["rn"].tolist()[0]
follow_response = cta_client.follow(runnumber=runnumber)
df_follow = follow_response.to_frame()
print(df_follow)
from cta import Route

# Get the location of all Blue Line trains.
location_response = cta_client.locations(Route.BLUE)
df_locations = location_response.to_frame()
print(df_locations)

# Or all trains on the track
location_response = cta_client.locations(route=[route for route in Route])
df_locations = location_response.to_frame()
print(df_locations)

Information about the stations can be found with the Stations class. Below is an example to find the mapid for Damen blue line.

from cta import Stations

stations = Stations()
df_stations = stations.data
print(df_stations)

df_damen = stations.lookup("Damen", route=Route.BLUE)
print(df_damen)

Try this example for yourself in scripts/readme_example.py

Notes

This currently doesn't support the CTA bus API endpoints. However, it might in the future.