Chicago River Cam Guide
Unlocking The Secrets Of The Windy City A Dive Into The Chicago River Cam
The Chicago River has public webcams scattered along its length, mostly run by the city, the Department of Transportation, and a few third-party operators. If you are trying to actually use them rather than just look at a blurry JPEG once a day, there is more to know than the usual tourist angle. The cameras feed different formats, refresh at different intervals, and some of the best feeds quietly moved or got retired over the last few years. My current approach is to check the official City of Chicago stream page first, then cross-reference with the Illinois Center for Astronomical Applications for any DOT-operated traffic cameras that happen to point at the river. The city page lists the Madison Street, Michigan Avenue, and State Street camera locations. Those are the ones that matter if you are tracking boat traffic, bridge openings, or water levels through winter. I usually pull the raw RTSP endpoint from the page source rather than relying on the embedded player, because the embedded player compresses the feed and sometimes drops frames during a bridge raise. When I need real-time data, I use ffprobe to check the stream parameters before recording. The Madison Street feed is typically H.264 at around 720p with variable bitrate, while the Michigan Avenue camera sometimes switches to a lower resolution after 9pm because the city throttles bandwidth during off-peak hours. That detail matters if you are doing anything with automated frame analysis or just trying to watch a bridge opening at night without pixelation making everything unreadable.
One problem I ran into last March was that the State Street camera feed went offline for about three days during a scheduled firmware update, but the city page did not reflect this. The embedded player just showed a stale image. I worked around it by checking the underlying HTTP endpoint directly and comparing timestamps in the response headers. If the Last-Modified header was stale by more than five minutes, I knew the feed was down and moved to the Michigan Avenue camera as a backup. You can write a simple script that polls the header and alerts you if the timestamp gap exceeds your threshold. The water level data is another thing people overlook. Several of these cameras are positioned near USGS gauging stations along the river. The city does not publish water level readings directly on the cam pages, but you can cross-reference the visual water line against the USGS station 04557500 on the Chicago River at Chicago. During spring thaw, the water can rise several feet, and the camera perspective makes it hard to judge actual height. Having the gauge data nearby removes the guesswork. If you are looking for a download link or raw stream access, the city does not offer a single unified API. The individual camera feeds are accessible as MJPEG or HLS streams through their respective page URLs, but there is no official bulk download option. I have used browser dev tools to extract the direct stream URL when the platform requires JavaScript rendering. That method works fine for personal use but breaks if the city changes their player implementation, which they have done before without notice.
Some third-party sites like Riverwalk Live or local news stations rebroadcast the feed, but those are usually delayed by thirty to sixty seconds and often add overlays that obscure the actual camera view. For bridge schedules, the city publishes a calendar on their site, and the cams themselves are useful for confirming whether a scheduled opening actually happened. I have seen cases where the schedule listed an opening but the camera feed showed no activity, which usually meant the event was postponed or the bridge crew handled it differently than planned. The main limitation here is that none of these feeds are professional grade. They are municipal CCTV cameras repurposed for public viewing. Low light performance is poor, rain obscures the lens, and in summer the glare from the water can wash out the entire frame between 1pm and 3pm. If you need clean footage for documentation or analysis, you are better off contacting the city directly and requesting archival video rather than trying to extract usable frames from a live stream. I also should mention that recording or redistributing the feed commercially is a gray area. The city does not explicitly prohibit it, but there is no formal license either. A few people I know have used the streams for small projects without issue, but if you plan to publish anything derived from the feed, it is worth emailing the city's media relations department first just to confirm their current stance.
Get the Full Details

For most people just wanting to watch the river, the official page is enough. The cameras show a reasonable view of the main channel, the bridge operations, and the general condition of the waterway. If you want more than passive viewing, though, the work involved in extracting and stabilizing the feeds is real. It is not difficult, but it is not automatic either, and you should expect to spend some time troubleshooting before you have a reliable setup.