Automating Toronto’s Beach Water Quality with Shortcuts

This summer I wanted a faster way to check if it’s safe to swim at Toronto’s beaches. The city publishes daily water quality results through their open data portal, but digging through JSON feeds on a phone isn’t exactly convenient. So, I built a Shortcut that automates the whole process: it checks for the latest update, pulls the results, and displays a clean, color-coded report in Safari.

Checking for Fresh Data

The first thing my Shortcut does is make sure I’m not working with stale results. I format the current date, subtract one day (since advisories usually trail by a day), and call the city’s last_update API. From there, I grab the lastUpdate field and confirm whether it matches the date I expect.

If no data is available, the Shortcut stops and shows me an alert: “No recent results found.” That way, I’m not wasting time on old advisories.

Fetching the Results

Once I know the data is current, I build a URL against the beach_results API. I pass both a startDate and endDate based on the formatted date, and I also define a list of beach IDs. Right now I have two beaches set up—IDs 8 and 9—but I can easily add more later.

A Repeat loop runs through each beach ID, fetching its data individually and parsing the results. This keeps the Shortcut flexible if I want to expand it.

Formatting the Data

This is the part I had the most fun with. The Shortcut parses out the CollectionDate, statusFlag, eColi count, and any advisory notes. To make the results clear at a glance, I map:

  • SAFE → green
  • UNSAFE → red
  • Anything else → black

I then build an HTML card for each beach, using large black headers for the beach name, medium-sized text for the collection date, and a color-coded status flag for the water quality. Everything is wrapped in elements with inline font sizes so the final report looks neat and easy to read.

Displaying the Report

After the loop finishes, the Shortcut combines all of the HTML snippets into one page. It converts that text into rich content and opens it in a Safari web view. What I end up with is a simple dashboard that shows the latest conditions for each beach I care about.

If the data feed has no values for that day, I just get a quick alert instead of a blank page.

Why I Built It

For me, this Shortcut strikes the right balance between utility and presentation. It’s not just dumping JSON—it’s validating freshness, parsing results for multiple beaches, and presenting them in a way that’s useful at a glance.

Now, instead of digging through government websites or spreadsheets, I just run the Shortcut and instantly see whether it’s safe to swim. It’s become part of my summer routine, and I love how it turns raw open data into something practical and personal.

Toronto Beaches Water Quality app icon Toronto Beaches Water Quality

Apps & Tools I Used to Create this Shortcut

Inspect Browser app icon Inspect Browser
Jayson app icon Jayson