This API is not technically for public use, but it works! and you don't need to sign up for an account. Just use this api key = 0be8ebd0284ce712a63f29dcaf7798c4
Here's an example that tracks the number of minutes you would be waiting at 32nd and Clement for a 1 California Muni bus:
Find all routes and stop IDs here: https://www.sfmta.com/getting-around/muni/routes-stops
Some example URL structures:
Arrive times at specific stops (example = J line at 30th and Church)
bus locations (example J)
Information about stops (example J)
Challenges:
Pick two different stops in two different parts of the city. Can you get data back for both?
Can you make an LED light up when a bus is under 5 minutes from arriving at a stop?
Can you print all the upcoming arrive times, not just the closest one?