← Back to Free Days

Data Guide

How the Balboa Park Free Days schedule data works, and how to update it.

Overview

All schedule data for this site lives in a single file: data.json. Every museum name, website link, free-day slot, and month exclusion is defined there. The HTML page reads it on load and renders everything — no data exists anywhere else.

To update the schedule (e.g. a museum joins, drops out, or changes its exclusion months), edit data.json only. The site updates automatically on next page load.

Always verify against the official source before publishing changes: balboapark.org/resident-free-days

Slot Fields

The file contains a slots array. Each slot represents one free-day type — for example, "every 3rd Tuesday" is one slot.

Field Type Description
id number Unique identifier. Not shown on the site — just used internally. Don't reuse IDs if you remove a slot.
label string Display name shown in the UI, e.g. "3rd Tuesday".
weekday string Day of the week, lowercase. Must be one of: "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday".
occurrence number Which occurrence of that weekday in the month. 1 = first, 2 = second, 3 = third, 4 = fourth.
museums object[] List of museums participating on this slot's day. See museum fields below.

Museum Fields

Each entry in a slot's museums array has these fields:

Field Type Description
name string Display name of the museum as it appears on the site.
url string Official website URL. This is what the museum name links to.
note string Short caveat shown in parentheses in the "Next Free Day" banner — e.g. "films excluded" or "special exhibitions excluded". Use an empty string "" if there's nothing to note.
skipMonths string[] Months when just this museum opts out, even though the rest of the slot still runs. Same format as the slot-level skipMonths — full lowercase month names. Leave as [] if the museum participates all year.

Month Names

Use these exact lowercase strings in any skipMonths array:

Example Entry

A slot where two museums participate, but one skips January and December:

data.json — slot example

Current Data

Live view of what's in data.json right now, rendered in plain English:

Loading…

Changelog

May 5, 2026
Verified against balboapark.org.
  • Japanese Friendship Garden — corrected full name to "Japanese Friendship Garden and Museum"; added December to skip months (official: "no free Tuesday in December")
  • The Old Globe — updated note to include "registration required" per official source

Something look wrong?

Museum schedules change without much notice. If you spot incorrect data — a missing museum, a wrong exclusion month, a dead link, or anything else — please check against the official Balboa Park schedule and send a note to hi@nicokatzen.com.