How this directory is built
Every listing here is assembled from public data by a pipeline that runs end to end and can be re-run from scratch. This page explains exactly what that pipeline does, what it refuses to do, and where it is weak. Last built September 20, 2026.
Where the data comes from
Four public sources, all openly licensed:
- OpenStreetMap is the only source that creates a listing. It supplies the venue, its category, and where present its hours, website, cuisine and accessibility. Licensed ODbL.
- City of Toronto DineSafe supplies the health inspection history. It covers every licensed food premises in the city and is republished daily.
- TTC route and schedule data (GTFS, via the City) gives the nearest subway, streetcar and bus stop for each venue, and the routes that serve it.
- City of Toronto neighbourhoods and Green P parking supply the 158 official neighbourhood boundaries and public car park locations.
What that actually covers
The gaps are real and worth stating plainly: only 24% of venues have published opening hours and 24% have a website, because those fields depend on what OpenStreetMap contributors have recorded. Where a field is missing we say “not recorded” rather than implying a no.
How venues are matched to inspection records
OpenStreetMap and DineSafe do not share an identifier, so venues have to be matched on name, address and position. Attaching a failed inspection to the wrong restaurant is the most damaging mistake this site could make, so the matcher is tuned for precision, not coverage.
A match is only accepted when one of these holds:
- identical civic address and a name similarity above 0.55;
- identical postal code and a name similarity above 0.80;
- within 75 metres and a name similarity above 0.85.
Two extra rules guard the cases that break naive matching. A chain guard means a name appearing three or more times across the city (Tim Hortons, Subway) can only match on an exact civic address or within 60 metres — because two branches within 200 metres is routine downtown. And where several premises share one civic address, as in a food court or plaza, nothing is auto-accepted at all.
Anything merely plausible is recorded as needing review and is not published. The result is that 67% of venues carry a health record; the rest show no health section rather than a guess.
What we deliberately do not publish
- Dietary filters. OpenStreetMap has halal tagged on 75 Toronto venues and gluten-free on 20. Toronto has thousands of halal restaurants. A filter built on that data would be confidently wrong, and people act on dietary information for religious and medical reasons, so we show these tags on a venue page where they exist and offer no filter.
- Matches based on a shared phone number. We tried it. It paired a Tim Hortons with a Booster Juice 106 metres away, because OpenStreetMap phone tags are often a mall’s main line. The rule was removed.
- Opening hours we cannot parse unambiguously. Roughly 2% of hour strings use constructs our parser will not guess at. Those venues never appear under “open now” — it fails closed, because sending someone to a closed restaurant is worse than omitting it.
- Parking prices. The City stopped refreshing its Green P dataset after 2019. Car park locations and capacity are stable, so we publish those; a seven-year-old hourly rate is not, so we do not.
- Venues outside the City of Toronto. 1,678 venues that fall inside our map query but outside the city’s boundary are held back. Mississauga and Markham are not Toronto.
How we present health inspections
Inspection results are reproduced from DineSafe without alteration. We do not compute our own hygiene score or letter grade, because inventing a rating on top of the City’s findings would imply a precision the data does not support.
Every venue page states the window its record covers — “based on 9 inspections between November 2023 and July 2026” — because a count of infractions means nothing without the period behind it. The report pages are limited to the last 12 months and always show the venue’s current status beside any historical finding.
How often it updates
DineSafe is republished by the City daily and our inspection data is refreshed against it. OpenStreetMap venue data and TTC schedules are pulled less frequently, as they change more slowly. Every page shows the date the site was last built.
Our inspection archive is append-only. DineSafe is a rolling window and drops older records; we keep what we have already collected, so over time the history here becomes more complete than the source feed.
Corrections
Venue details — name, address, hours, website, accessibility — come from OpenStreetMap, which anyone can edit. Every venue page links directly to that record. A correction there flows into this site on the next build and improves every other service using the same data.
Inspection records come from the City and can only be corrected at source. If you operate a premises and believe a record is wrong, contact Toronto Public Health; the change will appear here once the City republishes.
A wrong match — an inspection record attached to the wrong business — is our error, and the one we most want reported.
Known limitations
- Listings come from OpenStreetMap, so a venue nobody has mapped is missing, and a closed venue may linger until a contributor removes it.
- We hold no photos, menus, prices or star ratings, and no user reviews.
- Walking distances to transit are straight-line from the stop coordinate, so the real walk is a little longer.
- 2,700 venues have no health record shown, usually because they are new, trade under a different legal name, or sit inside another permitted premises.
Questions about any of this, or want to report a bad match? See the about page.