diff --git a/visualizer/static/visualizer.js b/visualizer/static/visualizer.js
index ebac0bd1d1005caa3d1592dcae2bc6058959bb97..ccf74e65ebd8a40d04f3c9a2d0fed82854fc6f23 100644
--- a/visualizer/static/visualizer.js
+++ b/visualizer/static/visualizer.js
@@ -160,8 +160,14 @@ async function getData(name, year) {
   const key = JSON.stringify([name, year]);
   let data = cachedData[key];
   if (data === undefined) {
-    data = await fetchData(
-      `${SCRIPT_ROOT}/data.cgi?station=${name}&year=${year}`);
+    try {
+      data = await fetchData(
+        `${SCRIPT_ROOT}/data.cgi?station=${name}&year=${year}`);
+    } catch (err) {
+      console.error(err);
+      alert(`Error fetching data for ${name}, ${year}`);
+      data = [];
+    }
     cachedData[key] = data;
   }
   return data;
@@ -169,7 +175,10 @@ async function getData(name, year) {
 
 async function fetchData(jsonURL) {
   const res = await fetch(jsonURL);
-  return await res.json();
+  if (res.ok) {
+    return await res.json();
+  }
+  throw new Error('response not OK');
 }
 
 async function switchToSelected() {